Rename xxx.lttng to xxx.lttng.core
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng.tests / src / org / eclipse / linuxtools / lttng / tests / jni / JniTraceTest.java
CommitLineData
03c71d1e
ASL
1
2package org.eclipse.linuxtools.lttng.tests.jni;
3
4import org.eclipse.linuxtools.lttng.jni.JniEvent;
5import org.eclipse.linuxtools.lttng.jni.JniTrace;
9c841e9c
WB
6import org.eclipse.linuxtools.lttng.jni.common.JniTime;
7import org.eclipse.linuxtools.lttng.jni.exception.JniException;
8import org.eclipse.linuxtools.lttng.jni.factory.JniTraceFactory;
03c71d1e
ASL
9
10import junit.framework.TestCase;
11
12/*
13 Functions tested here :
14 public JniTrace()
15 public JniTrace(JniTrace oldTrace)
16 public JniTrace(String newpath) throws JafException
17 public JniTrace(long newPtr) throws JafException
18
19 public void openTrace(String newPath) throws JafException
20 public void openTrace() throws JafException
21 public void closeTrace( ) throws JafException
22
23 public JniEvent readNextEvent()
24 public JniEvent findNextEvent()
25 public JniEvent seekAndRead(JniTime seekTime)
26 public void seekToTime(JniTime seekTime)
27
28 public JniTracefile requestTracefileByName(String tracefileName)
29 public JniEvent requestEventByName(String tracefileName)
30 public ArrayList<Location> requestTraceLocation()
31
32 public String getTracepath()
33 public int getCpuNumber()
34 public long getArchType()
35 public long getArchVariant()
36 public short getArchSize()
37 public short getLttMajorVersion()
38 public short getLttMinorVersion()
39 public short getFlightRecorder()
40 public long getFreqScale()
41 public long getStartFreq()
42 public long getStartTimestampCurrentCounter()
43 public long getStartMonotonic()
44 public JniTime getStartTime()
1d1ae093 45 pubilc JniTime getEndTime()
03c71d1e
ASL
46 public JniTime getStartTimeFromTimestampCurrentCounter()
47 public HashMap<String, JniTracefile> getTracefilesMap()
48 public long getTracePtr()
49
50 public void printAllTracefilesInformation()
51 public void printTraceInformation()
52
53 public String toString()
54 */
55
3b38ea61 56@SuppressWarnings("nls")
03c71d1e
ASL
57public class JniTraceTest extends TestCase
58{
59 private final static boolean printLttDebug = false;
60
1c859a36
WB
61 private final static String tracepath1="traceset/trace-15316events_nolost_newformat";
62 private final static String tracepath2="traceset/trace-15471events_nolost_newformat";
03c71d1e
ASL
63 private final static String wrongTracePath="/somewhere/that/does/not/exist";
64
65 private final static String correctTracefileName="kernel0";
66 private final static String wrongTracefileName="somethingThatDoesNotExists";
67
1c859a36 68 private final static int numberOfTracefilesInTrace = 16;
03c71d1e 69
1c859a36 70 private final static long firstEventTimestamp = 13589759412128L;
03c71d1e
ASL
71 private final static String firstEventTracefilename = "metadata0";
72
1c859a36 73 private final static long secondEventTimestamp = 13589759419903L;
03c71d1e
ASL
74 private final static String secondEventName = "metadata";
75
1c859a36 76 private final static long thirdEventTimestamp = 13589759422785L;
03c71d1e 77
1c859a36 78 private final static long eventTimestampAfterMetadata = 13589760262237L;
03c71d1e
ASL
79 private final static String eventTracefilenameAfterMetadata = "kernel0";
80
1c859a36 81 private final static long timestampToSeekTest1 = 13589821608319L;
03c71d1e
ASL
82 private final static String eventNameAfterSeekTest1 = "kernel";
83 private final static String eventTracefilenameAfterSeekTest1 = "kernel0";
1c859a36 84 private final static String nextEventNameAfterSeekTest1 = "vm_state";
03c71d1e 85
1c859a36 86 private final static long timestampToSeekTest2 = 13589861889350L;
03c71d1e
ASL
87 private final static String eventNameAfterSeekTest2 = "fs";
88 private final static String nextEventNameAfterSeekTest2 = "kernel";
89
1c859a36 90 private final static long timestampToSeekLast = 13589906758692L;
03c71d1e
ASL
91 private final static String eventNameAfterSeekLast = "kernel";
92
93
94 private JniTrace prepareTraceToTest() {
95 JniTrace tmpTrace = null;
96
97 // This trace should be valid
98 try {
a3767fd9 99 tmpTrace = JniTraceFactory.getJniTrace(tracepath1, null, printLttDebug);
1c859a36 100 //tmpTrace.seekToTime(new JniTime(0L));
03c71d1e
ASL
101 }
102 catch( JniException e) { }
103
104 return tmpTrace;
105 }
106
107 public void testTraceConstructors() {
9c841e9c
WB
108 @SuppressWarnings("unused")
109 JniTrace testTrace1 = null;
03c71d1e
ASL
110 @SuppressWarnings("unused")
111 JniTrace testTrace2 = null;
112
113 // Test constructor with argument on a wrong tracepath
114 try {
a3767fd9 115 testTrace1 = JniTraceFactory.getJniTrace(wrongTracePath, null, printLttDebug);
03c71d1e
ASL
116 fail("Construction with wrong tracepath should fail!");
117 }
118 catch( JniException e) {
119 }
120
121 // Test constructor with argument on a correct tracepath
122 try {
a3767fd9 123 testTrace1 = JniTraceFactory.getJniTrace(tracepath1, null, printLttDebug);
03c71d1e
ASL
124 }
125 catch( JniException e) {
126 fail("Construction with correct tracepath failed!");
127 }
128 }
129
130 public void testTraceOpenClose() {
131
132 JniTrace testTrace = prepareTraceToTest(); // This trace should be valid
133
134 // test the constructor with arguments passing a wrong tracepath
135 try {
136 testTrace.openTrace(wrongTracePath);
137 fail("Open with wrong tracepath should fail!");
138 }
139 catch( JniException e) { }
140
141 // Test open with a correct tracepath
142 try {
143 testTrace.openTrace(tracepath1);
144 assertNotSame("getTracepath is empty after open","",testTrace.getTracepath() );
145 }
146 catch( JniException e) {
147 fail("Open with a correct tracepath failed!");
148 }
149
150 // Test to open a trace already opened
151 try {
152 testTrace.openTrace(tracepath1);
153 testTrace.openTrace(tracepath2);
154 assertNotSame("getTracepath is empty after open","",testTrace.getTracepath() );
155 }
156 catch( JniException e) {
157 fail("Reopen of a trace failed!");
158 }
159
160
161 // Test to open a trace already opened, but with a wrong tracepath
162 try {
163 testTrace.openTrace(tracepath1);
164 testTrace.openTrace(wrongTracePath);
165 fail("Reopen with wrong tracepath should fail!");
166 }
167 catch( JniException e) {
168 }
169 }
170
171 public void testGetSet() {
172
173 JniTrace testTrace = prepareTraceToTest();
174
175 // Test that all Get/Set return data
176 assertNotSame("getTracepath is empty","",testTrace.getTracepath() );
177 assertNotSame("getCpuNumber is 0",0,testTrace.getCpuNumber() );
178 assertNotSame("getArchType is 0",0,testTrace.getArchType() );
179 assertNotSame("getArchVariant is 0",0,testTrace.getArchVariant() );
180 assertNotSame("getArchSize is 0",0,testTrace.getArchSize() );
181 assertNotSame("getLttMajorVersion is 0",0,testTrace.getLttMajorVersion() );
182 assertNotSame("getLttMinorVersion is 0",0,testTrace.getLttMinorVersion() );
183 assertNotSame("getFlightRecorder is 0",0,testTrace.getFlightRecorder() );
184 assertNotSame("getFreqScale is 0",0,testTrace.getFreqScale() );
185 assertNotSame("getStartFreq is 0",0,testTrace.getStartFreq() );
186 assertNotSame("getStartTimestampCurrentCounter is 0",0,testTrace.getStartTimestampCurrentCounter());
187 assertNotSame("getStartMonotonic is 0",0,testTrace.getStartMonotonic() );
188 assertNotSame("getStartTime is null",null,testTrace.getStartTime() );
1d1ae093 189 assertNotSame("getEndTime() is null", null, testTrace.getEndTime() );
03c71d1e
ASL
190 assertNotSame("getStartTimeNoAdjustement is null",null,testTrace.getStartTimeNoAdjustement() );
191 assertNotSame("getTracefilesMap is null",null,testTrace.getTracefilesMap() );
192 // Also check that the map contain some tracefiles
193 assertSame("getTracefilesMap returned an unexpected number of tracefiles",numberOfTracefilesInTrace,testTrace.getTracefilesMap().size() );
194 assertNotSame("getTracePtr is 0",0,testTrace.getTracePtr() );
195
196
197 }
198
199 public void testPrintAndToString() {
200
201 JniTrace testTrace = prepareTraceToTest();
202
203 // Test printTraceInformation
204 try {
205 testTrace.printTraceInformation();
206 }
207 catch( Exception e) {
208 fail("printTraceInformation failed!");
209 }
210
211 // Test ToString()
212 assertNotSame("toString returned empty data","",testTrace.toString() );
213 }
214
215 public void testRequestFunctions() {
216
217 JniTrace testTrace = prepareTraceToTest();
218
219 // Test requestTracefileByName()
220 assertNotSame("requestTracefileByName returned null",null,testTrace.requestTracefileByName(correctTracefileName) );
221 assertSame("requestTracefileByName returned content on non existent name",null,testTrace.requestTracefileByName(wrongTracefileName) );
222
223 // Test requestEventByName()
224 assertNotSame("requestEventByName returned null",null,testTrace.requestEventByName(correctTracefileName) );
225 assertSame("requestEventByName returned content on non existent name",null,testTrace.requestEventByName(wrongTracefileName) );
226 }
227
228 public void testEventDisplacement() {
229
230 JniEvent testEvent = null;
231 JniTrace testTrace = prepareTraceToTest();
232
233 // Test readNextEvent()
234 testEvent = testTrace.readNextEvent();
235 assertNotSame("readNextEvent() returned null",null,testEvent);
236 assertEquals("readNextEvent() timestamp is incoherent",firstEventTimestamp,testEvent.getEventTime().getTime() );
237
238 // Test findNextEvent()
239 testEvent = testTrace.findNextEvent();
240 assertNotSame("findNextEvent() returned null",null,testEvent);
241 assertEquals("findNextEvent() name is incoherent",secondEventName,testEvent.getParentTracefile().getTracefileName() );
242
243 // Test readNextEvent()
244 testEvent = testTrace.readNextEvent();
245 assertNotSame("readNextEvent() returned null",null,testEvent);
246 assertEquals("readNextEvent() timestamp is incoherent",secondEventName,testEvent.getParentTracefile().getTracefileName() );
247
248 // Tests below are for seekAndRead()
249 // After, we will perform the same operation for seekTime
250 //
251 // Test #1 of seekAndRead()
252 testEvent = testTrace.seekAndRead(new JniTime(timestampToSeekTest1) );
253 assertNotSame("seekAndRead(time) returned null (test #1)",null,testEvent);
254 assertEquals("seekAndRead(time) timestamp is incoherent (test #1)",timestampToSeekTest1,testEvent.getEventTime().getTime());
255 assertEquals("event name after seekAndRead(time) is incoherent (test #1)",eventNameAfterSeekTest1,testEvent.getParentTracefile().getTracefileName());
256 // Test that the next event after seek in the one we expect
257 testEvent = testTrace.readNextEvent();
258 assertEquals("readNextEvent() name after seekAndRead(time) is incoherent (test #1)",nextEventNameAfterSeekTest1,testEvent.getParentTracefile().getTracefileName());
259
260 // Test #2 of seekAndRead()
261 testEvent = testTrace.seekAndRead(new JniTime(timestampToSeekTest2) );
262 assertNotSame("seekAndRead(time) returned null (test #2)",null,testEvent);
263 assertEquals("seekAndRead(time) timestamp is incoherent (test #2)",timestampToSeekTest2,testEvent.getEventTime().getTime());
264 assertEquals("event name after seekAndRead(time) is incoherent (test #2)",eventNameAfterSeekTest2,testEvent.getParentTracefile().getTracefileName());
265 // Test that the next event after seek in the one we expect
266 testEvent = testTrace.readNextEvent();
267 assertEquals("readNextEvent() name after seekAndRead(time) is incoherent (test #2)",nextEventNameAfterSeekTest2,testEvent.getParentTracefile().getTracefileName());
268
269
270 // Seek to the LAST event of the trace
271 testEvent = testTrace.seekAndRead(new JniTime(timestampToSeekLast) );
272 assertNotSame("seekAndRead(time) returned null ",null,testEvent);
273 assertEquals("seekAndRead(time) timestamp is incoherent ",timestampToSeekLast,testEvent.getEventTime().getTime());
274 assertEquals("event name after seekTime(time) is incoherent ",eventNameAfterSeekLast,testEvent.getParentTracefile().getTracefileName());
275 // Test that the next event is NULL (end of the trace)
276 testEvent = testTrace.readNextEvent();
277 assertSame("seekAndRead(time) returned null ",null,testEvent);
278
279
280 // Make sure we can seek back
281 testEvent = testTrace.seekAndRead(new JniTime(firstEventTimestamp) );
282 assertNotSame("seekAndRead(time) to seek back returned null",null,testEvent);
283 assertEquals("seekAndRead(time) timestamp after seek back is incoherent",firstEventTimestamp,testEvent.getEventTime().getTime());
284
285
286
287 // Tests below are for seekToTime()
288 // These are the same test as seekAndRead() for a readNextEvent() should be performed after seek
289 //
290 // Test #1 of seekToTime()
291 testTrace.seekToTime(new JniTime(timestampToSeekTest1) );
292 testEvent = testTrace.readNextEvent();
293 assertNotSame("seekToTime(time) returned null (test #1)",null,testEvent);
294 assertEquals("seekToTime(time) timestamp is incoherent (test #1)",timestampToSeekTest1,testEvent.getEventTime().getTime());
295 assertEquals("event name after seekTime(time) is incoherent (test #1)",eventNameAfterSeekTest1,testEvent.getParentTracefile().getTracefileName());
296 // Test that the next event after seek in the one we expect
297 testEvent = testTrace.readNextEvent();
298 assertEquals("readNextEvent() name after seekToTime(time) is incoherent (test #1)",nextEventNameAfterSeekTest1,testEvent.getParentTracefile().getTracefileName());
299
300 // Test #2 of seekToTime()
301 testTrace.seekToTime(new JniTime(timestampToSeekTest2) );
302 testEvent = testTrace.readNextEvent();
303 assertNotSame("seekToTime(time) returned null (test #2)",null,testEvent);
304 assertEquals("seekToTime(time) timestamp is incoherent (test #2)",timestampToSeekTest2,testEvent.getEventTime().getTime());
305 assertEquals("event name after seekTime(time) is incoherent (test #2)",eventNameAfterSeekTest2,testEvent.getParentTracefile().getTracefileName());
306 // Test that the next event after seek in the one we expect
307 testEvent = testTrace.readNextEvent();
308 assertEquals("readNextEvent() name after seekToTime(time) is incoherent (test #2)",nextEventNameAfterSeekTest2,testEvent.getParentTracefile().getTracefileName());
309
310
311 // Seek to the LAST event of the trace
312 testTrace.seekToTime(new JniTime(timestampToSeekLast) );
313 testEvent = testTrace.readNextEvent();
314 assertNotSame("seekToTime(time) returned null ",null,testEvent);
315 assertEquals("seekToTime(time) timestamp is incoherent ",timestampToSeekLast,testEvent.getEventTime().getTime());
316 assertEquals("event name after seekTime(time) is incoherent ",eventNameAfterSeekLast,testEvent.getParentTracefile().getTracefileName());
317 // Test that the next event is NULL (end of the trace)
318 testEvent = testTrace.readNextEvent();
319 assertSame("seekToTime(time) returned null ",null,testEvent);
320
321
322 // Make sure we can seek back
323 testTrace.seekToTime(new JniTime(firstEventTimestamp) );
324 testEvent = testTrace.readNextEvent();
325 assertNotSame("seekToTime(time) to seek back returned null",null,testEvent);
326 assertEquals("seekToTime(time) timestamp after seek back is incoherent",firstEventTimestamp,testEvent.getEventTime().getTime());
327 }
328
329 public void testEventDisplacementByTracefile() {
330
331 JniEvent testEvent = null;
332 JniTrace testTrace = prepareTraceToTest();
333
334 // Read first event for the metadata (which is also the first event in the trace)
335 testEvent = testTrace.readNextEvent(testTrace.requestTracefileByName(firstEventTracefilename) );
336 assertNotSame("readNextEvent() returned null",null,testEvent);
337 assertEquals("readNextEvent() timestamp is incoherent",firstEventTimestamp,testEvent.getEventTime().getTime() );
338
339 // If we read the next event again for this tracefile, we should get the SECOND event
340 testEvent = testTrace.readNextEvent(testTrace.requestTracefileByName(firstEventTracefilename));
341 assertNotSame("readNextEvent() on second read returned null",null,testEvent);
342 assertEquals("readNextEvent() timestamp on second read is incoherent",secondEventTimestamp,testEvent.getEventTime().getTime() );
343
344 // Reading the "global" event should take care of the change
345 // So if we read the next event, we should get the THIRD event
346 testEvent = testTrace.readNextEvent();
347 assertNotSame("readNextEvent() to read global event returned null",null,testEvent);
348 assertEquals("readNextEvent() timestamp to read global event is incoherent",thirdEventTimestamp,testEvent.getEventTime().getTime());
349
350 // Now read the next event for another type of tracefile
351 testEvent = testTrace.readNextEvent(testTrace.requestTracefileByName(eventTracefilenameAfterMetadata) );
352 assertNotSame("readNextEvent() returned null",null,testEvent);
353 assertEquals("readNextEvent() timestamp is incoherent",eventTimestampAfterMetadata,testEvent.getEventTime().getTime() );
354
355
356 // Seek back to the beginning
357 testTrace.seekToTime(new JniTime(firstEventTimestamp), testTrace.requestTracefileByName(firstEventTracefilename) );
358 // Read the first event
359 testEvent = testTrace.readNextEvent(testTrace.requestTracefileByName(firstEventTracefilename) );
360 assertNotSame("readNextEvent() after seekToTime returned null",null,testEvent);
361 assertEquals("readNextEvent() after seekToTime timestamp is incoherent",firstEventTimestamp,testEvent.getEventTime().getTime() );
362
363 // Seek and Read the first event for the metadata (again the first event in the trace)
364 testEvent = testTrace.seekAndRead(new JniTime(firstEventTimestamp), testTrace.requestTracefileByName(firstEventTracefilename) );
365 assertNotSame("seekAndRead() returned null",null,testEvent);
366 assertEquals("seekAndRead() timestamp is incoherent",firstEventTimestamp,testEvent.getEventTime().getTime() );
367
368 // Seek the whole trace to the infinity
369 testTrace.seekToTime(new JniTime(Long.MAX_VALUE));
370 // Seek and Read the next event in the trace
371 testEvent = testTrace.seekAndRead(new JniTime(timestampToSeekTest1), testTrace.requestTracefileByName(eventTracefilenameAfterSeekTest1) );
372 assertNotSame("seekAndRead() returned null",null,testEvent);
373 assertEquals("seekAndRead() timestamp is incoherent",timestampToSeekTest1,testEvent.getEventTime().getTime() );
374 // Read next event... only the same type should be here as other are exhausted
375 testEvent = testTrace.readNextEvent();
376 assertNotSame("readNextEvent() after seekToTime returned null",null,testEvent);
377 assertEquals("readNextEvent() name after seekToTime is incoherent",eventNameAfterSeekTest1,testEvent.getParentTracefile().getTracefileName());
378
379 }
380}
This page took 0.043033 seconds and 5 git commands to generate.