(no commit message)
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.tests / src / org / eclipse / linuxtools / tmf / tests / experiment / TmfMultiTraceExperimentTest.java
CommitLineData
d18dd09b
ASL
1/*******************************************************************************
2 * Copyright (c) 2009, 2010 Ericsson
3 *
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
8 *
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
11 *******************************************************************************/
12
13package org.eclipse.linuxtools.tmf.tests.experiment;
14
15import java.io.File;
16import java.io.IOException;
17import java.net.URISyntaxException;
18import java.net.URL;
19import java.util.Vector;
20
21import junit.framework.TestCase;
22
23import org.eclipse.core.runtime.FileLocator;
24import org.eclipse.core.runtime.Path;
25import org.eclipse.linuxtools.tmf.event.TmfEvent;
26import org.eclipse.linuxtools.tmf.event.TmfTimeRange;
27import org.eclipse.linuxtools.tmf.event.TmfTimestamp;
28import org.eclipse.linuxtools.tmf.experiment.TmfExperiment;
29import org.eclipse.linuxtools.tmf.request.TmfEventRequest;
30import org.eclipse.linuxtools.tmf.tests.TmfCoreTestPlugin;
31import org.eclipse.linuxtools.tmf.trace.ITmfTrace;
32import org.eclipse.linuxtools.tmf.trace.TmfContext;
33import org.eclipse.linuxtools.tmf.trace.TmfTraceStub;
34
35/**
36 * <b><u>TmfExperimentTest</u></b>
37 * <p>
38 * TODO: Implement me. Please.
39 */
40public class TmfMultiTraceExperimentTest extends TestCase {
41
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;
48
49 private static ITmfTrace[] fTrace;
50 private static TmfExperiment<TmfEvent> fExperiment;
51
52 private static byte SCALE = (byte) -3;
53
54 // ------------------------------------------------------------------------
55 // Housekeeping
56 // ------------------------------------------------------------------------
57
58 private ITmfTrace[] setupTrace(String path1, String path2) {
59 if (fTrace == null) {
60 fTrace = new ITmfTrace[2];
61 try {
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);
65 fTrace[0] = trace1;
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);
69 fTrace[1] = trace2;
70 } catch (URISyntaxException e) {
71 e.printStackTrace();
72 } catch (IOException e) {
73 e.printStackTrace();
74 }
75 }
76 return fTrace;
77 }
78
79 private void setupExperiment() {
80 if (fExperiment == null) {
81 fExperiment = new TmfExperiment<TmfEvent>(TmfEvent.class, EXPERIMENT, fTrace);
82 fExperiment.indexExperiment(true);
83 }
84 }
85
86 public TmfMultiTraceExperimentTest(String name) throws Exception {
87 super(name);
88 }
89
90 @Override
91 protected void setUp() throws Exception {
92 super.setUp();
93 setupTrace(DIRECTORY + File.separator + TEST_STREAM1, DIRECTORY + File.separator + TEST_STREAM2);
94 setupExperiment();
95 }
96
97 @Override
98 protected void tearDown() throws Exception {
99 super.tearDown();
100 }
101
102 // ------------------------------------------------------------------------
103 // Constructor
104 // ------------------------------------------------------------------------
105
106 public void testBasicTmfExperimentConstructor() {
107 assertEquals("GetId", EXPERIMENT, fExperiment.getName());
108 assertEquals("GetEpoch", TmfTimestamp.Zero, fExperiment.getEpoch());
109 assertEquals("GetNbEvents", NB_EVENTS, fExperiment.getNbEvents());
110
111 TmfTimeRange timeRange = fExperiment.getTimeRange();
112 assertEquals("getStartTime", 1, timeRange.getStartTime().getValue());
113 assertEquals("getEndTime", NB_EVENTS, timeRange.getEndTime().getValue());
114 }
115
116 // ------------------------------------------------------------------------
117 // parseEvent - make sure parseEvent doesn't update the context
118 // ------------------------------------------------------------------------
119
120 public void testParseEvent() throws Exception {
121
122 // On lower bound, returns the first event (ts = 0)
123 TmfContext context = fExperiment.seekEvent(new TmfTimestamp(0, SCALE, 0));
124
125 TmfEvent event = fExperiment.parseEvent(context);
126 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
127
128 event = fExperiment.parseEvent(context);
129 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
130
131 event = fExperiment.parseEvent(context);
132 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
133
134 for (int i = 1; i < 20; i++) {
135 event = fExperiment.getNextEvent(context);
136 assertEquals("Event timestamp", i, event.getTimestamp().getValue());
137 }
138
139 event = fExperiment.parseEvent(context);
140 assertEquals("Event timestamp", 20, event.getTimestamp().getValue());
141
142 event = fExperiment.parseEvent(context);
143 assertEquals("Event timestamp", 20, event.getTimestamp().getValue());
144 }
145
146 // ------------------------------------------------------------------------
147 // getNextEvent - updates the context
148 // ------------------------------------------------------------------------
149
150 public void testGetNextEvent() throws Exception {
151
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());
156
157 for (int i = 2; i < 20; i++) {
158 event = fExperiment.getNextEvent(context);
159 assertEquals("Event timestamp", i, event.getTimestamp().getValue());
160 }
161 }
162
163 // ------------------------------------------------------------------------
164 // seekLocation
165 // Note: seekLocation() does not reliably set the rank
166 // ------------------------------------------------------------------------
167
168 public void testSeekLocationOnCacheBoundary() throws Exception {
169
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());
179
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());
190
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());
201 }
202
203 public void testSeekLocationNotOnCacheBoundary() throws Exception {
204
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());
215
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());
226
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());
237
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());
248 }
249
250 public void testSeekLocationOutOfScope() throws Exception {
251
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());
262
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());
273 }
274
275 // ------------------------------------------------------------------------
276 // seekEvent on timestamp
277 // ------------------------------------------------------------------------
278
279 public void testSeekEventOnTimestampOnCacheBoundary() throws Exception {
280
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());
290
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());
300
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());
310 }
311
312 public void testSeekEventOnTimestampNotOnCacheBoundary() throws Exception {
313
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());
323
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());
333
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());
343
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());
353
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());
363 }
364
365 public void testSeekEventOnTimestampoutOfScope() throws Exception {
366
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());
376
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());
386 }
387
388 // ------------------------------------------------------------------------
389 // seekEvent on rank
390 // ------------------------------------------------------------------------
391
392 public void testSeekOnRankOnCacheBoundary() throws Exception {
393
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());
403
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());
413
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());
423 }
424
425 public void testSeekOnRankNotOnCacheBoundary() throws Exception {
426
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());
436
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());
446
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());
456
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());
466 }
467
468 public void testSeekEventOnRankOfScope() throws Exception {
469
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());
479
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());
489 }
490
491 // ------------------------------------------------------------------------
492 // processRequest
493 // ------------------------------------------------------------------------
494
495 public void testProcessRequestForNbEvents() throws Exception {
496 final int blockSize = 100;
497 final int nbEvents = 1000;
498 final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
499
500 TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch);
501 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
502 @Override
503 public void handleData() {
504 TmfEvent[] events = getData();
505 for (TmfEvent e : events) {
506 requestedEvents.add(e);
507 }
508 }
509 };
510 fExperiment.sendRequest(request);
511 request.waitForCompletion();
512
513 assertEquals("nbEvents", nbEvents, requestedEvents.size());
514 assertTrue("isCompleted", request.isCompleted());
515 assertFalse("isCancelled", request.isCancelled());
516
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());
521 }
522 }
523
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>();
528
529 TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch);
530 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
531 @Override
532 public void handleData() {
533 TmfEvent[] events = getData();
534 for (TmfEvent e : events) {
535 requestedEvents.add(e);
536 }
537 }
538 };
539 fExperiment.sendRequest(request);
540 request.waitForCompletion();
541
542 assertEquals("nbEvents", nbEvents, requestedEvents.size());
543 assertTrue("isCompleted", request.isCompleted());
544 assertFalse("isCancelled", request.isCancelled());
545
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());
550 }
551 }
552
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();
558
559 TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch);
560 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
561 @Override
562 public void handleData() {
563 TmfEvent[] events = getData();
564 for (TmfEvent e : events) {
565 requestedEvents.add(e);
566 }
567 }
568 };
569 fExperiment.sendRequest(request);
570 request.waitForCompletion();
571
572 assertEquals("nbEvents", nbExpectedEvents, requestedEvents.size());
573 assertTrue("isCompleted", request.isCompleted());
574 assertFalse("isCancelled", request.isCancelled());
575
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());
580 }
581 }
582
583 // ------------------------------------------------------------------------
584 // cancel
585 // ------------------------------------------------------------------------
586
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>();
591
592 TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch);
593 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
594 @Override
595 public void handleData() {
596 TmfEvent[] events = getData();
597 for (TmfEvent e : events) {
598 requestedEvents.add(e);
599 }
600 // Cancel request after the first chunk is received
601 cancel();
602 }
603 };
604 fExperiment.sendRequest(request);
605 request.waitForCompletion();
606
607 assertEquals("nbEvents", blockSize, requestedEvents.size());
608 assertTrue("isCompleted", request.isCompleted());
609 assertTrue("isCancelled", request.isCancelled());
610 }
611
612 // ------------------------------------------------------------------------
613 // getRank
614 // ------------------------------------------------------------------------
615
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)));
624 }
625
626 // ------------------------------------------------------------------------
627 // getTimestamp
628 // ------------------------------------------------------------------------
629
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)));
637 }
638
639}
This page took 0.048079 seconds and 5 git commands to generate.