Commit | Line | Data |
---|---|---|
d18dd09b | 1 | /******************************************************************************* |
e31e01e8 | 2 | * Copyright (c) 2009, 2010 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 | |
11 | *******************************************************************************/ | |
12 | ||
6c13869b | 13 | package org.eclipse.linuxtools.tmf.core.tests.trace; |
d18dd09b ASL |
14 | |
15 | import java.io.File; | |
e1ab8984 FC |
16 | import java.io.IOException; |
17 | import java.net.URISyntaxException; | |
18 | import java.net.URL; | |
d18dd09b ASL |
19 | import java.util.Vector; |
20 | ||
e1ab8984 FC |
21 | import junit.framework.TestCase; |
22 | ||
23 | import org.eclipse.core.runtime.FileLocator; | |
24 | import org.eclipse.core.runtime.Path; | |
6c13869b FC |
25 | import org.eclipse.linuxtools.tmf.core.component.ITmfDataProvider; |
26 | import org.eclipse.linuxtools.tmf.core.component.TmfProviderManager; | |
27 | import org.eclipse.linuxtools.tmf.core.event.TmfEvent; | |
28 | import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange; | |
29 | import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp; | |
30 | import org.eclipse.linuxtools.tmf.core.request.TmfEventRequest; | |
31 | import org.eclipse.linuxtools.tmf.core.tests.TmfCoreTestPlugin; | |
32 | import org.eclipse.linuxtools.tmf.core.trace.ITmfContext; | |
33 | import org.eclipse.linuxtools.tmf.core.trace.TmfCheckpoint; | |
34 | import org.eclipse.linuxtools.tmf.core.trace.TmfContext; | |
35 | import org.eclipse.linuxtools.tmf.core.trace.TmfTrace; | |
36 | import org.eclipse.linuxtools.tmf.stubs.trace.TmfTraceStub; | |
d18dd09b ASL |
37 | |
38 | /** | |
39 | * <b><u>TmfTraceTest</u></b> | |
40 | * <p> | |
ff4ed569 | 41 | * Test suite for the TmfTrace class. |
d18dd09b | 42 | */ |
3b38ea61 | 43 | @SuppressWarnings("nls") |
d18dd09b ASL |
44 | public class TmfTraceTest extends TestCase { |
45 | ||
ff4ed569 FC |
46 | // ------------------------------------------------------------------------ |
47 | // Variables | |
48 | // ------------------------------------------------------------------------ | |
49 | ||
d18dd09b | 50 | private static final String DIRECTORY = "testfiles"; |
85fb0e54 | 51 | private static final String TEST_STREAM = "A-Test-10K"; |
ff4ed569 | 52 | private static final int BLOCK_SIZE = 500; |
e31e01e8 FC |
53 | private static final int NB_EVENTS = 10000; |
54 | private static TmfTraceStub fTrace = null; | |
d18dd09b ASL |
55 | |
56 | private static byte SCALE = (byte) -3; | |
57 | ||
e31e01e8 | 58 | // ------------------------------------------------------------------------ |
d18dd09b | 59 | // Housekeeping |
e31e01e8 | 60 | // ------------------------------------------------------------------------ |
d18dd09b | 61 | |
ff4ed569 FC |
62 | public TmfTraceTest(String name) throws Exception { |
63 | super(name); | |
64 | } | |
65 | ||
66 | @Override | |
67 | protected void setUp() throws Exception { | |
68 | super.setUp(); | |
69 | fTrace = setupTrace(DIRECTORY + File.separator + TEST_STREAM); | |
9b635e61 | 70 | // Dummy request to force the trace indexing |
cb866e08 FC |
71 | TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class) { |
72 | @Override | |
f9673903 FC |
73 | public void handleData(TmfEvent event) { |
74 | super.handleData(event); | |
cb866e08 FC |
75 | } |
76 | }; | |
77 | fTrace.sendRequest(request); | |
78 | request.waitForCompletion(); | |
ff4ed569 FC |
79 | } |
80 | ||
81 | @Override | |
82 | protected void tearDown() throws Exception { | |
83 | super.tearDown(); | |
84 | fTrace.dispose(); | |
85 | fTrace = null; | |
86 | } | |
87 | ||
88 | // ------------------------------------------------------------------------ | |
89 | // Helper functions | |
90 | // ------------------------------------------------------------------------ | |
91 | ||
e1ab8984 FC |
92 | private TmfTraceStub setupTrace(String path) { |
93 | if (fTrace == null) { | |
94 | try { | |
cbd4ad82 | 95 | URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path), null); |
e1ab8984 | 96 | File test = new File(FileLocator.toFileURL(location).toURI()); |
b724d349 | 97 | fTrace = new TmfTraceStub(test.toURI().getPath(), BLOCK_SIZE, false); |
e1ab8984 FC |
98 | } catch (URISyntaxException e) { |
99 | e.printStackTrace(); | |
100 | } catch (IOException e) { | |
101 | e.printStackTrace(); | |
102 | } | |
103 | } | |
104 | return fTrace; | |
105 | } | |
106 | ||
e31e01e8 | 107 | // ------------------------------------------------------------------------ |
d18dd09b | 108 | // Constructors |
e31e01e8 | 109 | // ------------------------------------------------------------------------ |
d18dd09b ASL |
110 | |
111 | public void testTmfTraceDefault() throws Exception { | |
e1ab8984 | 112 | TmfTraceStub trace = null; |
ff4ed569 | 113 | File testfile = null; |
e1ab8984 | 114 | try { |
cbd4ad82 | 115 | URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(DIRECTORY + File.separator + TEST_STREAM), null); |
ff4ed569 | 116 | testfile = new File(FileLocator.toFileURL(location).toURI()); |
b724d349 | 117 | trace = new TmfTraceStub(testfile.toURI().getPath()); |
e1ab8984 | 118 | } catch (URISyntaxException e) { |
ff4ed569 | 119 | fail("URISyntaxException"); |
e1ab8984 | 120 | } catch (IOException e) { |
ff4ed569 | 121 | fail("IOException"); |
e1ab8984 | 122 | } |
ff4ed569 FC |
123 | assertTrue ("Open trace", trace != null); |
124 | assertEquals("getType", TmfEvent.class, trace.getType()); | |
b724d349 | 125 | assertEquals("getPath", testfile.toURI().getPath(), trace.getPath()); |
ff4ed569 | 126 | assertEquals("getName", TEST_STREAM, trace.getName()); |
664902f7 | 127 | assertEquals("getCacheSize", TmfTrace.DEFAULT_INDEX_PAGE_SIZE, trace.getCacheSize()); |
ff4ed569 FC |
128 | } |
129 | ||
130 | public void testTmfTraceDefaultCacheSize() throws Exception { | |
131 | TmfTraceStub trace = null; | |
132 | File testfile = null; | |
133 | try { | |
134 | URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(DIRECTORY + File.separator + TEST_STREAM), null); | |
135 | testfile = new File(FileLocator.toFileURL(location).toURI()); | |
b724d349 | 136 | trace = new TmfTraceStub(testfile.toURI().getPath(), 0); |
ff4ed569 FC |
137 | } catch (URISyntaxException e) { |
138 | fail("URISyntaxException"); | |
139 | } catch (IOException e) { | |
140 | fail("IOException"); | |
141 | } | |
142 | assertTrue ("Open trace", trace != null); | |
143 | assertEquals("getType", TmfEvent.class, trace.getType()); | |
b724d349 | 144 | assertEquals("getPath", testfile.toURI().getPath(), trace.getPath()); |
ff4ed569 | 145 | assertEquals("getName", TEST_STREAM, trace.getName()); |
664902f7 | 146 | assertEquals("getCacheSize", TmfTrace.DEFAULT_INDEX_PAGE_SIZE, trace.getCacheSize()); |
d18dd09b ASL |
147 | } |
148 | ||
149 | public void testTmfTrace() throws Exception { | |
ff4ed569 FC |
150 | assertEquals("getType", TmfEvent.class, fTrace.getType()); |
151 | assertEquals("getName", TEST_STREAM, fTrace.getName()); | |
152 | assertEquals("getCacheSize", BLOCK_SIZE, fTrace.getCacheSize()); | |
153 | } | |
154 | ||
155 | public void testClone() throws Exception { | |
156 | TmfTraceStub trace = fTrace.clone(); | |
157 | assertEquals("getType", TmfEvent.class, trace.getType()); | |
158 | assertEquals("getPath", fTrace.getPath(), trace.getPath()); | |
159 | assertEquals("getName", TEST_STREAM, trace.getName()); | |
160 | assertEquals("getCacheSize", BLOCK_SIZE, trace.getCacheSize()); | |
161 | assertEquals("getTimeRange", fTrace.getTimeRange(), trace.getTimeRange()); | |
d18dd09b ASL |
162 | } |
163 | ||
ff4ed569 FC |
164 | // ------------------------------------------------------------------------ |
165 | // Get/Set time range | |
166 | // ------------------------------------------------------------------------ | |
167 | ||
168 | public void testSetTimeRange() throws Exception { | |
169 | TmfTraceStub trace = fTrace.clone(); | |
170 | ||
171 | assertEquals("getRange-start", 1, trace.getTimeRange().getStartTime().getValue()); | |
172 | assertEquals("getRange-end", NB_EVENTS, trace.getTimeRange().getEndTime().getValue()); | |
173 | assertEquals("getStartTime", 1, trace.getStartTime().getValue()); | |
174 | assertEquals("getEndTime", NB_EVENTS, trace.getEndTime().getValue()); | |
175 | ||
176 | trace.setTimeRange(new TmfTimeRange(new TmfTimestamp(100), new TmfTimestamp(200))); | |
177 | assertEquals("setTimeRange", 100, trace.getTimeRange().getStartTime().getValue()); | |
178 | assertEquals("setTimeRange", 200, trace.getTimeRange().getEndTime().getValue()); | |
179 | assertEquals("setTimeRange", 100, trace.getStartTime().getValue()); | |
180 | assertEquals("setTimeRange", 200, trace.getEndTime().getValue()); | |
181 | } | |
182 | ||
183 | public void testSetStartTime() throws Exception { | |
184 | TmfTraceStub trace = fTrace.clone(); | |
185 | ||
186 | assertEquals("getRange-start", 1, trace.getTimeRange().getStartTime().getValue()); | |
187 | assertEquals("getRange-end", NB_EVENTS, trace.getTimeRange().getEndTime().getValue()); | |
188 | assertEquals("getStartTime", 1, trace.getStartTime().getValue()); | |
189 | assertEquals("getEndTime", NB_EVENTS, trace.getEndTime().getValue()); | |
190 | ||
191 | trace.setStartTime(new TmfTimestamp(100)); | |
192 | assertEquals("setStartTime", 100, trace.getTimeRange().getStartTime().getValue()); | |
193 | assertEquals("setStartTime", NB_EVENTS, trace.getTimeRange().getEndTime().getValue()); | |
194 | assertEquals("setStartTime", 100, trace.getStartTime().getValue()); | |
195 | assertEquals("setStartTime", NB_EVENTS, trace.getEndTime().getValue()); | |
196 | } | |
197 | ||
198 | public void testSetEndTime() throws Exception { | |
199 | TmfTraceStub trace = fTrace.clone(); | |
200 | ||
201 | assertEquals("getRange-start", 1, trace.getTimeRange().getStartTime().getValue()); | |
202 | assertEquals("getRange-end", NB_EVENTS, trace.getTimeRange().getEndTime().getValue()); | |
203 | assertEquals("getStartTime", 1, trace.getStartTime().getValue()); | |
204 | assertEquals("getEndTime", NB_EVENTS, trace.getEndTime().getValue()); | |
205 | ||
206 | trace.setEndTime(new TmfTimestamp(100)); | |
207 | assertEquals("setEndTime", 1, trace.getTimeRange().getStartTime().getValue()); | |
208 | assertEquals("setEndTime", 100, trace.getTimeRange().getEndTime().getValue()); | |
209 | assertEquals("setEndTime", 1, trace.getStartTime().getValue()); | |
210 | assertEquals("setEndTime", 100, trace.getEndTime().getValue()); | |
211 | } | |
212 | ||
e31e01e8 | 213 | // ------------------------------------------------------------------------ |
54d55ced | 214 | // Verify checkpoints |
e31e01e8 | 215 | // ------------------------------------------------------------------------ |
d18dd09b | 216 | |
ff4ed569 FC |
217 | public void testTmfTraceIndexing() throws Exception { |
218 | assertEquals("getCacheSize", BLOCK_SIZE, fTrace.getCacheSize()); | |
219 | assertEquals("getTraceSize", NB_EVENTS, fTrace.getNbEvents()); | |
220 | assertEquals("getRange-start", 1, fTrace.getTimeRange().getStartTime().getValue()); | |
221 | assertEquals("getRange-end", NB_EVENTS, fTrace.getTimeRange().getEndTime().getValue()); | |
222 | assertEquals("getStartTime", 1, fTrace.getStartTime().getValue()); | |
223 | assertEquals("getEndTime", NB_EVENTS, fTrace.getEndTime().getValue()); | |
54d55ced FC |
224 | |
225 | Vector<TmfCheckpoint> checkpoints = fTrace.getCheckpoints(); | |
226 | int pageSize = fTrace.getCacheSize(); | |
227 | assertTrue("Checkpoints exist", checkpoints != null); | |
228 | ||
229 | // Validate that each checkpoint points to the right event | |
230 | for (int i = 0; i < checkpoints.size(); i++) { | |
231 | TmfCheckpoint checkpoint = checkpoints.get(i); | |
232 | TmfContext context = new TmfContext(checkpoint.getLocation(), i * pageSize); | |
233 | TmfEvent event = fTrace.parseEvent(context); | |
234 | assertTrue(context.getRank() == i * pageSize); | |
235 | assertTrue((checkpoint.getTimestamp().compareTo(event.getTimestamp(), false) == 0)); | |
236 | } | |
237 | } | |
238 | ||
239 | // ------------------------------------------------------------------------ | |
240 | // parseEvent - make sure parseEvent doesn't update the context | |
241 | // ------------------------------------------------------------------------ | |
242 | ||
243 | public void testParseEvent() throws Exception { | |
244 | ||
9b635e61 FC |
245 | int NB_READS = 20; |
246 | ||
54d55ced FC |
247 | // On lower bound, returns the first event (ts = 0) |
248 | TmfContext context = fTrace.seekEvent(new TmfTimestamp(0, SCALE, 0)); | |
9b635e61 | 249 | TmfContext svContext = new TmfContext(context); |
54d55ced FC |
250 | |
251 | TmfEvent event = fTrace.parseEvent(context); | |
252 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); | |
9b635e61 FC |
253 | assertEquals("Event rank", 0, context.getRank()); |
254 | assertTrue("parseEvent", context.equals(svContext)); | |
54d55ced FC |
255 | |
256 | event = fTrace.parseEvent(context); | |
257 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); | |
9b635e61 FC |
258 | assertEquals("Event rank", 0, context.getRank()); |
259 | assertTrue("parseEvent", context.equals(svContext)); | |
54d55ced FC |
260 | |
261 | event = fTrace.parseEvent(context); | |
262 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); | |
9b635e61 FC |
263 | assertEquals("Event rank", 0, context.getRank()); |
264 | assertTrue("parseEvent", context.equals(svContext)); | |
54d55ced | 265 | |
9b635e61 FC |
266 | // Position the trace at event NB_READS |
267 | for (int i = 1; i < NB_READS; i++) { | |
54d55ced FC |
268 | event = fTrace.getNextEvent(context); |
269 | assertEquals("Event timestamp", i, event.getTimestamp().getValue()); | |
270 | } | |
271 | ||
9b635e61 | 272 | svContext = new TmfContext(context); |
54d55ced | 273 | event = fTrace.parseEvent(context); |
9b635e61 FC |
274 | assertEquals("Event timestamp", NB_READS, event.getTimestamp().getValue()); |
275 | assertEquals("Event rank", NB_READS -1 , context.getRank()); | |
276 | assertTrue("parseEvent", context.equals(svContext)); | |
54d55ced FC |
277 | |
278 | event = fTrace.parseEvent(context); | |
9b635e61 FC |
279 | assertEquals("Event timestamp", NB_READS, event.getTimestamp().getValue()); |
280 | assertEquals("Event rank", NB_READS - 1, context.getRank()); | |
281 | assertTrue("parseEvent", context.equals(svContext)); | |
54d55ced FC |
282 | } |
283 | ||
284 | // ------------------------------------------------------------------------ | |
285 | // getNextEvent - updates the context | |
286 | // ------------------------------------------------------------------------ | |
287 | ||
288 | public void testGetNextEvent() throws Exception { | |
289 | ||
9b635e61 FC |
290 | int NB_READS = 20; |
291 | ||
292 | // On lower bound, returns the first event (ts = 1) | |
54d55ced | 293 | TmfContext context = fTrace.seekEvent(new TmfTimestamp(0, SCALE, 0)); |
54d55ced | 294 | |
9b635e61 FC |
295 | // Read NB_EVENTS |
296 | TmfEvent event; | |
297 | for (int i = 0; i < NB_READS; i++) { | |
54d55ced | 298 | event = fTrace.getNextEvent(context); |
9b635e61 FC |
299 | assertEquals("Event timestamp", i + 1, event.getTimestamp().getValue()); |
300 | assertEquals("Event rank", i + 1, context.getRank()); | |
54d55ced | 301 | } |
9b635e61 FC |
302 | |
303 | // Make sure we stay positioned | |
304 | event = fTrace.parseEvent(context); | |
305 | assertEquals("Event timestamp", NB_READS + 1, event.getTimestamp().getValue()); | |
306 | assertEquals("Event rank", NB_READS, context.getRank()); | |
54d55ced FC |
307 | } |
308 | ||
309 | // ------------------------------------------------------------------------ | |
310 | // seekLocation | |
311 | // Note: seekLocation() does not reliably set the rank | |
312 | // ------------------------------------------------------------------------ | |
313 | ||
314 | public void testSeekLocationOnCacheBoundary() throws Exception { | |
315 | ||
316 | // Position trace at event rank 0 | |
9f584e4c | 317 | TmfContext context = fTrace.seekLocation(null); |
9b635e61 | 318 | TmfEvent event = fTrace.parseEvent(context); |
54d55ced | 319 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
ff4ed569 | 320 | assertEquals("Event rank", 0, context.getRank()); |
9b635e61 FC |
321 | |
322 | context = fTrace.seekLocation(context.getLocation()); | |
323 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); | |
324 | ||
325 | event = fTrace.parseEvent(context); | |
54d55ced | 326 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
9b635e61 FC |
327 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
328 | ||
329 | event = fTrace.getNextEvent(context); | |
330 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); | |
331 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); | |
54d55ced FC |
332 | |
333 | // Position trace at event rank 1000 | |
334 | TmfContext tmpContext = fTrace.seekEvent(new TmfTimestamp(1001, SCALE, 0)); | |
9b635e61 | 335 | context = fTrace.seekLocation(tmpContext.getLocation()); |
ff4ed569 | 336 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
9b635e61 FC |
337 | |
338 | event = fTrace.parseEvent(context); | |
54d55ced | 339 | assertEquals("Event timestamp", 1001, event.getTimestamp().getValue()); |
ff4ed569 | 340 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
9b635e61 FC |
341 | |
342 | event = fTrace.getNextEvent(context); | |
54d55ced | 343 | assertEquals("Event timestamp", 1001, event.getTimestamp().getValue()); |
ff4ed569 | 344 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
54d55ced FC |
345 | |
346 | // Position trace at event rank 4000 | |
347 | tmpContext = fTrace.seekEvent(new TmfTimestamp(4001, SCALE, 0)); | |
9b635e61 | 348 | context = fTrace.seekLocation(tmpContext.getLocation()); |
ff4ed569 | 349 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
9b635e61 FC |
350 | |
351 | event = fTrace.parseEvent(context); | |
54d55ced | 352 | assertEquals("Event timestamp", 4001, event.getTimestamp().getValue()); |
ff4ed569 | 353 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
9b635e61 FC |
354 | |
355 | event = fTrace.getNextEvent(context); | |
54d55ced | 356 | assertEquals("Event timestamp", 4001, event.getTimestamp().getValue()); |
ff4ed569 | 357 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
54d55ced FC |
358 | } |
359 | ||
360 | public void testSeekLocationNotOnCacheBoundary() throws Exception { | |
361 | ||
362 | // Position trace at event rank 9 | |
363 | TmfContext tmpContext = fTrace.seekEvent(new TmfTimestamp(10, SCALE, 0)); | |
9b635e61 | 364 | TmfContext context = fTrace.seekLocation(tmpContext.getLocation()); |
ff4ed569 | 365 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
9b635e61 FC |
366 | |
367 | TmfEvent event = fTrace.parseEvent(context); | |
54d55ced | 368 | assertEquals("Event timestamp", 10, event.getTimestamp().getValue()); |
ff4ed569 | 369 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
9b635e61 FC |
370 | |
371 | event = fTrace.getNextEvent(context); | |
54d55ced | 372 | assertEquals("Event timestamp", 10, event.getTimestamp().getValue()); |
ff4ed569 | 373 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
54d55ced FC |
374 | |
375 | // Position trace at event rank 999 | |
376 | tmpContext = fTrace.seekEvent(new TmfTimestamp(1000, SCALE, 0)); | |
9b635e61 | 377 | context = fTrace.seekLocation(tmpContext.getLocation()); |
ff4ed569 | 378 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
9b635e61 FC |
379 | |
380 | event = fTrace.parseEvent(context); | |
54d55ced | 381 | assertEquals("Event timestamp", 1000, event.getTimestamp().getValue()); |
ff4ed569 | 382 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
9b635e61 FC |
383 | |
384 | event = fTrace.getNextEvent(context); | |
54d55ced | 385 | assertEquals("Event timestamp", 1000, event.getTimestamp().getValue()); |
ff4ed569 | 386 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
54d55ced FC |
387 | |
388 | // Position trace at event rank 1001 | |
389 | tmpContext = fTrace.seekEvent(new TmfTimestamp(1002, SCALE, 0)); | |
9b635e61 | 390 | context = fTrace.seekLocation(tmpContext.getLocation()); |
ff4ed569 | 391 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
9b635e61 FC |
392 | |
393 | event = fTrace.parseEvent(context); | |
54d55ced | 394 | assertEquals("Event timestamp", 1002, event.getTimestamp().getValue()); |
ff4ed569 | 395 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
9b635e61 FC |
396 | |
397 | event = fTrace.getNextEvent(context); | |
54d55ced | 398 | assertEquals("Event timestamp", 1002, event.getTimestamp().getValue()); |
ff4ed569 | 399 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
54d55ced FC |
400 | |
401 | // Position trace at event rank 4500 | |
402 | tmpContext = fTrace.seekEvent(new TmfTimestamp(4501, SCALE, 0)); | |
9b635e61 | 403 | context = fTrace.seekLocation(tmpContext.getLocation()); |
ff4ed569 | 404 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
9b635e61 FC |
405 | |
406 | event = fTrace.parseEvent(context); | |
54d55ced | 407 | assertEquals("Event timestamp", 4501, event.getTimestamp().getValue()); |
ff4ed569 | 408 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
9b635e61 FC |
409 | |
410 | event = fTrace.getNextEvent(context); | |
54d55ced | 411 | assertEquals("Event timestamp", 4501, event.getTimestamp().getValue()); |
ff4ed569 | 412 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
54d55ced FC |
413 | } |
414 | ||
415 | public void testSeekLocationOutOfScope() throws Exception { | |
416 | ||
417 | // Position trace at beginning | |
418 | TmfContext tmpContext = fTrace.seekLocation(null); | |
9b635e61 | 419 | TmfContext context = fTrace.seekLocation(tmpContext.getLocation()); |
ff4ed569 | 420 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
9b635e61 FC |
421 | |
422 | TmfEvent event = fTrace.parseEvent(context); | |
54d55ced | 423 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
ff4ed569 | 424 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
9b635e61 FC |
425 | |
426 | event = fTrace.getNextEvent(context); | |
54d55ced | 427 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
ff4ed569 | 428 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
54d55ced FC |
429 | |
430 | // Position trace at event passed the end | |
431 | tmpContext = fTrace.seekEvent(new TmfTimestamp(NB_EVENTS + 1, SCALE, 0)); | |
9b635e61 | 432 | context = fTrace.seekLocation(tmpContext.getLocation()); |
ff4ed569 | 433 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
9b635e61 FC |
434 | |
435 | event = fTrace.parseEvent(context); | |
54d55ced | 436 | assertEquals("Event timestamp", null, event); |
ff4ed569 | 437 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
9b635e61 FC |
438 | |
439 | event = fTrace.getNextEvent(context); | |
54d55ced | 440 | assertEquals("Event timestamp", null, event); |
ff4ed569 | 441 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
54d55ced FC |
442 | } |
443 | ||
444 | // ------------------------------------------------------------------------ | |
445 | // seekEvent on timestamp | |
446 | // ------------------------------------------------------------------------ | |
d18dd09b | 447 | |
54d55ced FC |
448 | public void testSeekEventOnTimestampOnCacheBoundary() throws Exception { |
449 | ||
450 | // Position trace at event rank 0 | |
451 | TmfContext context = fTrace.seekEvent(new TmfTimestamp(1, SCALE, 0)); | |
452 | assertEquals("Event rank", 0, context.getRank()); | |
9b635e61 FC |
453 | |
454 | TmfEvent event = fTrace.parseEvent(context); | |
54d55ced FC |
455 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
456 | assertEquals("Event rank", 0, context.getRank()); | |
9b635e61 FC |
457 | |
458 | event = fTrace.getNextEvent(context); | |
75828b1a | 459 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
e31e01e8 | 460 | assertEquals("Event rank", 1, context.getRank()); |
d18dd09b | 461 | |
54d55ced FC |
462 | // Position trace at event rank 1000 |
463 | context = fTrace.seekEvent(new TmfTimestamp(1001, SCALE, 0)); | |
464 | assertEquals("Event rank", 1000, context.getRank()); | |
9b635e61 FC |
465 | |
466 | event = fTrace.parseEvent(context); | |
54d55ced FC |
467 | assertEquals("Event timestamp", 1001, event.getTimestamp().getValue()); |
468 | assertEquals("Event rank", 1000, context.getRank()); | |
9b635e61 FC |
469 | |
470 | event = fTrace.getNextEvent(context); | |
e31e01e8 FC |
471 | assertEquals("Event timestamp", 1001, event.getTimestamp().getValue()); |
472 | assertEquals("Event rank", 1001, context.getRank()); | |
d18dd09b | 473 | |
54d55ced FC |
474 | // Position trace at event rank 4000 |
475 | context = fTrace.seekEvent(new TmfTimestamp(4001, SCALE, 0)); | |
476 | assertEquals("Event rank", 4000, context.getRank()); | |
9b635e61 FC |
477 | |
478 | event = fTrace.parseEvent(context); | |
54d55ced FC |
479 | assertEquals("Event timestamp", 4001, event.getTimestamp().getValue()); |
480 | assertEquals("Event rank", 4000, context.getRank()); | |
9b635e61 FC |
481 | |
482 | event = fTrace.getNextEvent(context); | |
e31e01e8 FC |
483 | assertEquals("Event timestamp", 4001, event.getTimestamp().getValue()); |
484 | assertEquals("Event rank", 4001, context.getRank()); | |
75828b1a | 485 | } |
d18dd09b | 486 | |
54d55ced FC |
487 | public void testSeekEventOnTimestampNotOnCacheBoundary() throws Exception { |
488 | ||
489 | // Position trace at event rank 1 | |
490 | TmfContext context = fTrace.seekEvent(new TmfTimestamp(2, SCALE, 0)); | |
491 | assertEquals("Event rank", 1, context.getRank()); | |
9b635e61 FC |
492 | |
493 | TmfEvent event = fTrace.parseEvent(context); | |
54d55ced FC |
494 | assertEquals("Event timestamp", 2, event.getTimestamp().getValue()); |
495 | assertEquals("Event rank", 1, context.getRank()); | |
9b635e61 FC |
496 | |
497 | event = fTrace.getNextEvent(context); | |
54d55ced FC |
498 | assertEquals("Event timestamp", 2, event.getTimestamp().getValue()); |
499 | assertEquals("Event rank", 2, context.getRank()); | |
d18dd09b | 500 | |
54d55ced | 501 | // Position trace at event rank 9 |
e31e01e8 | 502 | context = fTrace.seekEvent(new TmfTimestamp(10, SCALE, 0)); |
54d55ced | 503 | assertEquals("Event rank", 9, context.getRank()); |
9b635e61 FC |
504 | |
505 | event = fTrace.parseEvent(context); | |
54d55ced FC |
506 | assertEquals("Event timestamp", 10, event.getTimestamp().getValue()); |
507 | assertEquals("Event rank", 9, context.getRank()); | |
9b635e61 FC |
508 | |
509 | event = fTrace.getNextEvent(context); | |
e31e01e8 FC |
510 | assertEquals("Event timestamp", 10, event.getTimestamp().getValue()); |
511 | assertEquals("Event rank", 10, context.getRank()); | |
d18dd09b | 512 | |
54d55ced FC |
513 | // Position trace at event rank 999 |
514 | context = fTrace.seekEvent(new TmfTimestamp(1000, SCALE, 0)); | |
515 | assertEquals("Event rank", 999, context.getRank()); | |
9b635e61 FC |
516 | |
517 | event = fTrace.parseEvent(context); | |
54d55ced | 518 | assertEquals("Event timestamp", 1000, event.getTimestamp().getValue()); |
e31e01e8 | 519 | assertEquals("Event rank", 999, context.getRank()); |
9b635e61 FC |
520 | |
521 | event = fTrace.getNextEvent(context); | |
54d55ced FC |
522 | assertEquals("Event timestamp", 1000, event.getTimestamp().getValue()); |
523 | assertEquals("Event rank", 1000, context.getRank()); | |
e31e01e8 | 524 | |
54d55ced FC |
525 | // Position trace at event rank 1001 |
526 | context = fTrace.seekEvent(new TmfTimestamp(1002, SCALE, 0)); | |
e31e01e8 | 527 | assertEquals("Event rank", 1001, context.getRank()); |
9b635e61 FC |
528 | |
529 | event = fTrace.parseEvent(context); | |
54d55ced FC |
530 | assertEquals("Event timestamp", 1002, event.getTimestamp().getValue()); |
531 | assertEquals("Event rank", 1001, context.getRank()); | |
9b635e61 FC |
532 | |
533 | event = fTrace.getNextEvent(context); | |
54d55ced FC |
534 | assertEquals("Event timestamp", 1002, event.getTimestamp().getValue()); |
535 | assertEquals("Event rank", 1002, context.getRank()); | |
536 | ||
537 | // Position trace at event rank 4500 | |
538 | context = fTrace.seekEvent(new TmfTimestamp(4501, SCALE, 0)); | |
539 | assertEquals("Event rank", 4500, context.getRank()); | |
9b635e61 FC |
540 | |
541 | event = fTrace.parseEvent(context); | |
54d55ced FC |
542 | assertEquals("Event timestamp", 4501, event.getTimestamp().getValue()); |
543 | assertEquals("Event rank", 4500, context.getRank()); | |
9b635e61 FC |
544 | |
545 | event = fTrace.getNextEvent(context); | |
54d55ced FC |
546 | assertEquals("Event timestamp", 4501, event.getTimestamp().getValue()); |
547 | assertEquals("Event rank", 4501, context.getRank()); | |
75828b1a | 548 | } |
d18dd09b | 549 | |
54d55ced | 550 | public void testSeekEventOnTimestampOutOfScope() throws Exception { |
d18dd09b | 551 | |
54d55ced FC |
552 | // Position trace at beginning |
553 | TmfContext context = fTrace.seekEvent(new TmfTimestamp(-1, SCALE, 0)); | |
554 | assertEquals("Event rank", 0, context.getRank()); | |
9b635e61 FC |
555 | |
556 | TmfEvent event = fTrace.parseEvent(context); | |
75828b1a | 557 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
54d55ced | 558 | assertEquals("Event rank", 0, context.getRank()); |
9b635e61 FC |
559 | |
560 | event = fTrace.getNextEvent(context); | |
54d55ced FC |
561 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
562 | assertEquals("Event rank", 1, context.getRank()); | |
75828b1a | 563 | |
54d55ced FC |
564 | // Position trace at event passed the end |
565 | context = fTrace.seekEvent(new TmfTimestamp(NB_EVENTS + 1, SCALE, 0)); | |
566 | assertEquals("Event rank", NB_EVENTS, context.getRank()); | |
9b635e61 FC |
567 | |
568 | event = fTrace.parseEvent(context); | |
75828b1a | 569 | assertEquals("Event timestamp", null, event); |
54d55ced | 570 | assertEquals("Event rank", NB_EVENTS, context.getRank()); |
9b635e61 FC |
571 | |
572 | event = fTrace.getNextEvent(context); | |
54d55ced FC |
573 | assertEquals("Event timestamp", null, event); |
574 | assertEquals("Event rank", NB_EVENTS, context.getRank()); | |
d18dd09b ASL |
575 | } |
576 | ||
54d55ced FC |
577 | // ------------------------------------------------------------------------ |
578 | // seekEvent on rank | |
579 | // ------------------------------------------------------------------------ | |
580 | ||
581 | public void testSeekOnRankOnCacheBoundary() throws Exception { | |
e31e01e8 FC |
582 | |
583 | // On lower bound, returns the first event (ts = 1) | |
54d55ced FC |
584 | TmfContext context = fTrace.seekEvent(0); |
585 | assertEquals("Event rank", 0, context.getRank()); | |
9b635e61 FC |
586 | |
587 | TmfEvent event = fTrace.parseEvent(context); | |
e31e01e8 | 588 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
54d55ced | 589 | assertEquals("Event rank", 0, context.getRank()); |
9b635e61 FC |
590 | |
591 | event = fTrace.getNextEvent(context); | |
54d55ced FC |
592 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
593 | assertEquals("Event rank", 1, context.getRank()); | |
e31e01e8 | 594 | |
54d55ced FC |
595 | // Position trace at event rank 1000 |
596 | context = fTrace.seekEvent(1000); | |
597 | assertEquals("Event rank", 1000, context.getRank()); | |
9b635e61 FC |
598 | |
599 | event = fTrace.parseEvent(context); | |
54d55ced FC |
600 | assertEquals("Event timestamp", 1001, event.getTimestamp().getValue()); |
601 | assertEquals("Event rank", 1000, context.getRank()); | |
9b635e61 FC |
602 | |
603 | event = fTrace.getNextEvent(context); | |
54d55ced FC |
604 | assertEquals("Event timestamp", 1001, event.getTimestamp().getValue()); |
605 | assertEquals("Event rank", 1001, context.getRank()); | |
e31e01e8 | 606 | |
54d55ced FC |
607 | // Position trace at event rank 4000 |
608 | context = fTrace.seekEvent(4000); | |
609 | assertEquals("Event rank", 4000, context.getRank()); | |
9b635e61 FC |
610 | |
611 | event = fTrace.parseEvent(context); | |
54d55ced FC |
612 | assertEquals("Event timestamp", 4001, event.getTimestamp().getValue()); |
613 | assertEquals("Event rank", 4000, context.getRank()); | |
9b635e61 FC |
614 | |
615 | event = fTrace.getNextEvent(context); | |
54d55ced FC |
616 | assertEquals("Event timestamp", 4001, event.getTimestamp().getValue()); |
617 | assertEquals("Event rank", 4001, context.getRank()); | |
e31e01e8 FC |
618 | } |
619 | ||
54d55ced | 620 | public void testSeekOnRankNotOnCacheBoundary() throws Exception { |
d18dd09b | 621 | |
54d55ced FC |
622 | // Position trace at event rank 9 |
623 | TmfContext context = fTrace.seekEvent(9); | |
624 | assertEquals("Event rank", 9, context.getRank()); | |
9b635e61 FC |
625 | |
626 | TmfEvent event = fTrace.parseEvent(context); | |
54d55ced FC |
627 | assertEquals("Event timestamp", 10, event.getTimestamp().getValue()); |
628 | assertEquals("Event rank", 9, context.getRank()); | |
9b635e61 FC |
629 | |
630 | event = fTrace.getNextEvent(context); | |
54d55ced FC |
631 | assertEquals("Event timestamp", 10, event.getTimestamp().getValue()); |
632 | assertEquals("Event rank", 10, context.getRank()); | |
d18dd09b | 633 | |
54d55ced FC |
634 | // Position trace at event rank 999 |
635 | context = fTrace.seekEvent(999); | |
636 | assertEquals("Event rank", 999, context.getRank()); | |
9b635e61 FC |
637 | |
638 | event = fTrace.parseEvent(context); | |
54d55ced FC |
639 | assertEquals("Event timestamp", 1000, event.getTimestamp().getValue()); |
640 | assertEquals("Event rank", 999, context.getRank()); | |
9b635e61 FC |
641 | |
642 | event = fTrace.getNextEvent(context); | |
54d55ced FC |
643 | assertEquals("Event timestamp", 1000, event.getTimestamp().getValue()); |
644 | assertEquals("Event rank", 1000, context.getRank()); | |
d18dd09b | 645 | |
54d55ced FC |
646 | // Position trace at event rank 1001 |
647 | context = fTrace.seekEvent(1001); | |
648 | assertEquals("Event rank", 1001, context.getRank()); | |
9b635e61 FC |
649 | |
650 | event = fTrace.parseEvent(context); | |
54d55ced FC |
651 | assertEquals("Event timestamp", 1002, event.getTimestamp().getValue()); |
652 | assertEquals("Event rank", 1001, context.getRank()); | |
9b635e61 FC |
653 | |
654 | event = fTrace.getNextEvent(context); | |
54d55ced FC |
655 | assertEquals("Event timestamp", 1002, event.getTimestamp().getValue()); |
656 | assertEquals("Event rank", 1002, context.getRank()); | |
657 | ||
658 | // Position trace at event rank 4500 | |
659 | context = fTrace.seekEvent(4500); | |
660 | assertEquals("Event rank", 4500, context.getRank()); | |
9b635e61 FC |
661 | |
662 | event = fTrace.parseEvent(context); | |
54d55ced FC |
663 | assertEquals("Event timestamp", 4501, event.getTimestamp().getValue()); |
664 | assertEquals("Event rank", 4500, context.getRank()); | |
9b635e61 FC |
665 | |
666 | event = fTrace.getNextEvent(context); | |
54d55ced FC |
667 | assertEquals("Event timestamp", 4501, event.getTimestamp().getValue()); |
668 | assertEquals("Event rank", 4501, context.getRank()); | |
d18dd09b ASL |
669 | } |
670 | ||
54d55ced FC |
671 | public void testSeekEventOnRankOfScope() throws Exception { |
672 | ||
673 | // Position trace at beginning | |
674 | TmfContext context = fTrace.seekEvent(-1); | |
675 | assertEquals("Event rank", 0, context.getRank()); | |
9b635e61 FC |
676 | |
677 | TmfEvent event = fTrace.parseEvent(context); | |
54d55ced FC |
678 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
679 | assertEquals("Event rank", 0, context.getRank()); | |
9b635e61 FC |
680 | |
681 | event = fTrace.getNextEvent(context); | |
54d55ced FC |
682 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
683 | assertEquals("Event rank", 1, context.getRank()); | |
684 | ||
685 | // Position trace at event passed the end | |
686 | context = fTrace.seekEvent(NB_EVENTS); | |
687 | assertEquals("Event rank", NB_EVENTS, context.getRank()); | |
9b635e61 FC |
688 | |
689 | event = fTrace.parseEvent(context); | |
54d55ced FC |
690 | assertEquals("Event timestamp", null, event); |
691 | assertEquals("Event rank", NB_EVENTS, context.getRank()); | |
9b635e61 FC |
692 | |
693 | event = fTrace.getNextEvent(context); | |
54d55ced FC |
694 | assertEquals("Event timestamp", null, event); |
695 | assertEquals("Event rank", NB_EVENTS, context.getRank()); | |
696 | } | |
697 | ||
e31e01e8 | 698 | // ------------------------------------------------------------------------ |
d18dd09b | 699 | // processRequest |
e31e01e8 | 700 | // ------------------------------------------------------------------------ |
d18dd09b | 701 | |
e31e01e8 FC |
702 | @SuppressWarnings("unchecked") |
703 | public void testProcessRequestForNbEvents() throws Exception { | |
d18dd09b ASL |
704 | final int BLOCK_SIZE = 100; |
705 | final int NB_EVENTS = 1000; | |
706 | final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>(); | |
707 | ||
708 | TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); | |
e31e01e8 | 709 | final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, NB_EVENTS, BLOCK_SIZE) { |
f9673903 FC |
710 | @Override |
711 | public void handleData(TmfEvent event) { | |
712 | super.handleData(event); | |
713 | requestedEvents.add(event); | |
714 | } | |
d18dd09b | 715 | }; |
951d134a FC |
716 | ITmfDataProvider<TmfEvent>[] providers = (ITmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); |
717 | providers[0].sendRequest(request); | |
718 | request.waitForCompletion(); | |
d18dd09b ASL |
719 | |
720 | assertEquals("nbEvents", NB_EVENTS, requestedEvents.size()); | |
721 | assertTrue("isCompleted", request.isCompleted()); | |
722 | assertFalse("isCancelled", request.isCancelled()); | |
723 | ||
724 | // Ensure that we have distinct events. | |
725 | // Don't go overboard: we are not validating the stub! | |
726 | for (int i = 0; i < NB_EVENTS; i++) { | |
727 | assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue()); | |
728 | } | |
729 | } | |
730 | ||
e31e01e8 FC |
731 | @SuppressWarnings("unchecked") |
732 | public void testProcessRequestForAllEvents() throws Exception { | |
d18dd09b ASL |
733 | final int BLOCK_SIZE = 1; |
734 | final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>(); | |
735 | ||
736 | TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); | |
e31e01e8 | 737 | final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, NB_EVENTS, BLOCK_SIZE) { |
f9673903 FC |
738 | @Override |
739 | public void handleData(TmfEvent event) { | |
740 | super.handleData(event); | |
741 | requestedEvents.add(event); | |
742 | } | |
d18dd09b | 743 | }; |
951d134a FC |
744 | ITmfDataProvider<TmfEvent>[] providers = (ITmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); |
745 | providers[0].sendRequest(request); | |
746 | request.waitForCompletion(); | |
d18dd09b ASL |
747 | |
748 | assertEquals("nbEvents", NB_EVENTS, requestedEvents.size()); | |
749 | assertTrue("isCompleted", request.isCompleted()); | |
750 | assertFalse("isCancelled", request.isCancelled()); | |
751 | ||
752 | // Ensure that we have distinct events. | |
753 | // Don't go overboard: we are not validating the stub! | |
754 | for (int i = 0; i < NB_EVENTS; i++) { | |
755 | assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue()); | |
756 | } | |
757 | } | |
758 | ||
e31e01e8 | 759 | // ------------------------------------------------------------------------ |
d18dd09b | 760 | // cancel |
e31e01e8 | 761 | // ------------------------------------------------------------------------ |
d18dd09b | 762 | |
e31e01e8 FC |
763 | @SuppressWarnings("unchecked") |
764 | public void testCancel() throws Exception { | |
d18dd09b ASL |
765 | final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>(); |
766 | ||
767 | TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); | |
cb866e08 | 768 | final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, NB_EVENTS, BLOCK_SIZE) { |
f9673903 FC |
769 | int nbRead = 0; |
770 | @Override | |
771 | public void handleData(TmfEvent event) { | |
772 | super.handleData(event); | |
773 | requestedEvents.add(event); | |
774 | if (++nbRead == BLOCK_SIZE) | |
775 | cancel(); | |
776 | } | |
d18dd09b | 777 | }; |
951d134a FC |
778 | ITmfDataProvider<TmfEvent>[] providers = (ITmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); |
779 | providers[0].sendRequest(request); | |
780 | request.waitForCompletion(); | |
d18dd09b | 781 | |
cb866e08 | 782 | assertEquals("nbEvents", BLOCK_SIZE, requestedEvents.size()); |
d18dd09b ASL |
783 | assertTrue("isCompleted", request.isCompleted()); |
784 | assertTrue("isCancelled", request.isCancelled()); | |
785 | } | |
e31e01e8 FC |
786 | |
787 | } |