Fix experiment checkpoint issue with CTF traces
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core.tests / src / org / eclipse / linuxtools / tmf / core / tests / experiment / TmfMultiTraceExperimentTest.java
CommitLineData
d18dd09b 1/*******************************************************************************
0316808c 2 * Copyright (c) 2009, 2010, 2012 Ericsson
d18dd09b
ASL
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
0316808c 11 * Francois Chouinard - Adjusted for new Trace Model
d18dd09b
ASL
12 *******************************************************************************/
13
6c13869b 14package org.eclipse.linuxtools.tmf.core.tests.experiment;
d18dd09b
ASL
15
16import java.io.File;
17import java.io.IOException;
18import java.net.URISyntaxException;
19import java.net.URL;
20import java.util.Vector;
21
22import junit.framework.TestCase;
23
24import org.eclipse.core.runtime.FileLocator;
25import org.eclipse.core.runtime.Path;
72f1e62a 26import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
6c13869b
FC
27import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
28import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
29import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
b4f71e4a 30import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException;
6c13869b 31import org.eclipse.linuxtools.tmf.core.experiment.TmfExperiment;
6c13869b
FC
32import org.eclipse.linuxtools.tmf.core.request.TmfEventRequest;
33import org.eclipse.linuxtools.tmf.core.tests.TmfCoreTestPlugin;
34import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
0316808c 35import org.eclipse.linuxtools.tmf.core.trace.ITmfLocation;
6c13869b 36import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
4918b8f2 37import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub;
d18dd09b
ASL
38
39/**
0316808c 40 * Test suite for the TmfExperiment class (multiple traces).
d18dd09b 41 */
3b38ea61 42@SuppressWarnings("nls")
d18dd09b
ASL
43public class TmfMultiTraceExperimentTest extends TestCase {
44
0316808c
FC
45 // ------------------------------------------------------------------------
46 // Attributes
47 // ------------------------------------------------------------------------
48
d18dd09b
ASL
49 private static final String DIRECTORY = "testfiles";
50 private static final String TEST_STREAM1 = "O-Test-10K";
51 private static final String TEST_STREAM2 = "E-Test-10K";
52 private static final String EXPERIMENT = "MyExperiment";
53 private static int NB_EVENTS = 20000;
9b635e61 54 private static int BLOCK_SIZE = 1000;
d18dd09b 55
f4c52cea 56 private static ITmfTrace<?>[] fTraces;
d18dd09b
ASL
57 private static TmfExperiment<TmfEvent> fExperiment;
58
59 private static byte SCALE = (byte) -3;
60
61 // ------------------------------------------------------------------------
62 // Housekeeping
63 // ------------------------------------------------------------------------
64
25e48683
FC
65 private synchronized static ITmfTrace<?>[] setupTrace(final String path1, final String path2) {
66 if (fTraces == null) {
67 fTraces = new ITmfTrace[2];
68 try {
69 URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path1), null);
70 File test = new File(FileLocator.toFileURL(location).toURI());
20658947 71 final TmfTraceStub trace1 = new TmfTraceStub(test.getPath(), 0, true);
25e48683
FC
72 fTraces[0] = trace1;
73 location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path2), null);
74 test = new File(FileLocator.toFileURL(location).toURI());
20658947 75 final TmfTraceStub trace2 = new TmfTraceStub(test.getPath(), 0, true);
25e48683 76 fTraces[1] = trace2;
b4f71e4a
FC
77 } catch (final TmfTraceException e) {
78 e.printStackTrace();
25e48683
FC
79 } catch (final URISyntaxException e) {
80 e.printStackTrace();
81 } catch (final IOException e) {
82 e.printStackTrace();
83 }
84 }
85 return fTraces;
d18dd09b
ASL
86 }
87
25e48683
FC
88 public TmfMultiTraceExperimentTest(final String name) throws Exception {
89 super(name);
90 }
d18dd09b 91
07671572 92 @SuppressWarnings("unchecked")
25e48683
FC
93 @Override
94 protected void setUp() throws Exception {
95 super.setUp();
96 setupTrace(DIRECTORY + File.separator + TEST_STREAM1, DIRECTORY + File.separator + TEST_STREAM2);
07671572
FC
97 if (fExperiment == null) {
98 fExperiment = new TmfExperiment<TmfEvent>(TmfEvent.class, EXPERIMENT, (ITmfTrace<TmfEvent>[]) fTraces, TmfTimestamp.ZERO, BLOCK_SIZE, true);
99 }
25e48683 100 }
d18dd09b 101
25e48683
FC
102 @Override
103 protected void tearDown() throws Exception {
104 super.tearDown();
105 }
d18dd09b
ASL
106
107 // ------------------------------------------------------------------------
108 // Constructor
109 // ------------------------------------------------------------------------
110
25e48683 111 public void testBasicTmfExperimentConstructor() {
9b635e61 112
25e48683 113 assertEquals("GetId", EXPERIMENT, fExperiment.getName());
d18dd09b
ASL
114 assertEquals("GetNbEvents", NB_EVENTS, fExperiment.getNbEvents());
115
25e48683 116 final TmfTimeRange timeRange = fExperiment.getTimeRange();
d18dd09b
ASL
117 assertEquals("getStartTime", 1, timeRange.getStartTime().getValue());
118 assertEquals("getEndTime", NB_EVENTS, timeRange.getEndTime().getValue());
25e48683 119 }
d18dd09b 120
d18dd09b 121 // ------------------------------------------------------------------------
0316808c 122 // seekEvent on rank
d18dd09b
ASL
123 // ------------------------------------------------------------------------
124
0316808c 125 public void testSeekRankOnCacheBoundary() throws Exception {
d18dd09b 126
0316808c 127 long cacheSize = fExperiment.getCacheSize();
9b635e61 128
0316808c
FC
129 // On lower bound, returns the first event (TS = 1)
130 ITmfContext context = fExperiment.seekEvent(0);
131 assertEquals("Context rank", 0, context.getRank());
25e48683 132
0316808c 133 ITmfEvent event = fExperiment.readNextEvent(context);
d18dd09b 134 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
0316808c 135 assertEquals("Context rank", 1, context.getRank());
25e48683 136
0316808c
FC
137 // Position trace at event rank [cacheSize]
138 context = fExperiment.seekEvent(cacheSize);
139 assertEquals("Context rank", cacheSize, context.getRank());
25e48683 140
b4f71e4a 141 event = fExperiment.readNextEvent(context);
0316808c
FC
142 assertEquals("Event timestamp", cacheSize + 1, event.getTimestamp().getValue());
143 assertEquals("Context rank", cacheSize + 1, context.getRank());
d18dd09b 144
0316808c
FC
145 // Position trace at event rank [4 * cacheSize]
146 context = fExperiment.seekEvent(4 * cacheSize);
147 assertEquals("Context rank", 4 * cacheSize, context.getRank());
25e48683 148
b4f71e4a 149 event = fExperiment.readNextEvent(context);
0316808c
FC
150 assertEquals("Event timestamp", 4 * cacheSize + 1, event.getTimestamp().getValue());
151 assertEquals("Context rank", 4 * cacheSize + 1, context.getRank());
d18dd09b
ASL
152 }
153
0316808c 154 public void testSeekRankNotOnCacheBoundary() throws Exception {
d18dd09b 155
0316808c 156 long cacheSize = fExperiment.getCacheSize();
25e48683 157
0316808c
FC
158 // Position trace at event rank 9
159 ITmfContext context = fExperiment.seekEvent(9);
160 assertEquals("Context rank", 9, context.getRank());
25e48683 161
0316808c 162 ITmfEvent event = fExperiment.readNextEvent(context);
d18dd09b 163 assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
0316808c 164 assertEquals("Context rank", 10, context.getRank());
d18dd09b 165
0316808c
FC
166 // Position trace at event rank [cacheSize - 1]
167 context = fExperiment.seekEvent(cacheSize - 1);
168 assertEquals("Context rank", cacheSize - 1, context.getRank());
25e48683 169
b4f71e4a 170 event = fExperiment.readNextEvent(context);
0316808c
FC
171 assertEquals("Event timestamp", cacheSize, event.getTimestamp().getValue());
172 assertEquals("Context rank", cacheSize, context.getRank());
d18dd09b 173
0316808c
FC
174 // Position trace at event rank [cacheSize + 1]
175 context = fExperiment.seekEvent(cacheSize + 1);
176 assertEquals("Context rank", cacheSize + 1, context.getRank());
25e48683 177
b4f71e4a 178 event = fExperiment.readNextEvent(context);
0316808c
FC
179 assertEquals("Event timestamp", cacheSize + 2, event.getTimestamp().getValue());
180 assertEquals("Context rank", cacheSize + 2, context.getRank());
d18dd09b 181
25e48683 182 // Position trace at event rank 4500
0316808c
FC
183 context = fExperiment.seekEvent(4500);
184 assertEquals("Context rank", 4500, context.getRank());
25e48683 185
b4f71e4a 186 event = fExperiment.readNextEvent(context);
d18dd09b 187 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
0316808c 188 assertEquals("Context rank", 4501, context.getRank());
d18dd09b
ASL
189 }
190
0316808c 191 public void testSeekRankOutOfScope() throws Exception {
d18dd09b 192
25e48683 193 // Position trace at beginning
0316808c 194 ITmfContext context = fExperiment.seekEvent(-1);
d18dd09b 195 assertEquals("Event rank", 0, context.getRank());
25e48683 196
0316808c 197 ITmfEvent event = fExperiment.readNextEvent(context);
d18dd09b 198 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
0316808c 199 assertEquals("Context rank", 1, context.getRank());
d18dd09b 200
25e48683 201 // Position trace at event passed the end
0316808c
FC
202 context = fExperiment.seekEvent(NB_EVENTS);
203 assertEquals("Context rank", NB_EVENTS, context.getRank());
204
205 event = fExperiment.readNextEvent(context);
206 assertNull("Event", event);
207 assertEquals("Context rank", NB_EVENTS, context.getRank());
d18dd09b
ASL
208 }
209
25e48683
FC
210 // ------------------------------------------------------------------------
211 // seekEvent on timestamp
212 // ------------------------------------------------------------------------
213
0316808c 214 public void testSeekTimestampOnCacheBoundary() throws Exception {
25e48683 215
0316808c 216 long cacheSize = fExperiment.getCacheSize();
25e48683 217
0316808c
FC
218 // Position trace at event rank 0
219 ITmfContext context = fExperiment.seekEvent(new TmfTimestamp(1, SCALE, 0));
220 assertEquals("Context rank", 0, context.getRank());
25e48683 221
0316808c 222 ITmfEvent event = fExperiment.readNextEvent(context);
25e48683 223 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
0316808c 224 assertEquals("Context rank", 1, context.getRank());
25e48683 225
0316808c
FC
226 // Position trace at event rank [cacheSize]
227 context = fExperiment.seekEvent(new TmfTimestamp(cacheSize + 1, SCALE, 0));
228 assertEquals("Event rank", cacheSize, context.getRank());
25e48683 229
b4f71e4a 230 event = fExperiment.readNextEvent(context);
0316808c
FC
231 assertEquals("Event timestamp", cacheSize + 1, event.getTimestamp().getValue());
232 assertEquals("Context rank", cacheSize + 1, context.getRank());
25e48683 233
0316808c
FC
234 // Position trace at event rank [4 * cacheSize]
235 context = fExperiment.seekEvent(new TmfTimestamp(4 * cacheSize + 1, SCALE, 0));
236 assertEquals("Context rank", 4 * cacheSize, context.getRank());
25e48683 237
b4f71e4a 238 event = fExperiment.readNextEvent(context);
0316808c
FC
239 assertEquals("Event timestamp", 4 * cacheSize + 1, event.getTimestamp().getValue());
240 assertEquals("Context rank", 4 * cacheSize + 1, context.getRank());
25e48683
FC
241 }
242
0316808c 243 public void testSeekTimestampNotOnCacheBoundary() throws Exception {
25e48683 244
0316808c
FC
245 // Position trace at event rank 1 (TS = 2)
246 ITmfContext context = fExperiment.seekEvent(new TmfTimestamp(2, SCALE, 0));
247 assertEquals("Context rank", 1, context.getRank());
25e48683 248
0316808c 249 ITmfEvent event = fExperiment.readNextEvent(context);
25e48683 250 assertEquals("Event timestamp", 2, event.getTimestamp().getValue());
0316808c 251 assertEquals("Context rank", 2, context.getRank());
25e48683 252
0316808c 253 // Position trace at event rank 9 (TS = 10)
25e48683 254 context = fExperiment.seekEvent(new TmfTimestamp(10, SCALE, 0));
0316808c 255 assertEquals("Context rank", 9, context.getRank());
25e48683 256
b4f71e4a 257 event = fExperiment.readNextEvent(context);
25e48683 258 assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
0316808c 259 assertEquals("Context rank", 10, context.getRank());
25e48683 260
0316808c 261 // Position trace at event rank 999 (TS = 1000)
25e48683 262 context = fExperiment.seekEvent(new TmfTimestamp(1000, SCALE, 0));
0316808c 263 assertEquals("Context rank", 999, context.getRank());
25e48683 264
b4f71e4a 265 event = fExperiment.readNextEvent(context);
25e48683 266 assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
0316808c 267 assertEquals("Context rank", 1000, context.getRank());
25e48683 268
0316808c 269 // Position trace at event rank 1001 (TS = 1002)
25e48683 270 context = fExperiment.seekEvent(new TmfTimestamp(1002, SCALE, 0));
0316808c 271 assertEquals("Context rank", 1001, context.getRank());
25e48683 272
b4f71e4a 273 event = fExperiment.readNextEvent(context);
25e48683 274 assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
0316808c 275 assertEquals("Context rank", 1002, context.getRank());
25e48683 276
0316808c 277 // Position trace at event rank 4500 (TS = 4501)
25e48683 278 context = fExperiment.seekEvent(new TmfTimestamp(4501, SCALE, 0));
0316808c 279 assertEquals("Context rank", 4500, context.getRank());
25e48683 280
b4f71e4a 281 event = fExperiment.readNextEvent(context);
25e48683 282 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
0316808c 283 assertEquals("Context rank", 4501, context.getRank());
25e48683
FC
284 }
285
0316808c 286 public void testSeekTimestampOutOfScope() throws Exception {
25e48683
FC
287
288 // Position trace at beginning
0316808c 289 ITmfContext context = fExperiment.seekEvent(new TmfTimestamp(-1, SCALE, 0));
25e48683
FC
290 assertEquals("Event rank", 0, context.getRank());
291
0316808c 292 ITmfEvent event = fExperiment.readNextEvent(context);
25e48683
FC
293 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
294 assertEquals("Event rank", 1, context.getRank());
295
296 // Position trace at event passed the end
297 context = fExperiment.seekEvent(new TmfTimestamp(NB_EVENTS + 1, SCALE, 0));
0316808c
FC
298 event = fExperiment.readNextEvent(context);
299 assertNull("Event location", event);
9b635e61 300 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
25e48683
FC
301 }
302
303 // ------------------------------------------------------------------------
0316808c 304 // seekEvent by location (context rank is undefined)
25e48683
FC
305 // ------------------------------------------------------------------------
306
0316808c
FC
307 public void testSeekLocationOnCacheBoundary() throws Exception {
308
309 long cacheSize = fExperiment.getCacheSize();
25e48683 310
0316808c
FC
311 // Position trace at event rank 0
312 ITmfContext tmpContext = fExperiment.seekEvent(0);
313 ITmfContext context = fExperiment.seekEvent(tmpContext.getLocation());
25e48683 314
0316808c 315 ITmfEvent event = fExperiment.readNextEvent(context);
25e48683 316 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
25e48683 317
b4f71e4a 318 event = fExperiment.readNextEvent(context);
0316808c 319 assertEquals("Event timestamp", 2, event.getTimestamp().getValue());
25e48683 320
0316808c
FC
321 // Position trace at event rank 'cacheSize'
322 tmpContext = fExperiment.seekEvent(cacheSize);
323 context = fExperiment.seekEvent(tmpContext.getLocation());
25e48683 324
0316808c
FC
325 event = fExperiment.readNextEvent(context);
326 assertEquals("Event timestamp", cacheSize + 1, event.getTimestamp().getValue());
25e48683 327
b4f71e4a 328 event = fExperiment.readNextEvent(context);
0316808c 329 assertEquals("Event timestamp", cacheSize + 2, event.getTimestamp().getValue());
25e48683 330
0316808c
FC
331 // Position trace at event rank 4 * 'cacheSize'
332 tmpContext = fExperiment.seekEvent(4 * cacheSize);
333 context = fExperiment.seekEvent(tmpContext.getLocation());
25e48683 334
0316808c
FC
335 event = fExperiment.readNextEvent(context);
336 assertEquals("Event timestamp", 4 * cacheSize + 1, event.getTimestamp().getValue());
25e48683 337
b4f71e4a 338 event = fExperiment.readNextEvent(context);
0316808c 339 assertEquals("Event timestamp", 4 * cacheSize + 2, event.getTimestamp().getValue());
25e48683
FC
340 }
341
0316808c 342 public void testSeekLocationNotOnCacheBoundary() throws Exception {
25e48683 343
0316808c 344 long cacheSize = fExperiment.getCacheSize();
25e48683 345
0316808c
FC
346 // Position trace at event 'cacheSize' - 1
347 ITmfContext tmpContext = fExperiment.seekEvent(cacheSize - 1);
348 ITmfContext context = fExperiment.seekEvent(tmpContext.getLocation());
25e48683 349
0316808c
FC
350 ITmfEvent event = fExperiment.readNextEvent(context);
351 assertEquals("Event timestamp", cacheSize, event.getTimestamp().getValue());
25e48683 352
b4f71e4a 353 event = fExperiment.readNextEvent(context);
0316808c 354 assertEquals("Event timestamp", cacheSize + 1, event.getTimestamp().getValue());
25e48683 355
0316808c
FC
356 // Position trace at event rank 2 * 'cacheSize' - 1
357 tmpContext = fExperiment.seekEvent(2 * cacheSize - 1);
358 context = fExperiment.seekEvent(tmpContext.getLocation());
359 context = fExperiment.seekEvent(2 * cacheSize - 1);
25e48683 360
0316808c
FC
361 event = fExperiment.readNextEvent(context);
362 assertEquals("Event timestamp", 2 * cacheSize, event.getTimestamp().getValue());
25e48683 363
b4f71e4a 364 event = fExperiment.readNextEvent(context);
0316808c 365 assertEquals("Event timestamp", 2 * cacheSize + 1, event.getTimestamp().getValue());
25e48683
FC
366
367 // Position trace at event rank 4500
0316808c
FC
368 tmpContext = fExperiment.seekEvent(4500);
369 context = fExperiment.seekEvent(tmpContext.getLocation());
25e48683 370
0316808c 371 event = fExperiment.readNextEvent(context);
25e48683 372 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
25e48683 373
b4f71e4a 374 event = fExperiment.readNextEvent(context);
0316808c 375 assertEquals("Event timestamp", 4502, event.getTimestamp().getValue());
25e48683
FC
376 }
377
0316808c 378 public void testSeekLocationOutOfScope() throws Exception {
25e48683
FC
379
380 // Position trace at beginning
0316808c 381 ITmfContext context = fExperiment.seekEvent((ITmfLocation<?>) null);
25e48683 382
0316808c 383 ITmfEvent event = fExperiment.readNextEvent(context);
25e48683 384 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
25e48683 385 }
d18dd09b 386
9b635e61 387 // ------------------------------------------------------------------------
0316808c 388 // readtNextEvent - updates the context
9b635e61 389 // ------------------------------------------------------------------------
d18dd09b 390
0316808c 391 public void testReadNextEvent() throws Exception {
9b635e61 392
25e48683 393 // On lower bound, returns the first event (ts = 0)
0316808c 394 final ITmfContext context = fExperiment.seekEvent(0);
b4f71e4a 395 ITmfEvent event = fExperiment.readNextEvent(context);
d18dd09b 396 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
d18dd09b 397
9b635e61 398 for (int i = 2; i < 20; i++) {
b4f71e4a 399 event = fExperiment.readNextEvent(context);
9b635e61
FC
400 assertEquals("Event timestamp", i, event.getTimestamp().getValue());
401 }
d18dd09b 402 }
9b635e61 403
d18dd09b
ASL
404 // ------------------------------------------------------------------------
405 // processRequest
406 // ------------------------------------------------------------------------
407
408 public void testProcessRequestForNbEvents() throws Exception {
9b635e61 409
25e48683 410 final int blockSize = 100;
d18dd09b
ASL
411 final int nbEvents = 1000;
412 final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
413
25e48683 414 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
d18dd09b 415 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
25e48683
FC
416 @Override
417 public void handleData(final TmfEvent event) {
418 super.handleData(event);
419 requestedEvents.add(event);
420 }
d18dd09b
ASL
421 };
422 fExperiment.sendRequest(request);
423 request.waitForCompletion();
424
425 assertEquals("nbEvents", nbEvents, requestedEvents.size());
426 assertTrue("isCompleted", request.isCompleted());
427 assertFalse("isCancelled", request.isCancelled());
428
429 // Ensure that we have distinct events.
25e48683 430 // Don't go overboard: we are not validating the stub!
20658947 431 for (int i = 0; i < nbEvents; i++) {
d18dd09b 432 assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue());
20658947 433 }
d18dd09b 434 }
25e48683 435
d18dd09b 436 public void testProcessRequestForNbEvents2() throws Exception {
9b635e61 437
25e48683 438 final int blockSize = 2 * NB_EVENTS;
d18dd09b
ASL
439 final int nbEvents = 1000;
440 final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
441
25e48683 442 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
d18dd09b 443 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
25e48683
FC
444 @Override
445 public void handleData(final TmfEvent event) {
446 super.handleData(event);
447 requestedEvents.add(event);
448 }
d18dd09b
ASL
449 };
450 fExperiment.sendRequest(request);
451 request.waitForCompletion();
452
453 assertEquals("nbEvents", nbEvents, requestedEvents.size());
454 assertTrue("isCompleted", request.isCompleted());
455 assertFalse("isCancelled", request.isCancelled());
456
457 // Ensure that we have distinct events.
25e48683 458 // Don't go overboard: we are not validating the stub!
20658947 459 for (int i = 0; i < nbEvents; i++) {
d18dd09b 460 assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue());
20658947 461 }
d18dd09b 462 }
25e48683 463
d18dd09b 464 public void testProcessRequestForAllEvents() throws Exception {
9b635e61 465
25e48683 466 final int nbEvents = TmfEventRequest.ALL_DATA;
d18dd09b
ASL
467 final int blockSize = 1;
468 final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
25e48683 469 final long nbExpectedEvents = NB_EVENTS;
d18dd09b 470
25e48683 471 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
d18dd09b 472 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
25e48683
FC
473 @Override
474 public void handleData(final TmfEvent event) {
475 super.handleData(event);
476 requestedEvents.add(event);
477 }
d18dd09b
ASL
478 };
479 fExperiment.sendRequest(request);
480 request.waitForCompletion();
481
9b635e61 482 assertEquals("nbEvents", nbExpectedEvents, requestedEvents.size());
d18dd09b
ASL
483 assertTrue("isCompleted", request.isCompleted());
484 assertFalse("isCancelled", request.isCancelled());
485
486 // Ensure that we have distinct events.
25e48683 487 // Don't go overboard: we are not validating the stub!
20658947 488 for (int i = 0; i < nbExpectedEvents; i++) {
d18dd09b 489 assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue());
20658947 490 }
d18dd09b 491 }
25e48683 492
d18dd09b
ASL
493 // ------------------------------------------------------------------------
494 // cancel
495 // ------------------------------------------------------------------------
496
497 public void testCancel() throws Exception {
9b635e61 498
25e48683 499 final int nbEvents = NB_EVENTS;
9b635e61 500 final int blockSize = BLOCK_SIZE;
d18dd09b
ASL
501 final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
502
25e48683 503 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
d18dd09b 504 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
25e48683
FC
505 int nbRead = 0;
506 @Override
507 public void handleData(final TmfEvent event) {
508 super.handleData(event);
509 requestedEvents.add(event);
20658947 510 if (++nbRead == blockSize) {
25e48683 511 cancel();
20658947 512 }
25e48683 513 }
9b635e61
FC
514 @Override
515 public void handleCancel() {
20658947 516 if (requestedEvents.size() < blockSize) {
25e48683 517 System.out.println("aie");
20658947 518 }
9b635e61 519 }
d18dd09b
ASL
520 };
521 fExperiment.sendRequest(request);
522 request.waitForCompletion();
523
524 assertEquals("nbEvents", blockSize, requestedEvents.size());
525 assertTrue("isCompleted", request.isCompleted());
526 assertTrue("isCancelled", request.isCancelled());
527 }
25e48683 528
d18dd09b
ASL
529 // ------------------------------------------------------------------------
530 // getTimestamp
531 // ------------------------------------------------------------------------
532
533 public void testGetTimestamp() throws Exception {
9b635e61 534
25e48683 535 assertTrue("getTimestamp", fExperiment.getTimestamp( 0).equals(new TmfTimestamp( 1, (byte) -3)));
d18dd09b
ASL
536 assertTrue("getTimestamp", fExperiment.getTimestamp( 10).equals(new TmfTimestamp( 11, (byte) -3)));
537 assertTrue("getTimestamp", fExperiment.getTimestamp( 100).equals(new TmfTimestamp( 101, (byte) -3)));
538 assertTrue("getTimestamp", fExperiment.getTimestamp(1000).equals(new TmfTimestamp(1001, (byte) -3)));
539 assertTrue("getTimestamp", fExperiment.getTimestamp(2000).equals(new TmfTimestamp(2001, (byte) -3)));
540 assertTrue("getTimestamp", fExperiment.getTimestamp(2500).equals(new TmfTimestamp(2501, (byte) -3)));
541 }
542
543}
This page took 0.064938 seconds and 5 git commands to generate.