Refactor TmfTrace and dependencies - remove indexTrace()
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core.tests / src / org / eclipse / linuxtools / tmf / core / tests / trace / TmfTraceTest.java
CommitLineData
d18dd09b 1/*******************************************************************************
e31e01e8 2 * Copyright (c) 2009, 2010 Ericsson
d18dd09b
ASL
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
11 *******************************************************************************/
12
6c13869b 13package org.eclipse.linuxtools.tmf.core.tests.trace;
d18dd09b
ASL
14
15import java.io.File;
e1ab8984
FC
16import java.io.IOException;
17import java.net.URISyntaxException;
18import java.net.URL;
d18dd09b
ASL
19import java.util.Vector;
20
e1ab8984
FC
21import junit.framework.TestCase;
22
23import org.eclipse.core.runtime.FileLocator;
24import org.eclipse.core.runtime.Path;
6c13869b
FC
25import org.eclipse.linuxtools.tmf.core.component.ITmfDataProvider;
26import org.eclipse.linuxtools.tmf.core.component.TmfProviderManager;
72f1e62a 27import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
6c13869b
FC
28import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
29import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
30import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
31import org.eclipse.linuxtools.tmf.core.request.TmfEventRequest;
32import org.eclipse.linuxtools.tmf.core.tests.TmfCoreTestPlugin;
33import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
34import org.eclipse.linuxtools.tmf.core.trace.TmfCheckpoint;
35import org.eclipse.linuxtools.tmf.core.trace.TmfContext;
36import org.eclipse.linuxtools.tmf.core.trace.TmfTrace;
4918b8f2 37import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub;
d18dd09b
ASL
38
39/**
40 * <b><u>TmfTraceTest</u></b>
41 * <p>
ff4ed569 42 * Test suite for the TmfTrace class.
d18dd09b 43 */
3b38ea61 44@SuppressWarnings("nls")
d18dd09b
ASL
45public class TmfTraceTest extends TestCase {
46
f17b2f70
FC
47 // ------------------------------------------------------------------------
48 // Variables
49 // ------------------------------------------------------------------------
ff4ed569 50
d18dd09b 51 private static final String DIRECTORY = "testfiles";
85fb0e54 52 private static final String TEST_STREAM = "A-Test-10K";
ff4ed569 53 private static final int BLOCK_SIZE = 500;
e31e01e8
FC
54 private static final int NB_EVENTS = 10000;
55 private static TmfTraceStub fTrace = null;
d18dd09b
ASL
56
57 private static byte SCALE = (byte) -3;
58
e31e01e8 59 // ------------------------------------------------------------------------
d18dd09b 60 // Housekeeping
e31e01e8 61 // ------------------------------------------------------------------------
d18dd09b 62
f17b2f70
FC
63 public TmfTraceTest(final String name) throws Exception {
64 super(name);
65 }
66
67 @Override
68 protected void setUp() throws Exception {
69 super.setUp();
70 fTrace = setupTrace(DIRECTORY + File.separator + TEST_STREAM);
71 // Dummy request to force the trace indexing
72 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class) {
73 @Override
74 public void handleData(final TmfEvent event) {
75 super.handleData(event);
76 }
77 };
78 fTrace.sendRequest(request);
79 request.waitForCompletion();
80 }
81
82 @Override
83 protected void tearDown() throws Exception {
84 super.tearDown();
85 fTrace.dispose();
86 fTrace = null;
87 }
ff4ed569
FC
88
89 // ------------------------------------------------------------------------
90 // Helper functions
91 // ------------------------------------------------------------------------
92
f17b2f70
FC
93 private TmfTraceStub setupTrace(final String path) {
94 if (fTrace == null)
95 try {
96 final URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path), null);
97 final File test = new File(FileLocator.toFileURL(location).toURI());
98 fTrace = new TmfTraceStub(test.toURI().getPath(), BLOCK_SIZE, false);
99 } catch (final URISyntaxException e) {
100 e.printStackTrace();
101 } catch (final IOException e) {
102 e.printStackTrace();
103 }
104 return fTrace;
e1ab8984
FC
105 }
106
e31e01e8 107 // ------------------------------------------------------------------------
d18dd09b 108 // Constructors
e31e01e8 109 // ------------------------------------------------------------------------
d18dd09b
ASL
110
111 public void testTmfTraceDefault() throws Exception {
f17b2f70
FC
112 TmfTraceStub trace = null;
113 File testfile = null;
114 try {
115 final URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(DIRECTORY + File.separator + TEST_STREAM), null);
116 testfile = new File(FileLocator.toFileURL(location).toURI());
117 trace = new TmfTraceStub(testfile.toURI().getPath());
118 } catch (final URISyntaxException e) {
119 fail("URISyntaxException");
120 } catch (final IOException e) {
121 fail("IOException");
122 }
123 assertTrue ("Open trace", trace != null);
124 assertEquals("getType", TmfEvent.class, trace.getType());
125 assertEquals("getPath", testfile.toURI().getPath(), trace.getPath());
126 assertEquals("getName", TEST_STREAM, trace.getName());
127 assertEquals("getCacheSize", TmfTrace.DEFAULT_INDEX_PAGE_SIZE, trace.getIndexPageSize());
ff4ed569
FC
128 }
129
130 public void testTmfTraceDefaultCacheSize() throws Exception {
f17b2f70
FC
131 TmfTraceStub trace = null;
132 File testfile = null;
133 try {
134 final URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(DIRECTORY + File.separator + TEST_STREAM), null);
135 testfile = new File(FileLocator.toFileURL(location).toURI());
136 trace = new TmfTraceStub(testfile.toURI().getPath(), 0);
137 } catch (final URISyntaxException e) {
138 fail("URISyntaxException");
139 } catch (final IOException e) {
140 fail("IOException");
141 }
142 assertTrue ("Open trace", trace != null);
143 assertEquals("getType", TmfEvent.class, trace.getType());
144 assertEquals("getPath", testfile.toURI().getPath(), trace.getPath());
145 assertEquals("getName", TEST_STREAM, trace.getName());
146 assertEquals("getCacheSize", TmfTrace.DEFAULT_INDEX_PAGE_SIZE, trace.getIndexPageSize());
d18dd09b
ASL
147 }
148
149 public void testTmfTrace() throws Exception {
f17b2f70
FC
150 assertEquals("getType", TmfEvent.class, fTrace.getType());
151 assertEquals("getName", TEST_STREAM, fTrace.getName());
152 assertEquals("getCacheSize", BLOCK_SIZE, fTrace.getIndexPageSize());
ff4ed569
FC
153 }
154
f17b2f70
FC
155 // public void testClone() throws Exception {
156 // TmfTraceStub trace = fTrace.clone();
157 // assertEquals("getType", TmfEvent.class, trace.getType());
158 // assertEquals("getPath", fTrace.getPath(), trace.getPath());
159 // assertEquals("getName", TEST_STREAM, trace.getName());
160 // assertEquals("getCacheSize", BLOCK_SIZE, trace.getIndexPageSize());
161 // assertEquals("getTimeRange", fTrace.getTimeRange(), trace.getTimeRange());
162 // }
d18dd09b 163
ff4ed569
FC
164 // ------------------------------------------------------------------------
165 // Get/Set time range
166 // ------------------------------------------------------------------------
167
168 public void testSetTimeRange() throws Exception {
f17b2f70
FC
169 final TmfTraceStub trace = new TmfTraceStub(fTrace);
170
ff4ed569
FC
171 assertEquals("getRange-start", 1, trace.getTimeRange().getStartTime().getValue());
172 assertEquals("getRange-end", NB_EVENTS, trace.getTimeRange().getEndTime().getValue());
173 assertEquals("getStartTime", 1, trace.getStartTime().getValue());
174 assertEquals("getEndTime", NB_EVENTS, trace.getEndTime().getValue());
175
176 trace.setTimeRange(new TmfTimeRange(new TmfTimestamp(100), new TmfTimestamp(200)));
177 assertEquals("setTimeRange", 100, trace.getTimeRange().getStartTime().getValue());
178 assertEquals("setTimeRange", 200, trace.getTimeRange().getEndTime().getValue());
179 assertEquals("setTimeRange", 100, trace.getStartTime().getValue());
180 assertEquals("setTimeRange", 200, trace.getEndTime().getValue());
f17b2f70
FC
181
182 trace.dispose();
ff4ed569 183 }
f17b2f70 184
ff4ed569 185 public void testSetStartTime() throws Exception {
f17b2f70
FC
186 final TmfTraceStub trace = new TmfTraceStub(fTrace);
187
ff4ed569
FC
188 assertEquals("getRange-start", 1, trace.getTimeRange().getStartTime().getValue());
189 assertEquals("getRange-end", NB_EVENTS, trace.getTimeRange().getEndTime().getValue());
190 assertEquals("getStartTime", 1, trace.getStartTime().getValue());
191 assertEquals("getEndTime", NB_EVENTS, trace.getEndTime().getValue());
192
193 trace.setStartTime(new TmfTimestamp(100));
194 assertEquals("setStartTime", 100, trace.getTimeRange().getStartTime().getValue());
195 assertEquals("setStartTime", NB_EVENTS, trace.getTimeRange().getEndTime().getValue());
196 assertEquals("setStartTime", 100, trace.getStartTime().getValue());
197 assertEquals("setStartTime", NB_EVENTS, trace.getEndTime().getValue());
f17b2f70
FC
198
199 trace.dispose();
ff4ed569 200 }
f17b2f70 201
ff4ed569 202 public void testSetEndTime() throws Exception {
f17b2f70
FC
203 final TmfTraceStub trace = new TmfTraceStub(fTrace);
204
ff4ed569
FC
205 assertEquals("getRange-start", 1, trace.getTimeRange().getStartTime().getValue());
206 assertEquals("getRange-end", NB_EVENTS, trace.getTimeRange().getEndTime().getValue());
207 assertEquals("getStartTime", 1, trace.getStartTime().getValue());
208 assertEquals("getEndTime", NB_EVENTS, trace.getEndTime().getValue());
209
210 trace.setEndTime(new TmfTimestamp(100));
211 assertEquals("setEndTime", 1, trace.getTimeRange().getStartTime().getValue());
212 assertEquals("setEndTime", 100, trace.getTimeRange().getEndTime().getValue());
213 assertEquals("setEndTime", 1, trace.getStartTime().getValue());
214 assertEquals("setEndTime", 100, trace.getEndTime().getValue());
f17b2f70
FC
215
216 trace.dispose();
ff4ed569 217 }
f17b2f70 218
e31e01e8 219 // ------------------------------------------------------------------------
54d55ced 220 // Verify checkpoints
e31e01e8 221 // ------------------------------------------------------------------------
d18dd09b 222
ff4ed569 223 public void testTmfTraceIndexing() throws Exception {
3118edf1 224 assertEquals("getCacheSize", BLOCK_SIZE, fTrace.getIndexPageSize());
ff4ed569
FC
225 assertEquals("getTraceSize", NB_EVENTS, fTrace.getNbEvents());
226 assertEquals("getRange-start", 1, fTrace.getTimeRange().getStartTime().getValue());
227 assertEquals("getRange-end", NB_EVENTS, fTrace.getTimeRange().getEndTime().getValue());
228 assertEquals("getStartTime", 1, fTrace.getStartTime().getValue());
229 assertEquals("getEndTime", NB_EVENTS, fTrace.getEndTime().getValue());
54d55ced 230
f17b2f70
FC
231 final Vector<TmfCheckpoint> checkpoints = fTrace.getCheckpoints();
232 final int pageSize = fTrace.getIndexPageSize();
233 assertTrue("Checkpoints exist", checkpoints != null);
234
235 // Validate that each checkpoint points to the right event
236 for (int i = 0; i < checkpoints.size(); i++) {
237 final TmfCheckpoint checkpoint = checkpoints.get(i);
238 final TmfContext context = new TmfContext(checkpoint.getLocation(), i * pageSize);
239 final ITmfEvent event = fTrace.parseEvent(context);
240 assertTrue(context.getRank() == i * pageSize);
241 assertTrue((checkpoint.getTimestamp().compareTo(event.getTimestamp(), false) == 0));
242 }
54d55ced
FC
243 }
244
245 // ------------------------------------------------------------------------
246 // parseEvent - make sure parseEvent doesn't update the context
247 // ------------------------------------------------------------------------
248
249 public void testParseEvent() throws Exception {
250
f17b2f70 251 final int NB_READS = 20;
9b635e61 252
f17b2f70
FC
253 // On lower bound, returns the first event (ts = 0)
254 final TmfContext context = (TmfContext) fTrace.seekEvent(new TmfTimestamp(0, SCALE, 0));
255 TmfContext svContext = new TmfContext(context);
54d55ced 256
f17b2f70 257 ITmfEvent event = fTrace.parseEvent(context);
54d55ced 258 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
9b635e61
FC
259 assertEquals("Event rank", 0, context.getRank());
260 assertTrue("parseEvent", context.equals(svContext));
54d55ced
FC
261
262 event = fTrace.parseEvent(context);
263 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
9b635e61
FC
264 assertEquals("Event rank", 0, context.getRank());
265 assertTrue("parseEvent", context.equals(svContext));
54d55ced
FC
266
267 event = fTrace.parseEvent(context);
268 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
9b635e61
FC
269 assertEquals("Event rank", 0, context.getRank());
270 assertTrue("parseEvent", context.equals(svContext));
54d55ced 271
9b635e61
FC
272 // Position the trace at event NB_READS
273 for (int i = 1; i < NB_READS; i++) {
54d55ced
FC
274 event = fTrace.getNextEvent(context);
275 assertEquals("Event timestamp", i, event.getTimestamp().getValue());
276 }
277
f17b2f70 278 svContext = new TmfContext(context);
54d55ced 279 event = fTrace.parseEvent(context);
9b635e61
FC
280 assertEquals("Event timestamp", NB_READS, event.getTimestamp().getValue());
281 assertEquals("Event rank", NB_READS -1 , context.getRank());
282 assertTrue("parseEvent", context.equals(svContext));
54d55ced
FC
283
284 event = fTrace.parseEvent(context);
9b635e61
FC
285 assertEquals("Event timestamp", NB_READS, event.getTimestamp().getValue());
286 assertEquals("Event rank", NB_READS - 1, context.getRank());
287 assertTrue("parseEvent", context.equals(svContext));
54d55ced
FC
288 }
289
290 // ------------------------------------------------------------------------
291 // getNextEvent - updates the context
292 // ------------------------------------------------------------------------
293
294 public void testGetNextEvent() throws Exception {
295
f17b2f70 296 final int NB_READS = 20;
9b635e61 297
f17b2f70
FC
298 // On lower bound, returns the first event (ts = 1)
299 final ITmfContext context = fTrace.seekEvent(new TmfTimestamp(0, SCALE, 0));
54d55ced 300
f17b2f70
FC
301 // Read NB_EVENTS
302 ITmfEvent event;
9b635e61 303 for (int i = 0; i < NB_READS; i++) {
54d55ced 304 event = fTrace.getNextEvent(context);
9b635e61
FC
305 assertEquals("Event timestamp", i + 1, event.getTimestamp().getValue());
306 assertEquals("Event rank", i + 1, context.getRank());
54d55ced 307 }
9b635e61
FC
308
309 // Make sure we stay positioned
310 event = fTrace.parseEvent(context);
311 assertEquals("Event timestamp", NB_READS + 1, event.getTimestamp().getValue());
312 assertEquals("Event rank", NB_READS, context.getRank());
54d55ced
FC
313 }
314
315 // ------------------------------------------------------------------------
316 // seekLocation
317 // Note: seekLocation() does not reliably set the rank
318 // ------------------------------------------------------------------------
319
320 public void testSeekLocationOnCacheBoundary() throws Exception {
321
f17b2f70
FC
322 // Position trace at event rank 0
323 TmfContext context = fTrace.seekLocation(null);
324 ITmfEvent event = fTrace.parseEvent(context);
54d55ced 325 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
ff4ed569 326 assertEquals("Event rank", 0, context.getRank());
9b635e61
FC
327
328 context = fTrace.seekLocation(context.getLocation());
329 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
330
331 event = fTrace.parseEvent(context);
54d55ced 332 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
9b635e61
FC
333 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
334
335 event = fTrace.getNextEvent(context);
336 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
337 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
54d55ced 338
f17b2f70 339 // Position trace at event rank 1000
3791b5df 340 ITmfContext tmpContext = fTrace.seekEvent(new TmfTimestamp(1001, SCALE, 0));
9b635e61 341 context = fTrace.seekLocation(tmpContext.getLocation());
ff4ed569 342 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
9b635e61
FC
343
344 event = fTrace.parseEvent(context);
54d55ced 345 assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
ff4ed569 346 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
9b635e61
FC
347
348 event = fTrace.getNextEvent(context);
54d55ced 349 assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
ff4ed569 350 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
54d55ced 351
f17b2f70 352 // Position trace at event rank 4000
54d55ced 353 tmpContext = fTrace.seekEvent(new TmfTimestamp(4001, SCALE, 0));
9b635e61 354 context = fTrace.seekLocation(tmpContext.getLocation());
ff4ed569 355 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
9b635e61
FC
356
357 event = fTrace.parseEvent(context);
54d55ced 358 assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
ff4ed569 359 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
9b635e61
FC
360
361 event = fTrace.getNextEvent(context);
54d55ced 362 assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
ff4ed569 363 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
54d55ced
FC
364 }
365
366 public void testSeekLocationNotOnCacheBoundary() throws Exception {
367
f17b2f70
FC
368 // Position trace at event rank 9
369 ITmfContext tmpContext = fTrace.seekEvent(new TmfTimestamp(10, SCALE, 0));
9b635e61 370 TmfContext context = fTrace.seekLocation(tmpContext.getLocation());
ff4ed569 371 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
9b635e61 372
72f1e62a 373 ITmfEvent event = fTrace.parseEvent(context);
54d55ced 374 assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
ff4ed569 375 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
9b635e61
FC
376
377 event = fTrace.getNextEvent(context);
54d55ced 378 assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
ff4ed569 379 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
54d55ced 380
f17b2f70 381 // Position trace at event rank 999
54d55ced 382 tmpContext = fTrace.seekEvent(new TmfTimestamp(1000, SCALE, 0));
9b635e61 383 context = fTrace.seekLocation(tmpContext.getLocation());
ff4ed569 384 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
f17b2f70 385
9b635e61 386 event = fTrace.parseEvent(context);
54d55ced 387 assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
ff4ed569 388 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
f17b2f70 389
9b635e61 390 event = fTrace.getNextEvent(context);
54d55ced 391 assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
ff4ed569 392 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
54d55ced 393
f17b2f70 394 // Position trace at event rank 1001
54d55ced 395 tmpContext = fTrace.seekEvent(new TmfTimestamp(1002, SCALE, 0));
9b635e61 396 context = fTrace.seekLocation(tmpContext.getLocation());
ff4ed569 397 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
f17b2f70 398
9b635e61 399 event = fTrace.parseEvent(context);
54d55ced 400 assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
ff4ed569 401 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
f17b2f70 402
9b635e61 403 event = fTrace.getNextEvent(context);
54d55ced 404 assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
ff4ed569 405 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
54d55ced 406
f17b2f70 407 // Position trace at event rank 4500
54d55ced 408 tmpContext = fTrace.seekEvent(new TmfTimestamp(4501, SCALE, 0));
9b635e61 409 context = fTrace.seekLocation(tmpContext.getLocation());
ff4ed569 410 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
f17b2f70 411
9b635e61 412 event = fTrace.parseEvent(context);
54d55ced 413 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
ff4ed569 414 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
f17b2f70 415
9b635e61 416 event = fTrace.getNextEvent(context);
54d55ced 417 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
ff4ed569 418 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
54d55ced
FC
419 }
420
421 public void testSeekLocationOutOfScope() throws Exception {
422
f17b2f70
FC
423 // Position trace at beginning
424 ITmfContext tmpContext = fTrace.seekLocation(null);
3791b5df 425 ITmfContext context = fTrace.seekLocation(tmpContext.getLocation());
ff4ed569 426 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
f17b2f70 427
72f1e62a 428 ITmfEvent event = fTrace.parseEvent(context);
54d55ced 429 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
ff4ed569 430 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
f17b2f70 431
9b635e61 432 event = fTrace.getNextEvent(context);
54d55ced 433 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
ff4ed569 434 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
54d55ced 435
f17b2f70 436 // Position trace at event passed the end
54d55ced 437 tmpContext = fTrace.seekEvent(new TmfTimestamp(NB_EVENTS + 1, SCALE, 0));
9b635e61 438 context = fTrace.seekLocation(tmpContext.getLocation());
ff4ed569 439 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
f17b2f70 440
9b635e61 441 event = fTrace.parseEvent(context);
54d55ced 442 assertEquals("Event timestamp", null, event);
ff4ed569 443 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
f17b2f70 444
9b635e61 445 event = fTrace.getNextEvent(context);
54d55ced 446 assertEquals("Event timestamp", null, event);
ff4ed569 447 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
54d55ced
FC
448 }
449
450 // ------------------------------------------------------------------------
451 // seekEvent on timestamp
452 // ------------------------------------------------------------------------
d18dd09b 453
54d55ced
FC
454 public void testSeekEventOnTimestampOnCacheBoundary() throws Exception {
455
f17b2f70
FC
456 // Position trace at event rank 0
457 ITmfContext context = fTrace.seekEvent(new TmfTimestamp(1, SCALE, 0));
54d55ced 458 assertEquals("Event rank", 0, context.getRank());
9b635e61 459
72f1e62a 460 ITmfEvent event = fTrace.parseEvent(context);
54d55ced
FC
461 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
462 assertEquals("Event rank", 0, context.getRank());
f17b2f70 463
9b635e61 464 event = fTrace.getNextEvent(context);
75828b1a 465 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
e31e01e8 466 assertEquals("Event rank", 1, context.getRank());
d18dd09b 467
f17b2f70 468 // Position trace at event rank 1000
54d55ced
FC
469 context = fTrace.seekEvent(new TmfTimestamp(1001, SCALE, 0));
470 assertEquals("Event rank", 1000, context.getRank());
f17b2f70 471
9b635e61 472 event = fTrace.parseEvent(context);
54d55ced
FC
473 assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
474 assertEquals("Event rank", 1000, context.getRank());
f17b2f70 475
9b635e61 476 event = fTrace.getNextEvent(context);
e31e01e8
FC
477 assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
478 assertEquals("Event rank", 1001, context.getRank());
d18dd09b 479
f17b2f70 480 // Position trace at event rank 4000
54d55ced
FC
481 context = fTrace.seekEvent(new TmfTimestamp(4001, SCALE, 0));
482 assertEquals("Event rank", 4000, context.getRank());
f17b2f70 483
9b635e61 484 event = fTrace.parseEvent(context);
54d55ced
FC
485 assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
486 assertEquals("Event rank", 4000, context.getRank());
f17b2f70 487
9b635e61 488 event = fTrace.getNextEvent(context);
e31e01e8
FC
489 assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
490 assertEquals("Event rank", 4001, context.getRank());
75828b1a 491 }
d18dd09b 492
54d55ced
FC
493 public void testSeekEventOnTimestampNotOnCacheBoundary() throws Exception {
494
f17b2f70
FC
495 // Position trace at event rank 1
496 ITmfContext context = fTrace.seekEvent(new TmfTimestamp(2, SCALE, 0));
54d55ced 497 assertEquals("Event rank", 1, context.getRank());
f17b2f70 498
72f1e62a 499 ITmfEvent event = fTrace.parseEvent(context);
54d55ced
FC
500 assertEquals("Event timestamp", 2, event.getTimestamp().getValue());
501 assertEquals("Event rank", 1, context.getRank());
f17b2f70 502
9b635e61 503 event = fTrace.getNextEvent(context);
54d55ced
FC
504 assertEquals("Event timestamp", 2, event.getTimestamp().getValue());
505 assertEquals("Event rank", 2, context.getRank());
d18dd09b 506
f17b2f70
FC
507 // Position trace at event rank 9
508 context = fTrace.seekEvent(new TmfTimestamp(10, SCALE, 0));
54d55ced 509 assertEquals("Event rank", 9, context.getRank());
f17b2f70 510
9b635e61 511 event = fTrace.parseEvent(context);
54d55ced
FC
512 assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
513 assertEquals("Event rank", 9, context.getRank());
f17b2f70 514
9b635e61 515 event = fTrace.getNextEvent(context);
e31e01e8
FC
516 assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
517 assertEquals("Event rank", 10, context.getRank());
d18dd09b 518
f17b2f70 519 // Position trace at event rank 999
54d55ced
FC
520 context = fTrace.seekEvent(new TmfTimestamp(1000, SCALE, 0));
521 assertEquals("Event rank", 999, context.getRank());
f17b2f70 522
9b635e61 523 event = fTrace.parseEvent(context);
54d55ced 524 assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
e31e01e8 525 assertEquals("Event rank", 999, context.getRank());
f17b2f70 526
9b635e61 527 event = fTrace.getNextEvent(context);
54d55ced
FC
528 assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
529 assertEquals("Event rank", 1000, context.getRank());
e31e01e8 530
f17b2f70 531 // Position trace at event rank 1001
54d55ced 532 context = fTrace.seekEvent(new TmfTimestamp(1002, SCALE, 0));
e31e01e8 533 assertEquals("Event rank", 1001, context.getRank());
f17b2f70 534
9b635e61 535 event = fTrace.parseEvent(context);
54d55ced
FC
536 assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
537 assertEquals("Event rank", 1001, context.getRank());
f17b2f70 538
9b635e61 539 event = fTrace.getNextEvent(context);
54d55ced
FC
540 assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
541 assertEquals("Event rank", 1002, context.getRank());
542
f17b2f70 543 // Position trace at event rank 4500
54d55ced
FC
544 context = fTrace.seekEvent(new TmfTimestamp(4501, SCALE, 0));
545 assertEquals("Event rank", 4500, context.getRank());
f17b2f70 546
9b635e61 547 event = fTrace.parseEvent(context);
54d55ced
FC
548 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
549 assertEquals("Event rank", 4500, context.getRank());
f17b2f70 550
9b635e61 551 event = fTrace.getNextEvent(context);
54d55ced
FC
552 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
553 assertEquals("Event rank", 4501, context.getRank());
75828b1a 554 }
d18dd09b 555
54d55ced 556 public void testSeekEventOnTimestampOutOfScope() throws Exception {
d18dd09b 557
f17b2f70
FC
558 // Position trace at beginning
559 ITmfContext context = fTrace.seekEvent(new TmfTimestamp(-1, SCALE, 0));
54d55ced 560 assertEquals("Event rank", 0, context.getRank());
f17b2f70 561
72f1e62a 562 ITmfEvent event = fTrace.parseEvent(context);
75828b1a 563 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
54d55ced 564 assertEquals("Event rank", 0, context.getRank());
f17b2f70 565
9b635e61 566 event = fTrace.getNextEvent(context);
54d55ced
FC
567 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
568 assertEquals("Event rank", 1, context.getRank());
75828b1a 569
f17b2f70 570 // Position trace at event passed the end
54d55ced
FC
571 context = fTrace.seekEvent(new TmfTimestamp(NB_EVENTS + 1, SCALE, 0));
572 assertEquals("Event rank", NB_EVENTS, context.getRank());
f17b2f70 573
9b635e61 574 event = fTrace.parseEvent(context);
75828b1a 575 assertEquals("Event timestamp", null, event);
54d55ced 576 assertEquals("Event rank", NB_EVENTS, context.getRank());
f17b2f70 577
9b635e61 578 event = fTrace.getNextEvent(context);
54d55ced
FC
579 assertEquals("Event timestamp", null, event);
580 assertEquals("Event rank", NB_EVENTS, context.getRank());
d18dd09b
ASL
581 }
582
54d55ced
FC
583 // ------------------------------------------------------------------------
584 // seekEvent on rank
585 // ------------------------------------------------------------------------
586
587 public void testSeekOnRankOnCacheBoundary() throws Exception {
e31e01e8 588
f17b2f70
FC
589 // On lower bound, returns the first event (ts = 1)
590 ITmfContext context = fTrace.seekEvent(0);
54d55ced 591 assertEquals("Event rank", 0, context.getRank());
f17b2f70 592
72f1e62a 593 ITmfEvent event = fTrace.parseEvent(context);
e31e01e8 594 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
54d55ced 595 assertEquals("Event rank", 0, context.getRank());
f17b2f70 596
9b635e61 597 event = fTrace.getNextEvent(context);
54d55ced
FC
598 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
599 assertEquals("Event rank", 1, context.getRank());
e31e01e8 600
f17b2f70 601 // Position trace at event rank 1000
54d55ced
FC
602 context = fTrace.seekEvent(1000);
603 assertEquals("Event rank", 1000, context.getRank());
f17b2f70 604
9b635e61 605 event = fTrace.parseEvent(context);
54d55ced
FC
606 assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
607 assertEquals("Event rank", 1000, context.getRank());
f17b2f70 608
9b635e61 609 event = fTrace.getNextEvent(context);
54d55ced
FC
610 assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
611 assertEquals("Event rank", 1001, context.getRank());
e31e01e8 612
f17b2f70 613 // Position trace at event rank 4000
54d55ced
FC
614 context = fTrace.seekEvent(4000);
615 assertEquals("Event rank", 4000, context.getRank());
f17b2f70 616
9b635e61 617 event = fTrace.parseEvent(context);
54d55ced
FC
618 assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
619 assertEquals("Event rank", 4000, context.getRank());
f17b2f70 620
9b635e61 621 event = fTrace.getNextEvent(context);
54d55ced
FC
622 assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
623 assertEquals("Event rank", 4001, context.getRank());
e31e01e8
FC
624 }
625
54d55ced 626 public void testSeekOnRankNotOnCacheBoundary() throws Exception {
d18dd09b 627
f17b2f70
FC
628 // Position trace at event rank 9
629 ITmfContext context = fTrace.seekEvent(9);
54d55ced 630 assertEquals("Event rank", 9, context.getRank());
f17b2f70 631
72f1e62a 632 ITmfEvent event = fTrace.parseEvent(context);
54d55ced
FC
633 assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
634 assertEquals("Event rank", 9, context.getRank());
f17b2f70 635
9b635e61 636 event = fTrace.getNextEvent(context);
54d55ced
FC
637 assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
638 assertEquals("Event rank", 10, context.getRank());
d18dd09b 639
f17b2f70 640 // Position trace at event rank 999
54d55ced
FC
641 context = fTrace.seekEvent(999);
642 assertEquals("Event rank", 999, context.getRank());
f17b2f70 643
9b635e61 644 event = fTrace.parseEvent(context);
54d55ced
FC
645 assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
646 assertEquals("Event rank", 999, context.getRank());
f17b2f70 647
9b635e61 648 event = fTrace.getNextEvent(context);
54d55ced
FC
649 assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
650 assertEquals("Event rank", 1000, context.getRank());
d18dd09b 651
f17b2f70 652 // Position trace at event rank 1001
54d55ced
FC
653 context = fTrace.seekEvent(1001);
654 assertEquals("Event rank", 1001, context.getRank());
f17b2f70 655
9b635e61 656 event = fTrace.parseEvent(context);
54d55ced
FC
657 assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
658 assertEquals("Event rank", 1001, context.getRank());
f17b2f70 659
9b635e61 660 event = fTrace.getNextEvent(context);
54d55ced
FC
661 assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
662 assertEquals("Event rank", 1002, context.getRank());
663
f17b2f70 664 // Position trace at event rank 4500
54d55ced
FC
665 context = fTrace.seekEvent(4500);
666 assertEquals("Event rank", 4500, context.getRank());
f17b2f70 667
9b635e61 668 event = fTrace.parseEvent(context);
54d55ced
FC
669 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
670 assertEquals("Event rank", 4500, context.getRank());
f17b2f70 671
9b635e61 672 event = fTrace.getNextEvent(context);
54d55ced
FC
673 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
674 assertEquals("Event rank", 4501, context.getRank());
d18dd09b
ASL
675 }
676
54d55ced
FC
677 public void testSeekEventOnRankOfScope() throws Exception {
678
f17b2f70
FC
679 // Position trace at beginning
680 ITmfContext context = fTrace.seekEvent(-1);
54d55ced 681 assertEquals("Event rank", 0, context.getRank());
f17b2f70 682
72f1e62a 683 ITmfEvent event = fTrace.parseEvent(context);
54d55ced
FC
684 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
685 assertEquals("Event rank", 0, context.getRank());
f17b2f70 686
9b635e61 687 event = fTrace.getNextEvent(context);
54d55ced
FC
688 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
689 assertEquals("Event rank", 1, context.getRank());
690
f17b2f70 691 // Position trace at event passed the end
54d55ced
FC
692 context = fTrace.seekEvent(NB_EVENTS);
693 assertEquals("Event rank", NB_EVENTS, context.getRank());
f17b2f70 694
9b635e61 695 event = fTrace.parseEvent(context);
54d55ced
FC
696 assertEquals("Event timestamp", null, event);
697 assertEquals("Event rank", NB_EVENTS, context.getRank());
f17b2f70 698
9b635e61 699 event = fTrace.getNextEvent(context);
54d55ced
FC
700 assertEquals("Event timestamp", null, event);
701 assertEquals("Event rank", NB_EVENTS, context.getRank());
702 }
f17b2f70 703
e31e01e8 704 // ------------------------------------------------------------------------
d18dd09b 705 // processRequest
e31e01e8 706 // ------------------------------------------------------------------------
d18dd09b 707
e31e01e8 708 @SuppressWarnings("unchecked")
f17b2f70 709 public void testProcessRequestForNbEvents() throws Exception {
d18dd09b
ASL
710 final int BLOCK_SIZE = 100;
711 final int NB_EVENTS = 1000;
712 final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
713
f17b2f70 714 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
e31e01e8 715 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, NB_EVENTS, BLOCK_SIZE) {
f17b2f70
FC
716 @Override
717 public void handleData(final TmfEvent event) {
718 super.handleData(event);
719 requestedEvents.add(event);
720 }
d18dd09b 721 };
f17b2f70 722 final ITmfDataProvider<TmfEvent>[] providers = (ITmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
951d134a
FC
723 providers[0].sendRequest(request);
724 request.waitForCompletion();
d18dd09b
ASL
725
726 assertEquals("nbEvents", NB_EVENTS, requestedEvents.size());
727 assertTrue("isCompleted", request.isCompleted());
728 assertFalse("isCancelled", request.isCancelled());
729
730 // Ensure that we have distinct events.
f17b2f70
FC
731 // Don't go overboard: we are not validating the stub!
732 for (int i = 0; i < NB_EVENTS; i++)
d18dd09b 733 assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue());
d18dd09b 734 }
f17b2f70 735
e31e01e8 736 @SuppressWarnings("unchecked")
f17b2f70 737 public void testProcessRequestForAllEvents() throws Exception {
d18dd09b
ASL
738 final int BLOCK_SIZE = 1;
739 final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
740
f17b2f70 741 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
e31e01e8 742 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, NB_EVENTS, BLOCK_SIZE) {
f17b2f70
FC
743 @Override
744 public void handleData(final TmfEvent event) {
745 super.handleData(event);
746 requestedEvents.add(event);
747 }
d18dd09b 748 };
f17b2f70 749 final ITmfDataProvider<TmfEvent>[] providers = (ITmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
951d134a
FC
750 providers[0].sendRequest(request);
751 request.waitForCompletion();
d18dd09b
ASL
752
753 assertEquals("nbEvents", NB_EVENTS, requestedEvents.size());
754 assertTrue("isCompleted", request.isCompleted());
755 assertFalse("isCancelled", request.isCancelled());
756
757 // Ensure that we have distinct events.
f17b2f70
FC
758 // Don't go overboard: we are not validating the stub!
759 for (int i = 0; i < NB_EVENTS; i++)
d18dd09b 760 assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue());
d18dd09b 761 }
f17b2f70 762
e31e01e8 763 // ------------------------------------------------------------------------
d18dd09b 764 // cancel
e31e01e8 765 // ------------------------------------------------------------------------
d18dd09b 766
e31e01e8 767 @SuppressWarnings("unchecked")
f17b2f70 768 public void testCancel() throws Exception {
d18dd09b
ASL
769 final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
770
f17b2f70 771 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
cb866e08 772 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, NB_EVENTS, BLOCK_SIZE) {
f17b2f70
FC
773 int nbRead = 0;
774 @Override
775 public void handleData(final TmfEvent event) {
776 super.handleData(event);
777 requestedEvents.add(event);
778 if (++nbRead == BLOCK_SIZE)
779 cancel();
780 }
d18dd09b 781 };
f17b2f70 782 final ITmfDataProvider<TmfEvent>[] providers = (ITmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
951d134a
FC
783 providers[0].sendRequest(request);
784 request.waitForCompletion();
d18dd09b 785
cb866e08 786 assertEquals("nbEvents", BLOCK_SIZE, requestedEvents.size());
d18dd09b
ASL
787 assertTrue("isCompleted", request.isCompleted());
788 assertTrue("isCancelled", request.isCancelled());
789 }
e31e01e8
FC
790
791}
This page took 0.081749 seconds and 5 git commands to generate.