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 - Adjusted for new Trace Model
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
.resources
.IFile
;
25 import org
.eclipse
.core
.runtime
.FileLocator
;
26 import org
.eclipse
.core
.runtime
.Path
;
27 import org
.eclipse
.linuxtools
.internal
.tmf
.core
.trace
.TmfExperimentLocation
;
28 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfEvent
;
29 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfEvent
;
30 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfTimeRange
;
31 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfTimestamp
;
32 import org
.eclipse
.linuxtools
.tmf
.core
.exceptions
.TmfTraceException
;
33 import org
.eclipse
.linuxtools
.tmf
.core
.request
.TmfEventRequest
;
34 import org
.eclipse
.linuxtools
.tmf
.core
.tests
.TmfCoreTestPlugin
;
35 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfContext
;
36 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfLocation
;
37 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfTrace
;
38 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.TmfExperiment
;
39 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.TmfLocation
;
40 import org
.eclipse
.linuxtools
.tmf
.tests
.stubs
.trace
.TmfExperimentStub
;
41 import org
.eclipse
.linuxtools
.tmf
.tests
.stubs
.trace
.TmfTraceStub
;
44 * Test suite for the TmfExperiment class (single trace).
46 @SuppressWarnings("nls")
47 public class TmfExperimentTest
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 String EXPERIMENT
= "MyExperiment";
56 private static int NB_EVENTS
= 10000;
57 private static int BLOCK_SIZE
= 1000;
59 private ITmfTrace
<TmfEvent
>[] fTestTraces
;
60 @SuppressWarnings("rawtypes")
61 private TmfExperimentStub fExperiment
;
63 private static byte SCALE
= (byte) -3;
65 // ------------------------------------------------------------------------
67 // ------------------------------------------------------------------------
69 @SuppressWarnings("unchecked")
70 private synchronized ITmfTrace
<?
>[] setupTrace(final String path
) {
71 if (fTestTraces
== null) {
72 fTestTraces
= new ITmfTrace
[1];
74 final URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(path
), null);
75 final File test
= new File(FileLocator
.toFileURL(location
).toURI());
76 final TmfTraceStub trace
= new TmfTraceStub(test
.getPath(), 0, true);
77 fTestTraces
[0] = trace
;
78 } catch (final TmfTraceException e
) {
80 } catch (final URISyntaxException e
) {
82 } catch (final IOException e
) {
89 private synchronized void setupExperiment() {
90 if (fExperiment
== null) {
91 fExperiment
= new TmfExperimentStub
<ITmfEvent
>(EXPERIMENT
, fTestTraces
, BLOCK_SIZE
);
92 fExperiment
.getIndexer().buildIndex(0, TmfTimeRange
.ETERNITY
, true);
96 public TmfExperimentTest(final String name
) throws Exception
{
101 protected void setUp() throws Exception
{
103 setupTrace(DIRECTORY
+ File
.separator
+ TEST_STREAM
);
108 protected void tearDown() throws Exception
{
112 // ------------------------------------------------------------------------
114 // ------------------------------------------------------------------------
116 public void testSimpleTmfExperimentConstructor() {
118 TmfExperiment
<TmfEvent
> experiment
= new TmfExperiment
<TmfEvent
>(TmfEvent
.class, EXPERIMENT
, fTestTraces
);
119 assertEquals("GetId", EXPERIMENT
, experiment
.getName());
120 assertEquals("GetCacheSize", TmfExperiment
.DEFAULT_INDEX_PAGE_SIZE
, experiment
.getCacheSize());
121 experiment
.dispose();
123 experiment
= new TmfExperiment
<TmfEvent
>(TmfEvent
.class, EXPERIMENT
, null);
124 experiment
.dispose();
127 public void testNormalTmfExperimentConstructor() {
129 assertEquals("GetId", EXPERIMENT
, fExperiment
.getName());
130 assertEquals("GetNbEvents", NB_EVENTS
, fExperiment
.getNbEvents());
132 final long nbExperimentEvents
= fExperiment
.getNbEvents();
133 assertEquals("GetNbEvents", NB_EVENTS
, nbExperimentEvents
);
135 final long nbTraceEvents
= fExperiment
.getTraces()[0].getNbEvents();
136 assertEquals("GetNbEvents", NB_EVENTS
, nbTraceEvents
);
138 final TmfTimeRange timeRange
= fExperiment
.getTimeRange();
139 assertEquals("getStartTime", 1, timeRange
.getStartTime().getValue());
140 assertEquals("getEndTime", NB_EVENTS
, timeRange
.getEndTime().getValue());
143 @SuppressWarnings("static-access")
144 public void testSetCurrentExperiment() {
146 TmfExperiment
<TmfEvent
> experiment
= new TmfExperiment
<TmfEvent
>(TmfEvent
.class, EXPERIMENT
, fTestTraces
);
147 experiment
.setCurrentExperiment(experiment
);
148 assertEquals("getCurrentExperiment", experiment
, experiment
.getCurrentExperiment());
150 TmfExperiment
<TmfEvent
> experiment2
= new TmfExperiment
<TmfEvent
>(TmfEvent
.class, EXPERIMENT
, null);
151 experiment
.setCurrentExperiment(experiment2
);
152 assertEquals("getCurrentExperiment", experiment2
, experiment
.getCurrentExperiment());
154 experiment
.dispose();
155 experiment2
.dispose();
158 // ------------------------------------------------------------------------
160 // ------------------------------------------------------------------------
162 public void testGetTimestamp() throws Exception
{
163 assertTrue("getTimestamp", fExperiment
.getTimestamp( 0).equals(new TmfTimestamp( 1, (byte) -3)));
164 assertTrue("getTimestamp", fExperiment
.getTimestamp( 10).equals(new TmfTimestamp( 11, (byte) -3)));
165 assertTrue("getTimestamp", fExperiment
.getTimestamp( 100).equals(new TmfTimestamp( 101, (byte) -3)));
166 assertTrue("getTimestamp", fExperiment
.getTimestamp( 1000).equals(new TmfTimestamp(1001, (byte) -3)));
167 assertTrue("getTimestamp", fExperiment
.getTimestamp( 2000).equals(new TmfTimestamp(2001, (byte) -3)));
168 assertTrue("getTimestamp", fExperiment
.getTimestamp( 2500).equals(new TmfTimestamp(2501, (byte) -3)));
169 assertNull("getTimestamp", fExperiment
.getTimestamp(10000));
172 // ------------------------------------------------------------------------
173 // Bookmarks file handling
174 // ------------------------------------------------------------------------
176 public void testBookmarks() throws Exception
{
177 assertNull("GetBookmarksFile", fExperiment
.getBookmarksFile());
179 IFile bookmarks
= (IFile
) fTestTraces
[0].getResource();
180 fExperiment
.setBookmarksFile(bookmarks
);
181 assertEquals("GetBookmarksFile", bookmarks
, fExperiment
.getBookmarksFile());
184 // ------------------------------------------------------------------------
185 // seekEvent by location
186 // ------------------------------------------------------------------------
188 @SuppressWarnings("unchecked")
189 public void testSeekBadLocation() throws Exception
{
190 ITmfContext context
= fExperiment
.seekEvent((ITmfLocation
<?
>) new TmfLocation
<Long
>(0L));
191 assertNull("seekEvent", context
);
194 public void testSeekNoTrace() throws Exception
{
195 TmfExperiment
<TmfEvent
> experiment
= new TmfExperiment
<TmfEvent
>(TmfEvent
.class, EXPERIMENT
, null);
196 @SuppressWarnings("restriction")
197 ITmfContext context
= experiment
.seekEvent((TmfExperimentLocation
) null);
198 assertNull("seekEvent", context
);
199 experiment
.dispose();
202 // ------------------------------------------------------------------------
203 // seekEvent on ratio
204 // ------------------------------------------------------------------------
206 public void testSeekEventOnRatio() throws Exception
{
209 ITmfContext context
= fExperiment
.seekEvent(0.0);
210 assertEquals("Context rank", 0, context
.getRank());
211 ITmfEvent event
= fExperiment
.parseEvent(context
);
212 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
213 assertEquals("Context rank", 0, context
.getRank());
216 int midTrace
= NB_EVENTS
/ 2;
217 context
= fExperiment
.seekEvent(0.5);
218 assertEquals("Context rank", midTrace
, context
.getRank());
219 event
= fExperiment
.parseEvent(context
);
220 assertEquals("Event timestamp", midTrace
+ 1, event
.getTimestamp().getValue());
221 assertEquals("Context rank", midTrace
, context
.getRank());
224 context
= fExperiment
.seekEvent(1.0);
225 assertEquals("Context rank", NB_EVENTS
, context
.getRank());
226 event
= fExperiment
.parseEvent(context
);
227 assertNull("Event timestamp", event
);
228 assertEquals("Context rank", NB_EVENTS
, context
.getRank());
231 context
= fExperiment
.seekEvent(1.1);
232 assertEquals("Context rank", NB_EVENTS
, context
.getRank());
233 event
= fExperiment
.parseEvent(context
);
234 assertNull("Event timestamp", event
);
235 assertEquals("Context rank", NB_EVENTS
, context
.getRank());
238 context
= fExperiment
.seekEvent(-0.5);
239 assertEquals("Context rank", 0, context
.getRank());
240 event
= fExperiment
.parseEvent(context
);
241 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
242 assertEquals("Context rank", 0, context
.getRank());
245 @SuppressWarnings({ "unchecked", "rawtypes" })
246 public void testGetLocationRatio() throws Exception
{
249 ITmfContext context
= fExperiment
.seekEvent((ITmfLocation
) null);
250 double ratio
= fExperiment
.getLocationRatio(context
.getLocation());
251 context
= fExperiment
.seekEvent(ratio
);
252 double ratio2
= fExperiment
.getLocationRatio(context
.getLocation());
253 assertEquals("getLocationRatio", ratio
, ratio2
);
256 context
= fExperiment
.seekEvent(NB_EVENTS
/ 2);
257 ratio
= fExperiment
.getLocationRatio(context
.getLocation());
258 context
= fExperiment
.seekEvent(ratio
);
259 ratio2
= fExperiment
.getLocationRatio(context
.getLocation());
260 assertEquals("getLocationRatio", ratio
, ratio2
);
263 context
= fExperiment
.seekEvent(NB_EVENTS
- 1);
264 ratio
= fExperiment
.getLocationRatio(context
.getLocation());
265 context
= fExperiment
.seekEvent(ratio
);
266 ratio2
= fExperiment
.getLocationRatio(context
.getLocation());
267 assertEquals("getLocationRatio", ratio
, ratio2
);
270 // @SuppressWarnings({ "unchecked", "rawtypes" })
271 // public void testGetCurrentLocation() throws Exception {
272 // ITmfContext context = fExperiment.seekEvent((ITmfLocation) null);
273 // ITmfLocation location = fExperiment.getCurrentLocation();
274 // assertEquals("getCurrentLocation", location, context.getLocation());
277 // ------------------------------------------------------------------------
279 // ------------------------------------------------------------------------
281 public void testSeekRankOnCacheBoundary() throws Exception
{
283 long cacheSize
= fExperiment
.getCacheSize();
285 // On lower bound, returns the first event (TS = 1)
286 ITmfContext context
= fExperiment
.seekEvent(0);
287 assertEquals("Context rank", 0, context
.getRank());
289 ITmfEvent event
= fExperiment
.getNext(context
);
290 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
291 assertEquals("Context rank", 1, context
.getRank());
293 // Position trace at event rank [cacheSize]
294 context
= fExperiment
.seekEvent(cacheSize
);
295 assertEquals("Context rank", cacheSize
, context
.getRank());
297 event
= fExperiment
.getNext(context
);
298 assertEquals("Event timestamp", cacheSize
+ 1, event
.getTimestamp().getValue());
299 assertEquals("Context rank", cacheSize
+ 1, context
.getRank());
301 // Position trace at event rank [4 * cacheSize]
302 context
= fExperiment
.seekEvent(4 * cacheSize
);
303 assertEquals("Context rank", 4 * cacheSize
, context
.getRank());
305 event
= fExperiment
.getNext(context
);
306 assertEquals("Event timestamp", 4 * cacheSize
+ 1, event
.getTimestamp().getValue());
307 assertEquals("Context rank", 4 * cacheSize
+ 1, context
.getRank());
310 public void testSeekRankNotOnCacheBoundary() throws Exception
{
312 long cacheSize
= fExperiment
.getCacheSize();
314 // Position trace at event rank 9
315 ITmfContext context
= fExperiment
.seekEvent(9);
316 assertEquals("Context rank", 9, context
.getRank());
318 ITmfEvent event
= fExperiment
.getNext(context
);
319 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
320 assertEquals("Context rank", 10, context
.getRank());
322 // Position trace at event rank [cacheSize - 1]
323 context
= fExperiment
.seekEvent(cacheSize
- 1);
324 assertEquals("Context rank", cacheSize
- 1, context
.getRank());
326 event
= fExperiment
.getNext(context
);
327 assertEquals("Event timestamp", cacheSize
, event
.getTimestamp().getValue());
328 assertEquals("Context rank", cacheSize
, context
.getRank());
330 // Position trace at event rank [cacheSize + 1]
331 context
= fExperiment
.seekEvent(cacheSize
+ 1);
332 assertEquals("Context rank", cacheSize
+ 1, context
.getRank());
334 event
= fExperiment
.getNext(context
);
335 assertEquals("Event timestamp", cacheSize
+ 2, event
.getTimestamp().getValue());
336 assertEquals("Context rank", cacheSize
+ 2, context
.getRank());
338 // Position trace at event rank 4500
339 context
= fExperiment
.seekEvent(4500);
340 assertEquals("Context rank", 4500, context
.getRank());
342 event
= fExperiment
.getNext(context
);
343 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
344 assertEquals("Context rank", 4501, context
.getRank());
347 public void testSeekRankOutOfScope() throws Exception
{
349 // Position trace at beginning
350 ITmfContext context
= fExperiment
.seekEvent(-1);
351 assertEquals("Event rank", 0, context
.getRank());
353 ITmfEvent event
= fExperiment
.getNext(context
);
354 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
355 assertEquals("Context rank", 1, context
.getRank());
357 // Position trace at event passed the end
358 context
= fExperiment
.seekEvent(NB_EVENTS
);
359 assertEquals("Context rank", NB_EVENTS
, context
.getRank());
361 event
= fExperiment
.getNext(context
);
362 assertNull("Event", event
);
363 assertEquals("Context rank", NB_EVENTS
, context
.getRank());
366 // ------------------------------------------------------------------------
367 // seekEvent on timestamp
368 // ------------------------------------------------------------------------
370 public void testSeekTimestampOnCacheBoundary() throws Exception
{
372 long cacheSize
= fExperiment
.getCacheSize();
374 // Position trace at event rank 0
375 ITmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(1, SCALE
, 0));
376 assertEquals("Context rank", 0, context
.getRank());
378 ITmfEvent event
= fExperiment
.getNext(context
);
379 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
380 assertEquals("Context rank", 1, context
.getRank());
382 // Position trace at event rank [cacheSize]
383 context
= fExperiment
.seekEvent(new TmfTimestamp(cacheSize
+ 1, SCALE
, 0));
384 assertEquals("Event rank", cacheSize
, context
.getRank());
386 event
= fExperiment
.getNext(context
);
387 assertEquals("Event timestamp", cacheSize
+ 1, event
.getTimestamp().getValue());
388 assertEquals("Context rank", cacheSize
+ 1, context
.getRank());
390 // Position trace at event rank [4 * cacheSize]
391 context
= fExperiment
.seekEvent(new TmfTimestamp(4 * cacheSize
+ 1, SCALE
, 0));
392 assertEquals("Context rank", 4 * cacheSize
, context
.getRank());
394 event
= fExperiment
.getNext(context
);
395 assertEquals("Event timestamp", 4 * cacheSize
+ 1, event
.getTimestamp().getValue());
396 assertEquals("Context rank", 4 * cacheSize
+ 1, context
.getRank());
399 public void testSeekTimestampNotOnCacheBoundary() throws Exception
{
401 // Position trace at event rank 1 (TS = 2)
402 ITmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(2, SCALE
, 0));
403 assertEquals("Context rank", 1, context
.getRank());
405 ITmfEvent event
= fExperiment
.getNext(context
);
406 assertEquals("Event timestamp", 2, event
.getTimestamp().getValue());
407 assertEquals("Context rank", 2, context
.getRank());
409 // Position trace at event rank 9 (TS = 10)
410 context
= fExperiment
.seekEvent(new TmfTimestamp(10, SCALE
, 0));
411 assertEquals("Context rank", 9, context
.getRank());
413 event
= fExperiment
.getNext(context
);
414 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
415 assertEquals("Context rank", 10, context
.getRank());
417 // Position trace at event rank 999 (TS = 1000)
418 context
= fExperiment
.seekEvent(new TmfTimestamp(1000, SCALE
, 0));
419 assertEquals("Context rank", 999, context
.getRank());
421 event
= fExperiment
.getNext(context
);
422 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
423 assertEquals("Context rank", 1000, context
.getRank());
425 // Position trace at event rank 1001 (TS = 1002)
426 context
= fExperiment
.seekEvent(new TmfTimestamp(1002, SCALE
, 0));
427 assertEquals("Context rank", 1001, context
.getRank());
429 event
= fExperiment
.getNext(context
);
430 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
431 assertEquals("Context rank", 1002, context
.getRank());
433 // Position trace at event rank 4500 (TS = 4501)
434 context
= fExperiment
.seekEvent(new TmfTimestamp(4501, SCALE
, 0));
435 assertEquals("Context rank", 4500, context
.getRank());
437 event
= fExperiment
.getNext(context
);
438 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
439 assertEquals("Context rank", 4501, context
.getRank());
442 public void testSeekTimestampOutOfScope() throws Exception
{
444 // Position trace at beginning
445 ITmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(-1, SCALE
, 0));
446 assertEquals("Event rank", 0, context
.getRank());
448 ITmfEvent event
= fExperiment
.getNext(context
);
449 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
450 assertEquals("Event rank", 1, context
.getRank());
452 // Position trace at event passed the end
453 context
= fExperiment
.seekEvent(new TmfTimestamp(NB_EVENTS
+ 1, SCALE
, 0));
454 event
= fExperiment
.getNext(context
);
455 assertNull("Event location", event
);
456 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
459 // ------------------------------------------------------------------------
460 // seekEvent by location (context rank is undefined)
461 // ------------------------------------------------------------------------
463 public void testSeekLocationOnCacheBoundary() throws Exception
{
465 long cacheSize
= fExperiment
.getCacheSize();
467 // Position trace at event rank 0
468 ITmfContext tmpContext
= fExperiment
.seekEvent(0);
469 ITmfContext context
= fExperiment
.seekEvent(tmpContext
.getLocation());
471 ITmfEvent event
= fExperiment
.getNext(context
);
472 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
474 event
= fExperiment
.getNext(context
);
475 assertEquals("Event timestamp", 2, event
.getTimestamp().getValue());
477 // Position trace at event rank 'cacheSize'
478 tmpContext
= fExperiment
.seekEvent(cacheSize
);
479 context
= fExperiment
.seekEvent(tmpContext
.getLocation());
481 event
= fExperiment
.getNext(context
);
482 assertEquals("Event timestamp", cacheSize
+ 1, event
.getTimestamp().getValue());
484 event
= fExperiment
.getNext(context
);
485 assertEquals("Event timestamp", cacheSize
+ 2, event
.getTimestamp().getValue());
487 // Position trace at event rank 4 * 'cacheSize'
488 tmpContext
= fExperiment
.seekEvent(4 * cacheSize
);
489 context
= fExperiment
.seekEvent(tmpContext
.getLocation());
491 event
= fExperiment
.getNext(context
);
492 assertEquals("Event timestamp", 4 * cacheSize
+ 1, event
.getTimestamp().getValue());
494 event
= fExperiment
.getNext(context
);
495 assertEquals("Event timestamp", 4 * cacheSize
+ 2, event
.getTimestamp().getValue());
498 public void testSeekLocationNotOnCacheBoundary() throws Exception
{
500 long cacheSize
= fExperiment
.getCacheSize();
502 // Position trace at event 'cacheSize' - 1
503 ITmfContext tmpContext
= fExperiment
.seekEvent(cacheSize
- 1);
504 ITmfContext context
= fExperiment
.seekEvent(tmpContext
.getLocation());
506 ITmfEvent event
= fExperiment
.getNext(context
);
507 assertEquals("Event timestamp", cacheSize
, event
.getTimestamp().getValue());
509 event
= fExperiment
.getNext(context
);
510 assertEquals("Event timestamp", cacheSize
+ 1, event
.getTimestamp().getValue());
512 // Position trace at event rank 2 * 'cacheSize' - 1
513 tmpContext
= fExperiment
.seekEvent(2 * cacheSize
- 1);
514 context
= fExperiment
.seekEvent(tmpContext
.getLocation());
515 context
= fExperiment
.seekEvent(2 * cacheSize
- 1);
517 event
= fExperiment
.getNext(context
);
518 assertEquals("Event timestamp", 2 * cacheSize
, event
.getTimestamp().getValue());
520 event
= fExperiment
.getNext(context
);
521 assertEquals("Event timestamp", 2 * cacheSize
+ 1, event
.getTimestamp().getValue());
523 // Position trace at event rank 4500
524 tmpContext
= fExperiment
.seekEvent(4500);
525 context
= fExperiment
.seekEvent(tmpContext
.getLocation());
527 event
= fExperiment
.getNext(context
);
528 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
530 event
= fExperiment
.getNext(context
);
531 assertEquals("Event timestamp", 4502, event
.getTimestamp().getValue());
534 public void testSeekLocationOutOfScope() throws Exception
{
536 // Position trace at beginning
537 ITmfContext context
= fExperiment
.seekEvent((ITmfLocation
<?
>) null);
539 ITmfEvent event
= fExperiment
.getNext(context
);
540 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
543 // ------------------------------------------------------------------------
544 // readtNextEvent - updates the context
545 // ------------------------------------------------------------------------
547 public void testReadNextEvent() throws Exception
{
549 // On lower bound, returns the first event (ts = 0)
550 final ITmfContext context
= fExperiment
.seekEvent(0);
551 ITmfEvent event
= fExperiment
.getNext(context
);
552 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
554 for (int i
= 2; i
< 20; i
++) {
555 event
= fExperiment
.getNext(context
);
556 assertEquals("Event timestamp", i
, event
.getTimestamp().getValue());
560 // ------------------------------------------------------------------------
562 // ------------------------------------------------------------------------
564 public void testProcessRequestForNbEvents() throws Exception
{
566 final int blockSize
= 100;
567 final int nbEvents
= 1000;
568 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
570 final TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
571 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, nbEvents
, blockSize
) {
573 public void handleData(final TmfEvent event
) {
574 super.handleData(event
);
575 requestedEvents
.add(event
);
578 fExperiment
.sendRequest(request
);
579 request
.waitForCompletion();
581 assertEquals("nbEvents", nbEvents
, requestedEvents
.size());
582 assertTrue("isCompleted", request
.isCompleted());
583 assertFalse("isCancelled", request
.isCancelled());
585 // Ensure that we have distinct events.
586 // Don't go overboard: we are not validating the stub!
587 for (int i
= 0; i
< nbEvents
; i
++) {
588 assertEquals("Distinct events", i
+1, requestedEvents
.get(i
).getTimestamp().getValue());
592 public void testProcessRequestForNbEvents2() throws Exception
{
594 final int blockSize
= 2 * NB_EVENTS
;
595 final int nbEvents
= 1000;
596 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
598 final TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
599 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, nbEvents
, blockSize
) {
601 public void handleData(final TmfEvent event
) {
602 super.handleData(event
);
603 requestedEvents
.add(event
);
606 fExperiment
.sendRequest(request
);
607 request
.waitForCompletion();
609 assertEquals("nbEvents", nbEvents
, requestedEvents
.size());
610 assertTrue("isCompleted", request
.isCompleted());
611 assertFalse("isCancelled", request
.isCancelled());
613 // Ensure that we have distinct events.
614 // Don't go overboard: we are not validating the stub!
615 for (int i
= 0; i
< nbEvents
; i
++) {
616 assertEquals("Distinct events", i
+1, requestedEvents
.get(i
).getTimestamp().getValue());
620 public void testProcessRequestForAllEvents() throws Exception
{
622 final int nbEvents
= TmfEventRequest
.ALL_DATA
;
623 final int blockSize
= 1;
624 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
625 final long nbExpectedEvents
= NB_EVENTS
;
627 final TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
628 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, nbEvents
, blockSize
) {
630 public void handleData(final TmfEvent event
) {
631 super.handleData(event
);
632 requestedEvents
.add(event
);
635 fExperiment
.sendRequest(request
);
636 request
.waitForCompletion();
638 assertEquals("nbEvents", nbExpectedEvents
, requestedEvents
.size());
639 assertTrue("isCompleted", request
.isCompleted());
640 assertFalse("isCancelled", request
.isCancelled());
642 // Ensure that we have distinct events.
643 // Don't go overboard: we are not validating the stub!
644 for (int i
= 0; i
< nbExpectedEvents
; i
++) {
645 assertEquals("Distinct events", i
+1, requestedEvents
.get(i
).getTimestamp().getValue());
649 // ------------------------------------------------------------------------
651 // ------------------------------------------------------------------------
653 public void testCancel() throws Exception
{
655 final int nbEvents
= NB_EVENTS
;
656 final int blockSize
= BLOCK_SIZE
;
657 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
659 final TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BIG_BANG
, TmfTimestamp
.BIG_CRUNCH
);
660 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, nbEvents
, blockSize
) {
663 public void handleData(final TmfEvent event
) {
664 super.handleData(event
);
665 requestedEvents
.add(event
);
666 if (++nbRead
== blockSize
) {
671 public void handleCancel() {
672 if (requestedEvents
.size() < blockSize
) {
673 System
.out
.println("aie");
677 fExperiment
.sendRequest(request
);
678 request
.waitForCompletion();
680 assertEquals("nbEvents", blockSize
, requestedEvents
.size());
681 assertTrue("isCompleted", request
.isCompleted());
682 assertTrue("isCancelled", request
.isCancelled());