2010-08-30 Francois Chouinard <fchouinard@gmail.com> Quick fix for a ClassCastExcep...
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.tests / src / org / eclipse / linuxtools / tmf / tests / experiment / TmfExperimentTest.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.experiment.TmfExperimentContext;
30import org.eclipse.linuxtools.tmf.request.TmfEventRequest;
31import org.eclipse.linuxtools.tmf.tests.TmfCoreTestPlugin;
9b635e61 32import org.eclipse.linuxtools.tmf.trace.ITmfContext;
d18dd09b
ASL
33import org.eclipse.linuxtools.tmf.trace.ITmfTrace;
34import org.eclipse.linuxtools.tmf.trace.TmfCheckpoint;
35import org.eclipse.linuxtools.tmf.trace.TmfContext;
36import org.eclipse.linuxtools.tmf.trace.TmfTraceStub;
37
38/**
39 * <b><u>TmfExperimentTest</u></b>
40 * <p>
41 * TODO: Implement me. Please.
42 */
43public class TmfExperimentTest extends TestCase {
44
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;
50
51 private static ITmfTrace[] fTraces;
52 private static TmfExperiment<TmfEvent> fExperiment;
53
54 private static byte SCALE = (byte) -3;
55
56 // ------------------------------------------------------------------------
57 // Housekeeping
58 // ------------------------------------------------------------------------
59
cb866e08 60 private synchronized static ITmfTrace[] setupTrace(String path) {
d18dd09b
ASL
61 if (fTraces == null) {
62 fTraces = new ITmfTrace[1];
63 try {
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);
67 fTraces[0] = trace;
68 } catch (URISyntaxException e) {
69 e.printStackTrace();
70 } catch (IOException e) {
71 e.printStackTrace();
72 }
73 }
74 return fTraces;
75 }
76
cb866e08 77 private synchronized static void setupExperiment() {
d18dd09b 78 if (fExperiment == null) {
cb866e08 79 fExperiment = new TmfExperiment<TmfEvent>(TmfEvent.class, EXPERIMENT, fTraces, TmfTimestamp.Zero, 1000, true);
d18dd09b
ASL
80 }
81 }
82
83 public TmfExperimentTest(String name) throws Exception {
84 super(name);
85 }
86
87 @Override
88 protected void setUp() throws Exception {
89 super.setUp();
90 setupTrace(DIRECTORY + File.separator + TEST_STREAM);
91 setupExperiment();
92 }
93
94 @Override
95 protected void tearDown() throws Exception {
96 super.tearDown();
97 }
98
99 // ------------------------------------------------------------------------
100 // Constructor
101 // ------------------------------------------------------------------------
102
103 public void testBasicTmfExperimentConstructor() {
cb866e08 104
d18dd09b
ASL
105 assertEquals("GetId", EXPERIMENT, fExperiment.getName());
106 assertEquals("GetEpoch", TmfTimestamp.Zero, fExperiment.getEpoch());
107 assertEquals("GetNbEvents", NB_EVENTS, fExperiment.getNbEvents());
108
109 TmfTimeRange timeRange = fExperiment.getTimeRange();
110 assertEquals("getStartTime", 1, timeRange.getStartTime().getValue());
111 assertEquals("getEndTime", NB_EVENTS, timeRange.getEndTime().getValue());
112 }
113
114 // ------------------------------------------------------------------------
115 // Verify checkpoints
d18dd09b
ASL
116 // ------------------------------------------------------------------------
117
118 public void testValidateCheckpoints() throws Exception {
119
120 Vector<TmfCheckpoint> checkpoints = fExperiment.getCheckpoints();
9b635e61
FC
121 int pageSize = fExperiment.getCacheSize();
122 assertTrue("Checkpoints exist", checkpoints != null);
d18dd09b
ASL
123
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);
9b635e61 129 assertEquals("Event rank", i * pageSize, context.getRank());
d18dd09b
ASL
130 assertTrue("Timestamp", (checkpoint.getTimestamp().compareTo(event.getTimestamp(), false) == 0));
131 }
132 }
133
d18dd09b
ASL
134 // ------------------------------------------------------------------------
135 // seekLocation
d18dd09b
ASL
136 // ------------------------------------------------------------------------
137
138 public void testSeekLocationOnCacheBoundary() throws Exception {
139
140 // Position trace at event rank 0
141 TmfContext context = fExperiment.seekLocation(null);
9b635e61
FC
142 assertEquals("Event rank", 0, context.getRank());
143
144 TmfEvent event = fExperiment.parseEvent(context);
d18dd09b 145 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
9b635e61
FC
146 assertEquals("Event rank", 0, context.getRank());
147
148 event = fExperiment.getNextEvent(context);
d18dd09b 149 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
9b635e61
FC
150 assertEquals("Event rank", 1, context.getRank());
151
152 event = fExperiment.getNextEvent(context);
153 assertEquals("Event timestamp", 2, event.getTimestamp().getValue());
154 assertEquals("Event rank", 2, context.getRank());
d18dd09b
ASL
155
156 // Position trace at event rank 1000
157 TmfContext tmpContext = fExperiment.seekEvent(new TmfTimestamp(1001, SCALE, 0));
9b635e61
FC
158 context = fExperiment.seekLocation(tmpContext.getLocation());
159 assertEquals("Event rank", 1000, context.getRank());
160
161 event = fExperiment.parseEvent(context);
d18dd09b 162 assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
9b635e61
FC
163 assertEquals("Event rank", 1000, context.getRank());
164
165 event = fExperiment.getNextEvent(context);
d18dd09b 166 assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
9b635e61
FC
167 assertEquals("Event rank", 1001, context.getRank());
168
169 event = fExperiment.getNextEvent(context);
170 assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
171 assertEquals("Event rank", 1002, context.getRank());
d18dd09b
ASL
172
173 // Position trace at event rank 4000
174 tmpContext = fExperiment.seekEvent(new TmfTimestamp(4001, SCALE, 0));
9b635e61
FC
175 context = fExperiment.seekLocation(tmpContext.getLocation());
176 assertEquals("Event rank", 4000, context.getRank());
177
178 event = fExperiment.parseEvent(context);
d18dd09b 179 assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
9b635e61
FC
180 assertEquals("Event rank", 4000, context.getRank());
181
182 event = fExperiment.getNextEvent(context);
d18dd09b 183 assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
9b635e61
FC
184 assertEquals("Event rank", 4001, context.getRank());
185
186 event = fExperiment.getNextEvent(context);
187 assertEquals("Event timestamp", 4002, event.getTimestamp().getValue());
188 assertEquals("Event rank", 4002, context.getRank());
d18dd09b
ASL
189 }
190
191 public void testSeekLocationNotOnCacheBoundary() throws Exception {
192
193 // Position trace at event rank 9
194 TmfContext tmpContext = fExperiment.seekEvent(new TmfTimestamp(10, SCALE, 0));
9b635e61
FC
195 TmfContext context = fExperiment.seekLocation(tmpContext.getLocation());
196 assertEquals("Event rank", 9, context.getRank());
197
198 TmfEvent event = fExperiment.parseEvent(context);
d18dd09b 199 assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
9b635e61
FC
200 assertEquals("Event rank", 9, context.getRank());
201
202 event = fExperiment.getNextEvent(context);
d18dd09b 203 assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
9b635e61 204 assertEquals("Event rank", 10, context.getRank());
d18dd09b
ASL
205
206 // Position trace at event rank 999
207 tmpContext = fExperiment.seekEvent(new TmfTimestamp(1000, SCALE, 0));
9b635e61
FC
208 context = fExperiment.seekLocation(tmpContext.getLocation());
209 assertEquals("Event rank", 999, context.getRank());
210
211 event = fExperiment.parseEvent(context);
d18dd09b 212 assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
9b635e61
FC
213 assertEquals("Event rank", 999, context.getRank());
214
215 event = fExperiment.getNextEvent(context);
d18dd09b 216 assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
9b635e61 217 assertEquals("Event rank", 1000, context.getRank());
d18dd09b
ASL
218
219 // Position trace at event rank 1001
220 tmpContext = fExperiment.seekEvent(new TmfTimestamp(1002, SCALE, 0));
9b635e61
FC
221 context = fExperiment.seekLocation(tmpContext.getLocation());
222 assertEquals("Event rank", 1001, context.getRank());
223
224 event = fExperiment.parseEvent(context);
d18dd09b 225 assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
9b635e61
FC
226 assertEquals("Event rank", 1001, context.getRank());
227
228 event = fExperiment.getNextEvent(context);
d18dd09b 229 assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
9b635e61 230 assertEquals("Event rank", 1002, context.getRank());
d18dd09b
ASL
231
232 // Position trace at event rank 4500
233 tmpContext = fExperiment.seekEvent(new TmfTimestamp(4501, SCALE, 0));
9b635e61
FC
234 context = fExperiment.seekLocation(tmpContext.getLocation());
235 assertEquals("Event rank", 4500, context.getRank());
236
237 event = fExperiment.parseEvent(context);
d18dd09b 238 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
9b635e61
FC
239 assertEquals("Event rank", 4500, context.getRank());
240
241 event = fExperiment.getNextEvent(context);
d18dd09b 242 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
9b635e61 243 assertEquals("Event rank", 4501, context.getRank());
d18dd09b
ASL
244 }
245
246 public void testSeekLocationOutOfScope() throws Exception {
247
248 // Position trace at beginning
249 TmfContext tmpContext = fExperiment.seekLocation(null);
9b635e61
FC
250 TmfContext context = fExperiment.seekLocation(tmpContext.getLocation());
251 assertEquals("Event rank", 0, context.getRank());
252
253 TmfEvent event = fExperiment.parseEvent(context);
d18dd09b 254 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
9b635e61
FC
255 assertEquals("Event rank", 0, context.getRank());
256
257 event = fExperiment.getNextEvent(context);
d18dd09b 258 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
9b635e61 259 assertEquals("Event rank", 1, context.getRank());
d18dd09b
ASL
260
261 // Position trace at event passed the end
262 tmpContext = fExperiment.seekEvent(new TmfTimestamp(NB_EVENTS + 1, SCALE, 0));
9b635e61
FC
263 assertEquals("Event location", null, tmpContext.getLocation());
264 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, tmpContext.getRank());
d18dd09b
ASL
265 }
266
267 // ------------------------------------------------------------------------
268 // seekEvent on timestamp
269 // ------------------------------------------------------------------------
270
271 public void testSeekEventOnTimestampOnCacheBoundary() throws Exception {
272
273 // Position trace at event rank 0
274 TmfContext context = fExperiment.seekEvent(new TmfTimestamp(1, SCALE, 0));
275 assertEquals("Event rank", 0, context.getRank());
9b635e61
FC
276
277 TmfEvent event = fExperiment.parseEvent(context);
d18dd09b
ASL
278 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
279 assertEquals("Event rank", 0, context.getRank());
9b635e61
FC
280
281 event = fExperiment.getNextEvent(context);
d18dd09b
ASL
282 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
283 assertEquals("Event rank", 1, context.getRank());
284
285 // Position trace at event rank 1000
286 context = fExperiment.seekEvent(new TmfTimestamp(1001, SCALE, 0));
287 assertEquals("Event rank", 1000, context.getRank());
9b635e61
FC
288
289 event = fExperiment.parseEvent(context);
d18dd09b
ASL
290 assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
291 assertEquals("Event rank", 1000, context.getRank());
9b635e61
FC
292
293 event = fExperiment.getNextEvent(context);
d18dd09b
ASL
294 assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
295 assertEquals("Event rank", 1001, context.getRank());
296
297 // Position trace at event rank 4000
298 context = fExperiment.seekEvent(new TmfTimestamp(4001, SCALE, 0));
299 assertEquals("Event rank", 4000, context.getRank());
9b635e61
FC
300
301 event = fExperiment.parseEvent(context);
d18dd09b
ASL
302 assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
303 assertEquals("Event rank", 4000, context.getRank());
9b635e61
FC
304
305 event = fExperiment.getNextEvent(context);
d18dd09b
ASL
306 assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
307 assertEquals("Event rank", 4001, context.getRank());
308 }
309
310 public void testSeekEventOnTimestampNotOnCacheBoundary() throws Exception {
311
312 // Position trace at event rank 1
313 TmfContext context = fExperiment.seekEvent(new TmfTimestamp(2, SCALE, 0));
314 assertEquals("Event rank", 1, context.getRank());
9b635e61
FC
315
316 TmfEvent event = fExperiment.parseEvent(context);
d18dd09b
ASL
317 assertEquals("Event timestamp", 2, event.getTimestamp().getValue());
318 assertEquals("Event rank", 1, context.getRank());
9b635e61
FC
319
320 event = fExperiment.getNextEvent(context);
d18dd09b
ASL
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());
9b635e61
FC
327
328 event = fExperiment.parseEvent(context);
d18dd09b
ASL
329 assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
330 assertEquals("Event rank", 9, context.getRank());
9b635e61
FC
331
332 event = fExperiment.getNextEvent(context);
d18dd09b
ASL
333 assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
334 assertEquals("Event rank", 10, context.getRank());
335
336 // Position trace at event rank 999
337 context = fExperiment.seekEvent(new TmfTimestamp(1000, SCALE, 0));
338 assertEquals("Event rank", 999, context.getRank());
9b635e61
FC
339
340 event = fExperiment.parseEvent(context);
d18dd09b
ASL
341 assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
342 assertEquals("Event rank", 999, context.getRank());
9b635e61
FC
343
344 event = fExperiment.getNextEvent(context);
d18dd09b
ASL
345 assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
346 assertEquals("Event rank", 1000, context.getRank());
347
348 // Position trace at event rank 1001
349 context = fExperiment.seekEvent(new TmfTimestamp(1002, SCALE, 0));
350 assertEquals("Event rank", 1001, context.getRank());
9b635e61
FC
351
352 event = fExperiment.parseEvent(context);
d18dd09b
ASL
353 assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
354 assertEquals("Event rank", 1001, context.getRank());
9b635e61
FC
355
356 event = fExperiment.getNextEvent(context);
d18dd09b
ASL
357 assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
358 assertEquals("Event rank", 1002, context.getRank());
359
360 // Position trace at event rank 4500
361 context = fExperiment.seekEvent(new TmfTimestamp(4501, SCALE, 0));
362 assertEquals("Event rank", 4500, context.getRank());
9b635e61
FC
363
364 event = fExperiment.parseEvent(context);
d18dd09b
ASL
365 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
366 assertEquals("Event rank", 4500, context.getRank());
9b635e61
FC
367
368 event = fExperiment.getNextEvent(context);
d18dd09b
ASL
369 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
370 assertEquals("Event rank", 4501, context.getRank());
371 }
372
373 public void testSeekEventOnTimestampoutOfScope() throws Exception {
374
375 // Position trace at beginning
376 TmfContext context = fExperiment.seekEvent(new TmfTimestamp(-1, SCALE, 0));
377 assertEquals("Event rank", 0, context.getRank());
9b635e61
FC
378
379 TmfEvent event = fExperiment.parseEvent(context);
d18dd09b
ASL
380 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
381 assertEquals("Event rank", 0, context.getRank());
9b635e61
FC
382
383 event = fExperiment.getNextEvent(context);
d18dd09b
ASL
384 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
385 assertEquals("Event rank", 1, context.getRank());
386
387 // Position trace at event passed the end
388 context = fExperiment.seekEvent(new TmfTimestamp(NB_EVENTS + 1, SCALE, 0));
9b635e61
FC
389 assertEquals("Event location", null, context.getLocation());
390 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
d18dd09b
ASL
391 }
392
393 // ------------------------------------------------------------------------
394 // seekEvent on rank
395 // ------------------------------------------------------------------------
396
397 public void testSeekOnRankOnCacheBoundary() throws Exception {
398
399 // On lower bound, returns the first event (ts = 1)
400 TmfContext context = fExperiment.seekEvent(0);
401 assertEquals("Event rank", 0, context.getRank());
9b635e61
FC
402
403 TmfEvent event = fExperiment.parseEvent(context);
d18dd09b
ASL
404 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
405 assertEquals("Event rank", 0, context.getRank());
9b635e61
FC
406
407 event = fExperiment.getNextEvent(context);
d18dd09b
ASL
408 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
409 assertEquals("Event rank", 1, context.getRank());
410
411 // Position trace at event rank 1000
412 context = fExperiment.seekEvent(1000);
413 assertEquals("Event rank", 1000, context.getRank());
9b635e61
FC
414
415 event = fExperiment.parseEvent(context);
d18dd09b
ASL
416 assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
417 assertEquals("Event rank", 1000, context.getRank());
9b635e61
FC
418
419 event = fExperiment.getNextEvent(context);
d18dd09b
ASL
420 assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
421 assertEquals("Event rank", 1001, context.getRank());
422
423 // Position trace at event rank 4000
424 context = fExperiment.seekEvent(4000);
425 assertEquals("Event rank", 4000, context.getRank());
9b635e61
FC
426
427 event = fExperiment.parseEvent(context);
d18dd09b
ASL
428 assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
429 assertEquals("Event rank", 4000, context.getRank());
9b635e61
FC
430
431 event = fExperiment.getNextEvent(context);
d18dd09b
ASL
432 assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
433 assertEquals("Event rank", 4001, context.getRank());
434 }
435
436 public void testSeekOnRankNotOnCacheBoundary() throws Exception {
437
438 // Position trace at event rank 9
439 TmfContext context = fExperiment.seekEvent(9);
440 assertEquals("Event rank", 9, context.getRank());
9b635e61
FC
441
442 TmfEvent event = fExperiment.parseEvent(context);
d18dd09b
ASL
443 assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
444 assertEquals("Event rank", 9, context.getRank());
9b635e61
FC
445
446 event = fExperiment.getNextEvent(context);
d18dd09b
ASL
447 assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
448 assertEquals("Event rank", 10, context.getRank());
449
450 // Position trace at event rank 999
451 context = fExperiment.seekEvent(999);
452 assertEquals("Event rank", 999, context.getRank());
9b635e61
FC
453
454 event = fExperiment.parseEvent(context);
d18dd09b
ASL
455 assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
456 assertEquals("Event rank", 999, context.getRank());
9b635e61
FC
457
458 event = fExperiment.getNextEvent(context);
d18dd09b
ASL
459 assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
460 assertEquals("Event rank", 1000, context.getRank());
461
462 // Position trace at event rank 1001
463 context = fExperiment.seekEvent(1001);
464 assertEquals("Event rank", 1001, context.getRank());
9b635e61
FC
465
466 event = fExperiment.parseEvent(context);
d18dd09b
ASL
467 assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
468 assertEquals("Event rank", 1001, context.getRank());
9b635e61
FC
469
470 event = fExperiment.getNextEvent(context);
d18dd09b
ASL
471 assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
472 assertEquals("Event rank", 1002, context.getRank());
473
474 // Position trace at event rank 4500
475 context = fExperiment.seekEvent(4500);
476 assertEquals("Event rank", 4500, context.getRank());
9b635e61
FC
477
478 event = fExperiment.parseEvent(context);
d18dd09b
ASL
479 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
480 assertEquals("Event rank", 4500, context.getRank());
9b635e61
FC
481
482 event = fExperiment.getNextEvent(context);
d18dd09b
ASL
483 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
484 assertEquals("Event rank", 4501, context.getRank());
485 }
486
9b635e61 487 public void testSeekEventOnRankOutOfScope() throws Exception {
d18dd09b
ASL
488
489 // Position trace at beginning
490 TmfContext context = fExperiment.seekEvent(-1);
491 assertEquals("Event rank", 0, context.getRank());
9b635e61
FC
492
493 TmfEvent event = fExperiment.parseEvent(context);
d18dd09b
ASL
494 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
495 assertEquals("Event rank", 0, context.getRank());
9b635e61
FC
496
497 event = fExperiment.getNextEvent(context);
d18dd09b
ASL
498 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
499 assertEquals("Event rank", 1, context.getRank());
500
501 // Position trace at event passed the end
502 context = fExperiment.seekEvent(NB_EVENTS);
9b635e61
FC
503 assertEquals("Event location", null, context.getLocation());
504 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
d18dd09b
ASL
505 }
506
9b635e61
FC
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 // ------------------------------------------------------------------------
511
512 public void testParseEvent() throws Exception {
513
514 int NB_READS = 20;
515
516 // On lower bound, returns the first event (ts = 1)
517 TmfContext context = fExperiment.seekEvent(new TmfTimestamp(0, SCALE, 0));
518
519 // Read NB_EVENTS
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());
525 }
526
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());
531 }
532
533 // ------------------------------------------------------------------------
534 // getNextEvent - updates the context
535 // ------------------------------------------------------------------------
536
537 public void testGetNextEvent() throws Exception {
538
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());
543
544 for (int i = 2; i < 20; i++) {
545 event = fExperiment.getNextEvent(context);
546 assertEquals("Event timestamp", i, event.getTimestamp().getValue());
547 }
548 }
549
d18dd09b
ASL
550 // ------------------------------------------------------------------------
551 // processRequest
552 // ------------------------------------------------------------------------
553
554 public void testProcessRequestForNbEvents() throws Exception {
cb866e08
FC
555
556 final int blockSize = 100;
d18dd09b
ASL
557 final int nbEvents = 1000;
558 final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
559
560 TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch);
561 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
562 @Override
563 public void handleData() {
564 TmfEvent[] events = getData();
565 for (TmfEvent e : events) {
566 requestedEvents.add(e);
567 }
568 }
569 };
570 fExperiment.sendRequest(request);
571 request.waitForCompletion();
572
573 assertEquals("nbEvents", nbEvents, requestedEvents.size());
574 assertTrue("isCompleted", request.isCompleted());
575 assertFalse("isCancelled", request.isCancelled());
576
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());
581 }
582 }
583
584 public void testProcessRequestForNbEvents2() throws Exception {
cb866e08
FC
585
586 final int blockSize = 2 * NB_EVENTS;
d18dd09b
ASL
587 final int nbEvents = 1000;
588 final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
589
590 TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch);
591 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
592 @Override
593 public void handleData() {
594 TmfEvent[] events = getData();
595 for (TmfEvent e : events) {
596 requestedEvents.add(e);
597 }
598 }
599 };
600 fExperiment.sendRequest(request);
601 request.waitForCompletion();
602
603 assertEquals("nbEvents", nbEvents, requestedEvents.size());
604 assertTrue("isCompleted", request.isCompleted());
605 assertFalse("isCancelled", request.isCancelled());
606
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());
611 }
612 }
613
614 public void testProcessRequestForAllEvents() throws Exception {
cb866e08
FC
615
616 final int nbEvents = TmfEventRequest.ALL_DATA;
d18dd09b
ASL
617 final int blockSize = 1;
618 final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
cb866e08 619 long nbExpectedEvents = NB_EVENTS;
d18dd09b
ASL
620
621 TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch);
622 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
623 @Override
624 public void handleData() {
625 TmfEvent[] events = getData();
626 for (TmfEvent e : events) {
627 requestedEvents.add(e);
628 }
629 }
630 };
631 fExperiment.sendRequest(request);
632 request.waitForCompletion();
633
634 assertEquals("nbEvents", nbExpectedEvents, requestedEvents.size());
635 assertTrue("isCompleted", request.isCompleted());
636 assertFalse("isCancelled", request.isCancelled());
637
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());
642 }
643 }
644
645 // ------------------------------------------------------------------------
646 // cancel
647 // ------------------------------------------------------------------------
648
649 public void testCancel() throws Exception {
cb866e08
FC
650
651 final int nbEvents = NB_EVENTS;
652 final int blockSize = fDefaultBlockSize;
d18dd09b
ASL
653 final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
654
655 TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch);
656 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
657 @Override
658 public void handleData() {
659 TmfEvent[] events = getData();
660 for (TmfEvent e : events) {
661 requestedEvents.add(e);
662 }
663 // Cancel request after the first chunk is received
664 cancel();
665 }
cb866e08
FC
666 @Override
667 public void handleCancel() {
668 if (requestedEvents.size() < blockSize) {
669 System.out.println("aie");
670 }
671 }
d18dd09b
ASL
672 };
673 fExperiment.sendRequest(request);
674 request.waitForCompletion();
675
676 assertEquals("nbEvents", blockSize, requestedEvents.size());
677 assertTrue("isCompleted", request.isCompleted());
678 assertTrue("isCancelled", request.isCancelled());
679 }
680
681 // ------------------------------------------------------------------------
682 // getRank
683 // ------------------------------------------------------------------------
684
685 public void testGetRank() throws Exception {
cb866e08
FC
686
687 assertEquals("getRank", 0, fExperiment.getRank(new TmfTimestamp()));
d18dd09b
ASL
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)));
694 }
695
696 // ------------------------------------------------------------------------
697 // getTimestamp
698 // ------------------------------------------------------------------------
699
700 public void testGetTimestamp() throws Exception {
cb866e08
FC
701
702 assertTrue("getTimestamp", fExperiment.getTimestamp( 0).equals(new TmfTimestamp( 1, (byte) -3)));
d18dd09b
ASL
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)));
708 }
709
710}
This page took 0.058716 seconds and 5 git commands to generate.