tmf: Consolidate constructors in coalesced requests
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core.tests / src / org / eclipse / linuxtools / tmf / core / tests / request / TmfCoalescedEventRequestTest.java
CommitLineData
5419a136 1/*******************************************************************************
61759503 2 * Copyright (c) 2009, 2013 Ericsson
5419a136
AM
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
6e1886bc 11 * Alexandre Montplaisir - Port to JUnit4
5419a136
AM
12 *******************************************************************************/
13
14package org.eclipse.linuxtools.tmf.core.tests.request;
15
6e1886bc
AM
16import static org.junit.Assert.assertEquals;
17import static org.junit.Assert.assertFalse;
18import static org.junit.Assert.assertTrue;
19
5419a136
AM
20import java.io.File;
21import java.io.IOException;
22import java.net.URISyntaxException;
23import java.net.URL;
24import java.util.Vector;
25
5419a136
AM
26import org.eclipse.core.runtime.FileLocator;
27import org.eclipse.core.runtime.Path;
28import org.eclipse.linuxtools.internal.tmf.core.component.TmfProviderManager;
29import org.eclipse.linuxtools.internal.tmf.core.request.TmfCoalescedDataRequest;
30import org.eclipse.linuxtools.internal.tmf.core.request.TmfCoalescedEventRequest;
31import org.eclipse.linuxtools.tmf.core.component.ITmfDataProvider;
32import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
5419a136
AM
33import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException;
34import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest.ExecutionType;
35import org.eclipse.linuxtools.tmf.core.request.TmfDataRequest;
36import org.eclipse.linuxtools.tmf.core.request.TmfEventRequest;
37import org.eclipse.linuxtools.tmf.core.signal.TmfSignal;
38import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler;
39import org.eclipse.linuxtools.tmf.core.signal.TmfSignalManager;
40import org.eclipse.linuxtools.tmf.core.tests.TmfCoreTestPlugin;
3bd46eef
AM
41import org.eclipse.linuxtools.tmf.core.timestamp.TmfTimeRange;
42import org.eclipse.linuxtools.tmf.core.timestamp.TmfTimestamp;
5419a136
AM
43import org.eclipse.linuxtools.tmf.tests.stubs.request.TmfEventRequestStub;
44import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub;
6e1886bc
AM
45import org.junit.Before;
46import org.junit.Test;
5419a136
AM
47
48/**
5419a136
AM
49 * Test suite for the TmfCoalescedEventRequest class.
50 */
cad06250 51@SuppressWarnings("javadoc")
6e1886bc
AM
52public class TmfCoalescedEventRequestTest {
53
54 // ------------------------------------------------------------------------
55 // Variables
56 // ------------------------------------------------------------------------
57
58 private final TmfTimeRange range1 = new TmfTimeRange(TmfTimeRange.ETERNITY);
59 private final TmfTimeRange range2 = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BIG_CRUNCH);
60
61 private TmfCoalescedEventRequest fRequest1;
62 private TmfCoalescedEventRequest fRequest2;
63 private TmfCoalescedEventRequest fRequest3;
64 private TmfCoalescedEventRequest fRequest4;
65
66 private TmfCoalescedEventRequest fRequest1b;
67 private TmfCoalescedEventRequest fRequest1c;
68
69 private int fRequestCount;
70
71 // ------------------------------------------------------------------------
72 // Housekeeping
73 // ------------------------------------------------------------------------
74
75 @Before
76 public void setUp() {
77 TmfDataRequest.reset();
cf5bad96
AM
78 fRequest1 = new TmfCoalescedEventRequest(ITmfEvent.class, range1, 0, 100, 200, ExecutionType.FOREGROUND);
79 fRequest2 = new TmfCoalescedEventRequest(ITmfEvent.class, range2, 0, 100, 200, ExecutionType.FOREGROUND);
80 fRequest3 = new TmfCoalescedEventRequest(ITmfEvent.class, range2, 0, 200, 200, ExecutionType.FOREGROUND);
81 fRequest4 = new TmfCoalescedEventRequest(ITmfEvent.class, range2, 0, 200, 300, ExecutionType.FOREGROUND);
6e1886bc 82
cf5bad96
AM
83 fRequest1b = new TmfCoalescedEventRequest(ITmfEvent.class, range1, 0, 100, 200, ExecutionType.FOREGROUND);
84 fRequest1c = new TmfCoalescedEventRequest(ITmfEvent.class, range1, 0, 100, 200, ExecutionType.FOREGROUND);
6e1886bc
AM
85
86 fRequestCount = fRequest1c.getRequestId() + 1;
87 }
88
89 private TmfCoalescedEventRequest setupTestRequest(final boolean[] flags) {
90
cf5bad96 91 TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(ITmfEvent.class, range1, 0, 100, 200, ExecutionType.FOREGROUND) {
6e1886bc
AM
92 @Override
93 public void handleCompleted() {
94 super.handleCompleted();
95 flags[0] = true;
96 }
97
98 @Override
99 public void handleSuccess() {
100 super.handleSuccess();
101 flags[1] = true;
102 }
103
104 @Override
105 public void handleFailure() {
106 super.handleFailure();
107 flags[2] = true;
108 }
109
110 @Override
111 public void handleCancel() {
112 super.handleCancel();
113 flags[3] = true;
114 }
115 };
116 return request;
117 }
118
119 // ------------------------------------------------------------------------
cf5bad96 120 // Constructor
6e1886bc
AM
121 // ------------------------------------------------------------------------
122
6e1886bc
AM
123 @Test
124 public void testTmfCoalescedEventRequestIndexNbEventsBlocksize() {
cf5bad96 125 TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(ITmfEvent.class, range1, 0, 100, 200, ExecutionType.FOREGROUND);
5419a136
AM
126
127 assertEquals("getRequestId", fRequestCount++, request.getRequestId());
6e1886bc 128 assertEquals("getDataType", ITmfEvent.class, request.getDataType());
5419a136
AM
129
130 assertEquals("getRange", range1, request.getRange());
131 assertEquals("getNbRequestedEvents", 100, request.getNbRequested());
132
133 assertFalse("isCompleted", request.isCompleted());
134 assertFalse("isFailed", request.isFailed());
135 assertFalse("isCancelled", request.isCancelled());
136
137 assertEquals("getNbRead", 0, request.getNbRead());
6e1886bc 138 }
5419a136 139
6e1886bc
AM
140 // ------------------------------------------------------------------------
141 // equals
142 // ------------------------------------------------------------------------
5419a136 143
6e1886bc
AM
144 @Test
145 public void testEqualsReflexivity() {
5419a136
AM
146 assertTrue("equals", fRequest1.equals(fRequest1));
147 assertTrue("equals", fRequest2.equals(fRequest2));
148
149 assertFalse("equals", fRequest1.equals(fRequest2));
150 assertFalse("equals", fRequest2.equals(fRequest1));
6e1886bc 151 }
5419a136 152
6e1886bc
AM
153 @Test
154 public void testEqualsSymmetry() {
5419a136
AM
155 assertTrue("equals", fRequest1.equals(fRequest1b));
156 assertTrue("equals", fRequest1b.equals(fRequest1));
157
158 assertFalse("equals", fRequest1.equals(fRequest3));
159 assertFalse("equals", fRequest2.equals(fRequest3));
160 assertFalse("equals", fRequest3.equals(fRequest1));
161 assertFalse("equals", fRequest3.equals(fRequest2));
6e1886bc 162 }
5419a136 163
6e1886bc
AM
164 @Test
165 public void testEqualsTransivity() {
5419a136
AM
166 assertTrue("equals", fRequest1.equals(fRequest1b));
167 assertTrue("equals", fRequest1b.equals(fRequest1c));
168 assertTrue("equals", fRequest1.equals(fRequest1c));
6e1886bc 169 }
5419a136 170
6e1886bc
AM
171 @Test
172 public void testEqualsNull() {
5419a136
AM
173 assertFalse("equals", fRequest1.equals(null));
174 assertFalse("equals", fRequest2.equals(null));
6e1886bc 175 }
5419a136 176
6e1886bc
AM
177 @Test
178 public void testEqualsSuper() {
179 TmfCoalescedDataRequest dataRequest1 = new TmfCoalescedDataRequest(
cf5bad96
AM
180 fRequest1.getDataType(),
181 fRequest1.getIndex(),
182 fRequest1.getNbRequested(),
183 TmfDataRequest.DEFAULT_BLOCK_SIZE,
184 ExecutionType.FOREGROUND);
6e1886bc 185 TmfCoalescedDataRequest dataRequest2 = new TmfCoalescedDataRequest(
cf5bad96
AM
186 fRequest1.getDataType(),
187 fRequest1.getIndex(),
188 fRequest1.getNbRequested(),
189 TmfDataRequest.DEFAULT_BLOCK_SIZE,
190 ExecutionType.FOREGROUND);
6e1886bc 191 TmfCoalescedDataRequest dataRequest3 = new TmfCoalescedDataRequest(
cf5bad96
AM
192 fRequest3.getDataType(),
193 fRequest3.getIndex(),
194 fRequest3.getNbRequested(),
195 TmfDataRequest.DEFAULT_BLOCK_SIZE,
196 ExecutionType.FOREGROUND);
5419a136 197
6e1886bc 198 assertTrue("equals", fRequest1.equals(dataRequest2));
5419a136
AM
199 assertTrue("equals", fRequest2.equals(dataRequest1));
200 assertFalse("equals", fRequest1.equals(dataRequest3));
201 assertFalse("equals", fRequest3.equals(dataRequest1));
6e1886bc 202 }
5419a136 203
6e1886bc
AM
204 // ------------------------------------------------------------------------
205 // hashCode
206 // ------------------------------------------------------------------------
5419a136 207
6e1886bc
AM
208 @Test
209 public void testHashCode() {
5419a136
AM
210 assertTrue("hashCode", fRequest1.hashCode() == fRequest1.hashCode());
211 assertTrue("hashCode", fRequest2.hashCode() == fRequest2.hashCode());
6e1886bc
AM
212 assertTrue("hashCode", fRequest1.hashCode() != fRequest2.hashCode());
213 }
5419a136 214
6e1886bc
AM
215 // ------------------------------------------------------------------------
216 // toString
217 // ------------------------------------------------------------------------
5419a136 218
6e1886bc
AM
219 @Test
220 public void testToString() {
5419a136
AM
221 String expected1 = "[TmfCoalescedEventRequest(0,ITmfEvent," + range1 + ",0,100,200)]";
222 String expected2 = "[TmfCoalescedEventRequest(1,ITmfEvent," + range2 + ",0,100,200)]";
223 String expected3 = "[TmfCoalescedEventRequest(2,ITmfEvent," + range2 + ",0,200,200)]";
224 String expected4 = "[TmfCoalescedEventRequest(3,ITmfEvent," + range2 + ",0,200,300)]";
225
226 assertEquals("toString", expected1, fRequest1.toString());
227 assertEquals("toString", expected2, fRequest2.toString());
228 assertEquals("toString", expected3, fRequest3.toString());
229 assertEquals("toString", expected4, fRequest4.toString());
6e1886bc 230 }
5419a136 231
6e1886bc
AM
232 // ------------------------------------------------------------------------
233 // isCompatible
234 // ------------------------------------------------------------------------
5419a136 235
6e1886bc
AM
236 @Test
237 public void testIsCompatible() {
cf5bad96 238 TmfCoalescedEventRequest coalescedRequest = new TmfCoalescedEventRequest(ITmfEvent.class, range1, 0, 100, 200, ExecutionType.FOREGROUND);
6e1886bc
AM
239 TmfEventRequest req1 = new TmfEventRequestStub(ITmfEvent.class, range1, 100, 200);
240 TmfEventRequest req2 = new TmfEventRequestStub(ITmfEvent.class, range2, 100, 200);
241 TmfEventRequest req3 = new TmfEventRequestStub(ITmfEvent.class, range1, 101, 200);
5419a136 242
6e1886bc
AM
243 assertTrue("isCompatible", coalescedRequest.isCompatible(req1));
244 assertTrue("isCompatible", coalescedRequest.isCompatible(req2));
245 assertTrue("isCompatible", coalescedRequest.isCompatible(req3));
246 }
5419a136
AM
247
248 // ------------------------------------------------------------------------
249 // addEvent
250 // ------------------------------------------------------------------------
251
6e1886bc 252 @Test
5419a136 253 public void testAddEvent1() {
2771b032 254 TmfCoalescedEventRequest coalescedRequest = new TmfCoalescedEventRequest(ITmfEvent.class, range1, 0, 2147483647, 200, ExecutionType.FOREGROUND);
6e1886bc
AM
255 TmfEventRequest req1 = new TmfEventRequestStub(ITmfEvent.class, range1, 0, 2147483647, 200);
256 TmfEventRequest req2 = new TmfEventRequestStub(ITmfEvent.class, range1, 1, 2147483647, 200);
5419a136 257
6e1886bc
AM
258 assertTrue("isCompatible", coalescedRequest.isCompatible(req1));
259 assertTrue("isCompatible", coalescedRequest.isCompatible(req2));
5419a136 260
6e1886bc
AM
261 coalescedRequest.addRequest(req1);
262 coalescedRequest.addRequest(req2);
5419a136 263
6e1886bc 264 assertEquals("addRequest", 0, coalescedRequest.getIndex());
5419a136 265 assertEquals("addRequest", 2147483647, coalescedRequest.getNbRequested());
6e1886bc 266 assertEquals("addRequest", 200, coalescedRequest.getBlockSize());
5419a136
AM
267
268 }
269
6e1886bc 270 @Test
5419a136 271 public void testAddEvent2() {
2771b032 272 TmfCoalescedEventRequest coalescedRequest = new TmfCoalescedEventRequest(ITmfEvent.class, range1, 1, 2147483647, 200, ExecutionType.FOREGROUND);
6e1886bc
AM
273 TmfEventRequest req1 = new TmfEventRequestStub(ITmfEvent.class, range1, 1, 2147483647, 200);
274 TmfEventRequest req2 = new TmfEventRequestStub(ITmfEvent.class, range1, 0, 2147483647, 200);
5419a136 275
6e1886bc
AM
276 assertTrue("isCompatible", coalescedRequest.isCompatible(req1));
277 assertTrue("isCompatible", coalescedRequest.isCompatible(req2));
5419a136 278
6e1886bc
AM
279 coalescedRequest.addRequest(req1);
280 coalescedRequest.addRequest(req2);
5419a136 281
6e1886bc 282 assertEquals("addRequest", 0, coalescedRequest.getIndex());
5419a136 283 assertEquals("addRequest", 2147483647, coalescedRequest.getNbRequested());
6e1886bc
AM
284 assertEquals("addRequest", 200, coalescedRequest.getBlockSize());
285
286 }
287
288 // ------------------------------------------------------------------------
289 // done
290 // ------------------------------------------------------------------------
291
292 @Test
293 public void testDone() {
294 // Test request
295 final boolean[] crFlags = new boolean[4];
296 TmfCoalescedEventRequest request = setupTestRequest(crFlags);
297 TmfEventRequest subRequest1 = new TmfEventRequestStub(ITmfEvent.class, range1, 100, 200);
298 TmfEventRequest subRequest2 = new TmfEventRequestStub(ITmfEvent.class, range1, 100, 200);
299 request.addRequest(subRequest1);
300 request.addRequest(subRequest2);
301
302 request.done();
303
304 // Validate the coalescing request
305 assertTrue("isCompleted", request.isCompleted());
306 assertFalse("isFailed", request.isFailed());
307 assertFalse("isCancelled", request.isCancelled());
308
309 assertTrue("handleCompleted", crFlags[0]);
310 assertTrue("handleSuccess", crFlags[1]);
311 assertFalse("handleFailure", crFlags[2]);
312 assertFalse("handleCancel", crFlags[3]);
313
314 // Validate the first coalesced request
315 assertTrue("isCompleted", subRequest1.isCompleted());
316 assertFalse("isFailed", subRequest1.isFailed());
317 assertFalse("isCancelled", subRequest1.isCancelled());
318
319 // Validate the second coalesced request
320 assertTrue("isCompleted", subRequest2.isCompleted());
321 assertFalse("isFailed", subRequest2.isFailed());
322 assertFalse("isCancelled", subRequest2.isCancelled());
323 }
324
325 // ------------------------------------------------------------------------
326 // fail
327 // ------------------------------------------------------------------------
328
329 @Test
330 public void testFail() {
331 final boolean[] crFlags = new boolean[4];
332 TmfCoalescedEventRequest request = setupTestRequest(crFlags);
333 TmfEventRequest subRequest1 = new TmfEventRequestStub(ITmfEvent.class, range1, 100, 200);
334 TmfEventRequest subRequest2 = new TmfEventRequestStub(ITmfEvent.class, range1, 100, 200);
335 request.addRequest(subRequest1);
336 request.addRequest(subRequest2);
337
338 request.fail();
339
340 // Validate the coalescing request
341 assertTrue("isCompleted", request.isCompleted());
342 assertTrue("isFailed", request.isFailed());
343 assertFalse("isCancelled", request.isCancelled());
344
345 assertTrue("handleCompleted", crFlags[0]);
346 assertFalse("handleSuccess", crFlags[1]);
347 assertTrue("handleFailure", crFlags[2]);
348 assertFalse("handleCancel", crFlags[3]);
349
350 // Validate the first coalesced request
351 assertTrue("isCompleted", subRequest1.isCompleted());
352 assertTrue("isFailed", subRequest1.isFailed());
353 assertFalse("isCancelled", subRequest1.isCancelled());
5419a136 354
6e1886bc
AM
355 // Validate the second coalesced request
356 assertTrue("isCompleted", subRequest2.isCompleted());
357 assertTrue("isFailed", subRequest2.isFailed());
358 assertFalse("isCancelled", subRequest2.isCancelled());
5419a136
AM
359 }
360
6e1886bc
AM
361 // ------------------------------------------------------------------------
362 // cancel
363 // ------------------------------------------------------------------------
364
365 @Test
366 public void testCancel() {
367 final boolean[] crFlags = new boolean[4];
368 TmfCoalescedEventRequest request = setupTestRequest(crFlags);
369 TmfEventRequest subRequest1 = new TmfEventRequestStub(ITmfEvent.class, range1, 100, 200);
370 TmfEventRequest subRequest2 = new TmfEventRequestStub(ITmfEvent.class, range1, 100, 200);
371 request.addRequest(subRequest1);
372 request.addRequest(subRequest2);
373
374 request.cancel();
375
376 // Validate the coalescing request
377 assertTrue("isCompleted", request.isCompleted());
378 assertFalse("isFailed", request.isFailed());
379 assertTrue("isCancelled", request.isCancelled());
380
381 assertTrue("handleCompleted", crFlags[0]);
382 assertFalse("handleSuccess", crFlags[1]);
383 assertFalse("handleFailure", crFlags[2]);
384 assertTrue("handleCancel", crFlags[3]);
385
386 // Validate the first coalesced request
387 assertTrue("isCompleted", subRequest1.isCompleted());
388 assertFalse("isFailed", subRequest1.isFailed());
389 assertTrue("isCancelled", subRequest1.isCancelled());
390
391 // Validate the second coalesced request
392 assertTrue("isCompleted", subRequest2.isCompleted());
393 assertFalse("isFailed", subRequest2.isFailed());
394 assertTrue("isCancelled", subRequest2.isCancelled());
395 }
396
397 // ------------------------------------------------------------------------
398 // Coalescing
399 // ------------------------------------------------------------------------
400
401 private static final String DIRECTORY = "testfiles";
5419a136 402 private static final String TEST_STREAM = "A-Test-10K";
6e1886bc
AM
403 private static final int NB_EVENTS = 5000;
404 private static final int BLOCK_SIZE = 100;
5419a136
AM
405
406 // Initialize the test trace
407 private TmfTraceStub fTrace = null;
6e1886bc 408
5419a136 409 private synchronized TmfTraceStub setupTrace(String path) {
6e1886bc
AM
410 if (fTrace == null) {
411 try {
412 URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path), null);
413 File test = new File(FileLocator.toFileURL(location).toURI());
414 fTrace = new TmfTraceStub(test.getPath(), 500);
415 } catch (TmfTraceException e) {
416 e.printStackTrace();
5419a136
AM
417 } catch (URISyntaxException e) {
418 e.printStackTrace();
6e1886bc
AM
419 } catch (IOException e) {
420 e.printStackTrace();
421 }
422 }
423 return fTrace;
5419a136
AM
424 }
425
6e1886bc 426 Vector<ITmfEvent> requestedEvents1;
5419a136
AM
427 Vector<ITmfEvent> requestedEvents2;
428 Vector<ITmfEvent> requestedEvents3;
429
430 TmfEventRequest request1;
431 TmfEventRequest request2;
432 TmfEventRequest request3;
433
434 ITmfDataProvider[] providers;
435
436 private static class TmfTestTriggerSignal extends TmfSignal {
6e1886bc
AM
437 public final boolean forceCancel;
438 public final long fIndex;
439
440 public TmfTestTriggerSignal(Object source, long index, boolean cancel) {
441 super(source);
442 forceCancel = cancel;
443 fIndex = index;
444 }
5419a136
AM
445 }
446
6e1886bc 447 @TmfSignalHandler
5419a136
AM
448 public void trigger(final TmfTestTriggerSignal signal) {
449
450 TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
451 final long REQUEST_OFFSET = 1000;
452
453 requestedEvents1 = new Vector<ITmfEvent>();
7184fc40
AM
454 request1 = new TmfEventRequest(ITmfEvent.class, range, signal.fIndex,
455 NB_EVENTS, BLOCK_SIZE, ExecutionType.FOREGROUND) {
456 int nbRead = 0;
5419a136
AM
457 @Override
458 public void handleData(ITmfEvent event) {
6e1886bc
AM
459 super.handleData(event);
460 if (!isCompleted()) {
461 requestedEvents1.add(event);
462 if (++nbRead >= BLOCK_SIZE && signal.forceCancel) {
5419a136
AM
463 cancel();
464 }
6e1886bc 465 }
5419a136
AM
466 }
467 };
468
469 requestedEvents2 = new Vector<ITmfEvent>();
7184fc40
AM
470 request2 = new TmfEventRequest(ITmfEvent.class, range,
471 signal.fIndex + REQUEST_OFFSET, NB_EVENTS, BLOCK_SIZE,
472 ExecutionType.FOREGROUND) {
5419a136
AM
473 @Override
474 public void handleData(ITmfEvent event) {
6e1886bc
AM
475 super.handleData(event);
476 if (!isCompleted()) {
477 requestedEvents2.add(event);
478 }
5419a136
AM
479 }
480 };
481
482 requestedEvents3 = new Vector<ITmfEvent>();
7184fc40
AM
483 request3 = new TmfEventRequest(ITmfEvent.class, range,
484 signal.fIndex + 2 * REQUEST_OFFSET, NB_EVENTS, BLOCK_SIZE,
485 ExecutionType.FOREGROUND) {
5419a136
AM
486 @Override
487 public void handleData(ITmfEvent event) {
6e1886bc
AM
488 super.handleData(event);
489 if (!isCompleted()) {
490 requestedEvents3.add(event);
491 }
5419a136
AM
492 }
493 };
494
2771b032 495 providers = TmfProviderManager.getProviders(ITmfEvent.class, TmfTraceStub.class);
5419a136
AM
496 providers[0].sendRequest(request1);
497 providers[0].sendRequest(request2);
498 providers[0].sendRequest(request3);
499 }
500
501 public void runCoalescedRequest(long startIndex) throws InterruptedException {
502
503 fTrace = setupTrace(DIRECTORY + File.separator + TEST_STREAM);
504
505 TmfSignalManager.register(this);
506 TmfTestTriggerSignal signal = new TmfTestTriggerSignal(this, startIndex, false);
507 TmfSignalManager.dispatchSignal(signal);
508
509 request1.waitForCompletion();
510 request2.waitForCompletion();
511 request3.waitForCompletion();
512
513 try {
514 assertEquals("Request1: nbEvents", NB_EVENTS, requestedEvents1.size());
6e1886bc
AM
515 assertTrue("Request1: isCompleted", request1.isCompleted());
516 assertFalse("Request1: isCancelled", request1.isCancelled());
5419a136
AM
517
518 assertEquals("Request2: nbEvents", NB_EVENTS, requestedEvents2.size());
6e1886bc
AM
519 assertTrue("Request2: isCompleted", request2.isCompleted());
520 assertFalse("Request2: isCancelled", request2.isCancelled());
5419a136
AM
521
522 assertEquals("Request3: nbEvents", NB_EVENTS, requestedEvents3.size());
6e1886bc
AM
523 assertTrue("Request3: isCompleted", request3.isCompleted());
524 assertFalse("Request3: isCancelled", request3.isCancelled());
5419a136
AM
525
526 // Ensure that we have distinct events.
527 // Don't go overboard: we are not validating the stub!
528 for (int i = 0; i < NB_EVENTS; i++) {
529 assertEquals("Distinct events", i + 1 + request1.getIndex(), requestedEvents1.get(i).getTimestamp().getValue());
530 assertEquals("Distinct events", i + 1 + request2.getIndex(), requestedEvents2.get(i).getTimestamp().getValue());
531 assertEquals("Distinct events", i + 1 + request3.getIndex(), requestedEvents3.get(i).getTimestamp().getValue());
532 }
6e1886bc 533 } finally {
5419a136
AM
534 TmfSignalManager.deregister(this);
535 fTrace.dispose();
536 fTrace = null;
537 }
538 }
539
6e1886bc 540 @Test
5419a136
AM
541 public void testCoalescedRequest() throws InterruptedException {
542 runCoalescedRequest(0);
543 runCoalescedRequest(1);
544 runCoalescedRequest(5);
545 }
546
6e1886bc
AM
547 @Test
548 public void testCancelCoalescedRequest() throws InterruptedException {
5419a136 549
6e1886bc 550 fTrace = setupTrace(DIRECTORY + File.separator + TEST_STREAM);
5419a136 551
6e1886bc
AM
552 TmfSignalManager.register(this);
553 TmfTestTriggerSignal signal = new TmfTestTriggerSignal(this, 0, true);
554 TmfSignalManager.dispatchSignal(signal);
5419a136
AM
555
556 request1.waitForCompletion();
557 request2.waitForCompletion();
558 request3.waitForCompletion();
559
560 assertEquals("Request1: nbEvents", BLOCK_SIZE, requestedEvents1.size());
6e1886bc
AM
561 assertTrue("Request1: isCompleted", request1.isCompleted());
562 assertTrue("Request1: isCancelled", request1.isCancelled());
5419a136
AM
563
564 assertEquals("Request2: nbEvents", NB_EVENTS, requestedEvents2.size());
6e1886bc
AM
565 assertTrue("Request2: isCompleted", request2.isCompleted());
566 assertFalse("Request2: isCancelled", request2.isCancelled());
5419a136
AM
567
568 assertEquals("Request3: nbEvents", NB_EVENTS, requestedEvents3.size());
6e1886bc
AM
569 assertTrue("Request3: isCompleted", request3.isCompleted());
570 assertFalse("Request3: isCancelled", request3.isCancelled());
5419a136
AM
571
572 // Ensure that we have distinct events.
573 // Don't go overboard: we are not validating the stub!
574 for (int i = 0; i < BLOCK_SIZE; i++) {
575 assertEquals("Distinct events", i + 1 + request1.getIndex(), requestedEvents1.get(i).getTimestamp().getValue());
576 }
577 for (int i = 0; i < NB_EVENTS; i++) {
578 assertEquals("Distinct events", i + 1 + request2.getIndex(), requestedEvents2.get(i).getTimestamp().getValue());
579 assertEquals("Distinct events", i + 1 + request3.getIndex(), requestedEvents3.get(i).getTimestamp().getValue());
580 }
581
582 TmfSignalManager.deregister(this);
583 fTrace.dispose();
584 fTrace = null;
585 }
586
5419a136 587}
This page took 0.055352 seconds and 5 git commands to generate.