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