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