Merge branch 'master' into lttng-luna
[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();
672a642a
AM
78 fRequest1 = new TmfCoalescedEventRequest(ITmfEvent.class, range1, 0, 100, ExecutionType.FOREGROUND);
79 fRequest2 = new TmfCoalescedEventRequest(ITmfEvent.class, range2, 0, 100, ExecutionType.FOREGROUND);
80 fRequest3 = new TmfCoalescedEventRequest(ITmfEvent.class, range2, 0, 200, ExecutionType.FOREGROUND);
81 fRequest4 = new TmfCoalescedEventRequest(ITmfEvent.class, range2, 0, 200, ExecutionType.FOREGROUND);
6e1886bc 82
672a642a
AM
83 fRequest1b = new TmfCoalescedEventRequest(ITmfEvent.class, range1, 0, 100, ExecutionType.FOREGROUND);
84 fRequest1c = new TmfCoalescedEventRequest(ITmfEvent.class, range1, 0, 100, ExecutionType.FOREGROUND);
6e1886bc
AM
85
86 fRequestCount = fRequest1c.getRequestId() + 1;
87 }
88
89 private TmfCoalescedEventRequest setupTestRequest(final boolean[] flags) {
90
672a642a 91 TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(ITmfEvent.class, range1, 0, 100, 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() {
672a642a 125 TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(ITmfEvent.class, range1, 0, 100, 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(),
cf5bad96 183 ExecutionType.FOREGROUND);
6e1886bc 184 TmfCoalescedDataRequest dataRequest2 = new TmfCoalescedDataRequest(
cf5bad96
AM
185 fRequest1.getDataType(),
186 fRequest1.getIndex(),
187 fRequest1.getNbRequested(),
cf5bad96 188 ExecutionType.FOREGROUND);
6e1886bc 189 TmfCoalescedDataRequest dataRequest3 = new TmfCoalescedDataRequest(
cf5bad96
AM
190 fRequest3.getDataType(),
191 fRequest3.getIndex(),
192 fRequest3.getNbRequested(),
cf5bad96 193 ExecutionType.FOREGROUND);
5419a136 194
6e1886bc 195 assertTrue("equals", fRequest1.equals(dataRequest2));
5419a136
AM
196 assertTrue("equals", fRequest2.equals(dataRequest1));
197 assertFalse("equals", fRequest1.equals(dataRequest3));
198 assertFalse("equals", fRequest3.equals(dataRequest1));
6e1886bc 199 }
5419a136 200
6e1886bc
AM
201 // ------------------------------------------------------------------------
202 // hashCode
203 // ------------------------------------------------------------------------
5419a136 204
6e1886bc
AM
205 @Test
206 public void testHashCode() {
5419a136
AM
207 assertTrue("hashCode", fRequest1.hashCode() == fRequest1.hashCode());
208 assertTrue("hashCode", fRequest2.hashCode() == fRequest2.hashCode());
6e1886bc
AM
209 assertTrue("hashCode", fRequest1.hashCode() != fRequest2.hashCode());
210 }
5419a136 211
6e1886bc
AM
212 // ------------------------------------------------------------------------
213 // toString
214 // ------------------------------------------------------------------------
5419a136 215
6e1886bc
AM
216 @Test
217 public void testToString() {
f4d1e591
AM
218 String expected1 = "[TmfCoalescedEventRequest(0,ITmfEvent,FOREGROUND," + range1 + ",0,100, [])]";
219 String expected2 = "[TmfCoalescedEventRequest(1,ITmfEvent,FOREGROUND," + range2 + ",0,100, [])]";
220 String expected3 = "[TmfCoalescedEventRequest(2,ITmfEvent,FOREGROUND," + range2 + ",0,200, [])]";
221 String expected4 = "[TmfCoalescedEventRequest(3,ITmfEvent,FOREGROUND," + range2 + ",0,200, [])]";
5419a136
AM
222
223 assertEquals("toString", expected1, fRequest1.toString());
224 assertEquals("toString", expected2, fRequest2.toString());
225 assertEquals("toString", expected3, fRequest3.toString());
226 assertEquals("toString", expected4, fRequest4.toString());
6e1886bc 227 }
5419a136 228
6e1886bc
AM
229 // ------------------------------------------------------------------------
230 // isCompatible
231 // ------------------------------------------------------------------------
5419a136 232
6e1886bc
AM
233 @Test
234 public void testIsCompatible() {
672a642a 235 TmfCoalescedEventRequest coalescedRequest = new TmfCoalescedEventRequest(ITmfEvent.class, range1, 0, 100, ExecutionType.FOREGROUND);
6e1886bc
AM
236 TmfEventRequest req1 = new TmfEventRequestStub(ITmfEvent.class, range1, 100, 200);
237 TmfEventRequest req2 = new TmfEventRequestStub(ITmfEvent.class, range2, 100, 200);
238 TmfEventRequest req3 = new TmfEventRequestStub(ITmfEvent.class, range1, 101, 200);
5419a136 239
6e1886bc
AM
240 assertTrue("isCompatible", coalescedRequest.isCompatible(req1));
241 assertTrue("isCompatible", coalescedRequest.isCompatible(req2));
242 assertTrue("isCompatible", coalescedRequest.isCompatible(req3));
243 }
5419a136
AM
244
245 // ------------------------------------------------------------------------
246 // addEvent
247 // ------------------------------------------------------------------------
248
6e1886bc 249 @Test
5419a136 250 public void testAddEvent1() {
672a642a 251 TmfCoalescedEventRequest coalescedRequest = new TmfCoalescedEventRequest(ITmfEvent.class, range1, 0, 2147483647, ExecutionType.FOREGROUND);
6e1886bc
AM
252 TmfEventRequest req1 = new TmfEventRequestStub(ITmfEvent.class, range1, 0, 2147483647, 200);
253 TmfEventRequest req2 = new TmfEventRequestStub(ITmfEvent.class, range1, 1, 2147483647, 200);
5419a136 254
6e1886bc
AM
255 assertTrue("isCompatible", coalescedRequest.isCompatible(req1));
256 assertTrue("isCompatible", coalescedRequest.isCompatible(req2));
5419a136 257
6e1886bc
AM
258 coalescedRequest.addRequest(req1);
259 coalescedRequest.addRequest(req2);
5419a136 260
6e1886bc 261 assertEquals("addRequest", 0, coalescedRequest.getIndex());
5419a136 262 assertEquals("addRequest", 2147483647, coalescedRequest.getNbRequested());
5419a136
AM
263 }
264
6e1886bc 265 @Test
5419a136 266 public void testAddEvent2() {
672a642a 267 TmfCoalescedEventRequest coalescedRequest = new TmfCoalescedEventRequest(ITmfEvent.class, range1, 1, 2147483647, ExecutionType.FOREGROUND);
6e1886bc
AM
268 TmfEventRequest req1 = new TmfEventRequestStub(ITmfEvent.class, range1, 1, 2147483647, 200);
269 TmfEventRequest req2 = new TmfEventRequestStub(ITmfEvent.class, range1, 0, 2147483647, 200);
5419a136 270
6e1886bc
AM
271 assertTrue("isCompatible", coalescedRequest.isCompatible(req1));
272 assertTrue("isCompatible", coalescedRequest.isCompatible(req2));
5419a136 273
6e1886bc
AM
274 coalescedRequest.addRequest(req1);
275 coalescedRequest.addRequest(req2);
5419a136 276
6e1886bc 277 assertEquals("addRequest", 0, coalescedRequest.getIndex());
5419a136 278 assertEquals("addRequest", 2147483647, coalescedRequest.getNbRequested());
6e1886bc
AM
279 }
280
281 // ------------------------------------------------------------------------
282 // done
283 // ------------------------------------------------------------------------
284
285 @Test
286 public void testDone() {
287 // Test request
288 final boolean[] crFlags = new boolean[4];
289 TmfCoalescedEventRequest request = setupTestRequest(crFlags);
290 TmfEventRequest subRequest1 = new TmfEventRequestStub(ITmfEvent.class, range1, 100, 200);
291 TmfEventRequest subRequest2 = new TmfEventRequestStub(ITmfEvent.class, range1, 100, 200);
292 request.addRequest(subRequest1);
293 request.addRequest(subRequest2);
294
295 request.done();
296
297 // Validate the coalescing request
298 assertTrue("isCompleted", request.isCompleted());
299 assertFalse("isFailed", request.isFailed());
300 assertFalse("isCancelled", request.isCancelled());
301
302 assertTrue("handleCompleted", crFlags[0]);
303 assertTrue("handleSuccess", crFlags[1]);
304 assertFalse("handleFailure", crFlags[2]);
305 assertFalse("handleCancel", crFlags[3]);
306
307 // Validate the first coalesced request
308 assertTrue("isCompleted", subRequest1.isCompleted());
309 assertFalse("isFailed", subRequest1.isFailed());
310 assertFalse("isCancelled", subRequest1.isCancelled());
311
312 // Validate the second coalesced request
313 assertTrue("isCompleted", subRequest2.isCompleted());
314 assertFalse("isFailed", subRequest2.isFailed());
315 assertFalse("isCancelled", subRequest2.isCancelled());
316 }
317
318 // ------------------------------------------------------------------------
319 // fail
320 // ------------------------------------------------------------------------
321
322 @Test
323 public void testFail() {
324 final boolean[] crFlags = new boolean[4];
325 TmfCoalescedEventRequest request = setupTestRequest(crFlags);
326 TmfEventRequest subRequest1 = new TmfEventRequestStub(ITmfEvent.class, range1, 100, 200);
327 TmfEventRequest subRequest2 = new TmfEventRequestStub(ITmfEvent.class, range1, 100, 200);
328 request.addRequest(subRequest1);
329 request.addRequest(subRequest2);
330
331 request.fail();
332
333 // Validate the coalescing request
334 assertTrue("isCompleted", request.isCompleted());
335 assertTrue("isFailed", request.isFailed());
336 assertFalse("isCancelled", request.isCancelled());
337
338 assertTrue("handleCompleted", crFlags[0]);
339 assertFalse("handleSuccess", crFlags[1]);
340 assertTrue("handleFailure", crFlags[2]);
341 assertFalse("handleCancel", crFlags[3]);
342
343 // Validate the first coalesced request
344 assertTrue("isCompleted", subRequest1.isCompleted());
345 assertTrue("isFailed", subRequest1.isFailed());
346 assertFalse("isCancelled", subRequest1.isCancelled());
5419a136 347
6e1886bc
AM
348 // Validate the second coalesced request
349 assertTrue("isCompleted", subRequest2.isCompleted());
350 assertTrue("isFailed", subRequest2.isFailed());
351 assertFalse("isCancelled", subRequest2.isCancelled());
5419a136
AM
352 }
353
6e1886bc
AM
354 // ------------------------------------------------------------------------
355 // cancel
356 // ------------------------------------------------------------------------
357
358 @Test
359 public void testCancel() {
360 final boolean[] crFlags = new boolean[4];
361 TmfCoalescedEventRequest request = setupTestRequest(crFlags);
362 TmfEventRequest subRequest1 = new TmfEventRequestStub(ITmfEvent.class, range1, 100, 200);
363 TmfEventRequest subRequest2 = new TmfEventRequestStub(ITmfEvent.class, range1, 100, 200);
364 request.addRequest(subRequest1);
365 request.addRequest(subRequest2);
366
367 request.cancel();
368
369 // Validate the coalescing request
370 assertTrue("isCompleted", request.isCompleted());
371 assertFalse("isFailed", request.isFailed());
372 assertTrue("isCancelled", request.isCancelled());
373
374 assertTrue("handleCompleted", crFlags[0]);
375 assertFalse("handleSuccess", crFlags[1]);
376 assertFalse("handleFailure", crFlags[2]);
377 assertTrue("handleCancel", crFlags[3]);
378
379 // Validate the first coalesced request
380 assertTrue("isCompleted", subRequest1.isCompleted());
381 assertFalse("isFailed", subRequest1.isFailed());
382 assertTrue("isCancelled", subRequest1.isCancelled());
383
384 // Validate the second coalesced request
385 assertTrue("isCompleted", subRequest2.isCompleted());
386 assertFalse("isFailed", subRequest2.isFailed());
387 assertTrue("isCancelled", subRequest2.isCancelled());
388 }
389
390 // ------------------------------------------------------------------------
391 // Coalescing
392 // ------------------------------------------------------------------------
393
394 private static final String DIRECTORY = "testfiles";
5419a136 395 private static final String TEST_STREAM = "A-Test-10K";
6e1886bc 396 private static final int NB_EVENTS = 5000;
5419a136
AM
397
398 // Initialize the test trace
399 private TmfTraceStub fTrace = null;
6e1886bc 400
5419a136 401 private synchronized TmfTraceStub setupTrace(String path) {
6e1886bc
AM
402 if (fTrace == null) {
403 try {
404 URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path), null);
405 File test = new File(FileLocator.toFileURL(location).toURI());
ff0960ac 406 fTrace = new TmfTraceStub(test.getPath(), 500, false, null, null);
6e1886bc
AM
407 } catch (TmfTraceException e) {
408 e.printStackTrace();
5419a136
AM
409 } catch (URISyntaxException e) {
410 e.printStackTrace();
6e1886bc
AM
411 } catch (IOException e) {
412 e.printStackTrace();
413 }
414 }
415 return fTrace;
5419a136
AM
416 }
417
6e1886bc 418 Vector<ITmfEvent> requestedEvents1;
5419a136
AM
419 Vector<ITmfEvent> requestedEvents2;
420 Vector<ITmfEvent> requestedEvents3;
421
422 TmfEventRequest request1;
423 TmfEventRequest request2;
424 TmfEventRequest request3;
425
426 ITmfDataProvider[] providers;
427
428 private static class TmfTestTriggerSignal extends TmfSignal {
6e1886bc
AM
429 public final boolean forceCancel;
430 public final long fIndex;
431
432 public TmfTestTriggerSignal(Object source, long index, boolean cancel) {
433 super(source);
434 forceCancel = cancel;
435 fIndex = index;
436 }
5419a136
AM
437 }
438
6e1886bc 439 @TmfSignalHandler
5419a136
AM
440 public void trigger(final TmfTestTriggerSignal signal) {
441
442 TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
443 final long REQUEST_OFFSET = 1000;
444
445 requestedEvents1 = new Vector<ITmfEvent>();
7184fc40 446 request1 = new TmfEventRequest(ITmfEvent.class, range, signal.fIndex,
672a642a 447 NB_EVENTS, ExecutionType.FOREGROUND) {
5419a136
AM
448 @Override
449 public void handleData(ITmfEvent event) {
6e1886bc
AM
450 super.handleData(event);
451 if (!isCompleted()) {
452 requestedEvents1.add(event);
672a642a 453 if (signal.forceCancel) {
5419a136
AM
454 cancel();
455 }
6e1886bc 456 }
5419a136
AM
457 }
458 };
459
460 requestedEvents2 = new Vector<ITmfEvent>();
7184fc40 461 request2 = new TmfEventRequest(ITmfEvent.class, range,
672a642a 462 signal.fIndex + REQUEST_OFFSET, NB_EVENTS, ExecutionType.FOREGROUND) {
5419a136
AM
463 @Override
464 public void handleData(ITmfEvent event) {
6e1886bc
AM
465 super.handleData(event);
466 if (!isCompleted()) {
467 requestedEvents2.add(event);
468 }
5419a136
AM
469 }
470 };
471
472 requestedEvents3 = new Vector<ITmfEvent>();
7184fc40 473 request3 = new TmfEventRequest(ITmfEvent.class, range,
672a642a 474 signal.fIndex + 2 * REQUEST_OFFSET, NB_EVENTS, ExecutionType.FOREGROUND) {
5419a136
AM
475 @Override
476 public void handleData(ITmfEvent event) {
6e1886bc
AM
477 super.handleData(event);
478 if (!isCompleted()) {
479 requestedEvents3.add(event);
480 }
5419a136
AM
481 }
482 };
483
2771b032 484 providers = TmfProviderManager.getProviders(ITmfEvent.class, TmfTraceStub.class);
5419a136
AM
485 providers[0].sendRequest(request1);
486 providers[0].sendRequest(request2);
487 providers[0].sendRequest(request3);
488 }
489
490 public void runCoalescedRequest(long startIndex) throws InterruptedException {
491
492 fTrace = setupTrace(DIRECTORY + File.separator + TEST_STREAM);
493
494 TmfSignalManager.register(this);
495 TmfTestTriggerSignal signal = new TmfTestTriggerSignal(this, startIndex, false);
496 TmfSignalManager.dispatchSignal(signal);
497
498 request1.waitForCompletion();
499 request2.waitForCompletion();
500 request3.waitForCompletion();
501
502 try {
503 assertEquals("Request1: nbEvents", NB_EVENTS, requestedEvents1.size());
6e1886bc
AM
504 assertTrue("Request1: isCompleted", request1.isCompleted());
505 assertFalse("Request1: isCancelled", request1.isCancelled());
5419a136
AM
506
507 assertEquals("Request2: nbEvents", NB_EVENTS, requestedEvents2.size());
6e1886bc
AM
508 assertTrue("Request2: isCompleted", request2.isCompleted());
509 assertFalse("Request2: isCancelled", request2.isCancelled());
5419a136
AM
510
511 assertEquals("Request3: nbEvents", NB_EVENTS, requestedEvents3.size());
6e1886bc
AM
512 assertTrue("Request3: isCompleted", request3.isCompleted());
513 assertFalse("Request3: isCancelled", request3.isCancelled());
5419a136
AM
514
515 // Ensure that we have distinct events.
516 // Don't go overboard: we are not validating the stub!
517 for (int i = 0; i < NB_EVENTS; i++) {
518 assertEquals("Distinct events", i + 1 + request1.getIndex(), requestedEvents1.get(i).getTimestamp().getValue());
519 assertEquals("Distinct events", i + 1 + request2.getIndex(), requestedEvents2.get(i).getTimestamp().getValue());
520 assertEquals("Distinct events", i + 1 + request3.getIndex(), requestedEvents3.get(i).getTimestamp().getValue());
521 }
6e1886bc 522 } finally {
5419a136
AM
523 TmfSignalManager.deregister(this);
524 fTrace.dispose();
525 fTrace = null;
526 }
527 }
528
6e1886bc 529 @Test
5419a136
AM
530 public void testCoalescedRequest() throws InterruptedException {
531 runCoalescedRequest(0);
532 runCoalescedRequest(1);
533 runCoalescedRequest(5);
534 }
535
6e1886bc
AM
536 @Test
537 public void testCancelCoalescedRequest() throws InterruptedException {
5419a136 538
6e1886bc 539 fTrace = setupTrace(DIRECTORY + File.separator + TEST_STREAM);
5419a136 540
6e1886bc
AM
541 TmfSignalManager.register(this);
542 TmfTestTriggerSignal signal = new TmfTestTriggerSignal(this, 0, true);
543 TmfSignalManager.dispatchSignal(signal);
5419a136
AM
544
545 request1.waitForCompletion();
546 request2.waitForCompletion();
547 request3.waitForCompletion();
548
6e1886bc
AM
549 assertTrue("Request1: isCompleted", request1.isCompleted());
550 assertTrue("Request1: isCancelled", request1.isCancelled());
5419a136
AM
551
552 assertEquals("Request2: nbEvents", NB_EVENTS, requestedEvents2.size());
6e1886bc
AM
553 assertTrue("Request2: isCompleted", request2.isCompleted());
554 assertFalse("Request2: isCancelled", request2.isCancelled());
5419a136
AM
555
556 assertEquals("Request3: nbEvents", NB_EVENTS, requestedEvents3.size());
6e1886bc
AM
557 assertTrue("Request3: isCompleted", request3.isCompleted());
558 assertFalse("Request3: isCancelled", request3.isCancelled());
5419a136
AM
559
560 // Ensure that we have distinct events.
561 // Don't go overboard: we are not validating the stub!
5419a136
AM
562 for (int i = 0; i < NB_EVENTS; i++) {
563 assertEquals("Distinct events", i + 1 + request2.getIndex(), requestedEvents2.get(i).getTimestamp().getValue());
564 assertEquals("Distinct events", i + 1 + request3.getIndex(), requestedEvents3.get(i).getTimestamp().getValue());
565 }
566
567 TmfSignalManager.deregister(this);
568 fTrace.dispose();
569 fTrace = null;
570 }
571
5419a136 572}
This page took 0.091095 seconds and 5 git commands to generate.