1 /*******************************************************************************
2 * Copyright (c) 2009, 2010, 2012 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 *******************************************************************************/
14 package org
.eclipse
.linuxtools
.tmf
.core
.tests
.trace
;
17 import java
.io
.IOException
;
18 import java
.net
.URISyntaxException
;
20 import java
.util
.Vector
;
22 import junit
.framework
.TestCase
;
24 import org
.eclipse
.core
.runtime
.FileLocator
;
25 import org
.eclipse
.core
.runtime
.Path
;
26 import org
.eclipse
.linuxtools
.internal
.tmf
.core
.component
.TmfProviderManager
;
27 import org
.eclipse
.linuxtools
.tmf
.core
.component
.ITmfDataProvider
;
28 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfEvent
;
29 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfTimestamp
;
30 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfEvent
;
31 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfTimeRange
;
32 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfTimestamp
;
33 import org
.eclipse
.linuxtools
.tmf
.core
.exceptions
.TmfTraceException
;
34 import org
.eclipse
.linuxtools
.tmf
.core
.request
.TmfDataRequest
;
35 import org
.eclipse
.linuxtools
.tmf
.core
.request
.TmfEventRequest
;
36 import org
.eclipse
.linuxtools
.tmf
.core
.tests
.TmfCoreTestPlugin
;
37 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfContext
;
38 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfTrace
;
39 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.TmfCheckpointIndexer
;
40 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.TmfContext
;
41 import org
.eclipse
.linuxtools
.tmf
.tests
.stubs
.trace
.TmfTraceStub
;
44 * Test suite for the TmfTrace class.
46 @SuppressWarnings({ "nls" })
47 public class TmfTraceTest
extends TestCase
{
49 // ------------------------------------------------------------------------
51 // ------------------------------------------------------------------------
53 private static final String DIRECTORY
= "testfiles";
54 private static final String TEST_STREAM
= "A-Test-10K";
55 private static final int BLOCK_SIZE
= 500;
56 private static final int NB_EVENTS
= 10000;
57 private static TmfTraceStub fTrace
= null;
59 private static int SCALE
= -3;
61 // ------------------------------------------------------------------------
63 // ------------------------------------------------------------------------
65 public TmfTraceTest(final String name
) throws Exception
{
70 protected void setUp() throws Exception
{
72 fTrace
= setupTrace(DIRECTORY
+ File
.separator
+ TEST_STREAM
);
76 protected void tearDown() throws Exception
{
82 // ------------------------------------------------------------------------
84 // ------------------------------------------------------------------------
86 private static TmfTraceStub
setupTrace(final String path
) {
89 final URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(path
), null);
90 final File test
= new File(FileLocator
.toFileURL(location
).toURI());
91 fTrace
= new TmfTraceStub(test
.toURI().getPath(), BLOCK_SIZE
);
93 } catch (final TmfTraceException e
) {
95 } catch (final URISyntaxException e
) {
97 } catch (final IOException e
) {
104 // ------------------------------------------------------------------------
106 // ------------------------------------------------------------------------
108 public void testStandardConstructor() throws Exception
{
109 TmfTraceStub trace
= null;
110 File testfile
= null;
112 final URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(DIRECTORY
+ File
.separator
+ TEST_STREAM
), null);
113 testfile
= new File(FileLocator
.toFileURL(location
).toURI());
114 trace
= new TmfTraceStub(testfile
.toURI().getPath());
116 } catch (final URISyntaxException e
) {
117 fail("URISyntaxException");
118 } catch (final IOException e
) {
122 assertFalse ("Open trace", trace
== null);
123 assertEquals("getType", TmfEvent
.class, trace
.getType());
124 assertNull ("getResource", trace
.getResource());
125 assertEquals("getPath", testfile
.toURI().getPath(), trace
.getPath());
126 assertEquals("getCacheSize", ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, trace
.getCacheSize());
127 assertEquals("getStreamingInterval", 0, trace
.getStreamingInterval());
128 assertEquals("getName", TEST_STREAM
, trace
.getName());
130 assertEquals("getNbEvents", NB_EVENTS
, trace
.getNbEvents());
131 assertEquals("getRange-start", 1, trace
.getTimeRange().getStartTime().getValue());
132 assertEquals("getRange-end", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
133 assertEquals("getStartTime", 1, trace
.getStartTime().getValue());
134 assertEquals("getEndTime", NB_EVENTS
, trace
.getEndTime().getValue());
137 public void testStandardConstructorCacheSize() throws Exception
{
138 TmfTraceStub trace
= null;
139 File testfile
= null;
141 final URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(DIRECTORY
+ File
.separator
+ TEST_STREAM
), null);
142 testfile
= new File(FileLocator
.toFileURL(location
).toURI());
143 trace
= new TmfTraceStub(testfile
.toURI().getPath(), 0);
145 } catch (final URISyntaxException e
) {
146 fail("URISyntaxException");
147 } catch (final IOException e
) {
151 assertFalse ("Open trace", trace
== null);
152 assertEquals("getType", TmfEvent
.class, trace
.getType());
153 assertNull ("getResource", trace
.getResource());
154 assertEquals("getPath", testfile
.toURI().getPath(), trace
.getPath());
155 assertEquals("getCacheSize", ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, trace
.getCacheSize());
156 assertEquals("getStreamingInterval", 0, trace
.getStreamingInterval());
157 assertEquals("getName", TEST_STREAM
, trace
.getName());
159 assertEquals("getNbEvents", NB_EVENTS
, trace
.getNbEvents());
160 assertEquals("getRange-start", 1, trace
.getTimeRange().getStartTime().getValue());
161 assertEquals("getRange-end", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
162 assertEquals("getStartTime", 1, trace
.getStartTime().getValue());
163 assertEquals("getEndTime", NB_EVENTS
, trace
.getEndTime().getValue());
166 final URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(DIRECTORY
+ File
.separator
+ TEST_STREAM
), null);
167 testfile
= new File(FileLocator
.toFileURL(location
).toURI());
168 trace
= new TmfTraceStub(testfile
.toURI().getPath(), BLOCK_SIZE
);
170 } catch (final URISyntaxException e
) {
171 fail("URISyntaxException");
172 } catch (final IOException e
) {
176 assertEquals("getType", TmfEvent
.class, trace
.getType());
177 assertNull ("getResource", trace
.getResource());
178 assertEquals("getPath", testfile
.toURI().getPath(), trace
.getPath());
179 assertEquals("getCacheSize", BLOCK_SIZE
, trace
.getCacheSize());
180 assertEquals("getStreamingInterval", 0, trace
.getStreamingInterval());
181 assertEquals("getName", TEST_STREAM
, trace
.getName());
183 assertEquals("getNbEvents", NB_EVENTS
, trace
.getNbEvents());
184 assertEquals("getRange-start", 1, trace
.getTimeRange().getStartTime().getValue());
185 assertEquals("getRange-end", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
186 assertEquals("getStartTime", 1, trace
.getStartTime().getValue());
187 assertEquals("getEndTime", NB_EVENTS
, trace
.getEndTime().getValue());
190 public void testFullConstructor() throws Exception
{
191 TmfTraceStub trace
= null;
192 File testfile
= null;
194 final URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(DIRECTORY
+ File
.separator
+ TEST_STREAM
), null);
195 testfile
= new File(FileLocator
.toFileURL(location
).toURI());
196 trace
= new TmfTraceStub(testfile
.toURI().getPath(), BLOCK_SIZE
, null);
198 } catch (final URISyntaxException e
) {
199 fail("URISyntaxException");
200 } catch (final IOException e
) {
204 assertFalse ("Open trace", trace
== null);
205 assertEquals("getType", TmfEvent
.class, trace
.getType());
206 assertNull ("getResource", trace
.getResource());
207 assertEquals("getPath", testfile
.toURI().getPath(), trace
.getPath());
208 assertEquals("getCacheSize", BLOCK_SIZE
, trace
.getCacheSize());
209 assertEquals("getStreamingInterval", 0, trace
.getStreamingInterval());
210 assertEquals("getName", TEST_STREAM
, trace
.getName());
212 assertEquals("getNbEvents", NB_EVENTS
, trace
.getNbEvents());
213 assertEquals("getRange-start", 1, trace
.getTimeRange().getStartTime().getValue());
214 assertEquals("getRange-end", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
215 assertEquals("getStartTime", 1, trace
.getStartTime().getValue());
216 assertEquals("getEndTime", NB_EVENTS
, trace
.getEndTime().getValue());
219 public void testLiveTraceConstructor() throws Exception
{
220 TmfTraceStub trace
= null;
221 File testfile
= null;
222 final long interval
= 100;
224 final URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(DIRECTORY
+ File
.separator
+ TEST_STREAM
), null);
225 testfile
= new File(FileLocator
.toFileURL(location
).toURI());
226 trace
= new TmfTraceStub(testfile
.toURI().getPath(), BLOCK_SIZE
, interval
);
228 } catch (final URISyntaxException e
) {
229 fail("URISyntaxException");
230 } catch (final IOException e
) {
234 assertFalse ("Open trace", trace
== null);
235 assertEquals("getType", TmfEvent
.class, trace
.getType());
236 assertNull ("getResource", trace
.getResource());
237 assertEquals("getPath", testfile
.toURI().getPath(), trace
.getPath());
238 assertEquals("getCacheSize", BLOCK_SIZE
, trace
.getCacheSize());
239 assertEquals("getStreamingInterval", interval
, trace
.getStreamingInterval());
240 assertEquals("getName", TEST_STREAM
, trace
.getName());
242 assertEquals("getNbEvents", NB_EVENTS
, trace
.getNbEvents());
243 assertEquals("getRange-start", 1, trace
.getTimeRange().getStartTime().getValue());
244 assertEquals("getRange-end", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
245 assertEquals("getStartTime", 1, trace
.getStartTime().getValue());
246 assertEquals("getEndTime", NB_EVENTS
, trace
.getEndTime().getValue());
249 public void testCopyConstructor() throws Exception
{
250 TmfTraceStub original
= null;
251 TmfTraceStub trace
= null;
252 File testfile
= null;
254 final URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(DIRECTORY
+ File
.separator
+ TEST_STREAM
), null);
255 testfile
= new File(FileLocator
.toFileURL(location
).toURI());
256 original
= new TmfTraceStub(testfile
.toURI().getPath(), BLOCK_SIZE
, new TmfCheckpointIndexer(null));
257 trace
= new TmfTraceStub(original
);
259 } catch (final URISyntaxException e
) {
260 fail("URISyntaxException");
261 } catch (final IOException e
) {
265 assertFalse ("Open trace", trace
== null);
266 assertEquals("getType", TmfEvent
.class, trace
.getType());
267 assertNull ("getResource", trace
.getResource());
268 assertEquals("getPath", testfile
.toURI().getPath(), trace
.getPath());
269 assertEquals("getCacheSize", BLOCK_SIZE
, trace
.getCacheSize());
270 assertEquals("getStreamingInterval", 0, trace
.getStreamingInterval());
271 assertEquals("getName", TEST_STREAM
, trace
.getName());
273 assertEquals("getNbEvents", NB_EVENTS
, trace
.getNbEvents());
274 assertEquals("getRange-start", 1, trace
.getTimeRange().getStartTime().getValue());
275 assertEquals("getRange-end", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
276 assertEquals("getStartTime", 1, trace
.getStartTime().getValue());
277 assertEquals("getEndTime", NB_EVENTS
, trace
.getEndTime().getValue());
279 // Test the copy of a null trace
281 new TmfTraceStub((TmfTraceStub
) null);
282 fail("Missing exception");
283 } catch (final IllegalArgumentException e
) {
285 } catch (final Exception e
) {
286 fail("Unexpected exception");
290 // ------------------------------------------------------------------------
291 // Trace initialization
292 // ------------------------------------------------------------------------
294 public void testInitializeNullPath() throws Exception
{
296 // Instantiate an "empty" trace
297 final TmfTraceStub trace
= new TmfTraceStub();
300 trace
.initialize(null, null, TmfEvent
.class);
301 fail("TmfTrace.initialize() - no exception thrown");
302 } catch (TmfTraceException e
) {
304 } catch (Exception e
) {
305 fail("TmfTrace.initialize() - wrong exception thrown");
309 public void testInitializeSimplePath() throws Exception
{
311 // Instantiate an "empty" trace
312 final TmfTraceStub trace
= new TmfTraceStub();
314 // Path == trace name
315 String path
= "TraceName";
317 trace
.initialize(null, path
, TmfEvent
.class);
318 } catch (Exception e
) {
319 fail("TmfTrace.initialize() - Exception thrown");
322 assertEquals("getType", TmfEvent
.class, trace
.getType());
323 assertNull ("getResource", trace
.getResource());
324 assertEquals("getPath", path
, trace
.getPath());
325 assertEquals("getCacheSize", ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, trace
.getCacheSize());
326 assertEquals("getStreamingInterval", 0, trace
.getStreamingInterval());
327 assertEquals("getName", path
, trace
.getName());
329 assertEquals("getNbEvents", 0, trace
.getNbEvents());
330 assertEquals("getRange-start", Long
.MAX_VALUE
, trace
.getTimeRange().getStartTime().getValue());
331 assertEquals("getRange-end", Long
.MIN_VALUE
, trace
.getTimeRange().getEndTime().getValue());
332 assertEquals("getStartTime", Long
.MAX_VALUE
, trace
.getStartTime().getValue());
333 assertEquals("getEndTime", Long
.MIN_VALUE
, trace
.getEndTime().getValue());
336 public void testInitializeNormalPath() throws Exception
{
338 // Instantiate an "empty" trace
339 final TmfTraceStub trace
= new TmfTraceStub();
341 // Path == trace name
342 String name
= "TraceName";
343 String path
= "/my/trace/path/" + name
;
345 trace
.initialize(null, path
, TmfEvent
.class);
346 } catch (Exception e
) {
347 fail("TmfTrace.initialize() - Exception thrown");
350 assertEquals("getType", TmfEvent
.class, trace
.getType());
351 assertNull ("getResource", trace
.getResource());
352 assertEquals("getPath", path
, trace
.getPath());
353 assertEquals("getCacheSize", ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, trace
.getCacheSize());
354 assertEquals("getStreamingInterval", 0, trace
.getStreamingInterval());
355 assertEquals("getName", name
, trace
.getName());
357 assertEquals("getNbEvents", 0, trace
.getNbEvents());
358 assertEquals("getRange-start", Long
.MAX_VALUE
, trace
.getTimeRange().getStartTime().getValue());
359 assertEquals("getRange-end", Long
.MIN_VALUE
, trace
.getTimeRange().getEndTime().getValue());
360 assertEquals("getStartTime", Long
.MAX_VALUE
, trace
.getStartTime().getValue());
361 assertEquals("getEndTime", Long
.MIN_VALUE
, trace
.getEndTime().getValue());
364 public void testInitTrace() throws Exception
{
366 // Instantiate an "empty" trace
367 final TmfTraceStub trace
= new TmfTraceStub();
369 assertNull ("getType", trace
.getType());
370 assertNull ("getResource", trace
.getResource());
371 assertEquals("getCacheSize", ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, trace
.getCacheSize());
372 assertEquals("getStreamingInterval", 0, trace
.getStreamingInterval());
373 assertEquals("getName", "", trace
.getName());
375 assertEquals("getNbEvents", 0, trace
.getNbEvents());
376 assertEquals("getRange-start", Long
.MAX_VALUE
, trace
.getTimeRange().getStartTime().getValue());
377 assertEquals("getRange-end", Long
.MIN_VALUE
, trace
.getTimeRange().getEndTime().getValue());
378 assertEquals("getStartTime", Long
.MAX_VALUE
, trace
.getStartTime().getValue());
379 assertEquals("getEndTime", Long
.MIN_VALUE
, trace
.getEndTime().getValue());
382 final URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(DIRECTORY
+ File
.separator
+ TEST_STREAM
), null);
383 final File testfile
= new File(FileLocator
.toFileURL(location
).toURI());
384 assertTrue("validate", trace
.validate(null, testfile
.getPath()));
386 // InitTrace and wait for indexing completion...
387 trace
.initTrace(null, testfile
.toURI().getPath(), TmfEvent
.class);
390 while (trace
.getNbEvents() < NB_EVENTS
&& nbSecs
< 10) {
394 if (trace
.getNbEvents() < NB_EVENTS
) {
398 assertEquals("getType", TmfEvent
.class, trace
.getType());
399 assertNull ("getResource", trace
.getResource());
400 assertEquals("getCacheSize", ITmfTrace
.DEFAULT_TRACE_CACHE_SIZE
, trace
.getCacheSize());
401 assertEquals("getStreamingInterval", 0, trace
.getStreamingInterval());
402 assertEquals("getName", TEST_STREAM
, trace
.getName());
404 assertEquals("getNbEvents", NB_EVENTS
, trace
.getNbEvents());
405 assertEquals("getRange-start", 1, trace
.getTimeRange().getStartTime().getValue());
406 assertEquals("getRange-end", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
407 assertEquals("getStartTime", 1, trace
.getStartTime().getValue());
408 assertEquals("getEndTime", NB_EVENTS
, trace
.getEndTime().getValue());
411 // ------------------------------------------------------------------------
412 // Set/Get streaming interval
413 // ------------------------------------------------------------------------
415 public void testSetStreamingInterval() throws Exception
{
416 final TmfTraceStub trace
= new TmfTraceStub(fTrace
);
419 assertEquals("getStreamingInterval", interval
, trace
.getStreamingInterval());
422 trace
.setStreamingInterval(interval
);
423 assertEquals("getStreamingInterval", interval
, trace
.getStreamingInterval());
426 trace
.setStreamingInterval(interval
);
427 assertEquals("getStreamingInterval", 0, trace
.getStreamingInterval());
430 trace
.setStreamingInterval(interval
);
431 assertEquals("getStreamingInterval", interval
, trace
.getStreamingInterval());
436 // ------------------------------------------------------------------------
437 // Set/Get time range
438 // ------------------------------------------------------------------------
440 public void testSetTimeRange() throws Exception
{
441 final TmfTraceStub trace
= new TmfTraceStub(fTrace
);
444 assertEquals("getRange-start", 1, trace
.getTimeRange().getStartTime().getValue());
445 assertEquals("getRange-end", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
446 assertEquals("getStartTime", 1, trace
.getStartTime().getValue());
447 assertEquals("getEndTime", NB_EVENTS
, trace
.getEndTime().getValue());
449 trace
.setTimeRange(new TmfTimeRange(new TmfTimestamp(100), new TmfTimestamp(200)));
450 assertEquals("setTimeRange", 100, trace
.getTimeRange().getStartTime().getValue());
451 assertEquals("setTimeRange", 200, trace
.getTimeRange().getEndTime().getValue());
452 assertEquals("setTimeRange", 100, trace
.getStartTime().getValue());
453 assertEquals("setTimeRange", 200, trace
.getEndTime().getValue());
458 public void testSetStartTime() throws Exception
{
459 final TmfTraceStub trace
= new TmfTraceStub(fTrace
);
462 assertEquals("getRange-start", 1, trace
.getTimeRange().getStartTime().getValue());
463 assertEquals("getRange-end", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
464 assertEquals("getStartTime", 1, trace
.getStartTime().getValue());
465 assertEquals("getEndTime", NB_EVENTS
, trace
.getEndTime().getValue());
467 trace
.setStartTime(new TmfTimestamp(100));
468 assertEquals("setStartTime", 100, trace
.getTimeRange().getStartTime().getValue());
469 assertEquals("setStartTime", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
470 assertEquals("setStartTime", 100, trace
.getStartTime().getValue());
471 assertEquals("setStartTime", NB_EVENTS
, trace
.getEndTime().getValue());
476 public void testSetEndTime() throws Exception
{
477 final TmfTraceStub trace
= new TmfTraceStub(fTrace
);
480 assertEquals("getRange-start", 1, trace
.getTimeRange().getStartTime().getValue());
481 assertEquals("getRange-end", NB_EVENTS
, trace
.getTimeRange().getEndTime().getValue());
482 assertEquals("getStartTime", 1, trace
.getStartTime().getValue());
483 assertEquals("getEndTime", NB_EVENTS
, trace
.getEndTime().getValue());
485 trace
.setEndTime(new TmfTimestamp(100));
486 assertEquals("setEndTime", 1, trace
.getTimeRange().getStartTime().getValue());
487 assertEquals("setEndTime", 100, trace
.getTimeRange().getEndTime().getValue());
488 assertEquals("setEndTime", 1, trace
.getStartTime().getValue());
489 assertEquals("setEndTime", 100, trace
.getEndTime().getValue());
494 public void testSetNbEvents() throws Exception
{
495 final TmfTraceStub trace
= new TmfTraceStub(fTrace
);
498 assertEquals("getNbEvents", NB_EVENTS
, trace
.getNbEvents());
500 trace
.setNbEvents(0);
501 assertEquals("getNbEvents", 0, trace
.getNbEvents());
503 trace
.setNbEvents(-1);
504 assertEquals("getNbEvents", 0, trace
.getNbEvents());
506 trace
.setNbEvents(NB_EVENTS
+ 1);
507 assertEquals("getNbEvents", NB_EVENTS
+ 1, trace
.getNbEvents());
509 trace
.setNbEvents(NB_EVENTS
);
510 assertEquals("getNbEvents", NB_EVENTS
, trace
.getNbEvents());
515 // ------------------------------------------------------------------------
516 // seekEvent on location (note: does not reliably set the rank)
517 // ------------------------------------------------------------------------
519 public void testSeekEventOnCacheBoundary() throws Exception
{
521 // Position trace at event rank 0
522 ITmfContext context
= fTrace
.seekEvent(0);
523 ITmfEvent event
= fTrace
.parseEvent(context
);
524 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
525 assertEquals("Event rank", 0, context
.getRank());
527 context
= fTrace
.seekEvent(context
.getLocation());
528 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
530 event
= fTrace
.parseEvent(context
);
531 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
532 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
534 event
= fTrace
.getNext(context
);
535 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
536 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
538 // Position trace at event rank 1000
539 ITmfContext tmpContext
= fTrace
.seekEvent(new TmfTimestamp(1001, 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", 1001, event
.getTimestamp().getValue());
545 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
547 event
= fTrace
.getNext(context
);
548 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
549 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
551 // Position trace at event rank 4000
552 tmpContext
= fTrace
.seekEvent(new TmfTimestamp(4001, 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", 4001, event
.getTimestamp().getValue());
558 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
560 event
= fTrace
.getNext(context
);
561 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
562 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
565 public void testSeekEventNotOnCacheBoundary() throws Exception
{
567 // Position trace at event rank 9
568 ITmfContext tmpContext
= fTrace
.seekEvent(new TmfTimestamp(10, SCALE
, 0));
569 TmfContext context
= fTrace
.seekEvent(tmpContext
.getLocation());
570 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
572 ITmfEvent event
= fTrace
.parseEvent(context
);
573 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
574 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
576 event
= fTrace
.getNext(context
);
577 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
578 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
580 // Position trace at event rank 999
581 tmpContext
= fTrace
.seekEvent(new TmfTimestamp(1000, SCALE
, 0));
582 context
= fTrace
.seekEvent(tmpContext
.getLocation());
583 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
585 event
= fTrace
.parseEvent(context
);
586 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
587 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
589 event
= fTrace
.getNext(context
);
590 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
591 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
593 // Position trace at event rank 1001
594 tmpContext
= fTrace
.seekEvent(new TmfTimestamp(1002, SCALE
, 0));
595 context
= fTrace
.seekEvent(tmpContext
.getLocation());
596 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
598 event
= fTrace
.parseEvent(context
);
599 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
600 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
602 event
= fTrace
.getNext(context
);
603 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
604 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
606 // Position trace at event rank 4500
607 tmpContext
= fTrace
.seekEvent(new TmfTimestamp(4501, SCALE
, 0));
608 context
= fTrace
.seekEvent(tmpContext
.getLocation());
609 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
611 event
= fTrace
.parseEvent(context
);
612 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
613 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
615 event
= fTrace
.getNext(context
);
616 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
617 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
620 public void testSeekEventOutOfScope() throws Exception
{
622 // Position trace at beginning
623 ITmfContext tmpContext
= fTrace
.seekEvent(0);
624 ITmfContext context
= fTrace
.seekEvent(tmpContext
.getLocation());
625 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
627 ITmfEvent event
= fTrace
.parseEvent(context
);
628 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
629 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
631 event
= fTrace
.getNext(context
);
632 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
633 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
635 // Position trace at event passed the end
636 context
= fTrace
.seekEvent(new TmfTimestamp(NB_EVENTS
+ 1, SCALE
, 0));
637 assertNull("Event timestamp", context
.getLocation());
638 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
640 event
= fTrace
.getNext(context
);
641 assertNull("Event", event
);
644 // ------------------------------------------------------------------------
645 // seekEvent on timestamp (note: does not reliably set the rank)
646 // ------------------------------------------------------------------------
648 public void testSeekEventOnNullTimestamp() throws Exception
{
650 // Position trace at event rank 0
651 ITmfContext context
= fTrace
.seekEvent((ITmfTimestamp
) null);
652 assertEquals("Event rank", 0, context
.getRank());
654 ITmfEvent event
= fTrace
.parseEvent(context
);
655 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
656 assertEquals("Event rank", 0, context
.getRank());
659 public void testSeekEventOnTimestampOnCacheBoundary() throws Exception
{
661 // Position trace at event rank 0
662 ITmfContext context
= fTrace
.seekEvent(new TmfTimestamp(1, SCALE
, 0));
663 assertEquals("Event rank", 0, context
.getRank());
665 ITmfEvent event
= fTrace
.parseEvent(context
);
666 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
667 assertEquals("Event rank", 0, context
.getRank());
669 event
= fTrace
.getNext(context
);
670 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
671 assertEquals("Event rank", 1, context
.getRank());
673 // Position trace at event rank 1000
674 context
= fTrace
.seekEvent(new TmfTimestamp(1001, SCALE
, 0));
675 assertEquals("Event rank", 1000, context
.getRank());
677 event
= fTrace
.parseEvent(context
);
678 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
679 assertEquals("Event rank", 1000, context
.getRank());
681 event
= fTrace
.getNext(context
);
682 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
683 assertEquals("Event rank", 1001, context
.getRank());
685 // Position trace at event rank 4000
686 context
= fTrace
.seekEvent(new TmfTimestamp(4001, SCALE
, 0));
687 assertEquals("Event rank", 4000, context
.getRank());
689 event
= fTrace
.parseEvent(context
);
690 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
691 assertEquals("Event rank", 4000, context
.getRank());
693 event
= fTrace
.getNext(context
);
694 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
695 assertEquals("Event rank", 4001, context
.getRank());
698 public void testSeekEventOnTimestampNotOnCacheBoundary() throws Exception
{
700 // Position trace at event rank 1
701 ITmfContext context
= fTrace
.seekEvent(new TmfTimestamp(2, SCALE
, 0));
702 assertEquals("Event rank", 1, context
.getRank());
704 ITmfEvent event
= fTrace
.parseEvent(context
);
705 assertEquals("Event timestamp", 2, event
.getTimestamp().getValue());
706 assertEquals("Event rank", 1, context
.getRank());
708 event
= fTrace
.getNext(context
);
709 assertEquals("Event timestamp", 2, event
.getTimestamp().getValue());
710 assertEquals("Event rank", 2, context
.getRank());
712 // Position trace at event rank 9
713 context
= fTrace
.seekEvent(new TmfTimestamp(10, SCALE
, 0));
714 assertEquals("Event rank", 9, context
.getRank());
716 event
= fTrace
.parseEvent(context
);
717 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
718 assertEquals("Event rank", 9, context
.getRank());
720 event
= fTrace
.getNext(context
);
721 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
722 assertEquals("Event rank", 10, context
.getRank());
724 // Position trace at event rank 999
725 context
= fTrace
.seekEvent(new TmfTimestamp(1000, SCALE
, 0));
726 assertEquals("Event rank", 999, context
.getRank());
728 event
= fTrace
.parseEvent(context
);
729 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
730 assertEquals("Event rank", 999, context
.getRank());
732 event
= fTrace
.getNext(context
);
733 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
734 assertEquals("Event rank", 1000, context
.getRank());
736 // Position trace at event rank 1001
737 context
= fTrace
.seekEvent(new TmfTimestamp(1002, SCALE
, 0));
738 assertEquals("Event rank", 1001, context
.getRank());
740 event
= fTrace
.parseEvent(context
);
741 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
742 assertEquals("Event rank", 1001, context
.getRank());
744 event
= fTrace
.getNext(context
);
745 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
746 assertEquals("Event rank", 1002, context
.getRank());
748 // Position trace at event rank 4500
749 context
= fTrace
.seekEvent(new TmfTimestamp(4501, SCALE
, 0));
750 assertEquals("Event rank", 4500, context
.getRank());
752 event
= fTrace
.parseEvent(context
);
753 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
754 assertEquals("Event rank", 4500, context
.getRank());
756 event
= fTrace
.getNext(context
);
757 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
758 assertEquals("Event rank", 4501, context
.getRank());
761 public void testSeekEventOnTimestampOutOfScope() throws Exception
{
763 // Position trace at beginning
764 ITmfContext context
= fTrace
.seekEvent(new TmfTimestamp(-1, SCALE
, 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 passed the end
776 context
= fTrace
.seekEvent(new TmfTimestamp(NB_EVENTS
+ 1, SCALE
, 0));
777 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
779 event
= fTrace
.parseEvent(context
);
780 assertEquals("Event timestamp", null, event
);
781 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
783 event
= fTrace
.getNext(context
);
784 assertEquals("Event timestamp", null, event
);
785 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
788 // ------------------------------------------------------------------------
790 // ------------------------------------------------------------------------
792 public void testSeekEventOnNegativeRank() throws Exception
{
794 // Position trace at event rank 0
795 ITmfContext context
= fTrace
.seekEvent(-1);
796 assertEquals("Event rank", 0, context
.getRank());
798 ITmfEvent event
= fTrace
.parseEvent(context
);
799 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
800 assertEquals("Event rank", 0, context
.getRank());
803 public void testSeekOnRankOnCacheBoundary() throws Exception
{
805 // On lower bound, returns the first event (ts = 1)
806 ITmfContext context
= fTrace
.seekEvent(0);
807 assertEquals("Event rank", 0, context
.getRank());
809 ITmfEvent event
= fTrace
.parseEvent(context
);
810 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
811 assertEquals("Event rank", 0, context
.getRank());
813 event
= fTrace
.getNext(context
);
814 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
815 assertEquals("Event rank", 1, context
.getRank());
817 // Position trace at event rank 1000
818 context
= fTrace
.seekEvent(1000);
819 assertEquals("Event rank", 1000, context
.getRank());
821 event
= fTrace
.parseEvent(context
);
822 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
823 assertEquals("Event rank", 1000, context
.getRank());
825 event
= fTrace
.getNext(context
);
826 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
827 assertEquals("Event rank", 1001, context
.getRank());
829 // Position trace at event rank 4000
830 context
= fTrace
.seekEvent(4000);
831 assertEquals("Event rank", 4000, context
.getRank());
833 event
= fTrace
.parseEvent(context
);
834 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
835 assertEquals("Event rank", 4000, context
.getRank());
837 event
= fTrace
.getNext(context
);
838 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
839 assertEquals("Event rank", 4001, context
.getRank());
842 public void testSeekOnRankNotOnCacheBoundary() throws Exception
{
844 // Position trace at event rank 9
845 ITmfContext context
= fTrace
.seekEvent(9);
846 assertEquals("Event rank", 9, context
.getRank());
848 ITmfEvent event
= fTrace
.parseEvent(context
);
849 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
850 assertEquals("Event rank", 9, context
.getRank());
852 event
= fTrace
.getNext(context
);
853 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
854 assertEquals("Event rank", 10, context
.getRank());
856 // Position trace at event rank 999
857 context
= fTrace
.seekEvent(999);
858 assertEquals("Event rank", 999, context
.getRank());
860 event
= fTrace
.parseEvent(context
);
861 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
862 assertEquals("Event rank", 999, context
.getRank());
864 event
= fTrace
.getNext(context
);
865 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
866 assertEquals("Event rank", 1000, context
.getRank());
868 // Position trace at event rank 1001
869 context
= fTrace
.seekEvent(1001);
870 assertEquals("Event rank", 1001, context
.getRank());
872 event
= fTrace
.parseEvent(context
);
873 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
874 assertEquals("Event rank", 1001, context
.getRank());
876 event
= fTrace
.getNext(context
);
877 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
878 assertEquals("Event rank", 1002, context
.getRank());
880 // Position trace at event rank 4500
881 context
= fTrace
.seekEvent(4500);
882 assertEquals("Event rank", 4500, context
.getRank());
884 event
= fTrace
.parseEvent(context
);
885 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
886 assertEquals("Event rank", 4500, context
.getRank());
888 event
= fTrace
.getNext(context
);
889 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
890 assertEquals("Event rank", 4501, context
.getRank());
893 public void testSeekEventOnRankOutOfScope() throws Exception
{
895 // Position trace at beginning
896 ITmfContext context
= fTrace
.seekEvent(-1);
897 assertEquals("Event rank", 0, context
.getRank());
899 ITmfEvent event
= fTrace
.parseEvent(context
);
900 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
901 assertEquals("Event rank", 0, context
.getRank());
903 event
= fTrace
.getNext(context
);
904 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
905 assertEquals("Event rank", 1, context
.getRank());
907 // Position trace at event passed the end
908 context
= fTrace
.seekEvent(NB_EVENTS
);
909 assertEquals("Event rank", NB_EVENTS
, context
.getRank());
911 event
= fTrace
.parseEvent(context
);
912 assertNull("Event", event
);
913 assertEquals("Event rank", NB_EVENTS
, context
.getRank());
915 event
= fTrace
.getNext(context
);
916 assertNull("Event", event
);
917 assertEquals("Event rank", NB_EVENTS
, context
.getRank());
920 // ------------------------------------------------------------------------
921 // parseEvent - make sure parseEvent doesn't update the context
922 // ------------------------------------------------------------------------
924 public void testParseEvent() throws Exception
{
926 final int NB_READS
= 20;
928 // On lower bound, returns the first event (ts = 0)
929 final TmfContext context
= (TmfContext
) fTrace
.seekEvent(new TmfTimestamp(0, SCALE
, 0));
930 TmfContext svContext
= new TmfContext(context
);
932 ITmfEvent event
= fTrace
.parseEvent(context
);
933 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
934 assertEquals("Event rank", 0, context
.getRank());
935 assertTrue("parseEvent", context
.equals(svContext
));
937 event
= fTrace
.parseEvent(context
);
938 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
939 assertEquals("Event rank", 0, context
.getRank());
940 assertTrue("parseEvent", context
.equals(svContext
));
942 event
= fTrace
.parseEvent(context
);
943 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
944 assertEquals("Event rank", 0, context
.getRank());
945 assertTrue("parseEvent", context
.equals(svContext
));
947 // Position the trace at event NB_READS
948 for (int i
= 1; i
< NB_READS
; i
++) {
949 event
= fTrace
.getNext(context
);
950 assertEquals("Event timestamp", i
, event
.getTimestamp().getValue());
953 svContext
= new TmfContext(context
);
954 event
= fTrace
.parseEvent(context
);
955 assertEquals("Event timestamp", NB_READS
, event
.getTimestamp().getValue());
956 assertEquals("Event rank", NB_READS
-1 , context
.getRank());
957 assertTrue("parseEvent", context
.equals(svContext
));
959 event
= fTrace
.parseEvent(context
);
960 assertEquals("Event timestamp", NB_READS
, event
.getTimestamp().getValue());
961 assertEquals("Event rank", NB_READS
- 1, context
.getRank());
962 assertTrue("parseEvent", context
.equals(svContext
));
965 // ------------------------------------------------------------------------
966 // readNextEvent - updates the context
967 // ------------------------------------------------------------------------
969 public void testReadNextEvent() throws Exception
{
971 final int NB_READS
= 20;
973 // On lower bound, returns the first event (ts = 1)
974 final ITmfContext context
= fTrace
.seekEvent(new TmfTimestamp(0, SCALE
, 0));
978 for (int i
= 0; i
< NB_READS
; i
++) {
979 event
= fTrace
.getNext(context
);
980 assertEquals("Event timestamp", i
+ 1, event
.getTimestamp().getValue());
981 assertEquals("Event rank", i
+ 1, context
.getRank());
984 // Make sure we stay positioned
985 event
= fTrace
.parseEvent(context
);
986 assertEquals("Event timestamp", NB_READS
+ 1, event
.getTimestamp().getValue());
987 assertEquals("Event rank", NB_READS
, context
.getRank());
990 // ------------------------------------------------------------------------
992 // ------------------------------------------------------------------------
994 @SuppressWarnings("unchecked")
995 public void testProcessEventRequestForAllEvents() throws Exception
{
996 final int BLOCK_SIZE
= 1;
997 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
999 final TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
1000 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, NB_EVENTS
, BLOCK_SIZE
) {
1002 public void handleData(final TmfEvent event
) {
1003 super.handleData(event
);
1004 requestedEvents
.add(event
);
1007 final ITmfDataProvider
<TmfEvent
>[] providers
= (ITmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TmfTraceStub
.class);
1008 providers
[0].sendRequest(request
);
1009 request
.waitForCompletion();
1011 assertEquals("nbEvents", NB_EVENTS
, requestedEvents
.size());
1012 assertTrue("isCompleted", request
.isCompleted());
1013 assertFalse("isCancelled", request
.isCancelled());
1015 // Ensure that we have distinct events.
1016 // Don't go overboard: we are not validating the stub!
1017 for (int i
= 0; i
< NB_EVENTS
; i
++) {
1018 assertEquals("Distinct events", i
+ 1, requestedEvents
.get(i
).getTimestamp().getValue());
1022 @SuppressWarnings("unchecked")
1023 public void testProcessEventRequestForNbEvents() throws Exception
{
1024 final int BLOCK_SIZE
= 100;
1025 final int NB_EVENTS
= 1000;
1026 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
1028 final TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
1029 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, NB_EVENTS
, BLOCK_SIZE
) {
1031 public void handleData(final TmfEvent event
) {
1032 super.handleData(event
);
1033 requestedEvents
.add(event
);
1036 final ITmfDataProvider
<TmfEvent
>[] providers
= (ITmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TmfTraceStub
.class);
1037 providers
[0].sendRequest(request
);
1038 request
.waitForCompletion();
1040 assertEquals("nbEvents", NB_EVENTS
, requestedEvents
.size());
1041 assertTrue("isCompleted", request
.isCompleted());
1042 assertFalse("isCancelled", request
.isCancelled());
1044 // Ensure that we have distinct events.
1045 // Don't go overboard: we are not validating the stub!
1046 for (int i
= 0; i
< NB_EVENTS
; i
++) {
1047 assertEquals("Distinct events", i
+ 1, requestedEvents
.get(i
).getTimestamp().getValue());
1051 @SuppressWarnings("unchecked")
1052 public void testProcessEventRequestForSomeEvents() throws Exception
{
1053 final int BLOCK_SIZE
= 1;
1054 final long startTime
= 100;
1055 final int NB_EVENTS
= 1000;
1056 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
1058 final TmfTimeRange range
= new TmfTimeRange(new TmfTimestamp(startTime
, SCALE
), TmfTimestamp
.BIG_CRUNCH
);
1059 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, NB_EVENTS
, BLOCK_SIZE
) {
1061 public void handleData(final TmfEvent event
) {
1062 super.handleData(event
);
1063 requestedEvents
.add(event
);
1066 final ITmfDataProvider
<TmfEvent
>[] providers
= (ITmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TmfTraceStub
.class);
1067 providers
[0].sendRequest(request
);
1068 request
.waitForCompletion();
1070 assertEquals("nbEvents", NB_EVENTS
, requestedEvents
.size());
1071 assertTrue("isCompleted", request
.isCompleted());
1072 assertFalse("isCancelled", request
.isCancelled());
1074 // Ensure that we have distinct events.
1075 // Don't go overboard: we are not validating the stub!
1076 for (int i
= 0; i
< NB_EVENTS
; i
++) {
1077 assertEquals("Distinct events", startTime
+ i
, requestedEvents
.get(i
).getTimestamp().getValue());
1081 @SuppressWarnings("unchecked")
1082 public void testProcessEventRequestForOtherEvents() throws Exception
{
1083 final int BLOCK_SIZE
= 1;
1084 final int startIndex
= 99;
1085 final long startTime
= 100;
1086 final int NB_EVENTS
= 1000;
1087 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
1089 final TmfTimeRange range
= new TmfTimeRange(new TmfTimestamp(startTime
, SCALE
), TmfTimestamp
.BIG_CRUNCH
);
1090 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, startIndex
, NB_EVENTS
, BLOCK_SIZE
) {
1092 public void handleData(final TmfEvent event
) {
1093 super.handleData(event
);
1094 requestedEvents
.add(event
);
1097 final ITmfDataProvider
<TmfEvent
>[] providers
= (ITmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TmfTraceStub
.class);
1098 providers
[0].sendRequest(request
);
1099 request
.waitForCompletion();
1101 assertEquals("nbEvents", NB_EVENTS
, requestedEvents
.size());
1102 assertTrue("isCompleted", request
.isCompleted());
1103 assertFalse("isCancelled", request
.isCancelled());
1105 // Ensure that we have distinct events.
1106 // Don't go overboard: we are not validating the stub!
1107 for (int i
= 0; i
< NB_EVENTS
; i
++) {
1108 assertEquals("Distinct events", startTime
+ i
, requestedEvents
.get(i
).getTimestamp().getValue());
1112 @SuppressWarnings("unchecked")
1113 public void testProcessDataRequestForSomeEvents() throws Exception
{
1114 final int startIndex
= 100;
1115 final int NB_EVENTS
= 1000;
1116 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
1118 final TmfDataRequest
<TmfEvent
> request
= new TmfDataRequest
<TmfEvent
>(TmfEvent
.class, startIndex
, NB_EVENTS
) {
1120 public void handleData(final TmfEvent event
) {
1121 super.handleData(event
);
1122 requestedEvents
.add(event
);
1125 final ITmfDataProvider
<TmfEvent
>[] providers
= (ITmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TmfTraceStub
.class);
1126 providers
[0].sendRequest(request
);
1127 request
.waitForCompletion();
1129 assertEquals("nbEvents", NB_EVENTS
, requestedEvents
.size());
1130 assertTrue("isCompleted", request
.isCompleted());
1131 assertFalse("isCancelled", request
.isCancelled());
1133 // Ensure that we have distinct events.
1134 // Don't go overboard: we are not validating the stub!
1135 for (int i
= 0; i
< NB_EVENTS
; i
++) {
1136 assertEquals("Distinct events", startIndex
+ 1 + i
, requestedEvents
.get(i
).getTimestamp().getValue());
1140 // ------------------------------------------------------------------------
1142 // ------------------------------------------------------------------------
1144 @SuppressWarnings("unchecked")
1145 public void testCancel() throws Exception
{
1146 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
1148 final TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
1149 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, NB_EVENTS
, BLOCK_SIZE
) {
1152 public void handleData(final TmfEvent event
) {
1153 super.handleData(event
);
1154 requestedEvents
.add(event
);
1155 if (++nbRead
== BLOCK_SIZE
) {
1160 final ITmfDataProvider
<TmfEvent
>[] providers
= (ITmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TmfTraceStub
.class);
1161 providers
[0].sendRequest(request
);
1162 request
.waitForCompletion();
1164 assertEquals("nbEvents", BLOCK_SIZE
, requestedEvents
.size());
1165 assertTrue("isCompleted", request
.isCompleted());
1166 assertTrue("isCancelled", request
.isCancelled());
1169 // ------------------------------------------------------------------------
1171 // ------------------------------------------------------------------------
1173 public void testDefaultTmfTraceStub() throws Exception
{
1174 assertFalse ("Open trace", fTrace
== null);
1175 assertEquals("getType", TmfEvent
.class, fTrace
.getType());
1176 assertNull ("getResource", fTrace
.getResource());
1177 assertEquals("getCacheSize", BLOCK_SIZE
, fTrace
.getCacheSize());
1178 assertEquals("getStreamingInterval", 0, fTrace
.getStreamingInterval());
1179 assertEquals("getName", TEST_STREAM
, fTrace
.getName());
1181 assertEquals("getNbEvents", NB_EVENTS
, fTrace
.getNbEvents());
1182 assertEquals("getRange-start", 1, fTrace
.getTimeRange().getStartTime().getValue());
1183 assertEquals("getRange-end", NB_EVENTS
, fTrace
.getTimeRange().getEndTime().getValue());
1184 assertEquals("getStartTime", 1, fTrace
.getStartTime().getValue());
1185 assertEquals("getEndTime", NB_EVENTS
, fTrace
.getEndTime().getValue());
1187 String expected
= "TmfTrace [fPath=" + fTrace
.getPath() + ", fCacheSize=" + fTrace
.getCacheSize() +
1188 ", fNbEvents=" + fTrace
.getNbEvents() + ", fStartTime=" + fTrace
.getStartTime() +
1189 ", fEndTime=" + fTrace
.getEndTime() + ", fStreamingInterval=" + fTrace
.getStreamingInterval() +
1191 assertEquals("toString", expected
, fTrace
.toString());