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