1 /*******************************************************************************
2 * Copyright (c) 2009, 2010 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 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.tmf
.tests
.experiment
;
16 import java
.io
.IOException
;
17 import java
.net
.URISyntaxException
;
19 import java
.util
.Vector
;
21 import junit
.framework
.TestCase
;
23 import org
.eclipse
.core
.runtime
.FileLocator
;
24 import org
.eclipse
.core
.runtime
.Path
;
25 import org
.eclipse
.linuxtools
.tmf
.event
.TmfEvent
;
26 import org
.eclipse
.linuxtools
.tmf
.event
.TmfTimeRange
;
27 import org
.eclipse
.linuxtools
.tmf
.event
.TmfTimestamp
;
28 import org
.eclipse
.linuxtools
.tmf
.experiment
.TmfExperiment
;
29 import org
.eclipse
.linuxtools
.tmf
.experiment
.TmfExperimentContext
;
30 import org
.eclipse
.linuxtools
.tmf
.request
.TmfEventRequest
;
31 import org
.eclipse
.linuxtools
.tmf
.tests
.TmfCoreTestPlugin
;
32 import org
.eclipse
.linuxtools
.tmf
.trace
.ITmfContext
;
33 import org
.eclipse
.linuxtools
.tmf
.trace
.ITmfTrace
;
34 import org
.eclipse
.linuxtools
.tmf
.trace
.TmfCheckpoint
;
35 import org
.eclipse
.linuxtools
.tmf
.trace
.TmfContext
;
36 import org
.eclipse
.linuxtools
.tmf
.trace
.TmfTraceStub
;
39 * <b><u>TmfExperimentTest</u></b>
41 * TODO: Implement me. Please.
43 @SuppressWarnings("nls")
44 public class TmfExperimentTest
extends TestCase
{
46 private static final String DIRECTORY
= "testfiles";
47 private static final String TEST_STREAM
= "A-Test-10K";
48 private static final String EXPERIMENT
= "MyExperiment";
49 private static int NB_EVENTS
= 10000;
50 private static int fDefaultBlockSize
= 1000;
52 private static ITmfTrace
[] fTraces
;
53 private static TmfExperiment
<TmfEvent
> fExperiment
;
55 private static byte SCALE
= (byte) -3;
57 // ------------------------------------------------------------------------
59 // ------------------------------------------------------------------------
61 private synchronized static ITmfTrace
[] setupTrace(String path
) {
62 if (fTraces
== null) {
63 fTraces
= new ITmfTrace
[1];
65 URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(path
), null);
66 File test
= new File(FileLocator
.toFileURL(location
).toURI());
67 TmfTraceStub trace
= new TmfTraceStub(test
.getPath(), true);
69 } catch (URISyntaxException e
) {
71 } catch (IOException e
) {
78 private synchronized static void setupExperiment() {
79 if (fExperiment
== null) {
80 fExperiment
= new TmfExperiment
<TmfEvent
>(TmfEvent
.class, EXPERIMENT
, fTraces
, TmfTimestamp
.Zero
, 1000, true);
84 public TmfExperimentTest(String name
) throws Exception
{
89 protected void setUp() throws Exception
{
91 setupTrace(DIRECTORY
+ File
.separator
+ TEST_STREAM
);
96 protected void tearDown() throws Exception
{
100 // ------------------------------------------------------------------------
102 // ------------------------------------------------------------------------
104 public void testBasicTmfExperimentConstructor() {
106 assertEquals("GetId", EXPERIMENT
, fExperiment
.getName());
107 assertEquals("GetEpoch", TmfTimestamp
.Zero
, fExperiment
.getEpoch());
108 assertEquals("GetNbEvents", NB_EVENTS
, fExperiment
.getNbEvents());
110 long nbTraceEvents
= fExperiment
.getTraces()[0].getNbEvents();
111 assertEquals("GetNbEvents", NB_EVENTS
, nbTraceEvents
);
113 TmfTimeRange timeRange
= fExperiment
.getTimeRange();
114 assertEquals("getStartTime", 1, timeRange
.getStartTime().getValue());
115 assertEquals("getEndTime", NB_EVENTS
, timeRange
.getEndTime().getValue());
118 // ------------------------------------------------------------------------
119 // Verify checkpoints
120 // ------------------------------------------------------------------------
122 public void testValidateCheckpoints() throws Exception
{
124 Vector
<TmfCheckpoint
> checkpoints
= fExperiment
.getCheckpoints();
125 int pageSize
= fExperiment
.getCacheSize();
126 assertTrue("Checkpoints exist", checkpoints
!= null);
128 // Validate that each checkpoint points to the right event
129 for (int i
= 0; i
< checkpoints
.size(); i
++) {
130 TmfCheckpoint checkpoint
= checkpoints
.get(i
);
131 TmfExperimentContext context
= fExperiment
.seekLocation(checkpoint
.getLocation());
132 TmfEvent event
= fExperiment
.parseEvent(context
);
133 assertEquals("Event rank", i
* pageSize
, context
.getRank());
134 assertTrue("Timestamp", (checkpoint
.getTimestamp().compareTo(event
.getTimestamp(), false) == 0));
138 // ------------------------------------------------------------------------
140 // ------------------------------------------------------------------------
142 public void testSeekLocationOnCacheBoundary() throws Exception
{
144 // Position trace at event rank 0
145 TmfContext context
= fExperiment
.seekLocation(null);
146 assertEquals("Event rank", 0, context
.getRank());
148 TmfEvent event
= fExperiment
.parseEvent(context
);
149 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
150 assertEquals("Event rank", 0, context
.getRank());
152 event
= fExperiment
.getNextEvent(context
);
153 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
154 assertEquals("Event rank", 1, context
.getRank());
156 event
= fExperiment
.getNextEvent(context
);
157 assertEquals("Event timestamp", 2, event
.getTimestamp().getValue());
158 assertEquals("Event rank", 2, context
.getRank());
160 // Position trace at event rank 1000
161 TmfContext tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(1001, SCALE
, 0));
162 context
= fExperiment
.seekLocation(tmpContext
.getLocation());
163 assertEquals("Event rank", 1000, context
.getRank());
165 event
= fExperiment
.parseEvent(context
);
166 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
167 assertEquals("Event rank", 1000, context
.getRank());
169 event
= fExperiment
.getNextEvent(context
);
170 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
171 assertEquals("Event rank", 1001, context
.getRank());
173 event
= fExperiment
.getNextEvent(context
);
174 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
175 assertEquals("Event rank", 1002, context
.getRank());
177 // Position trace at event rank 4000
178 tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(4001, SCALE
, 0));
179 context
= fExperiment
.seekLocation(tmpContext
.getLocation());
180 assertEquals("Event rank", 4000, context
.getRank());
182 event
= fExperiment
.parseEvent(context
);
183 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
184 assertEquals("Event rank", 4000, context
.getRank());
186 event
= fExperiment
.getNextEvent(context
);
187 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
188 assertEquals("Event rank", 4001, context
.getRank());
190 event
= fExperiment
.getNextEvent(context
);
191 assertEquals("Event timestamp", 4002, event
.getTimestamp().getValue());
192 assertEquals("Event rank", 4002, context
.getRank());
195 public void testSeekLocationNotOnCacheBoundary() throws Exception
{
197 // Position trace at event rank 9
198 TmfContext tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(10, SCALE
, 0));
199 TmfContext context
= fExperiment
.seekLocation(tmpContext
.getLocation());
200 assertEquals("Event rank", 9, context
.getRank());
202 TmfEvent event
= fExperiment
.parseEvent(context
);
203 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
204 assertEquals("Event rank", 9, context
.getRank());
206 event
= fExperiment
.getNextEvent(context
);
207 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
208 assertEquals("Event rank", 10, context
.getRank());
210 // Position trace at event rank 999
211 tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(1000, SCALE
, 0));
212 context
= fExperiment
.seekLocation(tmpContext
.getLocation());
213 assertEquals("Event rank", 999, context
.getRank());
215 event
= fExperiment
.parseEvent(context
);
216 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
217 assertEquals("Event rank", 999, context
.getRank());
219 event
= fExperiment
.getNextEvent(context
);
220 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
221 assertEquals("Event rank", 1000, context
.getRank());
223 // Position trace at event rank 1001
224 tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(1002, SCALE
, 0));
225 context
= fExperiment
.seekLocation(tmpContext
.getLocation());
226 assertEquals("Event rank", 1001, context
.getRank());
228 event
= fExperiment
.parseEvent(context
);
229 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
230 assertEquals("Event rank", 1001, context
.getRank());
232 event
= fExperiment
.getNextEvent(context
);
233 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
234 assertEquals("Event rank", 1002, context
.getRank());
236 // Position trace at event rank 4500
237 tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(4501, SCALE
, 0));
238 context
= fExperiment
.seekLocation(tmpContext
.getLocation());
239 assertEquals("Event rank", 4500, context
.getRank());
241 event
= fExperiment
.parseEvent(context
);
242 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
243 assertEquals("Event rank", 4500, context
.getRank());
245 event
= fExperiment
.getNextEvent(context
);
246 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
247 assertEquals("Event rank", 4501, context
.getRank());
250 public void testSeekLocationOutOfScope() throws Exception
{
252 // Position trace at beginning
253 TmfContext tmpContext
= fExperiment
.seekLocation(null);
254 TmfContext context
= fExperiment
.seekLocation(tmpContext
.getLocation());
255 assertEquals("Event rank", 0, context
.getRank());
257 TmfEvent event
= fExperiment
.parseEvent(context
);
258 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
259 assertEquals("Event rank", 0, context
.getRank());
261 event
= fExperiment
.getNextEvent(context
);
262 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
263 assertEquals("Event rank", 1, context
.getRank());
265 // Position trace at event passed the end
266 tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(NB_EVENTS
+ 1, SCALE
, 0));
267 assertEquals("Event location", null, tmpContext
.getLocation());
268 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, tmpContext
.getRank());
271 // ------------------------------------------------------------------------
272 // seekEvent on timestamp
273 // ------------------------------------------------------------------------
275 public void testSeekEventOnTimestampOnCacheBoundary() throws Exception
{
277 // Position trace at event rank 0
278 TmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(1, SCALE
, 0));
279 assertEquals("Event rank", 0, context
.getRank());
281 TmfEvent event
= fExperiment
.parseEvent(context
);
282 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
283 assertEquals("Event rank", 0, context
.getRank());
285 event
= fExperiment
.getNextEvent(context
);
286 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
287 assertEquals("Event rank", 1, context
.getRank());
289 // Position trace at event rank 1000
290 context
= fExperiment
.seekEvent(new TmfTimestamp(1001, SCALE
, 0));
291 assertEquals("Event rank", 1000, context
.getRank());
293 event
= fExperiment
.parseEvent(context
);
294 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
295 assertEquals("Event rank", 1000, context
.getRank());
297 event
= fExperiment
.getNextEvent(context
);
298 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
299 assertEquals("Event rank", 1001, context
.getRank());
301 // Position trace at event rank 4000
302 context
= fExperiment
.seekEvent(new TmfTimestamp(4001, SCALE
, 0));
303 assertEquals("Event rank", 4000, context
.getRank());
305 event
= fExperiment
.parseEvent(context
);
306 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
307 assertEquals("Event rank", 4000, context
.getRank());
309 event
= fExperiment
.getNextEvent(context
);
310 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
311 assertEquals("Event rank", 4001, context
.getRank());
314 public void testSeekEventOnTimestampNotOnCacheBoundary() throws Exception
{
316 // Position trace at event rank 1
317 TmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(2, SCALE
, 0));
318 assertEquals("Event rank", 1, context
.getRank());
320 TmfEvent event
= fExperiment
.parseEvent(context
);
321 assertEquals("Event timestamp", 2, event
.getTimestamp().getValue());
322 assertEquals("Event rank", 1, context
.getRank());
324 event
= fExperiment
.getNextEvent(context
);
325 assertEquals("Event timestamp", 2, event
.getTimestamp().getValue());
326 assertEquals("Event rank", 2, context
.getRank());
328 // Position trace at event rank 9
329 context
= fExperiment
.seekEvent(new TmfTimestamp(10, SCALE
, 0));
330 assertEquals("Event rank", 9, context
.getRank());
332 event
= fExperiment
.parseEvent(context
);
333 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
334 assertEquals("Event rank", 9, context
.getRank());
336 event
= fExperiment
.getNextEvent(context
);
337 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
338 assertEquals("Event rank", 10, context
.getRank());
340 // Position trace at event rank 999
341 context
= fExperiment
.seekEvent(new TmfTimestamp(1000, SCALE
, 0));
342 assertEquals("Event rank", 999, context
.getRank());
344 event
= fExperiment
.parseEvent(context
);
345 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
346 assertEquals("Event rank", 999, context
.getRank());
348 event
= fExperiment
.getNextEvent(context
);
349 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
350 assertEquals("Event rank", 1000, context
.getRank());
352 // Position trace at event rank 1001
353 context
= fExperiment
.seekEvent(new TmfTimestamp(1002, SCALE
, 0));
354 assertEquals("Event rank", 1001, context
.getRank());
356 event
= fExperiment
.parseEvent(context
);
357 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
358 assertEquals("Event rank", 1001, context
.getRank());
360 event
= fExperiment
.getNextEvent(context
);
361 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
362 assertEquals("Event rank", 1002, context
.getRank());
364 // Position trace at event rank 4500
365 context
= fExperiment
.seekEvent(new TmfTimestamp(4501, SCALE
, 0));
366 assertEquals("Event rank", 4500, context
.getRank());
368 event
= fExperiment
.parseEvent(context
);
369 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
370 assertEquals("Event rank", 4500, context
.getRank());
372 event
= fExperiment
.getNextEvent(context
);
373 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
374 assertEquals("Event rank", 4501, context
.getRank());
377 public void testSeekEventOnTimestampoutOfScope() throws Exception
{
379 // Position trace at beginning
380 TmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(-1, SCALE
, 0));
381 assertEquals("Event rank", 0, context
.getRank());
383 TmfEvent event
= fExperiment
.parseEvent(context
);
384 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
385 assertEquals("Event rank", 0, context
.getRank());
387 event
= fExperiment
.getNextEvent(context
);
388 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
389 assertEquals("Event rank", 1, context
.getRank());
391 // Position trace at event passed the end
392 context
= fExperiment
.seekEvent(new TmfTimestamp(NB_EVENTS
+ 1, SCALE
, 0));
393 assertEquals("Event location", null, context
.getLocation());
394 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
397 // ------------------------------------------------------------------------
399 // ------------------------------------------------------------------------
401 public void testSeekOnRankOnCacheBoundary() throws Exception
{
403 // On lower bound, returns the first event (ts = 1)
404 TmfContext context
= fExperiment
.seekEvent(0);
405 assertEquals("Event rank", 0, context
.getRank());
407 TmfEvent event
= fExperiment
.parseEvent(context
);
408 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
409 assertEquals("Event rank", 0, context
.getRank());
411 event
= fExperiment
.getNextEvent(context
);
412 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
413 assertEquals("Event rank", 1, context
.getRank());
415 // Position trace at event rank 1000
416 context
= fExperiment
.seekEvent(1000);
417 assertEquals("Event rank", 1000, context
.getRank());
419 event
= fExperiment
.parseEvent(context
);
420 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
421 assertEquals("Event rank", 1000, context
.getRank());
423 event
= fExperiment
.getNextEvent(context
);
424 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
425 assertEquals("Event rank", 1001, context
.getRank());
427 // Position trace at event rank 4000
428 context
= fExperiment
.seekEvent(4000);
429 assertEquals("Event rank", 4000, context
.getRank());
431 event
= fExperiment
.parseEvent(context
);
432 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
433 assertEquals("Event rank", 4000, context
.getRank());
435 event
= fExperiment
.getNextEvent(context
);
436 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
437 assertEquals("Event rank", 4001, context
.getRank());
440 public void testSeekOnRankNotOnCacheBoundary() throws Exception
{
442 // Position trace at event rank 9
443 TmfContext context
= fExperiment
.seekEvent(9);
444 assertEquals("Event rank", 9, context
.getRank());
446 TmfEvent event
= fExperiment
.parseEvent(context
);
447 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
448 assertEquals("Event rank", 9, context
.getRank());
450 event
= fExperiment
.getNextEvent(context
);
451 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
452 assertEquals("Event rank", 10, context
.getRank());
454 // Position trace at event rank 999
455 context
= fExperiment
.seekEvent(999);
456 assertEquals("Event rank", 999, context
.getRank());
458 event
= fExperiment
.parseEvent(context
);
459 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
460 assertEquals("Event rank", 999, context
.getRank());
462 event
= fExperiment
.getNextEvent(context
);
463 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
464 assertEquals("Event rank", 1000, context
.getRank());
466 // Position trace at event rank 1001
467 context
= fExperiment
.seekEvent(1001);
468 assertEquals("Event rank", 1001, context
.getRank());
470 event
= fExperiment
.parseEvent(context
);
471 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
472 assertEquals("Event rank", 1001, context
.getRank());
474 event
= fExperiment
.getNextEvent(context
);
475 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
476 assertEquals("Event rank", 1002, context
.getRank());
478 // Position trace at event rank 4500
479 context
= fExperiment
.seekEvent(4500);
480 assertEquals("Event rank", 4500, context
.getRank());
482 event
= fExperiment
.parseEvent(context
);
483 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
484 assertEquals("Event rank", 4500, context
.getRank());
486 event
= fExperiment
.getNextEvent(context
);
487 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
488 assertEquals("Event rank", 4501, context
.getRank());
491 public void testSeekEventOnRankOutOfScope() throws Exception
{
493 // Position trace at beginning
494 TmfContext context
= fExperiment
.seekEvent(-1);
495 assertEquals("Event rank", 0, context
.getRank());
497 TmfEvent event
= fExperiment
.parseEvent(context
);
498 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
499 assertEquals("Event rank", 0, context
.getRank());
501 event
= fExperiment
.getNextEvent(context
);
502 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
503 assertEquals("Event rank", 1, context
.getRank());
505 // Position trace at event passed the end
506 context
= fExperiment
.seekEvent(NB_EVENTS
);
507 assertEquals("Event location", null, context
.getLocation());
508 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
511 // ------------------------------------------------------------------------
512 // parseEvent - make sure parseEvent doesn't update the context
513 // Note: This test is essentially the same as the one from TmfTraceTest
514 // ------------------------------------------------------------------------
516 public void testParseEvent() throws Exception
{
520 // On lower bound, returns the first event (ts = 1)
521 TmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(0, SCALE
, 0));
524 TmfEvent event
= null;;
525 for (int i
= 0; i
< NB_READS
; i
++) {
526 event
= fExperiment
.getNextEvent(context
);
527 assertEquals("Event timestamp", i
+ 1, event
.getTimestamp().getValue());
528 assertEquals("Event rank", i
+ 1, context
.getRank());
531 // Make sure we stay positioned
532 event
= fExperiment
.parseEvent(context
);
533 assertEquals("Event timestamp", NB_READS
+ 1, event
.getTimestamp().getValue());
534 assertEquals("Event rank", NB_READS
, context
.getRank());
537 // ------------------------------------------------------------------------
538 // getNextEvent - updates the context
539 // ------------------------------------------------------------------------
541 public void testGetNextEvent() throws Exception
{
543 // On lower bound, returns the first event (ts = 0)
544 TmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(0, SCALE
, 0));
545 TmfEvent event
= fExperiment
.getNextEvent(context
);
546 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
548 for (int i
= 2; i
< 20; i
++) {
549 event
= fExperiment
.getNextEvent(context
);
550 assertEquals("Event timestamp", i
, event
.getTimestamp().getValue());
554 // ------------------------------------------------------------------------
556 // ------------------------------------------------------------------------
558 public void testProcessRequestForNbEvents() throws Exception
{
560 final int blockSize
= 100;
561 final int nbEvents
= 1000;
562 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
564 TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BigBang
, TmfTimestamp
.BigCrunch
);
565 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, nbEvents
, blockSize
) {
567 public void handleData(TmfEvent event
) {
568 super.handleData(event
);
569 requestedEvents
.add(event
);
572 fExperiment
.sendRequest(request
);
573 request
.waitForCompletion();
575 assertEquals("nbEvents", nbEvents
, requestedEvents
.size());
576 assertTrue("isCompleted", request
.isCompleted());
577 assertFalse("isCancelled", request
.isCancelled());
579 // Ensure that we have distinct events.
580 // Don't go overboard: we are not validating the stub!
581 for (int i
= 0; i
< nbEvents
; i
++) {
582 assertEquals("Distinct events", i
+1, requestedEvents
.get(i
).getTimestamp().getValue());
586 public void testProcessRequestForNbEvents2() throws Exception
{
588 final int blockSize
= 2 * NB_EVENTS
;
589 final int nbEvents
= 1000;
590 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
592 TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BigBang
, TmfTimestamp
.BigCrunch
);
593 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, nbEvents
, blockSize
) {
595 public void handleData(TmfEvent event
) {
596 super.handleData(event
);
597 requestedEvents
.add(event
);
600 fExperiment
.sendRequest(request
);
601 request
.waitForCompletion();
603 assertEquals("nbEvents", nbEvents
, requestedEvents
.size());
604 assertTrue("isCompleted", request
.isCompleted());
605 assertFalse("isCancelled", request
.isCancelled());
607 // Ensure that we have distinct events.
608 // Don't go overboard: we are not validating the stub!
609 for (int i
= 0; i
< nbEvents
; i
++) {
610 assertEquals("Distinct events", i
+1, requestedEvents
.get(i
).getTimestamp().getValue());
614 public void testProcessRequestForAllEvents() throws Exception
{
616 final int nbEvents
= TmfEventRequest
.ALL_DATA
;
617 final int blockSize
= 1;
618 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
619 long nbExpectedEvents
= NB_EVENTS
;
621 TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BigBang
, TmfTimestamp
.BigCrunch
);
622 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, nbEvents
, blockSize
) {
624 public void handleData(TmfEvent event
) {
625 super.handleData(event
);
626 requestedEvents
.add(event
);
629 fExperiment
.sendRequest(request
);
630 request
.waitForCompletion();
632 assertEquals("nbEvents", nbExpectedEvents
, requestedEvents
.size());
633 assertTrue("isCompleted", request
.isCompleted());
634 assertFalse("isCancelled", request
.isCancelled());
636 // Ensure that we have distinct events.
637 // Don't go overboard: we are not validating the stub!
638 for (int i
= 0; i
< nbExpectedEvents
; i
++) {
639 assertEquals("Distinct events", i
+1, requestedEvents
.get(i
).getTimestamp().getValue());
643 // ------------------------------------------------------------------------
645 // ------------------------------------------------------------------------
647 public void testCancel() throws Exception
{
649 final int nbEvents
= NB_EVENTS
;
650 final int blockSize
= fDefaultBlockSize
;
651 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
653 TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BigBang
, TmfTimestamp
.BigCrunch
);
654 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, nbEvents
, blockSize
) {
657 public void handleData(TmfEvent event
) {
658 super.handleData(event
);
659 requestedEvents
.add(event
);
660 if (++nbRead
== blockSize
)
664 public void handleCancel() {
665 if (requestedEvents
.size() < blockSize
) {
666 System
.out
.println("aie");
670 fExperiment
.sendRequest(request
);
671 request
.waitForCompletion();
673 assertEquals("nbEvents", blockSize
, requestedEvents
.size());
674 assertTrue("isCompleted", request
.isCompleted());
675 assertTrue("isCancelled", request
.isCancelled());
678 // ------------------------------------------------------------------------
680 // ------------------------------------------------------------------------
682 public void testGetRank() throws Exception
{
684 assertEquals("getRank", 0, fExperiment
.getRank(new TmfTimestamp()));
685 assertEquals("getRank", 0, fExperiment
.getRank(new TmfTimestamp( 1, (byte) -3)));
686 assertEquals("getRank", 10, fExperiment
.getRank(new TmfTimestamp( 11, (byte) -3)));
687 assertEquals("getRank", 100, fExperiment
.getRank(new TmfTimestamp( 101, (byte) -3)));
688 assertEquals("getRank", 1000, fExperiment
.getRank(new TmfTimestamp(1001, (byte) -3)));
689 assertEquals("getRank", 2000, fExperiment
.getRank(new TmfTimestamp(2001, (byte) -3)));
690 assertEquals("getRank", 2500, fExperiment
.getRank(new TmfTimestamp(2501, (byte) -3)));
693 // ------------------------------------------------------------------------
695 // ------------------------------------------------------------------------
697 public void testGetTimestamp() throws Exception
{
699 assertTrue("getTimestamp", fExperiment
.getTimestamp( 0).equals(new TmfTimestamp( 1, (byte) -3)));
700 assertTrue("getTimestamp", fExperiment
.getTimestamp( 10).equals(new TmfTimestamp( 11, (byte) -3)));
701 assertTrue("getTimestamp", fExperiment
.getTimestamp( 100).equals(new TmfTimestamp( 101, (byte) -3)));
702 assertTrue("getTimestamp", fExperiment
.getTimestamp(1000).equals(new TmfTimestamp(1001, (byte) -3)));
703 assertTrue("getTimestamp", fExperiment
.getTimestamp(2000).equals(new TmfTimestamp(2001, (byte) -3)));
704 assertTrue("getTimestamp", fExperiment
.getTimestamp(2500).equals(new TmfTimestamp(2501, (byte) -3)));