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 public class TmfExperimentTest
extends TestCase
{
45 private static final String DIRECTORY
= "testfiles";
46 private static final String TEST_STREAM
= "A-Test-10K";
47 private static final String EXPERIMENT
= "MyExperiment";
48 private static int NB_EVENTS
= 10000;
49 private static int fDefaultBlockSize
= 1000;
51 private static ITmfTrace
[] fTraces
;
52 private static TmfExperiment
<TmfEvent
> fExperiment
;
54 private static byte SCALE
= (byte) -3;
56 // ------------------------------------------------------------------------
58 // ------------------------------------------------------------------------
60 private synchronized static ITmfTrace
[] setupTrace(String path
) {
61 if (fTraces
== null) {
62 fTraces
= new ITmfTrace
[1];
64 URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(path
), null);
65 File test
= new File(FileLocator
.toFileURL(location
).toURI());
66 TmfTraceStub trace
= new TmfTraceStub(test
.getPath(), true);
68 } catch (URISyntaxException e
) {
70 } catch (IOException e
) {
77 private synchronized static void setupExperiment() {
78 if (fExperiment
== null) {
79 fExperiment
= new TmfExperiment
<TmfEvent
>(TmfEvent
.class, EXPERIMENT
, fTraces
, TmfTimestamp
.Zero
, 1000, true);
83 public TmfExperimentTest(String name
) throws Exception
{
88 protected void setUp() throws Exception
{
90 setupTrace(DIRECTORY
+ File
.separator
+ TEST_STREAM
);
95 protected void tearDown() throws Exception
{
99 // ------------------------------------------------------------------------
101 // ------------------------------------------------------------------------
103 public void testBasicTmfExperimentConstructor() {
105 assertEquals("GetId", EXPERIMENT
, fExperiment
.getName());
106 assertEquals("GetEpoch", TmfTimestamp
.Zero
, fExperiment
.getEpoch());
107 assertEquals("GetNbEvents", NB_EVENTS
, fExperiment
.getNbEvents());
109 TmfTimeRange timeRange
= fExperiment
.getTimeRange();
110 assertEquals("getStartTime", 1, timeRange
.getStartTime().getValue());
111 assertEquals("getEndTime", NB_EVENTS
, timeRange
.getEndTime().getValue());
114 // ------------------------------------------------------------------------
115 // Verify checkpoints
116 // ------------------------------------------------------------------------
118 public void testValidateCheckpoints() throws Exception
{
120 Vector
<TmfCheckpoint
> checkpoints
= fExperiment
.getCheckpoints();
121 int pageSize
= fExperiment
.getCacheSize();
122 assertTrue("Checkpoints exist", checkpoints
!= null);
124 // Validate that each checkpoint points to the right event
125 for (int i
= 0; i
< checkpoints
.size(); i
++) {
126 TmfCheckpoint checkpoint
= checkpoints
.get(i
);
127 TmfExperimentContext context
= fExperiment
.seekLocation(checkpoint
.getLocation());
128 TmfEvent event
= fExperiment
.parseEvent(context
);
129 assertEquals("Event rank", i
* pageSize
, context
.getRank());
130 assertTrue("Timestamp", (checkpoint
.getTimestamp().compareTo(event
.getTimestamp(), false) == 0));
134 // ------------------------------------------------------------------------
136 // ------------------------------------------------------------------------
138 public void testSeekLocationOnCacheBoundary() throws Exception
{
140 // Position trace at event rank 0
141 TmfContext context
= fExperiment
.seekLocation(null);
142 assertEquals("Event rank", 0, context
.getRank());
144 TmfEvent event
= fExperiment
.parseEvent(context
);
145 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
146 assertEquals("Event rank", 0, context
.getRank());
148 event
= fExperiment
.getNextEvent(context
);
149 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
150 assertEquals("Event rank", 1, context
.getRank());
152 event
= fExperiment
.getNextEvent(context
);
153 assertEquals("Event timestamp", 2, event
.getTimestamp().getValue());
154 assertEquals("Event rank", 2, context
.getRank());
156 // Position trace at event rank 1000
157 TmfContext tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(1001, SCALE
, 0));
158 context
= fExperiment
.seekLocation(tmpContext
.getLocation());
159 assertEquals("Event rank", 1000, context
.getRank());
161 event
= fExperiment
.parseEvent(context
);
162 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
163 assertEquals("Event rank", 1000, context
.getRank());
165 event
= fExperiment
.getNextEvent(context
);
166 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
167 assertEquals("Event rank", 1001, context
.getRank());
169 event
= fExperiment
.getNextEvent(context
);
170 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
171 assertEquals("Event rank", 1002, context
.getRank());
173 // Position trace at event rank 4000
174 tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(4001, SCALE
, 0));
175 context
= fExperiment
.seekLocation(tmpContext
.getLocation());
176 assertEquals("Event rank", 4000, context
.getRank());
178 event
= fExperiment
.parseEvent(context
);
179 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
180 assertEquals("Event rank", 4000, context
.getRank());
182 event
= fExperiment
.getNextEvent(context
);
183 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
184 assertEquals("Event rank", 4001, context
.getRank());
186 event
= fExperiment
.getNextEvent(context
);
187 assertEquals("Event timestamp", 4002, event
.getTimestamp().getValue());
188 assertEquals("Event rank", 4002, context
.getRank());
191 public void testSeekLocationNotOnCacheBoundary() throws Exception
{
193 // Position trace at event rank 9
194 TmfContext tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(10, SCALE
, 0));
195 TmfContext context
= fExperiment
.seekLocation(tmpContext
.getLocation());
196 assertEquals("Event rank", 9, context
.getRank());
198 TmfEvent event
= fExperiment
.parseEvent(context
);
199 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
200 assertEquals("Event rank", 9, context
.getRank());
202 event
= fExperiment
.getNextEvent(context
);
203 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
204 assertEquals("Event rank", 10, context
.getRank());
206 // Position trace at event rank 999
207 tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(1000, SCALE
, 0));
208 context
= fExperiment
.seekLocation(tmpContext
.getLocation());
209 assertEquals("Event rank", 999, context
.getRank());
211 event
= fExperiment
.parseEvent(context
);
212 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
213 assertEquals("Event rank", 999, context
.getRank());
215 event
= fExperiment
.getNextEvent(context
);
216 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
217 assertEquals("Event rank", 1000, context
.getRank());
219 // Position trace at event rank 1001
220 tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(1002, SCALE
, 0));
221 context
= fExperiment
.seekLocation(tmpContext
.getLocation());
222 assertEquals("Event rank", 1001, context
.getRank());
224 event
= fExperiment
.parseEvent(context
);
225 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
226 assertEquals("Event rank", 1001, context
.getRank());
228 event
= fExperiment
.getNextEvent(context
);
229 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
230 assertEquals("Event rank", 1002, context
.getRank());
232 // Position trace at event rank 4500
233 tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(4501, SCALE
, 0));
234 context
= fExperiment
.seekLocation(tmpContext
.getLocation());
235 assertEquals("Event rank", 4500, context
.getRank());
237 event
= fExperiment
.parseEvent(context
);
238 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
239 assertEquals("Event rank", 4500, context
.getRank());
241 event
= fExperiment
.getNextEvent(context
);
242 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
243 assertEquals("Event rank", 4501, context
.getRank());
246 public void testSeekLocationOutOfScope() throws Exception
{
248 // Position trace at beginning
249 TmfContext tmpContext
= fExperiment
.seekLocation(null);
250 TmfContext context
= fExperiment
.seekLocation(tmpContext
.getLocation());
251 assertEquals("Event rank", 0, context
.getRank());
253 TmfEvent event
= fExperiment
.parseEvent(context
);
254 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
255 assertEquals("Event rank", 0, context
.getRank());
257 event
= fExperiment
.getNextEvent(context
);
258 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
259 assertEquals("Event rank", 1, context
.getRank());
261 // Position trace at event passed the end
262 tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(NB_EVENTS
+ 1, SCALE
, 0));
263 assertEquals("Event location", null, tmpContext
.getLocation());
264 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, tmpContext
.getRank());
267 // ------------------------------------------------------------------------
268 // seekEvent on timestamp
269 // ------------------------------------------------------------------------
271 public void testSeekEventOnTimestampOnCacheBoundary() throws Exception
{
273 // Position trace at event rank 0
274 TmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(1, SCALE
, 0));
275 assertEquals("Event rank", 0, context
.getRank());
277 TmfEvent event
= fExperiment
.parseEvent(context
);
278 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
279 assertEquals("Event rank", 0, context
.getRank());
281 event
= fExperiment
.getNextEvent(context
);
282 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
283 assertEquals("Event rank", 1, context
.getRank());
285 // Position trace at event rank 1000
286 context
= fExperiment
.seekEvent(new TmfTimestamp(1001, SCALE
, 0));
287 assertEquals("Event rank", 1000, context
.getRank());
289 event
= fExperiment
.parseEvent(context
);
290 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
291 assertEquals("Event rank", 1000, context
.getRank());
293 event
= fExperiment
.getNextEvent(context
);
294 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
295 assertEquals("Event rank", 1001, context
.getRank());
297 // Position trace at event rank 4000
298 context
= fExperiment
.seekEvent(new TmfTimestamp(4001, SCALE
, 0));
299 assertEquals("Event rank", 4000, context
.getRank());
301 event
= fExperiment
.parseEvent(context
);
302 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
303 assertEquals("Event rank", 4000, context
.getRank());
305 event
= fExperiment
.getNextEvent(context
);
306 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
307 assertEquals("Event rank", 4001, context
.getRank());
310 public void testSeekEventOnTimestampNotOnCacheBoundary() throws Exception
{
312 // Position trace at event rank 1
313 TmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(2, SCALE
, 0));
314 assertEquals("Event rank", 1, context
.getRank());
316 TmfEvent event
= fExperiment
.parseEvent(context
);
317 assertEquals("Event timestamp", 2, event
.getTimestamp().getValue());
318 assertEquals("Event rank", 1, context
.getRank());
320 event
= fExperiment
.getNextEvent(context
);
321 assertEquals("Event timestamp", 2, event
.getTimestamp().getValue());
322 assertEquals("Event rank", 2, context
.getRank());
324 // Position trace at event rank 9
325 context
= fExperiment
.seekEvent(new TmfTimestamp(10, SCALE
, 0));
326 assertEquals("Event rank", 9, context
.getRank());
328 event
= fExperiment
.parseEvent(context
);
329 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
330 assertEquals("Event rank", 9, context
.getRank());
332 event
= fExperiment
.getNextEvent(context
);
333 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
334 assertEquals("Event rank", 10, context
.getRank());
336 // Position trace at event rank 999
337 context
= fExperiment
.seekEvent(new TmfTimestamp(1000, SCALE
, 0));
338 assertEquals("Event rank", 999, context
.getRank());
340 event
= fExperiment
.parseEvent(context
);
341 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
342 assertEquals("Event rank", 999, context
.getRank());
344 event
= fExperiment
.getNextEvent(context
);
345 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
346 assertEquals("Event rank", 1000, context
.getRank());
348 // Position trace at event rank 1001
349 context
= fExperiment
.seekEvent(new TmfTimestamp(1002, SCALE
, 0));
350 assertEquals("Event rank", 1001, context
.getRank());
352 event
= fExperiment
.parseEvent(context
);
353 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
354 assertEquals("Event rank", 1001, context
.getRank());
356 event
= fExperiment
.getNextEvent(context
);
357 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
358 assertEquals("Event rank", 1002, context
.getRank());
360 // Position trace at event rank 4500
361 context
= fExperiment
.seekEvent(new TmfTimestamp(4501, SCALE
, 0));
362 assertEquals("Event rank", 4500, context
.getRank());
364 event
= fExperiment
.parseEvent(context
);
365 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
366 assertEquals("Event rank", 4500, context
.getRank());
368 event
= fExperiment
.getNextEvent(context
);
369 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
370 assertEquals("Event rank", 4501, context
.getRank());
373 public void testSeekEventOnTimestampoutOfScope() throws Exception
{
375 // Position trace at beginning
376 TmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(-1, SCALE
, 0));
377 assertEquals("Event rank", 0, context
.getRank());
379 TmfEvent event
= fExperiment
.parseEvent(context
);
380 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
381 assertEquals("Event rank", 0, context
.getRank());
383 event
= fExperiment
.getNextEvent(context
);
384 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
385 assertEquals("Event rank", 1, context
.getRank());
387 // Position trace at event passed the end
388 context
= fExperiment
.seekEvent(new TmfTimestamp(NB_EVENTS
+ 1, SCALE
, 0));
389 assertEquals("Event location", null, context
.getLocation());
390 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
393 // ------------------------------------------------------------------------
395 // ------------------------------------------------------------------------
397 public void testSeekOnRankOnCacheBoundary() throws Exception
{
399 // On lower bound, returns the first event (ts = 1)
400 TmfContext context
= fExperiment
.seekEvent(0);
401 assertEquals("Event rank", 0, context
.getRank());
403 TmfEvent event
= fExperiment
.parseEvent(context
);
404 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
405 assertEquals("Event rank", 0, context
.getRank());
407 event
= fExperiment
.getNextEvent(context
);
408 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
409 assertEquals("Event rank", 1, context
.getRank());
411 // Position trace at event rank 1000
412 context
= fExperiment
.seekEvent(1000);
413 assertEquals("Event rank", 1000, context
.getRank());
415 event
= fExperiment
.parseEvent(context
);
416 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
417 assertEquals("Event rank", 1000, context
.getRank());
419 event
= fExperiment
.getNextEvent(context
);
420 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
421 assertEquals("Event rank", 1001, context
.getRank());
423 // Position trace at event rank 4000
424 context
= fExperiment
.seekEvent(4000);
425 assertEquals("Event rank", 4000, context
.getRank());
427 event
= fExperiment
.parseEvent(context
);
428 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
429 assertEquals("Event rank", 4000, context
.getRank());
431 event
= fExperiment
.getNextEvent(context
);
432 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
433 assertEquals("Event rank", 4001, context
.getRank());
436 public void testSeekOnRankNotOnCacheBoundary() throws Exception
{
438 // Position trace at event rank 9
439 TmfContext context
= fExperiment
.seekEvent(9);
440 assertEquals("Event rank", 9, context
.getRank());
442 TmfEvent event
= fExperiment
.parseEvent(context
);
443 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
444 assertEquals("Event rank", 9, context
.getRank());
446 event
= fExperiment
.getNextEvent(context
);
447 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
448 assertEquals("Event rank", 10, context
.getRank());
450 // Position trace at event rank 999
451 context
= fExperiment
.seekEvent(999);
452 assertEquals("Event rank", 999, context
.getRank());
454 event
= fExperiment
.parseEvent(context
);
455 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
456 assertEquals("Event rank", 999, context
.getRank());
458 event
= fExperiment
.getNextEvent(context
);
459 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
460 assertEquals("Event rank", 1000, context
.getRank());
462 // Position trace at event rank 1001
463 context
= fExperiment
.seekEvent(1001);
464 assertEquals("Event rank", 1001, context
.getRank());
466 event
= fExperiment
.parseEvent(context
);
467 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
468 assertEquals("Event rank", 1001, context
.getRank());
470 event
= fExperiment
.getNextEvent(context
);
471 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
472 assertEquals("Event rank", 1002, context
.getRank());
474 // Position trace at event rank 4500
475 context
= fExperiment
.seekEvent(4500);
476 assertEquals("Event rank", 4500, context
.getRank());
478 event
= fExperiment
.parseEvent(context
);
479 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
480 assertEquals("Event rank", 4500, context
.getRank());
482 event
= fExperiment
.getNextEvent(context
);
483 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
484 assertEquals("Event rank", 4501, context
.getRank());
487 public void testSeekEventOnRankOutOfScope() throws Exception
{
489 // Position trace at beginning
490 TmfContext context
= fExperiment
.seekEvent(-1);
491 assertEquals("Event rank", 0, context
.getRank());
493 TmfEvent event
= fExperiment
.parseEvent(context
);
494 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
495 assertEquals("Event rank", 0, context
.getRank());
497 event
= fExperiment
.getNextEvent(context
);
498 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
499 assertEquals("Event rank", 1, context
.getRank());
501 // Position trace at event passed the end
502 context
= fExperiment
.seekEvent(NB_EVENTS
);
503 assertEquals("Event location", null, context
.getLocation());
504 assertEquals("Event rank", ITmfContext
.UNKNOWN_RANK
, context
.getRank());
507 // ------------------------------------------------------------------------
508 // parseEvent - make sure parseEvent doesn't update the context
509 // Note: This test is essentially the same as the one from TmfTraceTest
510 // ------------------------------------------------------------------------
512 public void testParseEvent() throws Exception
{
516 // On lower bound, returns the first event (ts = 1)
517 TmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(0, SCALE
, 0));
520 TmfEvent event
= null;;
521 for (int i
= 0; i
< NB_READS
; i
++) {
522 event
= fExperiment
.getNextEvent(context
);
523 assertEquals("Event timestamp", i
+ 1, event
.getTimestamp().getValue());
524 assertEquals("Event rank", i
+ 1, context
.getRank());
527 // Make sure we stay positioned
528 event
= fExperiment
.parseEvent(context
);
529 assertEquals("Event timestamp", NB_READS
+ 1, event
.getTimestamp().getValue());
530 assertEquals("Event rank", NB_READS
, context
.getRank());
533 // ------------------------------------------------------------------------
534 // getNextEvent - updates the context
535 // ------------------------------------------------------------------------
537 public void testGetNextEvent() throws Exception
{
539 // On lower bound, returns the first event (ts = 0)
540 TmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(0, SCALE
, 0));
541 TmfEvent event
= fExperiment
.getNextEvent(context
);
542 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
544 for (int i
= 2; i
< 20; i
++) {
545 event
= fExperiment
.getNextEvent(context
);
546 assertEquals("Event timestamp", i
, event
.getTimestamp().getValue());
550 // ------------------------------------------------------------------------
552 // ------------------------------------------------------------------------
554 public void testProcessRequestForNbEvents() throws Exception
{
556 final int blockSize
= 100;
557 final int nbEvents
= 1000;
558 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
560 TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BigBang
, TmfTimestamp
.BigCrunch
);
561 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, nbEvents
, blockSize
) {
563 public void handleData() {
564 TmfEvent
[] events
= getData();
565 for (TmfEvent e
: events
) {
566 requestedEvents
.add(e
);
570 fExperiment
.sendRequest(request
);
571 request
.waitForCompletion();
573 assertEquals("nbEvents", nbEvents
, requestedEvents
.size());
574 assertTrue("isCompleted", request
.isCompleted());
575 assertFalse("isCancelled", request
.isCancelled());
577 // Ensure that we have distinct events.
578 // Don't go overboard: we are not validating the stub!
579 for (int i
= 0; i
< nbEvents
; i
++) {
580 assertEquals("Distinct events", i
+1, requestedEvents
.get(i
).getTimestamp().getValue());
584 public void testProcessRequestForNbEvents2() throws Exception
{
586 final int blockSize
= 2 * NB_EVENTS
;
587 final int nbEvents
= 1000;
588 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
590 TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BigBang
, TmfTimestamp
.BigCrunch
);
591 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, nbEvents
, blockSize
) {
593 public void handleData() {
594 TmfEvent
[] events
= getData();
595 for (TmfEvent e
: events
) {
596 requestedEvents
.add(e
);
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() {
625 TmfEvent
[] events
= getData();
626 for (TmfEvent e
: events
) {
627 requestedEvents
.add(e
);
631 fExperiment
.sendRequest(request
);
632 request
.waitForCompletion();
634 assertEquals("nbEvents", nbExpectedEvents
, requestedEvents
.size());
635 assertTrue("isCompleted", request
.isCompleted());
636 assertFalse("isCancelled", request
.isCancelled());
638 // Ensure that we have distinct events.
639 // Don't go overboard: we are not validating the stub!
640 for (int i
= 0; i
< nbExpectedEvents
; i
++) {
641 assertEquals("Distinct events", i
+1, requestedEvents
.get(i
).getTimestamp().getValue());
645 // ------------------------------------------------------------------------
647 // ------------------------------------------------------------------------
649 public void testCancel() throws Exception
{
651 final int nbEvents
= NB_EVENTS
;
652 final int blockSize
= fDefaultBlockSize
;
653 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
655 TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BigBang
, TmfTimestamp
.BigCrunch
);
656 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, nbEvents
, blockSize
) {
658 public void handleData() {
659 TmfEvent
[] events
= getData();
660 for (TmfEvent e
: events
) {
661 requestedEvents
.add(e
);
663 // Cancel request after the first chunk is received
667 public void handleCancel() {
668 if (requestedEvents
.size() < blockSize
) {
669 System
.out
.println("aie");
673 fExperiment
.sendRequest(request
);
674 request
.waitForCompletion();
676 assertEquals("nbEvents", blockSize
, requestedEvents
.size());
677 assertTrue("isCompleted", request
.isCompleted());
678 assertTrue("isCancelled", request
.isCancelled());
681 // ------------------------------------------------------------------------
683 // ------------------------------------------------------------------------
685 public void testGetRank() throws Exception
{
687 assertEquals("getRank", 0, fExperiment
.getRank(new TmfTimestamp()));
688 assertEquals("getRank", 0, fExperiment
.getRank(new TmfTimestamp( 1, (byte) -3)));
689 assertEquals("getRank", 10, fExperiment
.getRank(new TmfTimestamp( 11, (byte) -3)));
690 assertEquals("getRank", 100, fExperiment
.getRank(new TmfTimestamp( 101, (byte) -3)));
691 assertEquals("getRank", 1000, fExperiment
.getRank(new TmfTimestamp(1001, (byte) -3)));
692 assertEquals("getRank", 2000, fExperiment
.getRank(new TmfTimestamp(2001, (byte) -3)));
693 assertEquals("getRank", 2500, fExperiment
.getRank(new TmfTimestamp(2501, (byte) -3)));
696 // ------------------------------------------------------------------------
698 // ------------------------------------------------------------------------
700 public void testGetTimestamp() throws Exception
{
702 assertTrue("getTimestamp", fExperiment
.getTimestamp( 0).equals(new TmfTimestamp( 1, (byte) -3)));
703 assertTrue("getTimestamp", fExperiment
.getTimestamp( 10).equals(new TmfTimestamp( 11, (byte) -3)));
704 assertTrue("getTimestamp", fExperiment
.getTimestamp( 100).equals(new TmfTimestamp( 101, (byte) -3)));
705 assertTrue("getTimestamp", fExperiment
.getTimestamp(1000).equals(new TmfTimestamp(1001, (byte) -3)));
706 assertTrue("getTimestamp", fExperiment
.getTimestamp(2000).equals(new TmfTimestamp(2001, (byte) -3)));
707 assertTrue("getTimestamp", fExperiment
.getTimestamp(2500).equals(new TmfTimestamp(2501, (byte) -3)));