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
.request
.TmfEventRequest
;
30 import org
.eclipse
.linuxtools
.tmf
.tests
.TmfCoreTestPlugin
;
31 import org
.eclipse
.linuxtools
.tmf
.trace
.ITmfTrace
;
32 import org
.eclipse
.linuxtools
.tmf
.trace
.TmfContext
;
33 import org
.eclipse
.linuxtools
.tmf
.trace
.TmfTraceStub
;
36 * <b><u>TmfExperimentTest</u></b>
38 * TODO: Implement me. Please.
40 public class TmfMultiTraceExperimentTest
extends TestCase
{
42 private static final String DIRECTORY
= "testfiles";
43 private static final String TEST_STREAM1
= "O-Test-10K";
44 private static final String TEST_STREAM2
= "E-Test-10K";
45 private static final String EXPERIMENT
= "MyExperiment";
46 private static int NB_EVENTS
= 20000;
47 private static int fDefaultBlockSize
= 1000;
49 private static ITmfTrace
[] fTrace
;
50 private static TmfExperiment
<TmfEvent
> fExperiment
;
52 private static byte SCALE
= (byte) -3;
54 // ------------------------------------------------------------------------
56 // ------------------------------------------------------------------------
58 private ITmfTrace
[] setupTrace(String path1
, String path2
) {
60 fTrace
= new ITmfTrace
[2];
62 URL location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(path1
), null);
63 File test
= new File(FileLocator
.toFileURL(location
).toURI());
64 TmfTraceStub trace1
= new TmfTraceStub(test
.getPath(), true);
66 location
= FileLocator
.find(TmfCoreTestPlugin
.getDefault().getBundle(), new Path(path2
), null);
67 test
= new File(FileLocator
.toFileURL(location
).toURI());
68 TmfTraceStub trace2
= new TmfTraceStub(test
.getPath(), true);
70 } catch (URISyntaxException e
) {
72 } catch (IOException e
) {
79 private void setupExperiment() {
80 if (fExperiment
== null) {
81 fExperiment
= new TmfExperiment
<TmfEvent
>(TmfEvent
.class, EXPERIMENT
, fTrace
);
82 fExperiment
.indexExperiment(true);
86 public TmfMultiTraceExperimentTest(String name
) throws Exception
{
91 protected void setUp() throws Exception
{
93 setupTrace(DIRECTORY
+ File
.separator
+ TEST_STREAM1
, DIRECTORY
+ File
.separator
+ TEST_STREAM2
);
98 protected void tearDown() throws Exception
{
102 // ------------------------------------------------------------------------
104 // ------------------------------------------------------------------------
106 public void testBasicTmfExperimentConstructor() {
107 assertEquals("GetId", EXPERIMENT
, fExperiment
.getName());
108 assertEquals("GetEpoch", TmfTimestamp
.Zero
, fExperiment
.getEpoch());
109 assertEquals("GetNbEvents", NB_EVENTS
, fExperiment
.getNbEvents());
111 TmfTimeRange timeRange
= fExperiment
.getTimeRange();
112 assertEquals("getStartTime", 1, timeRange
.getStartTime().getValue());
113 assertEquals("getEndTime", NB_EVENTS
, timeRange
.getEndTime().getValue());
116 // ------------------------------------------------------------------------
117 // parseEvent - make sure parseEvent doesn't update the context
118 // ------------------------------------------------------------------------
120 public void testParseEvent() throws Exception
{
122 // On lower bound, returns the first event (ts = 0)
123 TmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(0, SCALE
, 0));
125 TmfEvent event
= fExperiment
.parseEvent(context
);
126 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
128 event
= fExperiment
.parseEvent(context
);
129 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
131 event
= fExperiment
.parseEvent(context
);
132 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
134 for (int i
= 1; i
< 20; i
++) {
135 event
= fExperiment
.getNextEvent(context
);
136 assertEquals("Event timestamp", i
, event
.getTimestamp().getValue());
139 event
= fExperiment
.parseEvent(context
);
140 assertEquals("Event timestamp", 20, event
.getTimestamp().getValue());
142 event
= fExperiment
.parseEvent(context
);
143 assertEquals("Event timestamp", 20, event
.getTimestamp().getValue());
146 // ------------------------------------------------------------------------
147 // getNextEvent - updates the context
148 // ------------------------------------------------------------------------
150 public void testGetNextEvent() throws Exception
{
152 // On lower bound, returns the first event (ts = 0)
153 TmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(0, SCALE
, 0));
154 TmfEvent event
= fExperiment
.getNextEvent(context
);
155 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
157 for (int i
= 2; i
< 20; i
++) {
158 event
= fExperiment
.getNextEvent(context
);
159 assertEquals("Event timestamp", i
, event
.getTimestamp().getValue());
163 // ------------------------------------------------------------------------
165 // Note: seekLocation() does not reliably set the rank
166 // ------------------------------------------------------------------------
168 public void testSeekLocationOnCacheBoundary() throws Exception
{
170 // Position trace at event rank 0
171 TmfContext context
= fExperiment
.seekLocation(null);
172 // assertEquals("Event rank", 0, context.getRank());
173 TmfEvent event
= fExperiment
.parseEvent(context
);
174 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
175 // assertEquals("Event rank", 0, context.getRank());
176 event
= fExperiment
.getNextEvent(context
);
177 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
178 // assertEquals("Event rank", 1, context.getRank());
180 // Position trace at event rank 1000
181 TmfContext tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(1001, SCALE
, 0));
182 context
= fExperiment
.seekLocation(tmpContext
.getLocation().clone());
183 // assertEquals("Event rank", 1000, context.getRank());
184 event
= fExperiment
.parseEvent(context
);
185 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
186 // assertEquals("Event rank", 1000, context.getRank());
187 event
= fExperiment
.getNextEvent(context
);
188 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
189 // assertEquals("Event rank", 1001, context.getRank());
191 // Position trace at event rank 4000
192 tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(4001, SCALE
, 0));
193 context
= fExperiment
.seekLocation(tmpContext
.getLocation().clone());
194 // assertEquals("Event rank", 4000, context.getRank());
195 event
= fExperiment
.parseEvent(context
);
196 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
197 // assertEquals("Event rank", 4000, context.getRank());
198 event
= fExperiment
.getNextEvent(context
);
199 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
200 // assertEquals("Event rank", 4001, context.getRank());
203 public void testSeekLocationNotOnCacheBoundary() throws Exception
{
205 // Position trace at event rank 9
206 TmfContext tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(10, SCALE
, 0));
207 TmfContext context
= fExperiment
.seekLocation(tmpContext
.getLocation().clone());
208 // assertEquals("Event rank", 9, context.getRank());
209 TmfEvent event
= fExperiment
.parseEvent(context
);
210 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
211 // assertEquals("Event rank", 9, context.getRank());
212 event
= fExperiment
.getNextEvent(context
);
213 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
214 // assertEquals("Event rank", 10, context.getRank());
216 // Position trace at event rank 999
217 tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(1000, SCALE
, 0));
218 context
= fExperiment
.seekLocation(tmpContext
.getLocation().clone());
219 // assertEquals("Event rank", 999, context.getRank());
220 event
= fExperiment
.parseEvent(context
);
221 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
222 // assertEquals("Event rank", 999, context.getRank());
223 event
= fExperiment
.getNextEvent(context
);
224 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
225 // assertEquals("Event rank", 1000, context.getRank());
227 // Position trace at event rank 1001
228 tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(1002, SCALE
, 0));
229 context
= fExperiment
.seekLocation(tmpContext
.getLocation().clone());
230 // assertEquals("Event rank", 1001, context.getRank());
231 event
= fExperiment
.parseEvent(context
);
232 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
233 // assertEquals("Event rank", 1001, context.getRank());
234 event
= fExperiment
.getNextEvent(context
);
235 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
236 // assertEquals("Event rank", 1002, context.getRank());
238 // Position trace at event rank 4500
239 tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(4501, SCALE
, 0));
240 context
= fExperiment
.seekLocation(tmpContext
.getLocation().clone());
241 // assertEquals("Event rank", 4500, context.getRank());
242 event
= fExperiment
.parseEvent(context
);
243 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
244 // 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().clone());
255 // assertEquals("Event rank", 0, context.getRank());
256 TmfEvent event
= fExperiment
.parseEvent(context
);
257 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
258 // assertEquals("Event rank", 0, context.getRank());
259 event
= fExperiment
.getNextEvent(context
);
260 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
261 // assertEquals("Event rank", 1, context.getRank());
263 // Position trace at event passed the end
264 tmpContext
= fExperiment
.seekEvent(new TmfTimestamp(NB_EVENTS
+ 1, SCALE
, 0));
265 context
= fExperiment
.seekLocation(tmpContext
.getLocation().clone());
266 // assertEquals("Event rank", NB_EVENTS, context.getRank());
267 event
= fExperiment
.parseEvent(context
);
268 assertEquals("Event timestamp", null, event
);
269 // assertEquals("Event rank", NB_EVENTS, context.getRank());
270 event
= fExperiment
.getNextEvent(context
);
271 assertEquals("Event timestamp", null, event
);
272 // assertEquals("Event rank", NB_EVENTS, context.getRank());
275 // ------------------------------------------------------------------------
276 // seekEvent on timestamp
277 // ------------------------------------------------------------------------
279 public void testSeekEventOnTimestampOnCacheBoundary() throws Exception
{
281 // Position trace at event rank 0
282 TmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(1, SCALE
, 0));
283 assertEquals("Event rank", 0, context
.getRank());
284 TmfEvent event
= fExperiment
.parseEvent(context
);
285 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
286 assertEquals("Event rank", 0, context
.getRank());
287 event
= fExperiment
.getNextEvent(context
);
288 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
289 assertEquals("Event rank", 1, context
.getRank());
291 // Position trace at event rank 1000
292 context
= fExperiment
.seekEvent(new TmfTimestamp(1001, SCALE
, 0));
293 assertEquals("Event rank", 1000, context
.getRank());
294 event
= fExperiment
.parseEvent(context
);
295 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
296 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());
304 event
= fExperiment
.parseEvent(context
);
305 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
306 assertEquals("Event rank", 4000, context
.getRank());
307 event
= fExperiment
.getNextEvent(context
);
308 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
309 assertEquals("Event rank", 4001, context
.getRank());
312 public void testSeekEventOnTimestampNotOnCacheBoundary() throws Exception
{
314 // Position trace at event rank 1
315 TmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(2, SCALE
, 0));
316 assertEquals("Event rank", 1, context
.getRank());
317 TmfEvent event
= fExperiment
.parseEvent(context
);
318 assertEquals("Event timestamp", 2, event
.getTimestamp().getValue());
319 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());
327 event
= fExperiment
.parseEvent(context
);
328 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
329 assertEquals("Event rank", 9, context
.getRank());
330 event
= fExperiment
.getNextEvent(context
);
331 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
332 assertEquals("Event rank", 10, context
.getRank());
334 // Position trace at event rank 999
335 context
= fExperiment
.seekEvent(new TmfTimestamp(1000, SCALE
, 0));
336 assertEquals("Event rank", 999, context
.getRank());
337 event
= fExperiment
.parseEvent(context
);
338 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
339 assertEquals("Event rank", 999, context
.getRank());
340 event
= fExperiment
.getNextEvent(context
);
341 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
342 assertEquals("Event rank", 1000, context
.getRank());
344 // Position trace at event rank 1001
345 context
= fExperiment
.seekEvent(new TmfTimestamp(1002, SCALE
, 0));
346 assertEquals("Event rank", 1001, context
.getRank());
347 event
= fExperiment
.parseEvent(context
);
348 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
349 assertEquals("Event rank", 1001, context
.getRank());
350 event
= fExperiment
.getNextEvent(context
);
351 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
352 assertEquals("Event rank", 1002, context
.getRank());
354 // Position trace at event rank 4500
355 context
= fExperiment
.seekEvent(new TmfTimestamp(4501, SCALE
, 0));
356 assertEquals("Event rank", 4500, context
.getRank());
357 event
= fExperiment
.parseEvent(context
);
358 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
359 assertEquals("Event rank", 4500, context
.getRank());
360 event
= fExperiment
.getNextEvent(context
);
361 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
362 assertEquals("Event rank", 4501, context
.getRank());
365 public void testSeekEventOnTimestampoutOfScope() throws Exception
{
367 // Position trace at beginning
368 TmfContext context
= fExperiment
.seekEvent(new TmfTimestamp(-1, SCALE
, 0));
369 assertEquals("Event rank", 0, context
.getRank());
370 TmfEvent event
= fExperiment
.parseEvent(context
);
371 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
372 assertEquals("Event rank", 0, context
.getRank());
373 event
= fExperiment
.getNextEvent(context
);
374 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
375 assertEquals("Event rank", 1, context
.getRank());
377 // Position trace at event passed the end
378 context
= fExperiment
.seekEvent(new TmfTimestamp(NB_EVENTS
+ 1, SCALE
, 0));
379 assertEquals("Event rank", NB_EVENTS
, context
.getRank());
380 event
= fExperiment
.parseEvent(context
);
381 assertEquals("Event timestamp", null, event
);
382 assertEquals("Event rank", NB_EVENTS
, context
.getRank());
383 event
= fExperiment
.getNextEvent(context
);
384 assertEquals("Event timestamp", null, event
);
385 assertEquals("Event rank", NB_EVENTS
, context
.getRank());
388 // ------------------------------------------------------------------------
390 // ------------------------------------------------------------------------
392 public void testSeekOnRankOnCacheBoundary() throws Exception
{
394 // On lower bound, returns the first event (ts = 1)
395 TmfContext context
= fExperiment
.seekEvent(0);
396 assertEquals("Event rank", 0, context
.getRank());
397 TmfEvent event
= fExperiment
.parseEvent(context
);
398 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
399 assertEquals("Event rank", 0, context
.getRank());
400 event
= fExperiment
.getNextEvent(context
);
401 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
402 assertEquals("Event rank", 1, context
.getRank());
404 // Position trace at event rank 1000
405 context
= fExperiment
.seekEvent(1000);
406 assertEquals("Event rank", 1000, context
.getRank());
407 event
= fExperiment
.parseEvent(context
);
408 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
409 assertEquals("Event rank", 1000, context
.getRank());
410 event
= fExperiment
.getNextEvent(context
);
411 assertEquals("Event timestamp", 1001, event
.getTimestamp().getValue());
412 assertEquals("Event rank", 1001, context
.getRank());
414 // Position trace at event rank 4000
415 context
= fExperiment
.seekEvent(4000);
416 assertEquals("Event rank", 4000, context
.getRank());
417 event
= fExperiment
.parseEvent(context
);
418 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
419 assertEquals("Event rank", 4000, context
.getRank());
420 event
= fExperiment
.getNextEvent(context
);
421 assertEquals("Event timestamp", 4001, event
.getTimestamp().getValue());
422 assertEquals("Event rank", 4001, context
.getRank());
425 public void testSeekOnRankNotOnCacheBoundary() throws Exception
{
427 // Position trace at event rank 9
428 TmfContext context
= fExperiment
.seekEvent(9);
429 assertEquals("Event rank", 9, context
.getRank());
430 TmfEvent event
= fExperiment
.parseEvent(context
);
431 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
432 assertEquals("Event rank", 9, context
.getRank());
433 event
= fExperiment
.getNextEvent(context
);
434 assertEquals("Event timestamp", 10, event
.getTimestamp().getValue());
435 assertEquals("Event rank", 10, context
.getRank());
437 // Position trace at event rank 999
438 context
= fExperiment
.seekEvent(999);
439 assertEquals("Event rank", 999, context
.getRank());
440 event
= fExperiment
.parseEvent(context
);
441 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
442 assertEquals("Event rank", 999, context
.getRank());
443 event
= fExperiment
.getNextEvent(context
);
444 assertEquals("Event timestamp", 1000, event
.getTimestamp().getValue());
445 assertEquals("Event rank", 1000, context
.getRank());
447 // Position trace at event rank 1001
448 context
= fExperiment
.seekEvent(1001);
449 assertEquals("Event rank", 1001, context
.getRank());
450 event
= fExperiment
.parseEvent(context
);
451 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
452 assertEquals("Event rank", 1001, context
.getRank());
453 event
= fExperiment
.getNextEvent(context
);
454 assertEquals("Event timestamp", 1002, event
.getTimestamp().getValue());
455 assertEquals("Event rank", 1002, context
.getRank());
457 // Position trace at event rank 4500
458 context
= fExperiment
.seekEvent(4500);
459 assertEquals("Event rank", 4500, context
.getRank());
460 event
= fExperiment
.parseEvent(context
);
461 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
462 assertEquals("Event rank", 4500, context
.getRank());
463 event
= fExperiment
.getNextEvent(context
);
464 assertEquals("Event timestamp", 4501, event
.getTimestamp().getValue());
465 assertEquals("Event rank", 4501, context
.getRank());
468 public void testSeekEventOnRankOfScope() throws Exception
{
470 // Position trace at beginning
471 TmfContext context
= fExperiment
.seekEvent(-1);
472 assertEquals("Event rank", 0, context
.getRank());
473 TmfEvent event
= fExperiment
.parseEvent(context
);
474 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
475 assertEquals("Event rank", 0, context
.getRank());
476 event
= fExperiment
.getNextEvent(context
);
477 assertEquals("Event timestamp", 1, event
.getTimestamp().getValue());
478 assertEquals("Event rank", 1, context
.getRank());
480 // Position trace at event passed the end
481 context
= fExperiment
.seekEvent(NB_EVENTS
);
482 assertEquals("Event rank", NB_EVENTS
, context
.getRank());
483 event
= fExperiment
.parseEvent(context
);
484 assertEquals("Event timestamp", null, event
);
485 assertEquals("Event rank", NB_EVENTS
, context
.getRank());
486 event
= fExperiment
.getNextEvent(context
);
487 assertEquals("Event timestamp", null, event
);
488 assertEquals("Event rank", NB_EVENTS
, context
.getRank());
491 // ------------------------------------------------------------------------
493 // ------------------------------------------------------------------------
495 public void testProcessRequestForNbEvents() throws Exception
{
496 final int blockSize
= 100;
497 final int nbEvents
= 1000;
498 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
500 TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BigBang
, TmfTimestamp
.BigCrunch
);
501 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, nbEvents
, blockSize
) {
503 public void handleData() {
504 TmfEvent
[] events
= getData();
505 for (TmfEvent e
: events
) {
506 requestedEvents
.add(e
);
510 fExperiment
.sendRequest(request
);
511 request
.waitForCompletion();
513 assertEquals("nbEvents", nbEvents
, requestedEvents
.size());
514 assertTrue("isCompleted", request
.isCompleted());
515 assertFalse("isCancelled", request
.isCancelled());
517 // Ensure that we have distinct events.
518 // Don't go overboard: we are not validating the stub!
519 for (int i
= 0; i
< nbEvents
; i
++) {
520 assertEquals("Distinct events", i
+1, requestedEvents
.get(i
).getTimestamp().getValue());
524 public void testProcessRequestForNbEvents2() throws Exception
{
525 final int blockSize
= 2 * NB_EVENTS
;
526 final int nbEvents
= 1000;
527 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
529 TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BigBang
, TmfTimestamp
.BigCrunch
);
530 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, nbEvents
, blockSize
) {
532 public void handleData() {
533 TmfEvent
[] events
= getData();
534 for (TmfEvent e
: events
) {
535 requestedEvents
.add(e
);
539 fExperiment
.sendRequest(request
);
540 request
.waitForCompletion();
542 assertEquals("nbEvents", nbEvents
, requestedEvents
.size());
543 assertTrue("isCompleted", request
.isCompleted());
544 assertFalse("isCancelled", request
.isCancelled());
546 // Ensure that we have distinct events.
547 // Don't go overboard: we are not validating the stub!
548 for (int i
= 0; i
< nbEvents
; i
++) {
549 assertEquals("Distinct events", i
+1, requestedEvents
.get(i
).getTimestamp().getValue());
553 public void testProcessRequestForAllEvents() throws Exception
{
554 final int nbEvents
= TmfEventRequest
.ALL_DATA
;
555 final int blockSize
= 1;
556 final Vector
<TmfEvent
> requestedEvents
= new Vector
<TmfEvent
>();
557 long nbExpectedEvents
= fExperiment
.getNbEvents();
559 TmfTimeRange range
= new TmfTimeRange(TmfTimestamp
.BigBang
, TmfTimestamp
.BigCrunch
);
560 final TmfEventRequest
<TmfEvent
> request
= new TmfEventRequest
<TmfEvent
>(TmfEvent
.class, range
, nbEvents
, blockSize
) {
562 public void handleData() {
563 TmfEvent
[] events
= getData();
564 for (TmfEvent e
: events
) {
565 requestedEvents
.add(e
);
569 fExperiment
.sendRequest(request
);
570 request
.waitForCompletion();
572 assertEquals("nbEvents", nbExpectedEvents
, requestedEvents
.size());
573 assertTrue("isCompleted", request
.isCompleted());
574 assertFalse("isCancelled", request
.isCancelled());
576 // Ensure that we have distinct events.
577 // Don't go overboard: we are not validating the stub!
578 for (int i
= 0; i
< nbExpectedEvents
; i
++) {
579 assertEquals("Distinct events", i
+1, requestedEvents
.get(i
).getTimestamp().getValue());
583 // ------------------------------------------------------------------------
585 // ------------------------------------------------------------------------
587 public void testCancel() throws Exception
{
588 final int nbEvents
= NB_EVENTS
;
589 final int blockSize
= fDefaultBlockSize
;
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() {
596 TmfEvent
[] events
= getData();
597 for (TmfEvent e
: events
) {
598 requestedEvents
.add(e
);
600 // Cancel request after the first chunk is received
604 fExperiment
.sendRequest(request
);
605 request
.waitForCompletion();
607 assertEquals("nbEvents", blockSize
, requestedEvents
.size());
608 assertTrue("isCompleted", request
.isCompleted());
609 assertTrue("isCancelled", request
.isCancelled());
612 // ------------------------------------------------------------------------
614 // ------------------------------------------------------------------------
616 public void testGetRank() throws Exception
{
617 assertEquals("getRank", 0, fExperiment
.getRank(new TmfTimestamp()));
618 assertEquals("getRank", 0, fExperiment
.getRank(new TmfTimestamp( 1, (byte) -3)));
619 assertEquals("getRank", 10, fExperiment
.getRank(new TmfTimestamp( 11, (byte) -3)));
620 assertEquals("getRank", 100, fExperiment
.getRank(new TmfTimestamp( 101, (byte) -3)));
621 assertEquals("getRank", 1000, fExperiment
.getRank(new TmfTimestamp(1001, (byte) -3)));
622 assertEquals("getRank", 2000, fExperiment
.getRank(new TmfTimestamp(2001, (byte) -3)));
623 assertEquals("getRank", 2500, fExperiment
.getRank(new TmfTimestamp(2501, (byte) -3)));
626 // ------------------------------------------------------------------------
628 // ------------------------------------------------------------------------
630 public void testGetTimestamp() throws Exception
{
631 assertTrue("getTimestamp", fExperiment
.getTimestamp( 0).equals(new TmfTimestamp( 1, (byte) -3)));
632 assertTrue("getTimestamp", fExperiment
.getTimestamp( 10).equals(new TmfTimestamp( 11, (byte) -3)));
633 assertTrue("getTimestamp", fExperiment
.getTimestamp( 100).equals(new TmfTimestamp( 101, (byte) -3)));
634 assertTrue("getTimestamp", fExperiment
.getTimestamp(1000).equals(new TmfTimestamp(1001, (byte) -3)));
635 assertTrue("getTimestamp", fExperiment
.getTimestamp(2000).equals(new TmfTimestamp(2001, (byte) -3)));
636 assertTrue("getTimestamp", fExperiment
.getTimestamp(2500).equals(new TmfTimestamp(2501, (byte) -3)));