Merge corrected branch 'master'
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core.tests / src / org / eclipse / linuxtools / tmf / core / tests / trace / TmfExperimentTest.java
CommitLineData
d18dd09b 1/*******************************************************************************
0316808c 2 * Copyright (c) 2009, 2010, 2012 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
0316808c 11 * Francois Chouinard - Adjusted for new Trace Model
d18dd09b
ASL
12 *******************************************************************************/
13
9e0640dc 14package org.eclipse.linuxtools.tmf.core.tests.trace;
d18dd09b
ASL
15
16import java.io.File;
17import java.io.IOException;
18import java.net.URISyntaxException;
19import java.net.URL;
20import java.util.Vector;
21
22import junit.framework.TestCase;
23
9e0640dc 24import org.eclipse.core.resources.IFile;
d18dd09b
ASL
25import org.eclipse.core.runtime.FileLocator;
26import org.eclipse.core.runtime.Path;
9e0640dc 27import org.eclipse.linuxtools.internal.tmf.core.trace.TmfExperimentLocation;
72f1e62a 28import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
6c13869b
FC
29import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
30import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
31import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
b4f71e4a 32import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException;
6c13869b
FC
33import org.eclipse.linuxtools.tmf.core.request.TmfEventRequest;
34import org.eclipse.linuxtools.tmf.core.tests.TmfCoreTestPlugin;
35import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
0316808c 36import org.eclipse.linuxtools.tmf.core.trace.ITmfLocation;
6c13869b 37import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
9e0640dc
FC
38import org.eclipse.linuxtools.tmf.core.trace.TmfExperiment;
39import org.eclipse.linuxtools.tmf.core.trace.TmfLocation;
40import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfExperimentStub;
4918b8f2 41import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub;
d18dd09b
ASL
42
43/**
0316808c 44 * Test suite for the TmfExperiment class (single trace).
d18dd09b 45 */
3b38ea61 46@SuppressWarnings("nls")
d18dd09b
ASL
47public class TmfExperimentTest extends TestCase {
48
0316808c
FC
49 // ------------------------------------------------------------------------
50 // Attributes
51 // ------------------------------------------------------------------------
52
d18dd09b
ASL
53 private static final String DIRECTORY = "testfiles";
54 private static final String TEST_STREAM = "A-Test-10K";
55 private static final String EXPERIMENT = "MyExperiment";
56 private static int NB_EVENTS = 10000;
0316808c 57 private static int BLOCK_SIZE = 1000;
d18dd09b 58
9e0640dc
FC
59 private ITmfTrace<TmfEvent>[] fTestTraces;
60 @SuppressWarnings("rawtypes")
61 private TmfExperimentStub fExperiment;
d18dd09b
ASL
62
63 private static byte SCALE = (byte) -3;
64
65 // ------------------------------------------------------------------------
66 // Housekeeping
67 // ------------------------------------------------------------------------
68
9e0640dc
FC
69 @SuppressWarnings("unchecked")
70 private synchronized ITmfTrace<?>[] setupTrace(final String path) {
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) {
9e0640dc
FC
91 fExperiment = new TmfExperimentStub<ITmfEvent>(EXPERIMENT, fTestTraces, BLOCK_SIZE);
92 fExperiment.getIndexer().buildIndex(0, TmfTimeRange.ETERNITY, true);
20658947 93 }
d18dd09b
ASL
94 }
95
25e48683
FC
96 public TmfExperimentTest(final String name) throws Exception {
97 super(name);
98 }
d18dd09b 99
25e48683
FC
100 @Override
101 protected void setUp() throws Exception {
102 super.setUp();
103 setupTrace(DIRECTORY + File.separator + TEST_STREAM);
104 setupExperiment();
105 }
d18dd09b 106
25e48683
FC
107 @Override
108 protected void tearDown() throws Exception {
109 super.tearDown();
110 }
d18dd09b
ASL
111
112 // ------------------------------------------------------------------------
113 // Constructor
114 // ------------------------------------------------------------------------
115
9e0640dc
FC
116 public void testSimpleTmfExperimentConstructor() {
117
118 TmfExperiment<TmfEvent> experiment = new TmfExperiment<TmfEvent>(TmfEvent.class, EXPERIMENT, fTestTraces);
119 assertEquals("GetId", EXPERIMENT, experiment.getName());
120 assertEquals("GetCacheSize", TmfExperiment.DEFAULT_INDEX_PAGE_SIZE, experiment.getCacheSize());
121 experiment.dispose();
122
123 experiment = new TmfExperiment<TmfEvent>(TmfEvent.class, EXPERIMENT, null);
124 experiment.dispose();
125 }
126
127 public void testNormalTmfExperimentConstructor() {
cb866e08 128
25e48683 129 assertEquals("GetId", EXPERIMENT, fExperiment.getName());
d18dd09b
ASL
130 assertEquals("GetNbEvents", NB_EVENTS, fExperiment.getNbEvents());
131
07671572
FC
132 final long nbExperimentEvents = fExperiment.getNbEvents();
133 assertEquals("GetNbEvents", NB_EVENTS, nbExperimentEvents);
134
25e48683 135 final long nbTraceEvents = fExperiment.getTraces()[0].getNbEvents();
82e04272
FC
136 assertEquals("GetNbEvents", NB_EVENTS, nbTraceEvents);
137
25e48683 138 final TmfTimeRange timeRange = fExperiment.getTimeRange();
d18dd09b
ASL
139 assertEquals("getStartTime", 1, timeRange.getStartTime().getValue());
140 assertEquals("getEndTime", NB_EVENTS, timeRange.getEndTime().getValue());
25e48683 141 }
d18dd09b 142
9e0640dc
FC
143 @SuppressWarnings("static-access")
144 public void testSetCurrentExperiment() {
145
146 TmfExperiment<TmfEvent> experiment = new TmfExperiment<TmfEvent>(TmfEvent.class, EXPERIMENT, fTestTraces);
147 experiment.setCurrentExperiment(experiment);
148 assertEquals("getCurrentExperiment", experiment, experiment.getCurrentExperiment());
149
150 TmfExperiment<TmfEvent> experiment2 = new TmfExperiment<TmfEvent>(TmfEvent.class, EXPERIMENT, null);
151 experiment.setCurrentExperiment(experiment2);
152 assertEquals("getCurrentExperiment", experiment2, experiment.getCurrentExperiment());
153
154 experiment.dispose();
155 experiment2.dispose();
156 }
157
158 // ------------------------------------------------------------------------
159 // getTimestamp
160 // ------------------------------------------------------------------------
161
162 public void testGetTimestamp() throws Exception {
163 assertTrue("getTimestamp", fExperiment.getTimestamp( 0).equals(new TmfTimestamp( 1, (byte) -3)));
164 assertTrue("getTimestamp", fExperiment.getTimestamp( 10).equals(new TmfTimestamp( 11, (byte) -3)));
165 assertTrue("getTimestamp", fExperiment.getTimestamp( 100).equals(new TmfTimestamp( 101, (byte) -3)));
166 assertTrue("getTimestamp", fExperiment.getTimestamp( 1000).equals(new TmfTimestamp(1001, (byte) -3)));
167 assertTrue("getTimestamp", fExperiment.getTimestamp( 2000).equals(new TmfTimestamp(2001, (byte) -3)));
168 assertTrue("getTimestamp", fExperiment.getTimestamp( 2500).equals(new TmfTimestamp(2501, (byte) -3)));
169 assertNull("getTimestamp", fExperiment.getTimestamp(10000));
170 }
171
172 // ------------------------------------------------------------------------
173 // Bookmarks file handling
174 // ------------------------------------------------------------------------
175
176 public void testBookmarks() throws Exception {
177 assertNull("GetBookmarksFile", fExperiment.getBookmarksFile());
178
179 IFile bookmarks = (IFile) fTestTraces[0].getResource();
180 fExperiment.setBookmarksFile(bookmarks);
181 assertEquals("GetBookmarksFile", bookmarks, fExperiment.getBookmarksFile());
182 }
183
184 // ------------------------------------------------------------------------
185 // seekEvent by location
186 // ------------------------------------------------------------------------
187
188 @SuppressWarnings("unchecked")
189 public void testSeekBadLocation() throws Exception {
190 ITmfContext context = fExperiment.seekEvent((ITmfLocation<?>) new TmfLocation<Long>(0L));
191 assertNull("seekEvent", context);
192 }
193
194 public void testSeekNoTrace() throws Exception {
195 TmfExperiment<TmfEvent> experiment = new TmfExperiment<TmfEvent>(TmfEvent.class, EXPERIMENT, null);
196 @SuppressWarnings("restriction")
197 ITmfContext context = experiment.seekEvent((TmfExperimentLocation) null);
198 assertNull("seekEvent", context);
199 experiment.dispose();
200 }
201
202 // ------------------------------------------------------------------------
203 // seekEvent on ratio
204 // ------------------------------------------------------------------------
205
206 public void testSeekEventOnRatio() throws Exception {
207
208 // First event
209 ITmfContext context = fExperiment.seekEvent(0.0);
210 assertEquals("Context rank", 0, context.getRank());
211 ITmfEvent event = fExperiment.parseEvent(context);
212 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
213 assertEquals("Context rank", 0, context.getRank());
214
215 // Middle event
216 int midTrace = NB_EVENTS / 2;
217 context = fExperiment.seekEvent(0.5);
218 assertEquals("Context rank", midTrace, context.getRank());
219 event = fExperiment.parseEvent(context);
220 assertEquals("Event timestamp", midTrace + 1, event.getTimestamp().getValue());
221 assertEquals("Context rank", midTrace, context.getRank());
222
223 // Last event
224 context = fExperiment.seekEvent(1.0);
225 assertEquals("Context rank", NB_EVENTS, context.getRank());
226 event = fExperiment.parseEvent(context);
227 assertNull("Event timestamp", event);
228 assertEquals("Context rank", NB_EVENTS, context.getRank());
229
230 // Beyond last event
231 context = fExperiment.seekEvent(1.1);
232 assertEquals("Context rank", NB_EVENTS, context.getRank());
233 event = fExperiment.parseEvent(context);
234 assertNull("Event timestamp", event);
235 assertEquals("Context rank", NB_EVENTS, context.getRank());
236
237 // Negative ratio
238 context = fExperiment.seekEvent(-0.5);
239 assertEquals("Context rank", 0, context.getRank());
240 event = fExperiment.parseEvent(context);
241 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
242 assertEquals("Context rank", 0, context.getRank());
243 }
244
245 @SuppressWarnings({ "unchecked", "rawtypes" })
246 public void testGetLocationRatio() throws Exception {
247
248 // First event
249 ITmfContext context = fExperiment.seekEvent((ITmfLocation) null);
250 double ratio = fExperiment.getLocationRatio(context.getLocation());
251 context = fExperiment.seekEvent(ratio);
252 double ratio2 = fExperiment.getLocationRatio(context.getLocation());
253 assertEquals("getLocationRatio", ratio, ratio2);
254
255 // Middle event
256 context = fExperiment.seekEvent(NB_EVENTS / 2);
257 ratio = fExperiment.getLocationRatio(context.getLocation());
258 context = fExperiment.seekEvent(ratio);
259 ratio2 = fExperiment.getLocationRatio(context.getLocation());
260 assertEquals("getLocationRatio", ratio, ratio2);
261
262 // Last event
263 context = fExperiment.seekEvent(NB_EVENTS - 1);
264 ratio = fExperiment.getLocationRatio(context.getLocation());
265 context = fExperiment.seekEvent(ratio);
266 ratio2 = fExperiment.getLocationRatio(context.getLocation());
267 assertEquals("getLocationRatio", ratio, ratio2);
268 }
269
270// @SuppressWarnings({ "unchecked", "rawtypes" })
271// public void testGetCurrentLocation() throws Exception {
272// ITmfContext context = fExperiment.seekEvent((ITmfLocation) null);
273// ITmfLocation location = fExperiment.getCurrentLocation();
274// assertEquals("getCurrentLocation", location, context.getLocation());
275// }
276
d18dd09b 277 // ------------------------------------------------------------------------
0316808c 278 // seekEvent on rank
d18dd09b
ASL
279 // ------------------------------------------------------------------------
280
0316808c 281 public void testSeekRankOnCacheBoundary() throws Exception {
d18dd09b 282
0316808c 283 long cacheSize = fExperiment.getCacheSize();
9b635e61 284
0316808c
FC
285 // On lower bound, returns the first event (TS = 1)
286 ITmfContext context = fExperiment.seekEvent(0);
287 assertEquals("Context rank", 0, context.getRank());
25e48683 288
c32744d6 289 ITmfEvent event = fExperiment.getNext(context);
d18dd09b 290 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
0316808c 291 assertEquals("Context rank", 1, context.getRank());
25e48683 292
0316808c
FC
293 // Position trace at event rank [cacheSize]
294 context = fExperiment.seekEvent(cacheSize);
295 assertEquals("Context rank", cacheSize, context.getRank());
25e48683 296
c32744d6 297 event = fExperiment.getNext(context);
0316808c
FC
298 assertEquals("Event timestamp", cacheSize + 1, event.getTimestamp().getValue());
299 assertEquals("Context rank", cacheSize + 1, context.getRank());
d18dd09b 300
0316808c
FC
301 // Position trace at event rank [4 * cacheSize]
302 context = fExperiment.seekEvent(4 * cacheSize);
303 assertEquals("Context rank", 4 * cacheSize, context.getRank());
25e48683 304
c32744d6 305 event = fExperiment.getNext(context);
0316808c
FC
306 assertEquals("Event timestamp", 4 * cacheSize + 1, event.getTimestamp().getValue());
307 assertEquals("Context rank", 4 * cacheSize + 1, context.getRank());
d18dd09b
ASL
308 }
309
0316808c 310 public void testSeekRankNotOnCacheBoundary() throws Exception {
d18dd09b 311
0316808c 312 long cacheSize = fExperiment.getCacheSize();
25e48683 313
0316808c
FC
314 // Position trace at event rank 9
315 ITmfContext context = fExperiment.seekEvent(9);
316 assertEquals("Context rank", 9, context.getRank());
25e48683 317
c32744d6 318 ITmfEvent event = fExperiment.getNext(context);
d18dd09b 319 assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
0316808c 320 assertEquals("Context rank", 10, context.getRank());
d18dd09b 321
0316808c
FC
322 // Position trace at event rank [cacheSize - 1]
323 context = fExperiment.seekEvent(cacheSize - 1);
324 assertEquals("Context rank", cacheSize - 1, context.getRank());
25e48683 325
c32744d6 326 event = fExperiment.getNext(context);
0316808c
FC
327 assertEquals("Event timestamp", cacheSize, event.getTimestamp().getValue());
328 assertEquals("Context rank", cacheSize, context.getRank());
d18dd09b 329
0316808c
FC
330 // Position trace at event rank [cacheSize + 1]
331 context = fExperiment.seekEvent(cacheSize + 1);
332 assertEquals("Context rank", cacheSize + 1, context.getRank());
25e48683 333
c32744d6 334 event = fExperiment.getNext(context);
0316808c
FC
335 assertEquals("Event timestamp", cacheSize + 2, event.getTimestamp().getValue());
336 assertEquals("Context rank", cacheSize + 2, context.getRank());
d18dd09b 337
25e48683 338 // Position trace at event rank 4500
0316808c
FC
339 context = fExperiment.seekEvent(4500);
340 assertEquals("Context rank", 4500, context.getRank());
25e48683 341
c32744d6 342 event = fExperiment.getNext(context);
d18dd09b 343 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
0316808c 344 assertEquals("Context rank", 4501, context.getRank());
d18dd09b
ASL
345 }
346
0316808c 347 public void testSeekRankOutOfScope() throws Exception {
d18dd09b 348
25e48683 349 // Position trace at beginning
0316808c 350 ITmfContext context = fExperiment.seekEvent(-1);
9b635e61 351 assertEquals("Event rank", 0, context.getRank());
25e48683 352
c32744d6 353 ITmfEvent event = fExperiment.getNext(context);
d18dd09b 354 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
0316808c 355 assertEquals("Context rank", 1, context.getRank());
d18dd09b 356
25e48683 357 // Position trace at event passed the end
0316808c
FC
358 context = fExperiment.seekEvent(NB_EVENTS);
359 assertEquals("Context rank", NB_EVENTS, context.getRank());
360
c32744d6 361 event = fExperiment.getNext(context);
0316808c
FC
362 assertNull("Event", event);
363 assertEquals("Context rank", NB_EVENTS, context.getRank());
d18dd09b
ASL
364 }
365
366 // ------------------------------------------------------------------------
367 // seekEvent on timestamp
368 // ------------------------------------------------------------------------
369
0316808c 370 public void testSeekTimestampOnCacheBoundary() throws Exception {
d18dd09b 371
0316808c 372 long cacheSize = fExperiment.getCacheSize();
25e48683 373
0316808c
FC
374 // Position trace at event rank 0
375 ITmfContext context = fExperiment.seekEvent(new TmfTimestamp(1, SCALE, 0));
376 assertEquals("Context rank", 0, context.getRank());
25e48683 377
c32744d6 378 ITmfEvent event = fExperiment.getNext(context);
d18dd09b 379 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
0316808c 380 assertEquals("Context rank", 1, context.getRank());
25e48683 381
0316808c
FC
382 // Position trace at event rank [cacheSize]
383 context = fExperiment.seekEvent(new TmfTimestamp(cacheSize + 1, SCALE, 0));
384 assertEquals("Event rank", cacheSize, context.getRank());
25e48683 385
c32744d6 386 event = fExperiment.getNext(context);
0316808c
FC
387 assertEquals("Event timestamp", cacheSize + 1, event.getTimestamp().getValue());
388 assertEquals("Context rank", cacheSize + 1, context.getRank());
d18dd09b 389
0316808c
FC
390 // Position trace at event rank [4 * cacheSize]
391 context = fExperiment.seekEvent(new TmfTimestamp(4 * cacheSize + 1, SCALE, 0));
392 assertEquals("Context rank", 4 * cacheSize, context.getRank());
25e48683 393
c32744d6 394 event = fExperiment.getNext(context);
0316808c
FC
395 assertEquals("Event timestamp", 4 * cacheSize + 1, event.getTimestamp().getValue());
396 assertEquals("Context rank", 4 * cacheSize + 1, context.getRank());
d18dd09b
ASL
397 }
398
0316808c 399 public void testSeekTimestampNotOnCacheBoundary() throws Exception {
d18dd09b 400
0316808c
FC
401 // Position trace at event rank 1 (TS = 2)
402 ITmfContext context = fExperiment.seekEvent(new TmfTimestamp(2, SCALE, 0));
403 assertEquals("Context rank", 1, context.getRank());
25e48683 404
c32744d6 405 ITmfEvent event = fExperiment.getNext(context);
d18dd09b 406 assertEquals("Event timestamp", 2, event.getTimestamp().getValue());
0316808c 407 assertEquals("Context rank", 2, context.getRank());
d18dd09b 408
0316808c 409 // Position trace at event rank 9 (TS = 10)
25e48683 410 context = fExperiment.seekEvent(new TmfTimestamp(10, SCALE, 0));
0316808c 411 assertEquals("Context rank", 9, context.getRank());
25e48683 412
c32744d6 413 event = fExperiment.getNext(context);
d18dd09b 414 assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
0316808c 415 assertEquals("Context rank", 10, context.getRank());
d18dd09b 416
0316808c 417 // Position trace at event rank 999 (TS = 1000)
d18dd09b 418 context = fExperiment.seekEvent(new TmfTimestamp(1000, SCALE, 0));
0316808c 419 assertEquals("Context rank", 999, context.getRank());
25e48683 420
c32744d6 421 event = fExperiment.getNext(context);
d18dd09b 422 assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
0316808c 423 assertEquals("Context rank", 1000, context.getRank());
d18dd09b 424
0316808c 425 // Position trace at event rank 1001 (TS = 1002)
d18dd09b 426 context = fExperiment.seekEvent(new TmfTimestamp(1002, SCALE, 0));
0316808c 427 assertEquals("Context rank", 1001, context.getRank());
25e48683 428
c32744d6 429 event = fExperiment.getNext(context);
d18dd09b 430 assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
0316808c 431 assertEquals("Context rank", 1002, context.getRank());
d18dd09b 432
0316808c 433 // Position trace at event rank 4500 (TS = 4501)
d18dd09b 434 context = fExperiment.seekEvent(new TmfTimestamp(4501, SCALE, 0));
0316808c 435 assertEquals("Context rank", 4500, context.getRank());
25e48683 436
c32744d6 437 event = fExperiment.getNext(context);
d18dd09b 438 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
0316808c 439 assertEquals("Context rank", 4501, context.getRank());
d18dd09b
ASL
440 }
441
0316808c 442 public void testSeekTimestampOutOfScope() throws Exception {
d18dd09b 443
25e48683 444 // Position trace at beginning
0316808c 445 ITmfContext context = fExperiment.seekEvent(new TmfTimestamp(-1, SCALE, 0));
d18dd09b 446 assertEquals("Event rank", 0, context.getRank());
25e48683 447
c32744d6 448 ITmfEvent event = fExperiment.getNext(context);
d18dd09b
ASL
449 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
450 assertEquals("Event rank", 1, context.getRank());
451
25e48683 452 // Position trace at event passed the end
d18dd09b 453 context = fExperiment.seekEvent(new TmfTimestamp(NB_EVENTS + 1, SCALE, 0));
c32744d6 454 event = fExperiment.getNext(context);
0316808c 455 assertNull("Event location", event);
9b635e61 456 assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
d18dd09b
ASL
457 }
458
459 // ------------------------------------------------------------------------
0316808c 460 // seekEvent by location (context rank is undefined)
d18dd09b
ASL
461 // ------------------------------------------------------------------------
462
0316808c
FC
463 public void testSeekLocationOnCacheBoundary() throws Exception {
464
465 long cacheSize = fExperiment.getCacheSize();
d18dd09b 466
0316808c
FC
467 // Position trace at event rank 0
468 ITmfContext tmpContext = fExperiment.seekEvent(0);
469 ITmfContext context = fExperiment.seekEvent(tmpContext.getLocation());
25e48683 470
c32744d6 471 ITmfEvent event = fExperiment.getNext(context);
d18dd09b 472 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
25e48683 473
c32744d6 474 event = fExperiment.getNext(context);
0316808c 475 assertEquals("Event timestamp", 2, event.getTimestamp().getValue());
d18dd09b 476
0316808c
FC
477 // Position trace at event rank 'cacheSize'
478 tmpContext = fExperiment.seekEvent(cacheSize);
479 context = fExperiment.seekEvent(tmpContext.getLocation());
25e48683 480
c32744d6 481 event = fExperiment.getNext(context);
0316808c 482 assertEquals("Event timestamp", cacheSize + 1, event.getTimestamp().getValue());
25e48683 483
c32744d6 484 event = fExperiment.getNext(context);
0316808c 485 assertEquals("Event timestamp", cacheSize + 2, event.getTimestamp().getValue());
d18dd09b 486
0316808c
FC
487 // Position trace at event rank 4 * 'cacheSize'
488 tmpContext = fExperiment.seekEvent(4 * cacheSize);
489 context = fExperiment.seekEvent(tmpContext.getLocation());
25e48683 490
c32744d6 491 event = fExperiment.getNext(context);
0316808c 492 assertEquals("Event timestamp", 4 * cacheSize + 1, event.getTimestamp().getValue());
25e48683 493
c32744d6 494 event = fExperiment.getNext(context);
0316808c 495 assertEquals("Event timestamp", 4 * cacheSize + 2, event.getTimestamp().getValue());
d18dd09b
ASL
496 }
497
0316808c 498 public void testSeekLocationNotOnCacheBoundary() throws Exception {
25e48683 499
0316808c 500 long cacheSize = fExperiment.getCacheSize();
25e48683 501
0316808c
FC
502 // Position trace at event 'cacheSize' - 1
503 ITmfContext tmpContext = fExperiment.seekEvent(cacheSize - 1);
504 ITmfContext context = fExperiment.seekEvent(tmpContext.getLocation());
d18dd09b 505
c32744d6 506 ITmfEvent event = fExperiment.getNext(context);
0316808c 507 assertEquals("Event timestamp", cacheSize, event.getTimestamp().getValue());
25e48683 508
c32744d6 509 event = fExperiment.getNext(context);
0316808c 510 assertEquals("Event timestamp", cacheSize + 1, event.getTimestamp().getValue());
d18dd09b 511
0316808c
FC
512 // Position trace at event rank 2 * 'cacheSize' - 1
513 tmpContext = fExperiment.seekEvent(2 * cacheSize - 1);
514 context = fExperiment.seekEvent(tmpContext.getLocation());
515 context = fExperiment.seekEvent(2 * cacheSize - 1);
25e48683 516
c32744d6 517 event = fExperiment.getNext(context);
0316808c 518 assertEquals("Event timestamp", 2 * cacheSize, event.getTimestamp().getValue());
25e48683 519
c32744d6 520 event = fExperiment.getNext(context);
0316808c 521 assertEquals("Event timestamp", 2 * cacheSize + 1, event.getTimestamp().getValue());
d18dd09b 522
25e48683 523 // Position trace at event rank 4500
0316808c
FC
524 tmpContext = fExperiment.seekEvent(4500);
525 context = fExperiment.seekEvent(tmpContext.getLocation());
25e48683 526
c32744d6 527 event = fExperiment.getNext(context);
d18dd09b 528 assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
25e48683 529
c32744d6 530 event = fExperiment.getNext(context);
0316808c 531 assertEquals("Event timestamp", 4502, event.getTimestamp().getValue());
d18dd09b
ASL
532 }
533
0316808c 534 public void testSeekLocationOutOfScope() throws Exception {
d18dd09b 535
25e48683 536 // Position trace at beginning
0316808c 537 ITmfContext context = fExperiment.seekEvent((ITmfLocation<?>) null);
25e48683 538
c32744d6 539 ITmfEvent event = fExperiment.getNext(context);
d18dd09b 540 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
d18dd09b 541 }
25e48683 542
9b635e61 543 // ------------------------------------------------------------------------
0316808c 544 // readtNextEvent - updates the context
9b635e61
FC
545 // ------------------------------------------------------------------------
546
0316808c 547 public void testReadNextEvent() throws Exception {
9b635e61 548
25e48683 549 // On lower bound, returns the first event (ts = 0)
0316808c 550 final ITmfContext context = fExperiment.seekEvent(0);
c32744d6 551 ITmfEvent event = fExperiment.getNext(context);
9b635e61
FC
552 assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
553
554 for (int i = 2; i < 20; i++) {
c32744d6 555 event = fExperiment.getNext(context);
9b635e61
FC
556 assertEquals("Event timestamp", i, event.getTimestamp().getValue());
557 }
558 }
559
d18dd09b
ASL
560 // ------------------------------------------------------------------------
561 // processRequest
562 // ------------------------------------------------------------------------
563
564 public void testProcessRequestForNbEvents() throws Exception {
cb866e08 565
25e48683 566 final int blockSize = 100;
d18dd09b
ASL
567 final int nbEvents = 1000;
568 final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
569
25e48683 570 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
d18dd09b
ASL
571 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
572 @Override
25e48683
FC
573 public void handleData(final TmfEvent event) {
574 super.handleData(event);
f9673903 575 requestedEvents.add(event);
d18dd09b
ASL
576 }
577 };
578 fExperiment.sendRequest(request);
579 request.waitForCompletion();
580
581 assertEquals("nbEvents", nbEvents, requestedEvents.size());
582 assertTrue("isCompleted", request.isCompleted());
583 assertFalse("isCancelled", request.isCancelled());
584
585 // Ensure that we have distinct events.
25e48683 586 // Don't go overboard: we are not validating the stub!
20658947 587 for (int i = 0; i < nbEvents; i++) {
d18dd09b 588 assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue());
20658947 589 }
d18dd09b 590 }
25e48683 591
d18dd09b 592 public void testProcessRequestForNbEvents2() throws Exception {
cb866e08 593
25e48683 594 final int blockSize = 2 * NB_EVENTS;
d18dd09b
ASL
595 final int nbEvents = 1000;
596 final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
597
25e48683 598 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
d18dd09b 599 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
25e48683
FC
600 @Override
601 public void handleData(final TmfEvent event) {
602 super.handleData(event);
603 requestedEvents.add(event);
604 }
d18dd09b
ASL
605 };
606 fExperiment.sendRequest(request);
607 request.waitForCompletion();
608
609 assertEquals("nbEvents", nbEvents, requestedEvents.size());
610 assertTrue("isCompleted", request.isCompleted());
611 assertFalse("isCancelled", request.isCancelled());
612
613 // Ensure that we have distinct events.
25e48683 614 // Don't go overboard: we are not validating the stub!
20658947 615 for (int i = 0; i < nbEvents; i++) {
d18dd09b 616 assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue());
20658947 617 }
d18dd09b 618 }
25e48683 619
d18dd09b 620 public void testProcessRequestForAllEvents() throws Exception {
cb866e08 621
25e48683 622 final int nbEvents = TmfEventRequest.ALL_DATA;
d18dd09b
ASL
623 final int blockSize = 1;
624 final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
25e48683 625 final long nbExpectedEvents = NB_EVENTS;
d18dd09b 626
25e48683 627 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
d18dd09b 628 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
25e48683
FC
629 @Override
630 public void handleData(final TmfEvent event) {
631 super.handleData(event);
632 requestedEvents.add(event);
633 }
d18dd09b
ASL
634 };
635 fExperiment.sendRequest(request);
636 request.waitForCompletion();
637
638 assertEquals("nbEvents", nbExpectedEvents, requestedEvents.size());
639 assertTrue("isCompleted", request.isCompleted());
640 assertFalse("isCancelled", request.isCancelled());
641
642 // Ensure that we have distinct events.
25e48683 643 // Don't go overboard: we are not validating the stub!
20658947 644 for (int i = 0; i < nbExpectedEvents; i++) {
d18dd09b 645 assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue());
20658947 646 }
d18dd09b 647 }
25e48683 648
d18dd09b
ASL
649 // ------------------------------------------------------------------------
650 // cancel
651 // ------------------------------------------------------------------------
652
653 public void testCancel() throws Exception {
cb866e08 654
25e48683 655 final int nbEvents = NB_EVENTS;
0316808c 656 final int blockSize = BLOCK_SIZE;
d18dd09b
ASL
657 final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
658
25e48683 659 final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
d18dd09b 660 final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
25e48683
FC
661 int nbRead = 0;
662 @Override
663 public void handleData(final TmfEvent event) {
664 super.handleData(event);
665 requestedEvents.add(event);
20658947 666 if (++nbRead == blockSize) {
25e48683 667 cancel();
20658947 668 }
25e48683 669 }
cb866e08
FC
670 @Override
671 public void handleCancel() {
20658947 672 if (requestedEvents.size() < blockSize) {
25e48683 673 System.out.println("aie");
20658947 674 }
cb866e08 675 }
d18dd09b
ASL
676 };
677 fExperiment.sendRequest(request);
678 request.waitForCompletion();
679
680 assertEquals("nbEvents", blockSize, requestedEvents.size());
681 assertTrue("isCompleted", request.isCompleted());
682 assertTrue("isCancelled", request.isCancelled());
683 }
25e48683 684
d18dd09b 685}
This page took 0.0795439999999999 seconds and 5 git commands to generate.