1 /*******************************************************************************
2 * Copyright (c) 2009, 2013 Ericsson
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
10 * Francois Chouinard - Initial API and implementation
11 * Francois Chouinard - Adapted for TMF Trace Model 1.0
12 * Alexandre Montplaisir - Port to JUnit4
13 *******************************************************************************/
15 package org
.eclipse
.linuxtools
.tmf
.core
.tests
.trace
;
17 import static org
.junit
.Assert
.assertEquals
;
18 import static org
.junit
.Assert
.assertFalse
;
19 import static org
.junit
.Assert
.assertNull
;
20 import static org
.junit
.Assert
.assertTrue
;
21 import static org
.junit
.Assert
.fail
;
24 import java
.io
.IOException
;
25 import java
.net
.URISyntaxException
;
28 import java
.util
.Map
.Entry
;
29 import java
.util
.Vector
;
31 import org
.eclipse
.core
.runtime
.FileLocator
;
32 import org
.eclipse
.core
.runtime
.Path
;
33 import org
.eclipse
.linuxtools
.internal
.tmf
.core
.component
.TmfProviderManager
;
34 import org
.eclipse
.linuxtools
.tmf
.core
.analysis
.IAnalysisModule
;
35 import org
.eclipse
.linuxtools
.tmf
.core
.component
.ITmfEventProvider
;
36 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfEvent
;
37 import org
.eclipse
.linuxtools
.tmf
.core
.exceptions
.TmfTraceException
;
38 import org
.eclipse
.linuxtools
.tmf
.core
.request
.ITmfEventRequest
.ExecutionType
;
39 import org
.eclipse
.linuxtools
.tmf
.core
.request
.TmfEventRequest
;
40 import org
.eclipse
.linuxtools
.tmf
.core
.signal
.TmfSignalManager
;
41 import org
.eclipse
.linuxtools
.tmf
.core
.signal
.TmfTraceOpenedSignal
;
42 import org
.eclipse
.linuxtools
.tmf
.core
.statistics
.ITmfStatistics
;
43 import org
.eclipse
.linuxtools
.tmf
.core
.tests
.TmfCoreTestPlugin
;
44 import org
.eclipse
.linuxtools
.tmf
.core
.tests
.shared
.TmfTestTrace
;
45 import org
.eclipse
.linuxtools
.tmf
.core
.timestamp
.ITmfTimestamp
;
46 import org
.eclipse
.linuxtools
.tmf
.core
.timestamp
.TmfTimeRange
;
47 import org
.eclipse
.linuxtools
.tmf
.core
.timestamp
.TmfTimestamp
;
48 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfContext
;
49 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfTrace
;
50 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.TmfContext
;
51 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.location
.ITmfLocation
;
52 import org
.eclipse
.linuxtools
.tmf
.tests
.stubs
.analysis
.TestAnalysis
;
53 import org
.eclipse
.linuxtools
.tmf
.tests
.stubs
.trace
.TmfTraceStub
;
54 import org
.junit
.After
;
55 import org
.junit
.Before
;
56 import org
.junit
.Rule
;
57 import org
.junit
.Test
;
58 import org
.junit
.rules
.TestRule
;
59 import org
.junit
.rules
.Timeout
;
62 * Test suite for the TmfTrace class.
64 @SuppressWarnings("javadoc")
65 public class TmfTraceTest
{
67 /** Time-out tests after 20 seconds */
69 public TestRule globalTimeout
= new Timeout(20000);
71 // ------------------------------------------------------------------------
73 // ------------------------------------------------------------------------
75 private static final TmfTestTrace TEST_TRACE
= TmfTestTrace
.A_TEST_10K
;
76 private static final long DEFAULT_INITIAL_OFFSET_VALUE
= (1L * 100 * 1000 * 1000); // .1sec
77 private static final int NB_EVENTS
= 10000;
78 private TmfTraceStub fTrace
= null;
80 private static int SCALE
= -3;
82 // ------------------------------------------------------------------------
84 // ------------------------------------------------------------------------
89 final URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(TEST_TRACE
.getFullPath()), null);
90 final File test
= new File(FileLocator
.toFileURL(location
).toURI());
91 fTrace
= new TmfTraceStub(test
.toURI().getPath(), ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, false, null);
92 TmfSignalManager
.deregister(fTrace
);
93 fTrace
.indexTrace(true);
94 } catch (final TmfTraceException e
) {
96 } catch (final URISyntaxException e
) {
98 } catch (final IOException e
) {
104 public void tearDown() {
109 // ------------------------------------------------------------------------
111 // ------------------------------------------------------------------------
114 public void testFullConstructor() throws TmfTraceException
{
116 final URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(TEST_TRACE
.getFullPath()), null);
117 File testfile
= new File(FileLocator
.toFileURL(location
).toURI());
118 TmfTraceStub trace
= new TmfTraceStub(testfile
.toURI().getPath(), ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, false, null);
119 trace
.indexTrace(true);
121 assertEquals("getType", ITmfEvent
.class, trace
.getType());
122 assertNull("getResource", trace
.getResource());
123 assertEquals("getPath", testfile
.toURI().getPath(), trace
.getPath());
124 assertEquals("getCacheSize", ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, trace
.getCacheSize());
125 assertEquals("getStreamingInterval", 0, trace
.getStreamingInterval());
126 assertEquals("getName", TEST_TRACE
.getPath(), trace
.getName());
128 assertEquals("getNbEvents", NB_EVENTS
, trace
.getNbEvents());
129 assertEquals("getRange-start", 1, trace
.getTimeRange().getStartTime().getValue());
130 assertEquals("getRange-end", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
131 assertEquals("getStartTime", 1, trace
.getStartTime().getValue());
132 assertEquals("getEndTime", NB_EVENTS
, trace
.getEndTime().getValue());
134 } catch (final URISyntaxException e
) {
135 fail("URISyntaxException");
136 } catch (final IOException e
) {
142 public void testLiveTraceConstructor() throws TmfTraceException
{
143 final long interval
= 100;
145 final URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(TEST_TRACE
.getFullPath()), null);
146 File testfile
= new File(FileLocator
.toFileURL(location
).toURI());
147 TmfTraceStub trace
= new TmfTraceStub(testfile
.toURI().getPath(), ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, interval
);
148 trace
.indexTrace(true);
150 assertEquals("getType", ITmfEvent
.class, trace
.getType());
151 assertNull("getResource", trace
.getResource());
152 assertEquals("getPath", testfile
.toURI().getPath(), trace
.getPath());
153 assertEquals("getCacheSize", ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, trace
.getCacheSize());
154 assertEquals("getStreamingInterval", interval
, trace
.getStreamingInterval());
155 assertEquals("getName", TEST_TRACE
.getPath(), trace
.getName());
157 assertEquals("getNbEvents", NB_EVENTS
, trace
.getNbEvents());
158 assertEquals("getRange-start", 1, trace
.getTimeRange().getStartTime().getValue());
159 assertEquals("getRange-end", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
160 assertEquals("getStartTime", 1, trace
.getStartTime().getValue());
161 assertEquals("getEndTime", NB_EVENTS
, trace
.getEndTime().getValue());
163 } catch (final URISyntaxException e
) {
164 fail("URISyntaxException");
165 } catch (final IOException e
) {
171 public void testCopyConstructor() throws TmfTraceException
{
173 final URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(TEST_TRACE
.getFullPath()), null);
174 File testfile
= new File(FileLocator
.toFileURL(location
).toURI());
175 TmfTraceStub original
= new TmfTraceStub(testfile
.toURI().getPath(), ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, false, null);
176 TmfTraceStub trace
= new TmfTraceStub(original
);
177 trace
.indexTrace(true);
179 assertEquals("getType", ITmfEvent
.class, trace
.getType());
180 assertNull("getResource", trace
.getResource());
181 assertEquals("getPath", testfile
.toURI().getPath(), trace
.getPath());
182 assertEquals("getCacheSize", ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, trace
.getCacheSize());
183 assertEquals("getStreamingInterval", 0, trace
.getStreamingInterval());
184 assertEquals("getName", TEST_TRACE
.getPath(), trace
.getName());
186 assertEquals("getNbEvents", NB_EVENTS
, trace
.getNbEvents());
187 assertEquals("getRange-start", 1, trace
.getTimeRange().getStartTime().getValue());
188 assertEquals("getRange-end", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
189 assertEquals("getStartTime", 1, trace
.getStartTime().getValue());
190 assertEquals("getEndTime", NB_EVENTS
, trace
.getEndTime().getValue());
192 } catch (final URISyntaxException e
) {
193 fail("URISyntaxException");
194 } catch (final IOException e
) {
198 // Test the copy of a null trace
200 new TmfTraceStub((TmfTraceStub
) null);
201 fail("Missing exception");
202 } catch (final IllegalArgumentException e
) {
204 } catch (final Exception e
) {
205 fail("Unexpected exception");
209 // ------------------------------------------------------------------------
210 // Trace initialization
211 // ------------------------------------------------------------------------
214 public void testInitializeNullPath() {
215 // Instantiate an "empty" trace
216 final TmfTraceStub trace
= new TmfTraceStub();
219 trace
.initialize(null, null, ITmfEvent
.class);
220 fail("TmfTrace.initialize() - no exception thrown");
221 } catch (TmfTraceException e
) {
223 } catch (Exception e
) {
224 fail("TmfTrace.initialize() - wrong exception thrown");
229 public void testInitializeSimplePath() {
230 // Instantiate an "empty" trace
231 final TmfTraceStub trace
= new TmfTraceStub();
233 // Path == trace name
234 String path
= "TraceName";
236 trace
.initialize(null, path
, ITmfEvent
.class);
237 } catch (Exception e
) {
238 fail("TmfTrace.initialize() - Exception thrown");
241 assertEquals("getType", ITmfEvent
.class, trace
.getType());
242 assertNull ("getResource", trace
.getResource());
243 assertEquals("getPath", path
, trace
.getPath());
244 assertEquals("getCacheSize", ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, trace
.getCacheSize());
245 assertEquals("getStreamingInterval", 0, trace
.getStreamingInterval());
246 assertEquals("getName", path
, trace
.getName());
248 assertEquals("getNbEvents", 0, trace
.getNbEvents());
249 assertEquals("getRange-start", Long
.MIN_VALUE
, trace
.getTimeRange().getStartTime().getValue());
250 assertEquals("getRange-end", Long
.MIN_VALUE
, trace
.getTimeRange().getEndTime().getValue());
251 assertEquals("getStartTime", Long
.MIN_VALUE
, trace
.getStartTime().getValue());
252 assertEquals("getEndTime", Long
.MIN_VALUE
, trace
.getEndTime().getValue());
256 public void testInitializeNormalPath() {
257 // Instantiate an "empty" trace
258 final TmfTraceStub trace
= new TmfTraceStub();
260 // Path == trace name
261 String name
= "TraceName";
262 String path
= "/my/trace/path/" + name
;
264 trace
.initialize(null, path
, ITmfEvent
.class);
265 } catch (Exception e
) {
266 fail("TmfTrace.initialize() - Exception thrown");
269 assertEquals("getType", ITmfEvent
.class, trace
.getType());
270 assertNull ("getResource", trace
.getResource());
271 assertEquals("getPath", path
, trace
.getPath());
272 assertEquals("getCacheSize", ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, trace
.getCacheSize());
273 assertEquals("getStreamingInterval", 0, trace
.getStreamingInterval());
274 assertEquals("getName", name
, trace
.getName());
276 assertEquals("getNbEvents", 0, trace
.getNbEvents());
277 assertEquals("getRange-start", Long
.MIN_VALUE
, trace
.getTimeRange().getStartTime().getValue());
278 assertEquals("getRange-end", Long
.MIN_VALUE
, trace
.getTimeRange().getEndTime().getValue());
279 assertEquals("getStartTime", Long
.MIN_VALUE
, trace
.getStartTime().getValue());
280 assertEquals("getEndTime", Long
.MIN_VALUE
, trace
.getEndTime().getValue());
284 public void testInitTrace() throws URISyntaxException
, IOException
, TmfTraceException
, InterruptedException
{
285 // Instantiate an "empty" trace
286 final TmfTraceStub trace
= new TmfTraceStub();
288 assertNull ("getType", trace
.getType());
289 assertNull ("getResource", trace
.getResource());
290 assertEquals("getCacheSize", ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, trace
.getCacheSize());
291 assertEquals("getStreamingInterval", 0, trace
.getStreamingInterval());
292 assertEquals("getName", "", trace
.getName());
294 assertEquals("getNbEvents", 0, trace
.getNbEvents());
295 assertEquals("getRange-start", Long
.MIN_VALUE
, trace
.getTimeRange().getStartTime().getValue());
296 assertEquals("getRange-end", Long
.MIN_VALUE
, trace
.getTimeRange().getEndTime().getValue());
297 assertEquals("getStartTime", Long
.MIN_VALUE
, trace
.getStartTime().getValue());
298 assertEquals("getEndTime", Long
.MIN_VALUE
, trace
.getEndTime().getValue());
301 final URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(TEST_TRACE
.getFullPath()), null);
302 final File testfile
= new File(FileLocator
.toFileURL(location
).toURI());
303 assertTrue("validate", trace
.validate(null, testfile
.getPath()).isOK());
305 // InitTrace and wait for indexing completion...
306 trace
.initTrace(null, testfile
.toURI().getPath(), ITmfEvent
.class);
307 trace
.indexTrace(true);
309 while (trace
.getNbEvents() < NB_EVENTS
&& nbSecs
< 10) {
313 if (trace
.getNbEvents() < NB_EVENTS
) {
317 assertEquals("getType", ITmfEvent
.class, trace
.getType());
318 assertNull ("getResource", trace
.getResource());
319 assertEquals("getCacheSize", ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, trace
.getCacheSize());
320 assertEquals("getStreamingInterval", 0, trace
.getStreamingInterval());
321 assertEquals("getName", TEST_TRACE
.getPath(), trace
.getName());
323 assertEquals("getNbEvents", NB_EVENTS
, trace
.getNbEvents());
324 assertEquals("getRange-start", 1, trace
.getTimeRange().getStartTime().getValue());
325 assertEquals("getRange-end", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
326 assertEquals("getStartTime", 1, trace
.getStartTime().getValue());
327 assertEquals("getEndTime", NB_EVENTS
, trace
.getEndTime().getValue());
330 // ------------------------------------------------------------------------
331 // Set/Get streaming interval
332 // ------------------------------------------------------------------------
335 public void testSetStreamingInterval() throws TmfTraceException
{
336 final TmfTraceStub trace
= new TmfTraceStub(fTrace
);
339 assertEquals("getStreamingInterval", interval
, trace
.getStreamingInterval());
342 trace
.setStreamingInterval(interval
);
343 assertEquals("getStreamingInterval", interval
, trace
.getStreamingInterval());
346 trace
.setStreamingInterval(interval
);
347 assertEquals("getStreamingInterval", 0, trace
.getStreamingInterval());
350 trace
.setStreamingInterval(interval
);
351 assertEquals("getStreamingInterval", interval
, trace
.getStreamingInterval());
356 // ------------------------------------------------------------------------
357 // Set/Get time range
358 // ------------------------------------------------------------------------
361 public void testSetTimeRange() throws TmfTraceException
{
362 final TmfTraceStub trace
= new TmfTraceStub(fTrace
);
363 trace
.indexTrace(true);
365 assertEquals("getRange-start", 1, trace
.getTimeRange().getStartTime().getValue());
366 assertEquals("getRange-end", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
367 assertEquals("getStartTime", 1, trace
.getStartTime().getValue());
368 assertEquals("getEndTime", NB_EVENTS
, trace
.getEndTime().getValue());
370 trace
.setTimeRange(new TmfTimeRange(new TmfTimestamp(100), new TmfTimestamp(200)));
371 assertEquals("setTimeRange", 100, trace
.getTimeRange().getStartTime().getValue());
372 assertEquals("setTimeRange", 200, trace
.getTimeRange().getEndTime().getValue());
373 assertEquals("setTimeRange", 100, trace
.getStartTime().getValue());
374 assertEquals("setTimeRange", 200, trace
.getEndTime().getValue());
380 public void testSetStartTime() throws TmfTraceException
{
381 final TmfTraceStub trace
= new TmfTraceStub(fTrace
);
382 trace
.indexTrace(true);
384 assertEquals("getRange-start", 1, trace
.getTimeRange().getStartTime().getValue());
385 assertEquals("getRange-end", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
386 assertEquals("getStartTime", 1, trace
.getStartTime().getValue());
387 assertEquals("getEndTime", NB_EVENTS
, trace
.getEndTime().getValue());
389 trace
.setStartTime(new TmfTimestamp(100));
390 assertEquals("setStartTime", 100, trace
.getTimeRange().getStartTime().getValue());
391 assertEquals("setStartTime", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
392 assertEquals("setStartTime", 100, trace
.getStartTime().getValue());
393 assertEquals("setStartTime", NB_EVENTS
, trace
.getEndTime().getValue());
399 public void testSetEndTime() throws TmfTraceException
{
400 final TmfTraceStub trace
= new TmfTraceStub(fTrace
);
401 trace
.indexTrace(true);
403 assertEquals("getRange-start", 1, trace
.getTimeRange().getStartTime().getValue());
404 assertEquals("getRange-end", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
405 assertEquals("getStartTime", 1, trace
.getStartTime().getValue());
406 assertEquals("getEndTime", NB_EVENTS
, trace
.getEndTime().getValue());
408 trace
.setEndTime(new TmfTimestamp(100));
409 assertEquals("setEndTime", 1, trace
.getTimeRange().getStartTime().getValue());
410 assertEquals("setEndTime", 100, trace
.getTimeRange().getEndTime().getValue());
411 assertEquals("setEndTime", 1, trace
.getStartTime().getValue());
412 assertEquals("setEndTime", 100, trace
.getEndTime().getValue());
418 public void testSetNbEvents() throws TmfTraceException
{
419 final TmfTraceStub trace
= new TmfTraceStub(fTrace
);
420 trace
.indexTrace(true);
422 assertEquals("getNbEvents", NB_EVENTS
, trace
.getNbEvents());
424 trace
.setNbEvents(0);
425 assertEquals("getNbEvents", 0, trace
.getNbEvents());
427 trace
.setNbEvents(-1);
428 assertEquals("getNbEvents", 0, trace
.getNbEvents());
430 trace
.setNbEvents(NB_EVENTS
+ 1);
431 assertEquals("getNbEvents", NB_EVENTS
+ 1, trace
.getNbEvents());
433 trace
.setNbEvents(NB_EVENTS
);
434 assertEquals("getNbEvents", NB_EVENTS
, trace
.getNbEvents());
439 // ------------------------------------------------------------------------
440 // State system, statistics and modules methods
441 // ------------------------------------------------------------------------
444 public void testGetStatistics() {
445 /* Should be null in unit tests */
446 ITmfStatistics stats
= fTrace
.getStatistics();
451 public void testGetModulesByClass() {
452 /* There should not be any modules at this point */
453 Map
<String
, IAnalysisModule
> modules
= fTrace
.getAnalysisModules();
454 assertTrue(modules
.isEmpty());
456 /* Open the trace, the modules should be populated */
457 fTrace
.traceOpened(new TmfTraceOpenedSignal(this, fTrace
, null));
459 modules
= fTrace
.getAnalysisModules();
460 Map
<String
, TestAnalysis
> testModules
= fTrace
.getAnalysisModules(TestAnalysis
.class);
461 assertFalse(modules
.isEmpty());
462 assertFalse(testModules
.isEmpty());
464 /* Make sure all modules of type TestAnalysis are returned in the second call */
465 for (Entry
<String
, IAnalysisModule
> module
: modules
.entrySet()) {
466 if (module
.getValue() instanceof TestAnalysis
) {
467 assertTrue(testModules
.containsKey(module
.getKey()));
473 // ------------------------------------------------------------------------
474 // seekEvent on location (note: does not reliably set the rank)
475 // ------------------------------------------------------------------------
478 public void testSeekEventOnCacheBoundary() {
479 // Position trace at event rank 0
480 ITmfContext context
= fTrace
.seekEvent(0);
481 ITmfEvent event
= fTrace
.parseEvent(context
);
482 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
483 assertEquals("Event rank", 0, context
.getRank());
485 context
= fTrace
.seekEvent(context
.getLocation());
486 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
488 event
= fTrace
.parseEvent(context
);
489 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
490 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
492 event
= fTrace
.getNext(context
);
493 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
494 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
496 // Position trace at event rank 1000
497 ITmfContext tmpContext
= fTrace
.seekEvent(new TmfTimestamp(1001, SCALE
, 0));
498 context
= fTrace
.seekEvent(tmpContext
.getLocation());
499 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
501 event
= fTrace
.parseEvent(context
);
502 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
503 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
505 event
= fTrace
.getNext(context
);
506 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
507 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
509 // Position trace at event rank 4000
510 tmpContext
= fTrace
.seekEvent(new TmfTimestamp(4001, SCALE
, 0));
511 context
= fTrace
.seekEvent(tmpContext
.getLocation());
512 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
514 event
= fTrace
.parseEvent(context
);
515 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
516 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
518 event
= fTrace
.getNext(context
);
519 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
520 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
524 public void testSeekEventNotOnCacheBoundary() {
525 // Position trace at event rank 9
526 ITmfContext tmpContext
= fTrace
.seekEvent(new TmfTimestamp(10, SCALE
, 0));
527 TmfContext context
= fTrace
.seekEvent(tmpContext
.getLocation());
528 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
530 ITmfEvent event
= fTrace
.parseEvent(context
);
531 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
532 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
534 event
= fTrace
.getNext(context
);
535 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
536 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
538 // Position trace at event rank 999
539 tmpContext
= fTrace
.seekEvent(new TmfTimestamp(1000, SCALE
, 0));
540 context
= fTrace
.seekEvent(tmpContext
.getLocation());
541 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
543 event
= fTrace
.parseEvent(context
);
544 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
545 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
547 event
= fTrace
.getNext(context
);
548 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
549 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
551 // Position trace at event rank 1001
552 tmpContext
= fTrace
.seekEvent(new TmfTimestamp(1002, SCALE
, 0));
553 context
= fTrace
.seekEvent(tmpContext
.getLocation());
554 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
556 event
= fTrace
.parseEvent(context
);
557 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
558 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
560 event
= fTrace
.getNext(context
);
561 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
562 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
564 // Position trace at event rank 4500
565 tmpContext
= fTrace
.seekEvent(new TmfTimestamp(4501, SCALE
, 0));
566 context
= fTrace
.seekEvent(tmpContext
.getLocation());
567 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
569 event
= fTrace
.parseEvent(context
);
570 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
571 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
573 event
= fTrace
.getNext(context
);
574 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
575 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
579 public void testSeekEventOutOfScope() {
580 // Position trace at beginning
581 ITmfContext tmpContext
= fTrace
.seekEvent(0);
582 ITmfContext context
= fTrace
.seekEvent(tmpContext
.getLocation());
583 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
585 ITmfEvent event
= fTrace
.parseEvent(context
);
586 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
587 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
589 event
= fTrace
.getNext(context
);
590 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
591 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
593 // Position trace at event passed the end
594 context
= fTrace
.seekEvent(new TmfTimestamp(NB_EVENTS
+ 1, SCALE
, 0));
595 assertNull("Event timestamp", context
.getLocation());
596 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
598 event
= fTrace
.getNext(context
);
599 assertNull("Event", event
);
602 // ------------------------------------------------------------------------
603 // seekEvent on timestamp (note: does not reliably set the rank)
604 // ------------------------------------------------------------------------
607 public void testSeekEventOnNullTimestamp() {
608 // Position trace at event rank 0
609 ITmfContext context
= fTrace
.seekEvent((ITmfTimestamp
) null);
610 assertEquals("Event rank", 0, context
.getRank());
612 ITmfEvent event
= fTrace
.parseEvent(context
);
613 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
614 assertEquals("Event rank", 0, context
.getRank());
618 public void testSeekEventOnTimestampOnCacheBoundary() {
619 // Position trace at event rank 0
620 ITmfContext context
= fTrace
.seekEvent(new TmfTimestamp(1, SCALE
, 0));
621 assertEquals("Event rank", 0, context
.getRank());
623 ITmfEvent event
= fTrace
.parseEvent(context
);
624 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
625 assertEquals("Event rank", 0, context
.getRank());
627 event
= fTrace
.getNext(context
);
628 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
629 assertEquals("Event rank", 1, context
.getRank());
631 // Position trace at event rank 1000
632 context
= fTrace
.seekEvent(new TmfTimestamp(1001, SCALE
, 0));
633 assertEquals("Event rank", 1000, context
.getRank());
635 event
= fTrace
.parseEvent(context
);
636 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
637 assertEquals("Event rank", 1000, context
.getRank());
639 event
= fTrace
.getNext(context
);
640 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
641 assertEquals("Event rank", 1001, context
.getRank());
643 // Position trace at event rank 4000
644 context
= fTrace
.seekEvent(new TmfTimestamp(4001, SCALE
, 0));
645 assertEquals("Event rank", 4000, context
.getRank());
647 event
= fTrace
.parseEvent(context
);
648 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
649 assertEquals("Event rank", 4000, context
.getRank());
651 event
= fTrace
.getNext(context
);
652 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
653 assertEquals("Event rank", 4001, context
.getRank());
657 public void testSeekEventOnTimestampNotOnCacheBoundary() {
658 // Position trace at event rank 1
659 ITmfContext context
= fTrace
.seekEvent(new TmfTimestamp(2, SCALE
, 0));
660 assertEquals("Event rank", 1, context
.getRank());
662 ITmfEvent event
= fTrace
.parseEvent(context
);
663 assertEquals("Event timestamp", 2, event
.getTimestamp().getValue());
664 assertEquals("Event rank", 1, context
.getRank());
666 event
= fTrace
.getNext(context
);
667 assertEquals("Event timestamp", 2, event
.getTimestamp().getValue());
668 assertEquals("Event rank", 2, context
.getRank());
670 // Position trace at event rank 9
671 context
= fTrace
.seekEvent(new TmfTimestamp(10, SCALE
, 0));
672 assertEquals("Event rank", 9, context
.getRank());
674 event
= fTrace
.parseEvent(context
);
675 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
676 assertEquals("Event rank", 9, context
.getRank());
678 event
= fTrace
.getNext(context
);
679 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
680 assertEquals("Event rank", 10, context
.getRank());
682 // Position trace at event rank 999
683 context
= fTrace
.seekEvent(new TmfTimestamp(1000, SCALE
, 0));
684 assertEquals("Event rank", 999, context
.getRank());
686 event
= fTrace
.parseEvent(context
);
687 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
688 assertEquals("Event rank", 999, context
.getRank());
690 event
= fTrace
.getNext(context
);
691 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
692 assertEquals("Event rank", 1000, context
.getRank());
694 // Position trace at event rank 1001
695 context
= fTrace
.seekEvent(new TmfTimestamp(1002, SCALE
, 0));
696 assertEquals("Event rank", 1001, context
.getRank());
698 event
= fTrace
.parseEvent(context
);
699 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
700 assertEquals("Event rank", 1001, context
.getRank());
702 event
= fTrace
.getNext(context
);
703 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
704 assertEquals("Event rank", 1002, context
.getRank());
706 // Position trace at event rank 4500
707 context
= fTrace
.seekEvent(new TmfTimestamp(4501, SCALE
, 0));
708 assertEquals("Event rank", 4500, context
.getRank());
710 event
= fTrace
.parseEvent(context
);
711 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
712 assertEquals("Event rank", 4500, context
.getRank());
714 event
= fTrace
.getNext(context
);
715 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
716 assertEquals("Event rank", 4501, context
.getRank());
720 public void testSeekEventOnTimestampOutOfScope() {
721 // Position trace at beginning
722 ITmfContext context
= fTrace
.seekEvent(new TmfTimestamp(-1, SCALE
, 0));
723 assertEquals("Event rank", 0, context
.getRank());
725 ITmfEvent event
= fTrace
.parseEvent(context
);
726 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
727 assertEquals("Event rank", 0, context
.getRank());
729 event
= fTrace
.getNext(context
);
730 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
731 assertEquals("Event rank", 1, context
.getRank());
733 // Position trace at event passed the end
734 context
= fTrace
.seekEvent(new TmfTimestamp(NB_EVENTS
+ 1, SCALE
, 0));
735 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
737 event
= fTrace
.parseEvent(context
);
738 assertEquals("Event timestamp", null, event
);
739 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
741 event
= fTrace
.getNext(context
);
742 assertEquals("Event timestamp", null, event
);
743 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
746 // ------------------------------------------------------------------------
748 // ------------------------------------------------------------------------
751 public void testSeekEventOnNegativeRank() {
752 // Position trace at event rank 0
753 ITmfContext context
= fTrace
.seekEvent(-1);
754 assertEquals("Event rank", 0, context
.getRank());
756 ITmfEvent event
= fTrace
.parseEvent(context
);
757 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
758 assertEquals("Event rank", 0, context
.getRank());
762 public void testSeekOnRankOnCacheBoundary() {
763 // On lower bound, returns the first event (ts = 1)
764 ITmfContext context
= fTrace
.seekEvent(0);
765 assertEquals("Event rank", 0, context
.getRank());
767 ITmfEvent event
= fTrace
.parseEvent(context
);
768 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
769 assertEquals("Event rank", 0, context
.getRank());
771 event
= fTrace
.getNext(context
);
772 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
773 assertEquals("Event rank", 1, context
.getRank());
775 // Position trace at event rank 1000
776 context
= fTrace
.seekEvent(1000);
777 assertEquals("Event rank", 1000, context
.getRank());
779 event
= fTrace
.parseEvent(context
);
780 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
781 assertEquals("Event rank", 1000, context
.getRank());
783 event
= fTrace
.getNext(context
);
784 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
785 assertEquals("Event rank", 1001, context
.getRank());
787 // Position trace at event rank 4000
788 context
= fTrace
.seekEvent(4000);
789 assertEquals("Event rank", 4000, context
.getRank());
791 event
= fTrace
.parseEvent(context
);
792 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
793 assertEquals("Event rank", 4000, context
.getRank());
795 event
= fTrace
.getNext(context
);
796 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
797 assertEquals("Event rank", 4001, context
.getRank());
801 public void testSeekOnRankNotOnCacheBoundary() {
802 // Position trace at event rank 9
803 ITmfContext context
= fTrace
.seekEvent(9);
804 assertEquals("Event rank", 9, context
.getRank());
806 ITmfEvent event
= fTrace
.parseEvent(context
);
807 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
808 assertEquals("Event rank", 9, context
.getRank());
810 event
= fTrace
.getNext(context
);
811 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
812 assertEquals("Event rank", 10, context
.getRank());
814 // Position trace at event rank 999
815 context
= fTrace
.seekEvent(999);
816 assertEquals("Event rank", 999, context
.getRank());
818 event
= fTrace
.parseEvent(context
);
819 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
820 assertEquals("Event rank", 999, context
.getRank());
822 event
= fTrace
.getNext(context
);
823 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
824 assertEquals("Event rank", 1000, context
.getRank());
826 // Position trace at event rank 1001
827 context
= fTrace
.seekEvent(1001);
828 assertEquals("Event rank", 1001, context
.getRank());
830 event
= fTrace
.parseEvent(context
);
831 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
832 assertEquals("Event rank", 1001, context
.getRank());
834 event
= fTrace
.getNext(context
);
835 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
836 assertEquals("Event rank", 1002, context
.getRank());
838 // Position trace at event rank 4500
839 context
= fTrace
.seekEvent(4500);
840 assertEquals("Event rank", 4500, context
.getRank());
842 event
= fTrace
.parseEvent(context
);
843 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
844 assertEquals("Event rank", 4500, context
.getRank());
846 event
= fTrace
.getNext(context
);
847 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
848 assertEquals("Event rank", 4501, context
.getRank());
852 public void testSeekEventOnRankOutOfScope() {
853 // Position trace at beginning
854 ITmfContext context
= fTrace
.seekEvent(-1);
855 assertEquals("Event rank", 0, context
.getRank());
857 ITmfEvent event
= fTrace
.parseEvent(context
);
858 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
859 assertEquals("Event rank", 0, context
.getRank());
861 event
= fTrace
.getNext(context
);
862 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
863 assertEquals("Event rank", 1, context
.getRank());
865 // Position trace at event passed the end
866 context
= fTrace
.seekEvent(NB_EVENTS
);
867 assertEquals("Event rank", NB_EVENTS
, context
.getRank());
869 event
= fTrace
.parseEvent(context
);
870 assertNull("Event", event
);
871 assertEquals("Event rank", NB_EVENTS
, context
.getRank());
873 event
= fTrace
.getNext(context
);
874 assertNull("Event", event
);
875 assertEquals("Event rank", NB_EVENTS
, context
.getRank());
878 // ------------------------------------------------------------------------
879 // parseEvent - make sure parseEvent doesn't update the context
880 // ------------------------------------------------------------------------
883 public void testParseEvent() {
884 final int NB_READS
= 20;
886 // On lower bound, returns the first event (ts = 0)
887 final TmfContext context
= (TmfContext
) fTrace
.seekEvent(new TmfTimestamp(0, SCALE
, 0));
888 TmfContext svContext
= new TmfContext(context
);
890 ITmfEvent event
= fTrace
.parseEvent(context
);
891 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
892 assertEquals("Event rank", 0, context
.getRank());
893 assertTrue("parseEvent", context
.equals(svContext
));
895 event
= fTrace
.parseEvent(context
);
896 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
897 assertEquals("Event rank", 0, context
.getRank());
898 assertTrue("parseEvent", context
.equals(svContext
));
900 event
= fTrace
.parseEvent(context
);
901 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
902 assertEquals("Event rank", 0, context
.getRank());
903 assertTrue("parseEvent", context
.equals(svContext
));
905 // Position the trace at event NB_READS
906 for (int i
= 1; i
< NB_READS
; i
++) {
907 event
= fTrace
.getNext(context
);
908 assertEquals("Event timestamp", i
, event
.getTimestamp().getValue());
911 svContext
= new TmfContext(context
);
912 event
= fTrace
.parseEvent(context
);
913 assertEquals("Event timestamp", NB_READS
, event
.getTimestamp().getValue());
914 assertEquals("Event rank", NB_READS
-1 , context
.getRank());
915 assertTrue("parseEvent", context
.equals(svContext
));
917 event
= fTrace
.parseEvent(context
);
918 assertEquals("Event timestamp", NB_READS
, event
.getTimestamp().getValue());
919 assertEquals("Event rank", NB_READS
- 1, context
.getRank());
920 assertTrue("parseEvent", context
.equals(svContext
));
923 // ------------------------------------------------------------------------
924 // getNext - updates the context
925 // ------------------------------------------------------------------------
928 public void testGetNextAfteSeekingOnTS_1() {
929 final long INITIAL_TS
= 1;
930 final int NB_READS
= 20;
932 // On lower bound, returns the first event (ts = 1)
933 final ITmfContext context
= fTrace
.seekEvent(new TmfTimestamp(INITIAL_TS
, SCALE
, 0));
937 for (int i
= 0; i
< NB_READS
; i
++) {
938 event
= fTrace
.getNext(context
);
939 assertEquals("Event timestamp", INITIAL_TS
+ i
, event
.getTimestamp().getValue());
940 assertEquals("Event rank", INITIAL_TS
+ i
, context
.getRank());
943 // Make sure we stay positioned
944 event
= fTrace
.parseEvent(context
);
945 assertEquals("Event timestamp", INITIAL_TS
+ NB_READS
, event
.getTimestamp().getValue());
946 assertEquals("Event rank", INITIAL_TS
+ NB_READS
- 1, context
.getRank());
950 public void testGetNextAfteSeekingOnTS_2() {
951 final long INITIAL_TS
= 2;
952 final int NB_READS
= 20;
954 // On lower bound, returns the first event (ts = 500)
955 final ITmfContext context
= fTrace
.seekEvent(new TmfTimestamp(INITIAL_TS
, SCALE
, 0));
959 for (int i
= 0; i
< NB_READS
; i
++) {
960 event
= fTrace
.getNext(context
);
961 assertEquals("Event timestamp", INITIAL_TS
+ i
, event
.getTimestamp().getValue());
962 assertEquals("Event rank", INITIAL_TS
+ i
, context
.getRank());
965 // Make sure we stay positioned
966 event
= fTrace
.parseEvent(context
);
967 assertEquals("Event timestamp", INITIAL_TS
+ NB_READS
, event
.getTimestamp().getValue());
968 assertEquals("Event rank", INITIAL_TS
+ NB_READS
- 1, context
.getRank());
972 public void testGetNextAfteSeekingOnTS_3() {
973 final long INITIAL_TS
= 500;
974 final int NB_READS
= 20;
976 // On lower bound, returns the first event (ts = 500)
977 final ITmfContext context
= fTrace
.seekEvent(new TmfTimestamp(INITIAL_TS
, SCALE
, 0));
981 for (int i
= 0; i
< NB_READS
; i
++) {
982 event
= fTrace
.getNext(context
);
983 assertEquals("Event timestamp", INITIAL_TS
+ i
, event
.getTimestamp().getValue());
984 assertEquals("Event rank", INITIAL_TS
+ i
, context
.getRank());
987 // Make sure we stay positioned
988 event
= fTrace
.parseEvent(context
);
989 assertEquals("Event timestamp", INITIAL_TS
+ NB_READS
, event
.getTimestamp().getValue());
990 assertEquals("Event rank", INITIAL_TS
+ NB_READS
- 1, context
.getRank());
994 public void testGetNextAfterSeekingOnRank_1() {
995 final long INITIAL_RANK
= 0L;
996 final int NB_READS
= 20;
998 // On lower bound, returns the first event (rank = 0)
999 final ITmfContext context
= fTrace
.seekEvent(INITIAL_RANK
);
1003 for (int i
= 0; i
< NB_READS
; i
++) {
1004 event
= fTrace
.getNext(context
);
1005 assertEquals("Event timestamp", INITIAL_RANK
+ i
+ 1, event
.getTimestamp().getValue());
1006 assertEquals("Event rank", INITIAL_RANK
+ i
+ 1, context
.getRank());
1009 // Make sure we stay positioned
1010 event
= fTrace
.parseEvent(context
);
1011 assertEquals("Event timestamp", INITIAL_RANK
+ NB_READS
+ 1, event
.getTimestamp().getValue());
1012 assertEquals("Event rank", INITIAL_RANK
+ NB_READS
, context
.getRank());
1016 public void testGetNextAfterSeekingOnRank_2() {
1017 final long INITIAL_RANK
= 1L;
1018 final int NB_READS
= 20;
1020 // On lower bound, returns the first event (rank = 0)
1021 final ITmfContext context
= fTrace
.seekEvent(INITIAL_RANK
);
1025 for (int i
= 0; i
< NB_READS
; i
++) {
1026 event
= fTrace
.getNext(context
);
1027 assertEquals("Event timestamp", INITIAL_RANK
+ i
+ 1, event
.getTimestamp().getValue());
1028 assertEquals("Event rank", INITIAL_RANK
+ i
+ 1, context
.getRank());
1031 // Make sure we stay positioned
1032 event
= fTrace
.parseEvent(context
);
1033 assertEquals("Event timestamp", INITIAL_RANK
+ NB_READS
+ 1, event
.getTimestamp().getValue());
1034 assertEquals("Event rank", INITIAL_RANK
+ NB_READS
, context
.getRank());
1038 public void testGetNextAfterSeekingOnRank_3() {
1039 final long INITIAL_RANK
= 500L;
1040 final int NB_READS
= 20;
1042 // On lower bound, returns the first event (rank = 0)
1043 final ITmfContext context
= fTrace
.seekEvent(INITIAL_RANK
);
1047 for (int i
= 0; i
< NB_READS
; i
++) {
1048 event
= fTrace
.getNext(context
);
1049 assertEquals("Event timestamp", INITIAL_RANK
+ i
+ 1, event
.getTimestamp().getValue());
1050 assertEquals("Event rank", INITIAL_RANK
+ i
+ 1, context
.getRank());
1053 // Make sure we stay positioned
1054 event
= fTrace
.parseEvent(context
);
1055 assertEquals("Event timestamp", INITIAL_RANK
+ NB_READS
+ 1, event
.getTimestamp().getValue());
1056 assertEquals("Event rank", INITIAL_RANK
+ NB_READS
, context
.getRank());
1060 public void testGetNextAfterSeekingOnLocation_1() {
1061 final ITmfLocation INITIAL_LOC
= null;
1062 final long INITIAL_TS
= 1;
1063 final int NB_READS
= 20;
1065 // On lower bound, returns the first event (ts = 1)
1066 final ITmfContext context
= fTrace
.seekEvent(INITIAL_LOC
);
1070 for (int i
= 0; i
< NB_READS
; i
++) {
1071 event
= fTrace
.getNext(context
);
1072 assertEquals("Event timestamp", INITIAL_TS
+ i
, event
.getTimestamp().getValue());
1073 assertEquals("Event rank", INITIAL_TS
+ i
, context
.getRank());
1076 // Make sure we stay positioned
1077 event
= fTrace
.parseEvent(context
);
1078 assertEquals("Event timestamp", INITIAL_TS
+ NB_READS
, event
.getTimestamp().getValue());
1079 assertEquals("Event rank", INITIAL_TS
+ NB_READS
- 1, context
.getRank());
1083 public void testGetNextAfterSeekingOnLocation_2() {
1084 final ITmfLocation INITIAL_LOC
= fTrace
.seekEvent(1L).getLocation();
1085 final long INITIAL_TS
= 2;
1086 final int NB_READS
= 20;
1088 // On lower bound, returns the first event (ts = 501)
1089 final ITmfContext context
= fTrace
.seekEvent(INITIAL_LOC
);
1093 for (int i
= 0; i
< NB_READS
; i
++) {
1094 event
= fTrace
.getNext(context
);
1095 assertEquals("Event timestamp", INITIAL_TS
+ i
, event
.getTimestamp().getValue());
1098 // Make sure we stay positioned
1099 event
= fTrace
.parseEvent(context
);
1100 assertEquals("Event timestamp", INITIAL_TS
+ NB_READS
, event
.getTimestamp().getValue());
1104 public void testGetNextAfterSeekingOnLocation_3() {
1105 final ITmfLocation INITIAL_LOC
= fTrace
.seekEvent(500L).getLocation();
1106 final long INITIAL_TS
= 501;
1107 final int NB_READS
= 20;
1109 // On lower bound, returns the first event (ts = 501)
1110 final ITmfContext context
= fTrace
.seekEvent(INITIAL_LOC
);
1114 for (int i
= 0; i
< NB_READS
; i
++) {
1115 event
= fTrace
.getNext(context
);
1116 assertEquals("Event timestamp", INITIAL_TS
+ i
, event
.getTimestamp().getValue());
1119 // Make sure we stay positioned
1120 event
= fTrace
.parseEvent(context
);
1121 assertEquals("Event timestamp", INITIAL_TS
+ NB_READS
, event
.getTimestamp().getValue());
1125 public void testGetNextLocation() {
1126 ITmfContext context1
= fTrace
.seekEvent(0);
1127 fTrace
.getNext(context1
);
1128 ITmfLocation location
= context1
.getLocation();
1129 ITmfEvent event1
= fTrace
.getNext(context1
);
1130 ITmfContext context2
= fTrace
.seekEvent(location
);
1131 ITmfEvent event2
= fTrace
.getNext(context2
);
1132 assertEquals("Event timestamp", event1
.getTimestamp().getValue(), event2
.getTimestamp().getValue());
1136 public void testGetNextEndLocation() {
1137 ITmfContext context1
= fTrace
.seekEvent(fTrace
.getNbEvents() - 1);
1138 fTrace
.getNext(context1
);
1139 ITmfLocation location
= context1
.getLocation();
1140 ITmfContext context2
= fTrace
.seekEvent(location
);
1141 ITmfEvent event
= fTrace
.getNext(context2
);
1142 assertNull("Event", event
);
1145 // ------------------------------------------------------------------------
1147 // ------------------------------------------------------------------------
1150 public void testProcessEventRequestForAllEvents() throws InterruptedException
{
1151 final Vector
<ITmfEvent
> requestedEvents
= new Vector
<ITmfEvent
>();
1153 final TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
1154 final TmfEventRequest request
= new TmfEventRequest(ITmfEvent
.class,
1155 range
, 0, NB_EVENTS
, ExecutionType
.FOREGROUND
) {
1157 public void handleData(final ITmfEvent event
) {
1158 super.handleData(event
);
1159 requestedEvents
.add(event
);
1162 final ITmfEventProvider
[] providers
= TmfProviderManager
.getProviders(ITmfEvent
.class, TmfTraceStub
.class);
1163 providers
[0].sendRequest(request
);
1164 request
.waitForCompletion();
1166 assertEquals("nbEvents", NB_EVENTS
, requestedEvents
.size());
1167 assertTrue("isCompleted", request
.isCompleted());
1168 assertFalse("isCancelled", request
.isCancelled());
1170 // Ensure that we have distinct events.
1171 // Don't go overboard: we are not validating the stub!
1172 for (int i
= 0; i
< NB_EVENTS
; i
++) {
1173 assertEquals("Distinct events", i
+ 1, requestedEvents
.get(i
).getTimestamp().getValue());
1178 public void testProcessEventRequestForNbEvents() throws InterruptedException
{
1179 final int nbEvents
= 1000;
1180 final Vector
<ITmfEvent
> requestedEvents
= new Vector
<ITmfEvent
>();
1182 final TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
1183 final TmfEventRequest request
= new TmfEventRequest(ITmfEvent
.class,
1184 range
, 0, nbEvents
, ExecutionType
.FOREGROUND
) {
1186 public void handleData(final ITmfEvent event
) {
1187 super.handleData(event
);
1188 requestedEvents
.add(event
);
1191 final ITmfEventProvider
[] providers
= TmfProviderManager
.getProviders(ITmfEvent
.class, TmfTraceStub
.class);
1192 providers
[0].sendRequest(request
);
1193 request
.waitForCompletion();
1195 assertEquals("nbEvents", nbEvents
, requestedEvents
.size());
1196 assertTrue("isCompleted", request
.isCompleted());
1197 assertFalse("isCancelled", request
.isCancelled());
1199 // Ensure that we have distinct events.
1200 // Don't go overboard: we are not validating the stub!
1201 for (int i
= 0; i
< nbEvents
; i
++) {
1202 assertEquals("Distinct events", i
+ 1, requestedEvents
.get(i
).getTimestamp().getValue());
1207 public void testProcessEventRequestForSomeEvents() throws InterruptedException
{
1208 final long startTime
= 100;
1209 final int nbEvents
= 1000;
1210 final Vector
<ITmfEvent
> requestedEvents
= new Vector
<ITmfEvent
>();
1212 final TmfTimeRange range
= new TmfTimeRange(new TmfTimestamp(startTime
, SCALE
), TmfTimestamp
.BIG_CRUNCH
);
1213 final TmfEventRequest request
= new TmfEventRequest(ITmfEvent
.class,
1214 range
, 0, nbEvents
, ExecutionType
.FOREGROUND
) {
1216 public void handleData(final ITmfEvent event
) {
1217 super.handleData(event
);
1218 requestedEvents
.add(event
);
1221 final ITmfEventProvider
[] providers
= TmfProviderManager
.getProviders(ITmfEvent
.class, TmfTraceStub
.class);
1222 providers
[0].sendRequest(request
);
1223 request
.waitForCompletion();
1225 assertEquals("nbEvents", nbEvents
, requestedEvents
.size());
1226 assertTrue("isCompleted", request
.isCompleted());
1227 assertFalse("isCancelled", request
.isCancelled());
1229 // Ensure that we have distinct events.
1230 // Don't go overboard: we are not validating the stub!
1231 for (int i
= 0; i
< nbEvents
; i
++) {
1232 assertEquals("Distinct events", startTime
+ i
, requestedEvents
.get(i
).getTimestamp().getValue());
1237 public void testProcessEventRequestForOtherEvents() throws InterruptedException
{
1238 final int startIndex
= 99;
1239 final long startTime
= 100;
1240 final int nbEvents
= 1000;
1241 final Vector
<ITmfEvent
> requestedEvents
= new Vector
<ITmfEvent
>();
1243 final TmfTimeRange range
= new TmfTimeRange(new TmfTimestamp(startTime
, SCALE
), TmfTimestamp
.BIG_CRUNCH
);
1244 final TmfEventRequest request
= new TmfEventRequest(ITmfEvent
.class,
1245 range
, startIndex
, nbEvents
, ExecutionType
.FOREGROUND
) {
1247 public void handleData(final ITmfEvent event
) {
1248 super.handleData(event
);
1249 requestedEvents
.add(event
);
1252 final ITmfEventProvider
[] providers
= TmfProviderManager
.getProviders(ITmfEvent
.class, TmfTraceStub
.class);
1253 providers
[0].sendRequest(request
);
1254 request
.waitForCompletion();
1256 assertEquals("nbEvents", nbEvents
, requestedEvents
.size());
1257 assertTrue("isCompleted", request
.isCompleted());
1258 assertFalse("isCancelled", request
.isCancelled());
1260 // Ensure that we have distinct events.
1261 // Don't go overboard: we are not validating the stub!
1262 for (int i
= 0; i
< nbEvents
; i
++) {
1263 assertEquals("Distinct events", startTime
+ i
, requestedEvents
.get(i
).getTimestamp().getValue());
1268 public void testProcessDataRequestForSomeEvents() throws InterruptedException
{
1269 final int startIndex
= 100;
1270 final int nbEvents
= 1000;
1271 final Vector
<ITmfEvent
> requestedEvents
= new Vector
<ITmfEvent
>();
1273 final TmfEventRequest request
= new TmfEventRequest(ITmfEvent
.class,
1274 TmfTimeRange
.ETERNITY
,
1277 TmfEventRequest
.ExecutionType
.FOREGROUND
) {
1279 public void handleData(final ITmfEvent event
) {
1280 super.handleData(event
);
1281 requestedEvents
.add(event
);
1284 final ITmfEventProvider
[] providers
= TmfProviderManager
.getProviders(ITmfEvent
.class, TmfTraceStub
.class);
1285 providers
[0].sendRequest(request
);
1286 request
.waitForCompletion();
1288 assertEquals("nbEvents", nbEvents
, requestedEvents
.size());
1289 assertTrue("isCompleted", request
.isCompleted());
1290 assertFalse("isCancelled", request
.isCancelled());
1292 // Ensure that we have distinct events.
1293 // Don't go overboard: we are not validating the stub!
1294 for (int i
= 0; i
< nbEvents
; i
++) {
1295 assertEquals("Distinct events", startIndex
+ 1 + i
, requestedEvents
.get(i
).getTimestamp().getValue());
1299 // ------------------------------------------------------------------------
1301 // ------------------------------------------------------------------------
1304 public void testCancel() throws InterruptedException
{
1305 final int limit
= 500;
1306 final Vector
<ITmfEvent
> requestedEvents
= new Vector
<ITmfEvent
>();
1308 final TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
1309 final TmfEventRequest request
= new TmfEventRequest(ITmfEvent
.class,
1310 range
, 0, NB_EVENTS
, ExecutionType
.FOREGROUND
) {
1314 public void handleData(final ITmfEvent event
) {
1315 super.handleData(event
);
1316 requestedEvents
.add(event
);
1317 if (++nbRead
== limit
) {
1322 final ITmfEventProvider
[] providers
= TmfProviderManager
.getProviders(ITmfEvent
.class, TmfTraceStub
.class);
1323 providers
[0].sendRequest(request
);
1324 request
.waitForCompletion();
1326 assertEquals("nbEvents", limit
, requestedEvents
.size());
1327 assertTrue("isCompleted", request
.isCompleted());
1328 assertTrue("isCancelled", request
.isCancelled());
1331 // ------------------------------------------------------------------------
1333 // ------------------------------------------------------------------------
1336 public void testDefaultTmfTraceStub() {
1337 assertFalse ("Open trace", fTrace
== null);
1338 assertEquals("getType", ITmfEvent
.class, fTrace
.getType());
1339 assertNull ("getResource", fTrace
.getResource());
1340 assertEquals("getStreamingInterval", 0, fTrace
.getStreamingInterval());
1341 assertEquals("getName", TEST_TRACE
.getPath(), fTrace
.getName());
1343 assertEquals("getNbEvents", NB_EVENTS
, fTrace
.getNbEvents());
1344 assertEquals("getRange-start", 1, fTrace
.getTimeRange().getStartTime().getValue());
1345 assertEquals("getRange-end", NB_EVENTS
, fTrace
.getTimeRange().getEndTime().getValue());
1346 assertEquals("getStartTime", 1, fTrace
.getStartTime().getValue());
1347 assertEquals("getEndTime", NB_EVENTS
, fTrace
.getEndTime().getValue());
1349 String expected
= "TmfTrace [fPath=" + fTrace
.getPath() + ", fCacheSize=" + fTrace
.getCacheSize() +
1350 ", fNbEvents=" + fTrace
.getNbEvents() + ", fStartTime=" + fTrace
.getStartTime() +
1351 ", fEndTime=" + fTrace
.getEndTime() + ", fStreamingInterval=" + fTrace
.getStreamingInterval() +
1353 assertEquals("toString", expected
, fTrace
.toString());
1356 // ------------------------------------------------------------------------
1357 // getInitialRangeOffset, getCurrentRange, getCurrentTime
1358 // ------------------------------------------------------------------------
1361 public void testCurrentTimeValues() throws TmfTraceException
{
1363 TmfTraceStub trace
= null;
1364 File testfile
= null;
1366 final URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(TEST_TRACE
.getFullPath()), null);
1367 testfile
= new File(FileLocator
.toFileURL(location
).toURI());
1368 trace
= new TmfTraceStub(testfile
.toURI().getPath(), ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, false, null);
1369 // verify initial values
1370 TmfTimestamp defaultInitRange
= new TmfTimestamp(DEFAULT_INITIAL_OFFSET_VALUE
, ITmfTimestamp
.NANOSECOND_SCALE
);
1371 assertEquals("getInitialRangeOffset", defaultInitRange
, trace
.getInitialRangeOffset());
1372 trace
.setInitialRangeOffset(new TmfTimestamp(5, ITmfTimestamp
.MILLISECOND_SCALE
));
1373 trace
.indexTrace(true);
1375 TmfTimestamp initRange
= new TmfTimestamp(5, ITmfTimestamp
.MILLISECOND_SCALE
);
1376 assertEquals("getInitialRangeOffset", initRange
, trace
.getInitialRangeOffset());
1378 } catch (final URISyntaxException e
) {
1379 fail("URISyntaxException");
1380 } catch (final IOException e
) {
1381 fail("IOException");
1386 * Run the String getHostId() method test
1389 public void testTraceHostId() {
1390 String a
= fTrace
.getHostId();
1391 assertEquals("A-Test-10K", a
);