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