Commit | Line | Data |
---|---|---|
d18dd09b | 1 | /******************************************************************************* |
0316808c | 2 | * Copyright (c) 2009, 2010, 2012 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 | |
0316808c | 11 | * Francois Chouinard - Adjusted for new Trace Model |
d18dd09b ASL |
12 | *******************************************************************************/ |
13 | ||
9e0640dc | 14 | package org.eclipse.linuxtools.tmf.core.tests.trace; |
d18dd09b ASL |
15 | |
16 | import java.io.File; | |
17 | import java.io.IOException; | |
18 | import java.net.URISyntaxException; | |
19 | import java.net.URL; | |
20 | import java.util.Vector; | |
21 | ||
22 | import junit.framework.TestCase; | |
23 | ||
9e0640dc | 24 | import org.eclipse.core.resources.IFile; |
d18dd09b ASL |
25 | import org.eclipse.core.runtime.FileLocator; |
26 | import org.eclipse.core.runtime.Path; | |
17324c9a | 27 | import org.eclipse.linuxtools.internal.tmf.core.trace.TmfExperimentContext; |
9e0640dc | 28 | import org.eclipse.linuxtools.internal.tmf.core.trace.TmfExperimentLocation; |
72f1e62a | 29 | import org.eclipse.linuxtools.tmf.core.event.ITmfEvent; |
6c13869b FC |
30 | import org.eclipse.linuxtools.tmf.core.event.TmfEvent; |
31 | import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange; | |
32 | import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp; | |
b4f71e4a | 33 | import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException; |
9b749023 | 34 | import org.eclipse.linuxtools.tmf.core.request.TmfDataRequest; |
6c13869b FC |
35 | import org.eclipse.linuxtools.tmf.core.request.TmfEventRequest; |
36 | import org.eclipse.linuxtools.tmf.core.tests.TmfCoreTestPlugin; | |
37 | import org.eclipse.linuxtools.tmf.core.trace.ITmfContext; | |
0316808c | 38 | import org.eclipse.linuxtools.tmf.core.trace.ITmfLocation; |
6c13869b | 39 | import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace; |
9e0640dc | 40 | import org.eclipse.linuxtools.tmf.core.trace.TmfExperiment; |
cb8c854e | 41 | import org.eclipse.linuxtools.tmf.core.trace.TmfLongLocation; |
9e0640dc | 42 | import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfExperimentStub; |
4918b8f2 | 43 | import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub; |
d18dd09b ASL |
44 | |
45 | /** | |
0316808c | 46 | * Test suite for the TmfExperiment class (single trace). |
d18dd09b | 47 | */ |
54a7a54c | 48 | @SuppressWarnings({"nls","javadoc"}) |
d18dd09b ASL |
49 | public class TmfExperimentTest extends TestCase { |
50 | ||
0316808c FC |
51 | // ------------------------------------------------------------------------ |
52 | // Attributes | |
53 | // ------------------------------------------------------------------------ | |
54 | ||
d18dd09b ASL |
55 | private static final String DIRECTORY = "testfiles"; |
56 | private static final String TEST_STREAM = "A-Test-10K"; | |
57 | private static final String EXPERIMENT = "MyExperiment"; | |
58 | private static int NB_EVENTS = 10000; | |
0316808c | 59 | private static int BLOCK_SIZE = 1000; |
d18dd09b | 60 | |
6256d8ad AM |
61 | private ITmfTrace[] fTestTraces; |
62 | private TmfExperimentStub fExperiment; | |
d18dd09b ASL |
63 | |
64 | private static byte SCALE = (byte) -3; | |
65 | ||
66 | // ------------------------------------------------------------------------ | |
67 | // Housekeeping | |
68 | // ------------------------------------------------------------------------ | |
69 | ||
6256d8ad | 70 | private synchronized ITmfTrace[] setupTrace(final String path) { |
9e0640dc FC |
71 | if (fTestTraces == null) { |
72 | fTestTraces = new ITmfTrace[1]; | |
25e48683 FC |
73 | try { |
74 | final URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path), null); | |
75 | final File test = new File(FileLocator.toFileURL(location).toURI()); | |
20658947 | 76 | final TmfTraceStub trace = new TmfTraceStub(test.getPath(), 0, true); |
9e0640dc | 77 | fTestTraces[0] = trace; |
b4f71e4a FC |
78 | } catch (final TmfTraceException e) { |
79 | e.printStackTrace(); | |
25e48683 FC |
80 | } catch (final URISyntaxException e) { |
81 | e.printStackTrace(); | |
82 | } catch (final IOException e) { | |
83 | e.printStackTrace(); | |
84 | } | |
85 | } | |
9e0640dc | 86 | return fTestTraces; |
d18dd09b ASL |
87 | } |
88 | ||
9e0640dc | 89 | private synchronized void setupExperiment() { |
20658947 | 90 | if (fExperiment == null) { |
6256d8ad | 91 | fExperiment = new TmfExperimentStub(EXPERIMENT, fTestTraces, BLOCK_SIZE); |
9e0640dc | 92 | fExperiment.getIndexer().buildIndex(0, TmfTimeRange.ETERNITY, true); |
20658947 | 93 | } |
d18dd09b ASL |
94 | } |
95 | ||
54a7a54c FC |
96 | /** |
97 | * @param name the test name | |
98 | */ | |
99 | public TmfExperimentTest(final String name) { | |
25e48683 FC |
100 | super(name); |
101 | } | |
d18dd09b | 102 | |
25e48683 FC |
103 | @Override |
104 | protected void setUp() throws Exception { | |
105 | super.setUp(); | |
106 | setupTrace(DIRECTORY + File.separator + TEST_STREAM); | |
107 | setupExperiment(); | |
108 | } | |
d18dd09b | 109 | |
25e48683 FC |
110 | @Override |
111 | protected void tearDown() throws Exception { | |
112 | super.tearDown(); | |
113 | } | |
d18dd09b ASL |
114 | |
115 | // ------------------------------------------------------------------------ | |
116 | // Constructor | |
117 | // ------------------------------------------------------------------------ | |
118 | ||
9e0640dc FC |
119 | public void testSimpleTmfExperimentConstructor() { |
120 | ||
6256d8ad | 121 | TmfExperiment experiment = new TmfExperiment(TmfEvent.class, EXPERIMENT, fTestTraces); |
9e0640dc FC |
122 | assertEquals("GetId", EXPERIMENT, experiment.getName()); |
123 | assertEquals("GetCacheSize", TmfExperiment.DEFAULT_INDEX_PAGE_SIZE, experiment.getCacheSize()); | |
124 | experiment.dispose(); | |
125 | ||
6256d8ad | 126 | experiment = new TmfExperiment(TmfEvent.class, EXPERIMENT, null); |
9e0640dc FC |
127 | experiment.dispose(); |
128 | } | |
129 | ||
130 | public void testNormalTmfExperimentConstructor() { | |
cb866e08 | 131 | |
25e48683 | 132 | assertEquals("GetId", EXPERIMENT, fExperiment.getName()); |
d18dd09b ASL |
133 | assertEquals("GetNbEvents", NB_EVENTS, fExperiment.getNbEvents()); |
134 | ||
07671572 FC |
135 | final long nbExperimentEvents = fExperiment.getNbEvents(); |
136 | assertEquals("GetNbEvents", NB_EVENTS, nbExperimentEvents); | |
137 | ||
25e48683 | 138 | final long nbTraceEvents = fExperiment.getTraces()[0].getNbEvents(); |
82e04272 FC |
139 | assertEquals("GetNbEvents", NB_EVENTS, nbTraceEvents); |
140 | ||
25e48683 | 141 | final TmfTimeRange timeRange = fExperiment.getTimeRange(); |
d18dd09b ASL |
142 | assertEquals("getStartTime", 1, timeRange.getStartTime().getValue()); |
143 | assertEquals("getEndTime", NB_EVENTS, timeRange.getEndTime().getValue()); | |
25e48683 | 144 | } |
d18dd09b | 145 | |
9e0640dc FC |
146 | @SuppressWarnings("static-access") |
147 | public void testSetCurrentExperiment() { | |
148 | ||
6256d8ad | 149 | TmfExperiment experiment = new TmfExperiment(TmfEvent.class, EXPERIMENT, fTestTraces); |
9e0640dc FC |
150 | experiment.setCurrentExperiment(experiment); |
151 | assertEquals("getCurrentExperiment", experiment, experiment.getCurrentExperiment()); | |
152 | ||
6256d8ad | 153 | TmfExperiment experiment2 = new TmfExperiment(TmfEvent.class, EXPERIMENT, null); |
9e0640dc FC |
154 | experiment.setCurrentExperiment(experiment2); |
155 | assertEquals("getCurrentExperiment", experiment2, experiment.getCurrentExperiment()); | |
156 | ||
157 | experiment.dispose(); | |
158 | experiment2.dispose(); | |
159 | } | |
160 | ||
161 | // ------------------------------------------------------------------------ | |
162 | // getTimestamp | |
163 | // ------------------------------------------------------------------------ | |
164 | ||
54a7a54c | 165 | public void testGetTimestamp() { |
17324c9a FC |
166 | assertEquals("getTimestamp", new TmfTimestamp( 1, (byte) -3), fExperiment.getTimestamp( 0)); |
167 | assertEquals("getTimestamp", new TmfTimestamp( 2, (byte) -3), fExperiment.getTimestamp( 1)); | |
168 | assertEquals("getTimestamp", new TmfTimestamp( 11, (byte) -3), fExperiment.getTimestamp( 10)); | |
169 | assertEquals("getTimestamp", new TmfTimestamp( 101, (byte) -3), fExperiment.getTimestamp( 100)); | |
170 | assertEquals("getTimestamp", new TmfTimestamp( 1001, (byte) -3), fExperiment.getTimestamp(1000)); | |
171 | assertEquals("getTimestamp", new TmfTimestamp( 2001, (byte) -3), fExperiment.getTimestamp(2000)); | |
172 | assertEquals("getTimestamp", new TmfTimestamp( 2501, (byte) -3), fExperiment.getTimestamp(2500)); | |
173 | assertEquals("getTimestamp", new TmfTimestamp(10000, (byte) -3), fExperiment.getTimestamp(9999)); | |
9e0640dc FC |
174 | assertNull("getTimestamp", fExperiment.getTimestamp(10000)); |
175 | } | |
176 | ||
177 | // ------------------------------------------------------------------------ | |
178 | // Bookmarks file handling | |
179 | // ------------------------------------------------------------------------ | |
180 | ||
54a7a54c | 181 | public void testBookmarks() { |
9e0640dc | 182 | assertNull("GetBookmarksFile", fExperiment.getBookmarksFile()); |
9e0640dc FC |
183 | IFile bookmarks = (IFile) fTestTraces[0].getResource(); |
184 | fExperiment.setBookmarksFile(bookmarks); | |
185 | assertEquals("GetBookmarksFile", bookmarks, fExperiment.getBookmarksFile()); | |
186 | } | |
187 | ||
188 | // ------------------------------------------------------------------------ | |
189 | // seekEvent by location | |
190 | // ------------------------------------------------------------------------ | |
191 | ||
54a7a54c | 192 | public void testSeekBadLocation() { |
cb8c854e | 193 | ITmfContext context = fExperiment.seekEvent(new TmfLongLocation(0L)); |
9e0640dc FC |
194 | assertNull("seekEvent", context); |
195 | } | |
196 | ||
54a7a54c | 197 | public void testSeekNoTrace() { |
6256d8ad | 198 | TmfExperiment experiment = new TmfExperiment(TmfEvent.class, EXPERIMENT, null); |
9e0640dc FC |
199 | ITmfContext context = experiment.seekEvent((TmfExperimentLocation) null); |
200 | assertNull("seekEvent", context); | |
201 | experiment.dispose(); | |
202 | } | |
203 | ||
204 | // ------------------------------------------------------------------------ | |
205 | // seekEvent on ratio | |
206 | // ------------------------------------------------------------------------ | |
207 | ||
54a7a54c | 208 | public void testSeekEventOnRatio() { |
9e0640dc FC |
209 | |
210 | // First event | |
211 | ITmfContext context = fExperiment.seekEvent(0.0); | |
212 | assertEquals("Context rank", 0, context.getRank()); | |
213 | ITmfEvent event = fExperiment.parseEvent(context); | |
214 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); | |
215 | assertEquals("Context rank", 0, context.getRank()); | |
216 | ||
217 | // Middle event | |
218 | int midTrace = NB_EVENTS / 2; | |
219 | context = fExperiment.seekEvent(0.5); | |
220 | assertEquals("Context rank", midTrace, context.getRank()); | |
221 | event = fExperiment.parseEvent(context); | |
222 | assertEquals("Event timestamp", midTrace + 1, event.getTimestamp().getValue()); | |
223 | assertEquals("Context rank", midTrace, context.getRank()); | |
9b749023 | 224 | |
9e0640dc FC |
225 | // Last event |
226 | context = fExperiment.seekEvent(1.0); | |
227 | assertEquals("Context rank", NB_EVENTS, context.getRank()); | |
228 | event = fExperiment.parseEvent(context); | |
229 | assertNull("Event timestamp", event); | |
230 | assertEquals("Context rank", NB_EVENTS, context.getRank()); | |
9b749023 | 231 | |
9e0640dc FC |
232 | // Beyond last event |
233 | context = fExperiment.seekEvent(1.1); | |
234 | assertEquals("Context rank", NB_EVENTS, context.getRank()); | |
235 | event = fExperiment.parseEvent(context); | |
236 | assertNull("Event timestamp", event); | |
237 | assertEquals("Context rank", NB_EVENTS, context.getRank()); | |
9b749023 | 238 | |
9e0640dc FC |
239 | // Negative ratio |
240 | context = fExperiment.seekEvent(-0.5); | |
241 | assertEquals("Context rank", 0, context.getRank()); | |
242 | event = fExperiment.parseEvent(context); | |
243 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); | |
244 | assertEquals("Context rank", 0, context.getRank()); | |
245 | } | |
246 | ||
54a7a54c | 247 | public void testGetLocationRatio() { |
9e0640dc FC |
248 | |
249 | // First event | |
250 | ITmfContext context = fExperiment.seekEvent((ITmfLocation) null); | |
251 | double ratio = fExperiment.getLocationRatio(context.getLocation()); | |
5cc97265 FC |
252 | context = fExperiment.seekEvent(ratio); |
253 | double ratio2 = fExperiment.getLocationRatio(context.getLocation()); | |
254 | assertEquals("getLocationRatio", ratio, ratio2); | |
9e0640dc FC |
255 | |
256 | // Middle event | |
257 | context = fExperiment.seekEvent(NB_EVENTS / 2); | |
258 | ratio = fExperiment.getLocationRatio(context.getLocation()); | |
5cc97265 FC |
259 | context = fExperiment.seekEvent(ratio); |
260 | ratio2 = fExperiment.getLocationRatio(context.getLocation()); | |
261 | assertEquals("getLocationRatio", ratio, ratio2); | |
9e0640dc FC |
262 | |
263 | // Last event | |
264 | context = fExperiment.seekEvent(NB_EVENTS - 1); | |
265 | ratio = fExperiment.getLocationRatio(context.getLocation()); | |
5cc97265 FC |
266 | context = fExperiment.seekEvent(ratio); |
267 | ratio2 = fExperiment.getLocationRatio(context.getLocation()); | |
268 | assertEquals("getLocationRatio", ratio, ratio2); | |
9e0640dc FC |
269 | } |
270 | ||
17324c9a | 271 | // @SuppressWarnings("rawtypes") |
54a7a54c | 272 | // public void testGetCurrentLocation() { |
9e0640dc FC |
273 | // ITmfContext context = fExperiment.seekEvent((ITmfLocation) null); |
274 | // ITmfLocation location = fExperiment.getCurrentLocation(); | |
275 | // assertEquals("getCurrentLocation", location, context.getLocation()); | |
276 | // } | |
277 | ||
d18dd09b | 278 | // ------------------------------------------------------------------------ |
0316808c | 279 | // seekEvent on rank |
d18dd09b ASL |
280 | // ------------------------------------------------------------------------ |
281 | ||
54a7a54c | 282 | public void testSeekRankOnCacheBoundary() { |
d18dd09b | 283 | |
0316808c | 284 | long cacheSize = fExperiment.getCacheSize(); |
9b635e61 | 285 | |
0316808c FC |
286 | // On lower bound, returns the first event (TS = 1) |
287 | ITmfContext context = fExperiment.seekEvent(0); | |
288 | assertEquals("Context rank", 0, context.getRank()); | |
25e48683 | 289 | |
c32744d6 | 290 | ITmfEvent event = fExperiment.getNext(context); |
d18dd09b | 291 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
0316808c | 292 | assertEquals("Context rank", 1, context.getRank()); |
25e48683 | 293 | |
0316808c FC |
294 | // Position trace at event rank [cacheSize] |
295 | context = fExperiment.seekEvent(cacheSize); | |
296 | assertEquals("Context rank", cacheSize, context.getRank()); | |
25e48683 | 297 | |
c32744d6 | 298 | event = fExperiment.getNext(context); |
0316808c FC |
299 | assertEquals("Event timestamp", cacheSize + 1, event.getTimestamp().getValue()); |
300 | assertEquals("Context rank", cacheSize + 1, context.getRank()); | |
d18dd09b | 301 | |
0316808c FC |
302 | // Position trace at event rank [4 * cacheSize] |
303 | context = fExperiment.seekEvent(4 * cacheSize); | |
304 | assertEquals("Context rank", 4 * cacheSize, context.getRank()); | |
25e48683 | 305 | |
c32744d6 | 306 | event = fExperiment.getNext(context); |
0316808c FC |
307 | assertEquals("Event timestamp", 4 * cacheSize + 1, event.getTimestamp().getValue()); |
308 | assertEquals("Context rank", 4 * cacheSize + 1, context.getRank()); | |
d18dd09b ASL |
309 | } |
310 | ||
54a7a54c | 311 | public void testSeekRankNotOnCacheBoundary() { |
d18dd09b | 312 | |
0316808c | 313 | long cacheSize = fExperiment.getCacheSize(); |
25e48683 | 314 | |
0316808c FC |
315 | // Position trace at event rank 9 |
316 | ITmfContext context = fExperiment.seekEvent(9); | |
317 | assertEquals("Context rank", 9, context.getRank()); | |
25e48683 | 318 | |
c32744d6 | 319 | ITmfEvent event = fExperiment.getNext(context); |
d18dd09b | 320 | assertEquals("Event timestamp", 10, event.getTimestamp().getValue()); |
0316808c | 321 | assertEquals("Context rank", 10, context.getRank()); |
d18dd09b | 322 | |
0316808c FC |
323 | // Position trace at event rank [cacheSize - 1] |
324 | context = fExperiment.seekEvent(cacheSize - 1); | |
325 | assertEquals("Context rank", cacheSize - 1, context.getRank()); | |
25e48683 | 326 | |
c32744d6 | 327 | event = fExperiment.getNext(context); |
0316808c FC |
328 | assertEquals("Event timestamp", cacheSize, event.getTimestamp().getValue()); |
329 | assertEquals("Context rank", cacheSize, context.getRank()); | |
d18dd09b | 330 | |
0316808c FC |
331 | // Position trace at event rank [cacheSize + 1] |
332 | context = fExperiment.seekEvent(cacheSize + 1); | |
333 | assertEquals("Context rank", cacheSize + 1, context.getRank()); | |
25e48683 | 334 | |
c32744d6 | 335 | event = fExperiment.getNext(context); |
0316808c FC |
336 | assertEquals("Event timestamp", cacheSize + 2, event.getTimestamp().getValue()); |
337 | assertEquals("Context rank", cacheSize + 2, context.getRank()); | |
d18dd09b | 338 | |
25e48683 | 339 | // Position trace at event rank 4500 |
0316808c FC |
340 | context = fExperiment.seekEvent(4500); |
341 | assertEquals("Context rank", 4500, context.getRank()); | |
25e48683 | 342 | |
c32744d6 | 343 | event = fExperiment.getNext(context); |
d18dd09b | 344 | assertEquals("Event timestamp", 4501, event.getTimestamp().getValue()); |
0316808c | 345 | assertEquals("Context rank", 4501, context.getRank()); |
d18dd09b ASL |
346 | } |
347 | ||
54a7a54c | 348 | public void testSeekRankOutOfScope() { |
d18dd09b | 349 | |
25e48683 | 350 | // Position trace at beginning |
0316808c | 351 | ITmfContext context = fExperiment.seekEvent(-1); |
9b635e61 | 352 | assertEquals("Event rank", 0, context.getRank()); |
25e48683 | 353 | |
c32744d6 | 354 | ITmfEvent event = fExperiment.getNext(context); |
d18dd09b | 355 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
0316808c | 356 | assertEquals("Context rank", 1, context.getRank()); |
d18dd09b | 357 | |
25e48683 | 358 | // Position trace at event passed the end |
0316808c FC |
359 | context = fExperiment.seekEvent(NB_EVENTS); |
360 | assertEquals("Context rank", NB_EVENTS, context.getRank()); | |
361 | ||
c32744d6 | 362 | event = fExperiment.getNext(context); |
0316808c FC |
363 | assertNull("Event", event); |
364 | assertEquals("Context rank", NB_EVENTS, context.getRank()); | |
d18dd09b ASL |
365 | } |
366 | ||
367 | // ------------------------------------------------------------------------ | |
368 | // seekEvent on timestamp | |
369 | // ------------------------------------------------------------------------ | |
370 | ||
54a7a54c | 371 | public void testSeekTimestampOnCacheBoundary() { |
d18dd09b | 372 | |
0316808c | 373 | long cacheSize = fExperiment.getCacheSize(); |
25e48683 | 374 | |
0316808c FC |
375 | // Position trace at event rank 0 |
376 | ITmfContext context = fExperiment.seekEvent(new TmfTimestamp(1, SCALE, 0)); | |
377 | assertEquals("Context rank", 0, context.getRank()); | |
25e48683 | 378 | |
c32744d6 | 379 | ITmfEvent event = fExperiment.getNext(context); |
d18dd09b | 380 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
0316808c | 381 | assertEquals("Context rank", 1, context.getRank()); |
25e48683 | 382 | |
0316808c FC |
383 | // Position trace at event rank [cacheSize] |
384 | context = fExperiment.seekEvent(new TmfTimestamp(cacheSize + 1, SCALE, 0)); | |
385 | assertEquals("Event rank", cacheSize, context.getRank()); | |
25e48683 | 386 | |
c32744d6 | 387 | event = fExperiment.getNext(context); |
0316808c FC |
388 | assertEquals("Event timestamp", cacheSize + 1, event.getTimestamp().getValue()); |
389 | assertEquals("Context rank", cacheSize + 1, context.getRank()); | |
d18dd09b | 390 | |
0316808c FC |
391 | // Position trace at event rank [4 * cacheSize] |
392 | context = fExperiment.seekEvent(new TmfTimestamp(4 * cacheSize + 1, SCALE, 0)); | |
393 | assertEquals("Context rank", 4 * cacheSize, context.getRank()); | |
25e48683 | 394 | |
c32744d6 | 395 | event = fExperiment.getNext(context); |
0316808c FC |
396 | assertEquals("Event timestamp", 4 * cacheSize + 1, event.getTimestamp().getValue()); |
397 | assertEquals("Context rank", 4 * cacheSize + 1, context.getRank()); | |
d18dd09b ASL |
398 | } |
399 | ||
54a7a54c | 400 | public void testSeekTimestampNotOnCacheBoundary() { |
d18dd09b | 401 | |
0316808c FC |
402 | // Position trace at event rank 1 (TS = 2) |
403 | ITmfContext context = fExperiment.seekEvent(new TmfTimestamp(2, SCALE, 0)); | |
404 | assertEquals("Context rank", 1, context.getRank()); | |
25e48683 | 405 | |
c32744d6 | 406 | ITmfEvent event = fExperiment.getNext(context); |
d18dd09b | 407 | assertEquals("Event timestamp", 2, event.getTimestamp().getValue()); |
0316808c | 408 | assertEquals("Context rank", 2, context.getRank()); |
d18dd09b | 409 | |
0316808c | 410 | // Position trace at event rank 9 (TS = 10) |
25e48683 | 411 | context = fExperiment.seekEvent(new TmfTimestamp(10, SCALE, 0)); |
0316808c | 412 | assertEquals("Context rank", 9, context.getRank()); |
25e48683 | 413 | |
c32744d6 | 414 | event = fExperiment.getNext(context); |
d18dd09b | 415 | assertEquals("Event timestamp", 10, event.getTimestamp().getValue()); |
0316808c | 416 | assertEquals("Context rank", 10, context.getRank()); |
d18dd09b | 417 | |
0316808c | 418 | // Position trace at event rank 999 (TS = 1000) |
d18dd09b | 419 | context = fExperiment.seekEvent(new TmfTimestamp(1000, SCALE, 0)); |
0316808c | 420 | assertEquals("Context rank", 999, context.getRank()); |
25e48683 | 421 | |
c32744d6 | 422 | event = fExperiment.getNext(context); |
d18dd09b | 423 | assertEquals("Event timestamp", 1000, event.getTimestamp().getValue()); |
0316808c | 424 | assertEquals("Context rank", 1000, context.getRank()); |
d18dd09b | 425 | |
0316808c | 426 | // Position trace at event rank 1001 (TS = 1002) |
d18dd09b | 427 | context = fExperiment.seekEvent(new TmfTimestamp(1002, SCALE, 0)); |
0316808c | 428 | assertEquals("Context rank", 1001, context.getRank()); |
25e48683 | 429 | |
c32744d6 | 430 | event = fExperiment.getNext(context); |
d18dd09b | 431 | assertEquals("Event timestamp", 1002, event.getTimestamp().getValue()); |
0316808c | 432 | assertEquals("Context rank", 1002, context.getRank()); |
d18dd09b | 433 | |
0316808c | 434 | // Position trace at event rank 4500 (TS = 4501) |
d18dd09b | 435 | context = fExperiment.seekEvent(new TmfTimestamp(4501, SCALE, 0)); |
0316808c | 436 | assertEquals("Context rank", 4500, context.getRank()); |
25e48683 | 437 | |
c32744d6 | 438 | event = fExperiment.getNext(context); |
d18dd09b | 439 | assertEquals("Event timestamp", 4501, event.getTimestamp().getValue()); |
0316808c | 440 | assertEquals("Context rank", 4501, context.getRank()); |
d18dd09b ASL |
441 | } |
442 | ||
54a7a54c | 443 | public void testSeekTimestampOutOfScope() { |
d18dd09b | 444 | |
25e48683 | 445 | // Position trace at beginning |
0316808c | 446 | ITmfContext context = fExperiment.seekEvent(new TmfTimestamp(-1, SCALE, 0)); |
d18dd09b | 447 | assertEquals("Event rank", 0, context.getRank()); |
25e48683 | 448 | |
c32744d6 | 449 | ITmfEvent event = fExperiment.getNext(context); |
d18dd09b ASL |
450 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
451 | assertEquals("Event rank", 1, context.getRank()); | |
452 | ||
25e48683 | 453 | // Position trace at event passed the end |
d18dd09b | 454 | context = fExperiment.seekEvent(new TmfTimestamp(NB_EVENTS + 1, SCALE, 0)); |
c32744d6 | 455 | event = fExperiment.getNext(context); |
0316808c | 456 | assertNull("Event location", event); |
9b635e61 | 457 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
d18dd09b ASL |
458 | } |
459 | ||
460 | // ------------------------------------------------------------------------ | |
0316808c | 461 | // seekEvent by location (context rank is undefined) |
d18dd09b ASL |
462 | // ------------------------------------------------------------------------ |
463 | ||
54a7a54c | 464 | public void testSeekLocationOnCacheBoundary() { |
9b749023 | 465 | |
0316808c | 466 | long cacheSize = fExperiment.getCacheSize(); |
d18dd09b | 467 | |
0316808c FC |
468 | // Position trace at event rank 0 |
469 | ITmfContext tmpContext = fExperiment.seekEvent(0); | |
470 | ITmfContext context = fExperiment.seekEvent(tmpContext.getLocation()); | |
25e48683 | 471 | |
c32744d6 | 472 | ITmfEvent event = fExperiment.getNext(context); |
d18dd09b | 473 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
25e48683 | 474 | |
c32744d6 | 475 | event = fExperiment.getNext(context); |
0316808c | 476 | assertEquals("Event timestamp", 2, event.getTimestamp().getValue()); |
d18dd09b | 477 | |
0316808c FC |
478 | // Position trace at event rank 'cacheSize' |
479 | tmpContext = fExperiment.seekEvent(cacheSize); | |
480 | context = fExperiment.seekEvent(tmpContext.getLocation()); | |
25e48683 | 481 | |
c32744d6 | 482 | event = fExperiment.getNext(context); |
0316808c | 483 | assertEquals("Event timestamp", cacheSize + 1, event.getTimestamp().getValue()); |
25e48683 | 484 | |
c32744d6 | 485 | event = fExperiment.getNext(context); |
0316808c | 486 | assertEquals("Event timestamp", cacheSize + 2, event.getTimestamp().getValue()); |
d18dd09b | 487 | |
0316808c FC |
488 | // Position trace at event rank 4 * 'cacheSize' |
489 | tmpContext = fExperiment.seekEvent(4 * cacheSize); | |
490 | context = fExperiment.seekEvent(tmpContext.getLocation()); | |
25e48683 | 491 | |
c32744d6 | 492 | event = fExperiment.getNext(context); |
0316808c | 493 | assertEquals("Event timestamp", 4 * cacheSize + 1, event.getTimestamp().getValue()); |
25e48683 | 494 | |
c32744d6 | 495 | event = fExperiment.getNext(context); |
0316808c | 496 | assertEquals("Event timestamp", 4 * cacheSize + 2, event.getTimestamp().getValue()); |
d18dd09b ASL |
497 | } |
498 | ||
54a7a54c | 499 | public void testSeekLocationNotOnCacheBoundary() { |
25e48683 | 500 | |
0316808c | 501 | long cacheSize = fExperiment.getCacheSize(); |
25e48683 | 502 | |
0316808c FC |
503 | // Position trace at event 'cacheSize' - 1 |
504 | ITmfContext tmpContext = fExperiment.seekEvent(cacheSize - 1); | |
505 | ITmfContext context = fExperiment.seekEvent(tmpContext.getLocation()); | |
d18dd09b | 506 | |
c32744d6 | 507 | ITmfEvent event = fExperiment.getNext(context); |
0316808c | 508 | assertEquals("Event timestamp", cacheSize, event.getTimestamp().getValue()); |
25e48683 | 509 | |
c32744d6 | 510 | event = fExperiment.getNext(context); |
0316808c | 511 | assertEquals("Event timestamp", cacheSize + 1, event.getTimestamp().getValue()); |
d18dd09b | 512 | |
0316808c FC |
513 | // Position trace at event rank 2 * 'cacheSize' - 1 |
514 | tmpContext = fExperiment.seekEvent(2 * cacheSize - 1); | |
515 | context = fExperiment.seekEvent(tmpContext.getLocation()); | |
516 | context = fExperiment.seekEvent(2 * cacheSize - 1); | |
25e48683 | 517 | |
c32744d6 | 518 | event = fExperiment.getNext(context); |
0316808c | 519 | assertEquals("Event timestamp", 2 * cacheSize, event.getTimestamp().getValue()); |
25e48683 | 520 | |
c32744d6 | 521 | event = fExperiment.getNext(context); |
0316808c | 522 | assertEquals("Event timestamp", 2 * cacheSize + 1, event.getTimestamp().getValue()); |
d18dd09b | 523 | |
25e48683 | 524 | // Position trace at event rank 4500 |
0316808c FC |
525 | tmpContext = fExperiment.seekEvent(4500); |
526 | context = fExperiment.seekEvent(tmpContext.getLocation()); | |
25e48683 | 527 | |
c32744d6 | 528 | event = fExperiment.getNext(context); |
d18dd09b | 529 | assertEquals("Event timestamp", 4501, event.getTimestamp().getValue()); |
25e48683 | 530 | |
c32744d6 | 531 | event = fExperiment.getNext(context); |
0316808c | 532 | assertEquals("Event timestamp", 4502, event.getTimestamp().getValue()); |
d18dd09b ASL |
533 | } |
534 | ||
54a7a54c | 535 | public void testSeekLocationOutOfScope() { |
d18dd09b | 536 | |
25e48683 | 537 | // Position trace at beginning |
1e1bef82 | 538 | ITmfContext context = fExperiment.seekEvent((ITmfLocation) null); |
25e48683 | 539 | |
c32744d6 | 540 | ITmfEvent event = fExperiment.getNext(context); |
d18dd09b | 541 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
d18dd09b | 542 | } |
25e48683 | 543 | |
9b635e61 | 544 | // ------------------------------------------------------------------------ |
17324c9a | 545 | // getNext - updates the context |
9b635e61 FC |
546 | // ------------------------------------------------------------------------ |
547 | ||
54a7a54c | 548 | private static void validateContextRanks(ITmfContext context) { |
17324c9a FC |
549 | assertTrue("Experiment context type", context instanceof TmfExperimentContext); |
550 | TmfExperimentContext ctx = (TmfExperimentContext) context; | |
9b635e61 | 551 | |
17324c9a FC |
552 | int nbTraces = ctx.getContexts().length; |
553 | ||
554 | // expRank = sum(trace ranks) - nbTraces + 1 (if lastTraceRead != NO_TRACE) | |
555 | long expRank = -nbTraces + ((ctx.getLastTrace() != TmfExperimentContext.NO_TRACE) ? 1 : 0); | |
556 | for (int i = 0; i < nbTraces; i++) { | |
557 | long rank = ctx.getContexts()[i].getRank(); | |
558 | if (rank == -1) { | |
559 | expRank = -1; | |
560 | break; | |
561 | } | |
562 | expRank += rank; | |
563 | } | |
564 | assertEquals("Experiment context rank", expRank, ctx.getRank()); | |
565 | } | |
566 | ||
54a7a54c | 567 | public void testGetNextAfteSeekingOnTS_1() { |
9b635e61 | 568 | |
17324c9a FC |
569 | final long INITIAL_TS = 1; |
570 | final int NB_READS = 20; | |
571 | ||
572 | // On lower bound, returns the first event (ts = 1) | |
573 | final ITmfContext context = fExperiment.seekEvent(new TmfTimestamp(INITIAL_TS, SCALE, 0)); | |
574 | ||
575 | validateContextRanks(context); | |
576 | ||
577 | // Read NB_EVENTS | |
578 | ITmfEvent event; | |
579 | for (int i = 0; i < NB_READS; i++) { | |
c32744d6 | 580 | event = fExperiment.getNext(context); |
17324c9a FC |
581 | assertEquals("Event timestamp", INITIAL_TS + i, event.getTimestamp().getValue()); |
582 | assertEquals("Event rank", INITIAL_TS + i, context.getRank()); | |
9b635e61 | 583 | } |
17324c9a FC |
584 | |
585 | // Make sure we stay positioned | |
586 | event = fExperiment.parseEvent(context); | |
587 | assertEquals("Event timestamp", INITIAL_TS + NB_READS, event.getTimestamp().getValue()); | |
588 | assertEquals("Event rank", INITIAL_TS + NB_READS - 1, context.getRank()); | |
589 | ||
590 | validateContextRanks(context); | |
9b635e61 FC |
591 | } |
592 | ||
54a7a54c | 593 | public void testGetNextAfteSeekingOnTS_2() { |
17324c9a FC |
594 | |
595 | final long INITIAL_TS = 2; | |
596 | final int NB_READS = 20; | |
597 | ||
598 | // On lower bound, returns the first event (ts = 2) | |
599 | final ITmfContext context = fExperiment.seekEvent(new TmfTimestamp(INITIAL_TS, SCALE, 0)); | |
600 | ||
601 | validateContextRanks(context); | |
602 | ||
603 | // Read NB_EVENTS | |
604 | ITmfEvent event; | |
605 | for (int i = 0; i < NB_READS; i++) { | |
606 | event = fExperiment.getNext(context); | |
607 | assertEquals("Event timestamp", INITIAL_TS + i, event.getTimestamp().getValue()); | |
608 | assertEquals("Event rank", INITIAL_TS + i, context.getRank()); | |
609 | } | |
610 | ||
611 | // Make sure we stay positioned | |
612 | event = fExperiment.parseEvent(context); | |
613 | assertEquals("Event timestamp", INITIAL_TS + NB_READS, event.getTimestamp().getValue()); | |
614 | assertEquals("Event rank", INITIAL_TS + NB_READS - 1, context.getRank()); | |
615 | ||
616 | validateContextRanks(context); | |
617 | } | |
618 | ||
54a7a54c | 619 | public void testGetNextAfteSeekingOnTS_3() { |
17324c9a FC |
620 | |
621 | final long INITIAL_TS = 500; | |
622 | final int NB_READS = 20; | |
623 | ||
624 | // On lower bound, returns the first event (ts = 500) | |
625 | final ITmfContext context = fExperiment.seekEvent(new TmfTimestamp(INITIAL_TS, SCALE, 0)); | |
626 | ||
627 | validateContextRanks(context); | |
628 | ||
629 | // Read NB_EVENTS | |
630 | ITmfEvent event; | |
631 | for (int i = 0; i < NB_READS; i++) { | |
632 | event = fExperiment.getNext(context); | |
633 | assertEquals("Event timestamp", INITIAL_TS + i, event.getTimestamp().getValue()); | |
634 | assertEquals("Event rank", INITIAL_TS + i, context.getRank()); | |
635 | } | |
636 | ||
637 | // Make sure we stay positioned | |
638 | event = fExperiment.parseEvent(context); | |
639 | assertEquals("Event timestamp", INITIAL_TS + NB_READS, event.getTimestamp().getValue()); | |
640 | assertEquals("Event rank", INITIAL_TS + NB_READS - 1, context.getRank()); | |
641 | ||
642 | validateContextRanks(context); | |
643 | } | |
644 | ||
54a7a54c | 645 | public void testGetNextAfterSeekingOnRank_1() { |
17324c9a FC |
646 | |
647 | final long INITIAL_RANK = 0L; | |
648 | final int NB_READS = 20; | |
649 | ||
650 | // On lower bound, returns the first event (rank = 0) | |
651 | final ITmfContext context = fExperiment.seekEvent(INITIAL_RANK); | |
652 | ||
653 | validateContextRanks(context); | |
654 | ||
655 | // Read NB_EVENTS | |
656 | ITmfEvent event; | |
657 | for (int i = 0; i < NB_READS; i++) { | |
658 | event = fExperiment.getNext(context); | |
659 | assertEquals("Event timestamp", INITIAL_RANK + i + 1, event.getTimestamp().getValue()); | |
660 | assertEquals("Event rank", INITIAL_RANK + i + 1, context.getRank()); | |
661 | } | |
662 | ||
663 | // Make sure we stay positioned | |
664 | event = fExperiment.parseEvent(context); | |
665 | assertEquals("Event timestamp", INITIAL_RANK + NB_READS + 1, event.getTimestamp().getValue()); | |
666 | assertEquals("Event rank", INITIAL_RANK + NB_READS, context.getRank()); | |
667 | ||
668 | validateContextRanks(context); | |
669 | } | |
670 | ||
54a7a54c | 671 | public void testGetNextAfterSeekingOnRank_2() { |
17324c9a FC |
672 | |
673 | final long INITIAL_RANK = 1L; | |
674 | final int NB_READS = 20; | |
675 | ||
676 | // On lower bound, returns the first event (rank = 0) | |
677 | final ITmfContext context = fExperiment.seekEvent(INITIAL_RANK); | |
678 | ||
679 | validateContextRanks(context); | |
680 | ||
681 | // Read NB_EVENTS | |
682 | ITmfEvent event; | |
683 | for (int i = 0; i < NB_READS; i++) { | |
684 | event = fExperiment.getNext(context); | |
685 | assertEquals("Event timestamp", INITIAL_RANK + i + 1, event.getTimestamp().getValue()); | |
686 | assertEquals("Event rank", INITIAL_RANK + i + 1, context.getRank()); | |
687 | } | |
688 | ||
689 | // Make sure we stay positioned | |
690 | event = fExperiment.parseEvent(context); | |
691 | assertEquals("Event timestamp", INITIAL_RANK + NB_READS + 1, event.getTimestamp().getValue()); | |
692 | assertEquals("Event rank", INITIAL_RANK + NB_READS, context.getRank()); | |
693 | ||
694 | validateContextRanks(context); | |
695 | } | |
696 | ||
54a7a54c | 697 | public void testGetNextAfterSeekingOnRank_3() { |
17324c9a FC |
698 | |
699 | final long INITIAL_RANK = 500L; | |
700 | final int NB_READS = 20; | |
701 | ||
702 | // On lower bound, returns the first event (rank = 0) | |
703 | final ITmfContext context = fExperiment.seekEvent(INITIAL_RANK); | |
704 | ||
705 | validateContextRanks(context); | |
706 | ||
707 | // Read NB_EVENTS | |
708 | ITmfEvent event; | |
709 | for (int i = 0; i < NB_READS; i++) { | |
710 | event = fExperiment.getNext(context); | |
711 | assertEquals("Event timestamp", INITIAL_RANK + i + 1, event.getTimestamp().getValue()); | |
712 | assertEquals("Event rank", INITIAL_RANK + i + 1, context.getRank()); | |
713 | } | |
714 | ||
715 | // Make sure we stay positioned | |
716 | event = fExperiment.parseEvent(context); | |
717 | assertEquals("Event timestamp", INITIAL_RANK + NB_READS + 1, event.getTimestamp().getValue()); | |
718 | assertEquals("Event rank", INITIAL_RANK + NB_READS, context.getRank()); | |
719 | ||
720 | validateContextRanks(context); | |
721 | } | |
722 | ||
54a7a54c | 723 | public void testGetNextAfterSeekingOnLocation_1() { |
17324c9a | 724 | |
1e1bef82 | 725 | final ITmfLocation INITIAL_LOC = null; |
17324c9a FC |
726 | final long INITIAL_TS = 1; |
727 | final int NB_READS = 20; | |
728 | ||
729 | // On lower bound, returns the first event (ts = 1) | |
730 | final ITmfContext context = fExperiment.seekEvent(INITIAL_LOC); | |
731 | ||
732 | validateContextRanks(context); | |
733 | ||
734 | // Read NB_EVENTS | |
735 | ITmfEvent event; | |
736 | for (int i = 0; i < NB_READS; i++) { | |
737 | event = fExperiment.getNext(context); | |
738 | assertEquals("Event timestamp", INITIAL_TS + i, event.getTimestamp().getValue()); | |
739 | assertEquals("Event rank", INITIAL_TS + i, context.getRank()); | |
740 | } | |
741 | ||
742 | // Make sure we stay positioned | |
743 | event = fExperiment.parseEvent(context); | |
744 | assertEquals("Event timestamp", INITIAL_TS + NB_READS, event.getTimestamp().getValue()); | |
745 | assertEquals("Event rank", INITIAL_TS + NB_READS - 1, context.getRank()); | |
746 | ||
747 | validateContextRanks(context); | |
748 | } | |
749 | ||
54a7a54c | 750 | public void testGetNextAfterSeekingOnLocation_2() { |
17324c9a | 751 | |
1e1bef82 | 752 | final ITmfLocation INITIAL_LOC = fExperiment.seekEvent(1L).getLocation(); |
17324c9a FC |
753 | final long INITIAL_TS = 2; |
754 | final int NB_READS = 20; | |
755 | ||
756 | // On lower bound, returns the first event (ts = 2) | |
757 | final ITmfContext context = fExperiment.seekEvent(INITIAL_LOC); | |
758 | ||
759 | validateContextRanks(context); | |
760 | ||
761 | // Read NB_EVENTS | |
762 | ITmfEvent event; | |
763 | for (int i = 0; i < NB_READS; i++) { | |
764 | event = fExperiment.getNext(context); | |
765 | assertEquals("Event timestamp", INITIAL_TS + i, event.getTimestamp().getValue()); | |
766 | } | |
767 | ||
768 | // Make sure we stay positioned | |
769 | event = fExperiment.parseEvent(context); | |
770 | assertEquals("Event timestamp", INITIAL_TS + NB_READS, event.getTimestamp().getValue()); | |
771 | ||
772 | validateContextRanks(context); | |
773 | } | |
774 | ||
54a7a54c | 775 | public void testGetNextAfterSeekingOnLocation_3() { |
17324c9a | 776 | |
1e1bef82 | 777 | final ITmfLocation INITIAL_LOC = fExperiment.seekEvent(500L).getLocation(); |
17324c9a FC |
778 | final long INITIAL_TS = 501; |
779 | final int NB_READS = 20; | |
780 | ||
781 | // On lower bound, returns the first event (ts = 501) | |
782 | final ITmfContext context = fExperiment.seekEvent(INITIAL_LOC); | |
783 | ||
784 | validateContextRanks(context); | |
785 | ||
786 | // Read NB_EVENTS | |
787 | ITmfEvent event; | |
788 | for (int i = 0; i < NB_READS; i++) { | |
789 | event = fExperiment.getNext(context); | |
790 | assertEquals("Event timestamp", INITIAL_TS + i, event.getTimestamp().getValue()); | |
791 | } | |
792 | ||
793 | // Make sure we stay positioned | |
794 | event = fExperiment.parseEvent(context); | |
795 | assertEquals("Event timestamp", INITIAL_TS + NB_READS, event.getTimestamp().getValue()); | |
796 | ||
797 | validateContextRanks(context); | |
798 | } | |
799 | ||
54a7a54c | 800 | public void testGetNextLocation() { |
17324c9a FC |
801 | ITmfContext context1 = fExperiment.seekEvent(0); |
802 | fExperiment.getNext(context1); | |
1e1bef82 | 803 | ITmfLocation location = context1.getLocation().clone(); |
17324c9a FC |
804 | ITmfEvent event1 = fExperiment.getNext(context1); |
805 | ITmfContext context2 = fExperiment.seekEvent(location); | |
806 | ITmfEvent event2 = fExperiment.getNext(context2); | |
807 | assertEquals("Event timestamp", event1.getTimestamp().getValue(), event2.getTimestamp().getValue()); | |
808 | } | |
809 | ||
54a7a54c | 810 | public void testGetNextEndLocation() { |
17324c9a FC |
811 | ITmfContext context1 = fExperiment.seekEvent(fExperiment.getNbEvents() - 1); |
812 | fExperiment.getNext(context1); | |
1e1bef82 | 813 | ITmfLocation location = context1.getLocation().clone(); |
17324c9a FC |
814 | ITmfContext context2 = fExperiment.seekEvent(location); |
815 | ITmfEvent event = fExperiment.getNext(context2); | |
816 | assertNull("Event", event); | |
817 | } | |
54a7a54c | 818 | |
d18dd09b ASL |
819 | // ------------------------------------------------------------------------ |
820 | // processRequest | |
821 | // ------------------------------------------------------------------------ | |
822 | ||
54a7a54c | 823 | public void testProcessRequestForNbEvents() throws InterruptedException { |
cb866e08 | 824 | |
25e48683 | 825 | final int blockSize = 100; |
d18dd09b | 826 | final int nbEvents = 1000; |
6256d8ad | 827 | final Vector<ITmfEvent> requestedEvents = new Vector<ITmfEvent>(); |
d18dd09b | 828 | |
25e48683 | 829 | final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH); |
6256d8ad | 830 | final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, nbEvents, blockSize) { |
d18dd09b | 831 | @Override |
6256d8ad | 832 | public void handleData(final ITmfEvent event) { |
25e48683 | 833 | super.handleData(event); |
f9673903 | 834 | requestedEvents.add(event); |
d18dd09b ASL |
835 | } |
836 | }; | |
837 | fExperiment.sendRequest(request); | |
838 | request.waitForCompletion(); | |
839 | ||
840 | assertEquals("nbEvents", nbEvents, requestedEvents.size()); | |
841 | assertTrue("isCompleted", request.isCompleted()); | |
842 | assertFalse("isCancelled", request.isCancelled()); | |
843 | ||
844 | // Ensure that we have distinct events. | |
25e48683 | 845 | // Don't go overboard: we are not validating the stub! |
20658947 | 846 | for (int i = 0; i < nbEvents; i++) { |
d18dd09b | 847 | assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue()); |
20658947 | 848 | } |
d18dd09b | 849 | } |
25e48683 | 850 | |
54a7a54c | 851 | public void testProcessRequestForNbEvents2() throws InterruptedException { |
cb866e08 | 852 | |
25e48683 | 853 | final int blockSize = 2 * NB_EVENTS; |
d18dd09b | 854 | final int nbEvents = 1000; |
6256d8ad | 855 | final Vector<ITmfEvent> requestedEvents = new Vector<ITmfEvent>(); |
d18dd09b | 856 | |
25e48683 | 857 | final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH); |
6256d8ad | 858 | final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, nbEvents, blockSize) { |
25e48683 | 859 | @Override |
6256d8ad | 860 | public void handleData(final ITmfEvent event) { |
25e48683 FC |
861 | super.handleData(event); |
862 | requestedEvents.add(event); | |
863 | } | |
d18dd09b ASL |
864 | }; |
865 | fExperiment.sendRequest(request); | |
866 | request.waitForCompletion(); | |
867 | ||
868 | assertEquals("nbEvents", nbEvents, requestedEvents.size()); | |
869 | assertTrue("isCompleted", request.isCompleted()); | |
870 | assertFalse("isCancelled", request.isCancelled()); | |
871 | ||
872 | // Ensure that we have distinct events. | |
25e48683 | 873 | // Don't go overboard: we are not validating the stub! |
20658947 | 874 | for (int i = 0; i < nbEvents; i++) { |
d18dd09b | 875 | assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue()); |
20658947 | 876 | } |
d18dd09b | 877 | } |
25e48683 | 878 | |
54a7a54c | 879 | public void testProcessRequestForAllEvents() throws InterruptedException { |
cb866e08 | 880 | |
9b749023 | 881 | final int nbEvents = TmfDataRequest.ALL_DATA; |
d18dd09b | 882 | final int blockSize = 1; |
6256d8ad | 883 | final Vector<ITmfEvent> requestedEvents = new Vector<ITmfEvent>(); |
25e48683 | 884 | final long nbExpectedEvents = NB_EVENTS; |
d18dd09b | 885 | |
25e48683 | 886 | final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH); |
6256d8ad | 887 | final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, nbEvents, blockSize) { |
25e48683 | 888 | @Override |
6256d8ad | 889 | public void handleData(final ITmfEvent event) { |
25e48683 FC |
890 | super.handleData(event); |
891 | requestedEvents.add(event); | |
892 | } | |
d18dd09b ASL |
893 | }; |
894 | fExperiment.sendRequest(request); | |
895 | request.waitForCompletion(); | |
896 | ||
897 | assertEquals("nbEvents", nbExpectedEvents, requestedEvents.size()); | |
898 | assertTrue("isCompleted", request.isCompleted()); | |
899 | assertFalse("isCancelled", request.isCancelled()); | |
900 | ||
901 | // Ensure that we have distinct events. | |
25e48683 | 902 | // Don't go overboard: we are not validating the stub! |
20658947 | 903 | for (int i = 0; i < nbExpectedEvents; i++) { |
d18dd09b | 904 | assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue()); |
20658947 | 905 | } |
d18dd09b | 906 | } |
25e48683 | 907 | |
d18dd09b ASL |
908 | // ------------------------------------------------------------------------ |
909 | // cancel | |
910 | // ------------------------------------------------------------------------ | |
911 | ||
54a7a54c | 912 | public void testCancel() throws InterruptedException { |
cb866e08 | 913 | |
25e48683 | 914 | final int nbEvents = NB_EVENTS; |
0316808c | 915 | final int blockSize = BLOCK_SIZE; |
6256d8ad | 916 | final Vector<ITmfEvent> requestedEvents = new Vector<ITmfEvent>(); |
d18dd09b | 917 | |
25e48683 | 918 | final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH); |
6256d8ad | 919 | final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, nbEvents, blockSize) { |
25e48683 FC |
920 | int nbRead = 0; |
921 | @Override | |
6256d8ad | 922 | public void handleData(final ITmfEvent event) { |
25e48683 FC |
923 | super.handleData(event); |
924 | requestedEvents.add(event); | |
20658947 | 925 | if (++nbRead == blockSize) { |
25e48683 | 926 | cancel(); |
20658947 | 927 | } |
25e48683 | 928 | } |
cb866e08 FC |
929 | @Override |
930 | public void handleCancel() { | |
20658947 | 931 | if (requestedEvents.size() < blockSize) { |
25e48683 | 932 | System.out.println("aie"); |
20658947 | 933 | } |
cb866e08 | 934 | } |
d18dd09b ASL |
935 | }; |
936 | fExperiment.sendRequest(request); | |
937 | request.waitForCompletion(); | |
938 | ||
939 | assertEquals("nbEvents", blockSize, requestedEvents.size()); | |
940 | assertTrue("isCompleted", request.isCompleted()); | |
941 | assertTrue("isCancelled", request.isCancelled()); | |
942 | } | |
25e48683 | 943 | |
17324c9a | 944 | } |