Commit | Line | Data |
---|---|---|
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 | ||
6c13869b | 14 | package org.eclipse.linuxtools.tmf.core.tests.experiment; |
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 | ||
24 | import org.eclipse.core.runtime.FileLocator; | |
25 | import org.eclipse.core.runtime.Path; | |
72f1e62a | 26 | import org.eclipse.linuxtools.tmf.core.event.ITmfEvent; |
6c13869b FC |
27 | import org.eclipse.linuxtools.tmf.core.event.TmfEvent; |
28 | import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange; | |
29 | import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp; | |
b4f71e4a | 30 | import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException; |
6c13869b | 31 | import org.eclipse.linuxtools.tmf.core.experiment.TmfExperiment; |
6c13869b FC |
32 | import org.eclipse.linuxtools.tmf.core.request.TmfEventRequest; |
33 | import org.eclipse.linuxtools.tmf.core.tests.TmfCoreTestPlugin; | |
34 | import org.eclipse.linuxtools.tmf.core.trace.ITmfContext; | |
0316808c | 35 | import org.eclipse.linuxtools.tmf.core.trace.ITmfLocation; |
6c13869b | 36 | import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace; |
4918b8f2 | 37 | import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub; |
d18dd09b ASL |
38 | |
39 | /** | |
0316808c | 40 | * Test suite for the TmfExperiment class (multiple traces). |
d18dd09b | 41 | */ |
3b38ea61 | 42 | @SuppressWarnings("nls") |
d18dd09b ASL |
43 | public class TmfMultiTraceExperimentTest extends TestCase { |
44 | ||
0316808c FC |
45 | // ------------------------------------------------------------------------ |
46 | // Attributes | |
47 | // ------------------------------------------------------------------------ | |
48 | ||
d18dd09b ASL |
49 | private static final String DIRECTORY = "testfiles"; |
50 | private static final String TEST_STREAM1 = "O-Test-10K"; | |
51 | private static final String TEST_STREAM2 = "E-Test-10K"; | |
52 | private static final String EXPERIMENT = "MyExperiment"; | |
53 | private static int NB_EVENTS = 20000; | |
9b635e61 | 54 | private static int BLOCK_SIZE = 1000; |
d18dd09b | 55 | |
f4c52cea | 56 | private static ITmfTrace<?>[] fTraces; |
d18dd09b ASL |
57 | private static TmfExperiment<TmfEvent> fExperiment; |
58 | ||
59 | private static byte SCALE = (byte) -3; | |
60 | ||
61 | // ------------------------------------------------------------------------ | |
62 | // Housekeeping | |
63 | // ------------------------------------------------------------------------ | |
64 | ||
25e48683 FC |
65 | private synchronized static ITmfTrace<?>[] setupTrace(final String path1, final String path2) { |
66 | if (fTraces == null) { | |
67 | fTraces = new ITmfTrace[2]; | |
68 | try { | |
69 | URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path1), null); | |
70 | File test = new File(FileLocator.toFileURL(location).toURI()); | |
20658947 | 71 | final TmfTraceStub trace1 = new TmfTraceStub(test.getPath(), 0, true); |
25e48683 FC |
72 | fTraces[0] = trace1; |
73 | location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path2), null); | |
74 | test = new File(FileLocator.toFileURL(location).toURI()); | |
20658947 | 75 | final TmfTraceStub trace2 = new TmfTraceStub(test.getPath(), 0, true); |
25e48683 | 76 | fTraces[1] = trace2; |
b4f71e4a FC |
77 | } catch (final TmfTraceException e) { |
78 | e.printStackTrace(); | |
25e48683 FC |
79 | } catch (final URISyntaxException e) { |
80 | e.printStackTrace(); | |
81 | } catch (final IOException e) { | |
82 | e.printStackTrace(); | |
83 | } | |
84 | } | |
85 | return fTraces; | |
d18dd09b ASL |
86 | } |
87 | ||
25e48683 FC |
88 | public TmfMultiTraceExperimentTest(final String name) throws Exception { |
89 | super(name); | |
90 | } | |
d18dd09b | 91 | |
07671572 | 92 | @SuppressWarnings("unchecked") |
25e48683 FC |
93 | @Override |
94 | protected void setUp() throws Exception { | |
95 | super.setUp(); | |
96 | setupTrace(DIRECTORY + File.separator + TEST_STREAM1, DIRECTORY + File.separator + TEST_STREAM2); | |
07671572 FC |
97 | if (fExperiment == null) { |
98 | fExperiment = new TmfExperiment<TmfEvent>(TmfEvent.class, EXPERIMENT, (ITmfTrace<TmfEvent>[]) fTraces, TmfTimestamp.ZERO, BLOCK_SIZE, true); | |
99 | } | |
25e48683 | 100 | } |
d18dd09b | 101 | |
25e48683 FC |
102 | @Override |
103 | protected void tearDown() throws Exception { | |
104 | super.tearDown(); | |
105 | } | |
d18dd09b ASL |
106 | |
107 | // ------------------------------------------------------------------------ | |
108 | // Constructor | |
109 | // ------------------------------------------------------------------------ | |
110 | ||
25e48683 | 111 | public void testBasicTmfExperimentConstructor() { |
9b635e61 | 112 | |
25e48683 | 113 | assertEquals("GetId", EXPERIMENT, fExperiment.getName()); |
d18dd09b ASL |
114 | assertEquals("GetNbEvents", NB_EVENTS, fExperiment.getNbEvents()); |
115 | ||
25e48683 | 116 | final TmfTimeRange timeRange = fExperiment.getTimeRange(); |
d18dd09b ASL |
117 | assertEquals("getStartTime", 1, timeRange.getStartTime().getValue()); |
118 | assertEquals("getEndTime", NB_EVENTS, timeRange.getEndTime().getValue()); | |
25e48683 | 119 | } |
d18dd09b | 120 | |
d18dd09b | 121 | // ------------------------------------------------------------------------ |
0316808c | 122 | // seekEvent on rank |
d18dd09b ASL |
123 | // ------------------------------------------------------------------------ |
124 | ||
0316808c | 125 | public void testSeekRankOnCacheBoundary() throws Exception { |
d18dd09b | 126 | |
0316808c | 127 | long cacheSize = fExperiment.getCacheSize(); |
9b635e61 | 128 | |
0316808c FC |
129 | // On lower bound, returns the first event (TS = 1) |
130 | ITmfContext context = fExperiment.seekEvent(0); | |
131 | assertEquals("Context rank", 0, context.getRank()); | |
25e48683 | 132 | |
c32744d6 | 133 | ITmfEvent event = fExperiment.getNext(context); |
d18dd09b | 134 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
0316808c | 135 | assertEquals("Context rank", 1, context.getRank()); |
25e48683 | 136 | |
0316808c FC |
137 | // Position trace at event rank [cacheSize] |
138 | context = fExperiment.seekEvent(cacheSize); | |
139 | assertEquals("Context rank", cacheSize, context.getRank()); | |
25e48683 | 140 | |
c32744d6 | 141 | event = fExperiment.getNext(context); |
0316808c FC |
142 | assertEquals("Event timestamp", cacheSize + 1, event.getTimestamp().getValue()); |
143 | assertEquals("Context rank", cacheSize + 1, context.getRank()); | |
d18dd09b | 144 | |
0316808c FC |
145 | // Position trace at event rank [4 * cacheSize] |
146 | context = fExperiment.seekEvent(4 * cacheSize); | |
147 | assertEquals("Context rank", 4 * cacheSize, context.getRank()); | |
25e48683 | 148 | |
c32744d6 | 149 | event = fExperiment.getNext(context); |
0316808c FC |
150 | assertEquals("Event timestamp", 4 * cacheSize + 1, event.getTimestamp().getValue()); |
151 | assertEquals("Context rank", 4 * cacheSize + 1, context.getRank()); | |
d18dd09b ASL |
152 | } |
153 | ||
0316808c | 154 | public void testSeekRankNotOnCacheBoundary() throws Exception { |
d18dd09b | 155 | |
0316808c | 156 | long cacheSize = fExperiment.getCacheSize(); |
25e48683 | 157 | |
0316808c FC |
158 | // Position trace at event rank 9 |
159 | ITmfContext context = fExperiment.seekEvent(9); | |
160 | assertEquals("Context rank", 9, context.getRank()); | |
25e48683 | 161 | |
c32744d6 | 162 | ITmfEvent event = fExperiment.getNext(context); |
d18dd09b | 163 | assertEquals("Event timestamp", 10, event.getTimestamp().getValue()); |
0316808c | 164 | assertEquals("Context rank", 10, context.getRank()); |
d18dd09b | 165 | |
0316808c FC |
166 | // Position trace at event rank [cacheSize - 1] |
167 | context = fExperiment.seekEvent(cacheSize - 1); | |
168 | assertEquals("Context rank", cacheSize - 1, context.getRank()); | |
25e48683 | 169 | |
c32744d6 | 170 | event = fExperiment.getNext(context); |
0316808c FC |
171 | assertEquals("Event timestamp", cacheSize, event.getTimestamp().getValue()); |
172 | assertEquals("Context rank", cacheSize, context.getRank()); | |
d18dd09b | 173 | |
0316808c FC |
174 | // Position trace at event rank [cacheSize + 1] |
175 | context = fExperiment.seekEvent(cacheSize + 1); | |
176 | assertEquals("Context rank", cacheSize + 1, context.getRank()); | |
25e48683 | 177 | |
c32744d6 | 178 | event = fExperiment.getNext(context); |
0316808c FC |
179 | assertEquals("Event timestamp", cacheSize + 2, event.getTimestamp().getValue()); |
180 | assertEquals("Context rank", cacheSize + 2, context.getRank()); | |
d18dd09b | 181 | |
25e48683 | 182 | // Position trace at event rank 4500 |
0316808c FC |
183 | context = fExperiment.seekEvent(4500); |
184 | assertEquals("Context rank", 4500, context.getRank()); | |
25e48683 | 185 | |
c32744d6 | 186 | event = fExperiment.getNext(context); |
d18dd09b | 187 | assertEquals("Event timestamp", 4501, event.getTimestamp().getValue()); |
0316808c | 188 | assertEquals("Context rank", 4501, context.getRank()); |
d18dd09b ASL |
189 | } |
190 | ||
0316808c | 191 | public void testSeekRankOutOfScope() throws Exception { |
d18dd09b | 192 | |
25e48683 | 193 | // Position trace at beginning |
0316808c | 194 | ITmfContext context = fExperiment.seekEvent(-1); |
d18dd09b | 195 | assertEquals("Event rank", 0, context.getRank()); |
25e48683 | 196 | |
c32744d6 | 197 | ITmfEvent event = fExperiment.getNext(context); |
d18dd09b | 198 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
0316808c | 199 | assertEquals("Context rank", 1, context.getRank()); |
d18dd09b | 200 | |
25e48683 | 201 | // Position trace at event passed the end |
0316808c FC |
202 | context = fExperiment.seekEvent(NB_EVENTS); |
203 | assertEquals("Context rank", NB_EVENTS, context.getRank()); | |
204 | ||
c32744d6 | 205 | event = fExperiment.getNext(context); |
0316808c FC |
206 | assertNull("Event", event); |
207 | assertEquals("Context rank", NB_EVENTS, context.getRank()); | |
d18dd09b ASL |
208 | } |
209 | ||
25e48683 FC |
210 | // ------------------------------------------------------------------------ |
211 | // seekEvent on timestamp | |
212 | // ------------------------------------------------------------------------ | |
213 | ||
0316808c | 214 | public void testSeekTimestampOnCacheBoundary() throws Exception { |
25e48683 | 215 | |
0316808c | 216 | long cacheSize = fExperiment.getCacheSize(); |
25e48683 | 217 | |
0316808c FC |
218 | // Position trace at event rank 0 |
219 | ITmfContext context = fExperiment.seekEvent(new TmfTimestamp(1, SCALE, 0)); | |
220 | assertEquals("Context rank", 0, context.getRank()); | |
25e48683 | 221 | |
c32744d6 | 222 | ITmfEvent event = fExperiment.getNext(context); |
25e48683 | 223 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
0316808c | 224 | assertEquals("Context rank", 1, context.getRank()); |
25e48683 | 225 | |
0316808c FC |
226 | // Position trace at event rank [cacheSize] |
227 | context = fExperiment.seekEvent(new TmfTimestamp(cacheSize + 1, SCALE, 0)); | |
228 | assertEquals("Event rank", cacheSize, context.getRank()); | |
25e48683 | 229 | |
c32744d6 | 230 | event = fExperiment.getNext(context); |
0316808c FC |
231 | assertEquals("Event timestamp", cacheSize + 1, event.getTimestamp().getValue()); |
232 | assertEquals("Context rank", cacheSize + 1, context.getRank()); | |
25e48683 | 233 | |
0316808c FC |
234 | // Position trace at event rank [4 * cacheSize] |
235 | context = fExperiment.seekEvent(new TmfTimestamp(4 * cacheSize + 1, SCALE, 0)); | |
236 | assertEquals("Context rank", 4 * cacheSize, context.getRank()); | |
25e48683 | 237 | |
c32744d6 | 238 | event = fExperiment.getNext(context); |
0316808c FC |
239 | assertEquals("Event timestamp", 4 * cacheSize + 1, event.getTimestamp().getValue()); |
240 | assertEquals("Context rank", 4 * cacheSize + 1, context.getRank()); | |
25e48683 FC |
241 | } |
242 | ||
0316808c | 243 | public void testSeekTimestampNotOnCacheBoundary() throws Exception { |
25e48683 | 244 | |
0316808c FC |
245 | // Position trace at event rank 1 (TS = 2) |
246 | ITmfContext context = fExperiment.seekEvent(new TmfTimestamp(2, SCALE, 0)); | |
247 | assertEquals("Context rank", 1, context.getRank()); | |
25e48683 | 248 | |
c32744d6 | 249 | ITmfEvent event = fExperiment.getNext(context); |
25e48683 | 250 | assertEquals("Event timestamp", 2, event.getTimestamp().getValue()); |
0316808c | 251 | assertEquals("Context rank", 2, context.getRank()); |
25e48683 | 252 | |
0316808c | 253 | // Position trace at event rank 9 (TS = 10) |
25e48683 | 254 | context = fExperiment.seekEvent(new TmfTimestamp(10, SCALE, 0)); |
0316808c | 255 | assertEquals("Context rank", 9, context.getRank()); |
25e48683 | 256 | |
c32744d6 | 257 | event = fExperiment.getNext(context); |
25e48683 | 258 | assertEquals("Event timestamp", 10, event.getTimestamp().getValue()); |
0316808c | 259 | assertEquals("Context rank", 10, context.getRank()); |
25e48683 | 260 | |
0316808c | 261 | // Position trace at event rank 999 (TS = 1000) |
25e48683 | 262 | context = fExperiment.seekEvent(new TmfTimestamp(1000, SCALE, 0)); |
0316808c | 263 | assertEquals("Context rank", 999, context.getRank()); |
25e48683 | 264 | |
c32744d6 | 265 | event = fExperiment.getNext(context); |
25e48683 | 266 | assertEquals("Event timestamp", 1000, event.getTimestamp().getValue()); |
0316808c | 267 | assertEquals("Context rank", 1000, context.getRank()); |
25e48683 | 268 | |
0316808c | 269 | // Position trace at event rank 1001 (TS = 1002) |
25e48683 | 270 | context = fExperiment.seekEvent(new TmfTimestamp(1002, SCALE, 0)); |
0316808c | 271 | assertEquals("Context rank", 1001, context.getRank()); |
25e48683 | 272 | |
c32744d6 | 273 | event = fExperiment.getNext(context); |
25e48683 | 274 | assertEquals("Event timestamp", 1002, event.getTimestamp().getValue()); |
0316808c | 275 | assertEquals("Context rank", 1002, context.getRank()); |
25e48683 | 276 | |
0316808c | 277 | // Position trace at event rank 4500 (TS = 4501) |
25e48683 | 278 | context = fExperiment.seekEvent(new TmfTimestamp(4501, SCALE, 0)); |
0316808c | 279 | assertEquals("Context rank", 4500, context.getRank()); |
25e48683 | 280 | |
c32744d6 | 281 | event = fExperiment.getNext(context); |
25e48683 | 282 | assertEquals("Event timestamp", 4501, event.getTimestamp().getValue()); |
0316808c | 283 | assertEquals("Context rank", 4501, context.getRank()); |
25e48683 FC |
284 | } |
285 | ||
0316808c | 286 | public void testSeekTimestampOutOfScope() throws Exception { |
25e48683 FC |
287 | |
288 | // Position trace at beginning | |
0316808c | 289 | ITmfContext context = fExperiment.seekEvent(new TmfTimestamp(-1, SCALE, 0)); |
25e48683 FC |
290 | assertEquals("Event rank", 0, context.getRank()); |
291 | ||
c32744d6 | 292 | ITmfEvent event = fExperiment.getNext(context); |
25e48683 FC |
293 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
294 | assertEquals("Event rank", 1, context.getRank()); | |
295 | ||
296 | // Position trace at event passed the end | |
297 | context = fExperiment.seekEvent(new TmfTimestamp(NB_EVENTS + 1, SCALE, 0)); | |
c32744d6 | 298 | event = fExperiment.getNext(context); |
0316808c | 299 | assertNull("Event location", event); |
9b635e61 | 300 | assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank()); |
25e48683 FC |
301 | } |
302 | ||
303 | // ------------------------------------------------------------------------ | |
0316808c | 304 | // seekEvent by location (context rank is undefined) |
25e48683 FC |
305 | // ------------------------------------------------------------------------ |
306 | ||
0316808c FC |
307 | public void testSeekLocationOnCacheBoundary() throws Exception { |
308 | ||
309 | long cacheSize = fExperiment.getCacheSize(); | |
25e48683 | 310 | |
0316808c FC |
311 | // Position trace at event rank 0 |
312 | ITmfContext tmpContext = fExperiment.seekEvent(0); | |
313 | ITmfContext context = fExperiment.seekEvent(tmpContext.getLocation()); | |
25e48683 | 314 | |
c32744d6 | 315 | ITmfEvent event = fExperiment.getNext(context); |
25e48683 | 316 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
25e48683 | 317 | |
c32744d6 | 318 | event = fExperiment.getNext(context); |
0316808c | 319 | assertEquals("Event timestamp", 2, event.getTimestamp().getValue()); |
25e48683 | 320 | |
0316808c FC |
321 | // Position trace at event rank 'cacheSize' |
322 | tmpContext = fExperiment.seekEvent(cacheSize); | |
323 | context = fExperiment.seekEvent(tmpContext.getLocation()); | |
25e48683 | 324 | |
c32744d6 | 325 | event = fExperiment.getNext(context); |
0316808c | 326 | assertEquals("Event timestamp", cacheSize + 1, event.getTimestamp().getValue()); |
25e48683 | 327 | |
c32744d6 | 328 | event = fExperiment.getNext(context); |
0316808c | 329 | assertEquals("Event timestamp", cacheSize + 2, event.getTimestamp().getValue()); |
25e48683 | 330 | |
0316808c FC |
331 | // Position trace at event rank 4 * 'cacheSize' |
332 | tmpContext = fExperiment.seekEvent(4 * cacheSize); | |
333 | context = fExperiment.seekEvent(tmpContext.getLocation()); | |
25e48683 | 334 | |
c32744d6 | 335 | event = fExperiment.getNext(context); |
0316808c | 336 | assertEquals("Event timestamp", 4 * cacheSize + 1, event.getTimestamp().getValue()); |
25e48683 | 337 | |
c32744d6 | 338 | event = fExperiment.getNext(context); |
0316808c | 339 | assertEquals("Event timestamp", 4 * cacheSize + 2, event.getTimestamp().getValue()); |
25e48683 FC |
340 | } |
341 | ||
0316808c | 342 | public void testSeekLocationNotOnCacheBoundary() throws Exception { |
25e48683 | 343 | |
0316808c | 344 | long cacheSize = fExperiment.getCacheSize(); |
25e48683 | 345 | |
0316808c FC |
346 | // Position trace at event 'cacheSize' - 1 |
347 | ITmfContext tmpContext = fExperiment.seekEvent(cacheSize - 1); | |
348 | ITmfContext context = fExperiment.seekEvent(tmpContext.getLocation()); | |
25e48683 | 349 | |
c32744d6 | 350 | ITmfEvent event = fExperiment.getNext(context); |
0316808c | 351 | assertEquals("Event timestamp", cacheSize, event.getTimestamp().getValue()); |
25e48683 | 352 | |
c32744d6 | 353 | event = fExperiment.getNext(context); |
0316808c | 354 | assertEquals("Event timestamp", cacheSize + 1, event.getTimestamp().getValue()); |
25e48683 | 355 | |
0316808c FC |
356 | // Position trace at event rank 2 * 'cacheSize' - 1 |
357 | tmpContext = fExperiment.seekEvent(2 * cacheSize - 1); | |
358 | context = fExperiment.seekEvent(tmpContext.getLocation()); | |
359 | context = fExperiment.seekEvent(2 * cacheSize - 1); | |
25e48683 | 360 | |
c32744d6 | 361 | event = fExperiment.getNext(context); |
0316808c | 362 | assertEquals("Event timestamp", 2 * cacheSize, event.getTimestamp().getValue()); |
25e48683 | 363 | |
c32744d6 | 364 | event = fExperiment.getNext(context); |
0316808c | 365 | assertEquals("Event timestamp", 2 * cacheSize + 1, event.getTimestamp().getValue()); |
25e48683 FC |
366 | |
367 | // Position trace at event rank 4500 | |
0316808c FC |
368 | tmpContext = fExperiment.seekEvent(4500); |
369 | context = fExperiment.seekEvent(tmpContext.getLocation()); | |
25e48683 | 370 | |
c32744d6 | 371 | event = fExperiment.getNext(context); |
25e48683 | 372 | assertEquals("Event timestamp", 4501, event.getTimestamp().getValue()); |
25e48683 | 373 | |
c32744d6 | 374 | event = fExperiment.getNext(context); |
0316808c | 375 | assertEquals("Event timestamp", 4502, event.getTimestamp().getValue()); |
25e48683 FC |
376 | } |
377 | ||
0316808c | 378 | public void testSeekLocationOutOfScope() throws Exception { |
25e48683 FC |
379 | |
380 | // Position trace at beginning | |
0316808c | 381 | ITmfContext context = fExperiment.seekEvent((ITmfLocation<?>) null); |
25e48683 | 382 | |
c32744d6 | 383 | ITmfEvent event = fExperiment.getNext(context); |
25e48683 | 384 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
25e48683 | 385 | } |
d18dd09b | 386 | |
9b635e61 | 387 | // ------------------------------------------------------------------------ |
0316808c | 388 | // readtNextEvent - updates the context |
9b635e61 | 389 | // ------------------------------------------------------------------------ |
d18dd09b | 390 | |
0316808c | 391 | public void testReadNextEvent() throws Exception { |
9b635e61 | 392 | |
25e48683 | 393 | // On lower bound, returns the first event (ts = 0) |
0316808c | 394 | final ITmfContext context = fExperiment.seekEvent(0); |
c32744d6 | 395 | ITmfEvent event = fExperiment.getNext(context); |
d18dd09b | 396 | assertEquals("Event timestamp", 1, event.getTimestamp().getValue()); |
d18dd09b | 397 | |
9b635e61 | 398 | for (int i = 2; i < 20; i++) { |
c32744d6 | 399 | event = fExperiment.getNext(context); |
9b635e61 FC |
400 | assertEquals("Event timestamp", i, event.getTimestamp().getValue()); |
401 | } | |
d18dd09b | 402 | } |
9b635e61 | 403 | |
d18dd09b ASL |
404 | // ------------------------------------------------------------------------ |
405 | // processRequest | |
406 | // ------------------------------------------------------------------------ | |
407 | ||
408 | public void testProcessRequestForNbEvents() throws Exception { | |
9b635e61 | 409 | |
25e48683 | 410 | final int blockSize = 100; |
d18dd09b ASL |
411 | final int nbEvents = 1000; |
412 | final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>(); | |
413 | ||
25e48683 | 414 | final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH); |
d18dd09b | 415 | final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) { |
25e48683 FC |
416 | @Override |
417 | public void handleData(final TmfEvent event) { | |
418 | super.handleData(event); | |
419 | requestedEvents.add(event); | |
420 | } | |
d18dd09b ASL |
421 | }; |
422 | fExperiment.sendRequest(request); | |
423 | request.waitForCompletion(); | |
424 | ||
425 | assertEquals("nbEvents", nbEvents, requestedEvents.size()); | |
426 | assertTrue("isCompleted", request.isCompleted()); | |
427 | assertFalse("isCancelled", request.isCancelled()); | |
428 | ||
429 | // Ensure that we have distinct events. | |
25e48683 | 430 | // Don't go overboard: we are not validating the stub! |
20658947 | 431 | for (int i = 0; i < nbEvents; i++) { |
d18dd09b | 432 | assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue()); |
20658947 | 433 | } |
d18dd09b | 434 | } |
25e48683 | 435 | |
d18dd09b | 436 | public void testProcessRequestForNbEvents2() throws Exception { |
9b635e61 | 437 | |
25e48683 | 438 | final int blockSize = 2 * NB_EVENTS; |
d18dd09b ASL |
439 | final int nbEvents = 1000; |
440 | final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>(); | |
441 | ||
25e48683 | 442 | final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH); |
d18dd09b | 443 | final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) { |
25e48683 FC |
444 | @Override |
445 | public void handleData(final TmfEvent event) { | |
446 | super.handleData(event); | |
447 | requestedEvents.add(event); | |
448 | } | |
d18dd09b ASL |
449 | }; |
450 | fExperiment.sendRequest(request); | |
451 | request.waitForCompletion(); | |
452 | ||
453 | assertEquals("nbEvents", nbEvents, requestedEvents.size()); | |
454 | assertTrue("isCompleted", request.isCompleted()); | |
455 | assertFalse("isCancelled", request.isCancelled()); | |
456 | ||
457 | // Ensure that we have distinct events. | |
25e48683 | 458 | // Don't go overboard: we are not validating the stub! |
20658947 | 459 | for (int i = 0; i < nbEvents; i++) { |
d18dd09b | 460 | assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue()); |
20658947 | 461 | } |
d18dd09b | 462 | } |
25e48683 | 463 | |
d18dd09b | 464 | public void testProcessRequestForAllEvents() throws Exception { |
9b635e61 | 465 | |
25e48683 | 466 | final int nbEvents = TmfEventRequest.ALL_DATA; |
d18dd09b ASL |
467 | final int blockSize = 1; |
468 | final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>(); | |
25e48683 | 469 | final long nbExpectedEvents = NB_EVENTS; |
d18dd09b | 470 | |
25e48683 | 471 | final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH); |
d18dd09b | 472 | final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) { |
25e48683 FC |
473 | @Override |
474 | public void handleData(final TmfEvent event) { | |
475 | super.handleData(event); | |
476 | requestedEvents.add(event); | |
477 | } | |
d18dd09b ASL |
478 | }; |
479 | fExperiment.sendRequest(request); | |
480 | request.waitForCompletion(); | |
481 | ||
9b635e61 | 482 | assertEquals("nbEvents", nbExpectedEvents, requestedEvents.size()); |
d18dd09b ASL |
483 | assertTrue("isCompleted", request.isCompleted()); |
484 | assertFalse("isCancelled", request.isCancelled()); | |
485 | ||
486 | // Ensure that we have distinct events. | |
25e48683 | 487 | // Don't go overboard: we are not validating the stub! |
20658947 | 488 | for (int i = 0; i < nbExpectedEvents; i++) { |
d18dd09b | 489 | assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue()); |
20658947 | 490 | } |
d18dd09b | 491 | } |
25e48683 | 492 | |
d18dd09b ASL |
493 | // ------------------------------------------------------------------------ |
494 | // cancel | |
495 | // ------------------------------------------------------------------------ | |
496 | ||
497 | public void testCancel() throws Exception { | |
9b635e61 | 498 | |
25e48683 | 499 | final int nbEvents = NB_EVENTS; |
9b635e61 | 500 | final int blockSize = BLOCK_SIZE; |
d18dd09b ASL |
501 | final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>(); |
502 | ||
25e48683 | 503 | final TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH); |
d18dd09b | 504 | final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) { |
25e48683 FC |
505 | int nbRead = 0; |
506 | @Override | |
507 | public void handleData(final TmfEvent event) { | |
508 | super.handleData(event); | |
509 | requestedEvents.add(event); | |
20658947 | 510 | if (++nbRead == blockSize) { |
25e48683 | 511 | cancel(); |
20658947 | 512 | } |
25e48683 | 513 | } |
9b635e61 FC |
514 | @Override |
515 | public void handleCancel() { | |
20658947 | 516 | if (requestedEvents.size() < blockSize) { |
25e48683 | 517 | System.out.println("aie"); |
20658947 | 518 | } |
9b635e61 | 519 | } |
d18dd09b ASL |
520 | }; |
521 | fExperiment.sendRequest(request); | |
522 | request.waitForCompletion(); | |
523 | ||
524 | assertEquals("nbEvents", blockSize, requestedEvents.size()); | |
525 | assertTrue("isCompleted", request.isCompleted()); | |
526 | assertTrue("isCancelled", request.isCancelled()); | |
527 | } | |
25e48683 | 528 | |
d18dd09b ASL |
529 | // ------------------------------------------------------------------------ |
530 | // getTimestamp | |
531 | // ------------------------------------------------------------------------ | |
532 | ||
533 | public void testGetTimestamp() throws Exception { | |
9b635e61 | 534 | |
25e48683 | 535 | assertTrue("getTimestamp", fExperiment.getTimestamp( 0).equals(new TmfTimestamp( 1, (byte) -3))); |
d18dd09b ASL |
536 | assertTrue("getTimestamp", fExperiment.getTimestamp( 10).equals(new TmfTimestamp( 11, (byte) -3))); |
537 | assertTrue("getTimestamp", fExperiment.getTimestamp( 100).equals(new TmfTimestamp( 101, (byte) -3))); | |
538 | assertTrue("getTimestamp", fExperiment.getTimestamp(1000).equals(new TmfTimestamp(1001, (byte) -3))); | |
539 | assertTrue("getTimestamp", fExperiment.getTimestamp(2000).equals(new TmfTimestamp(2001, (byte) -3))); | |
540 | assertTrue("getTimestamp", fExperiment.getTimestamp(2500).equals(new TmfTimestamp(2501, (byte) -3))); | |
541 | } | |
542 | ||
543 | } |