3 Functions tested here :
4 public JniEvent(JniEvent oldEvent)
5 public JniEvent(long newEventPtr, long newTracefilePtr, HashMap<Integer, JniMarker> newMarkersMap, JniTracefile newParentTracefile) throws JafException
7 public int readNextEvent()
8 public int seekToTime(JniTime seekTime)
9 public int seekOrFallBack(JniTime seekTime)
11 public JniMarker requestEventMarker()
12 public String requestEventSource()
13 public JniTime requestNextEventTime()
15 public ArrayList<ParsedContent> parse()
17 public int getEventMarkerId()
18 public JniTime getEventTime()
19 public long getEventDataSize()
20 public HashMap<Integer, JniMarker> getMarkersMap()
21 public long getTracefilePtr()
22 public long getEventPtr()
23 public int getEventState()
24 public JniTracefile getParentTracefile()
26 public String toString()
27 public void printEventInformation()
31 package org
.eclipse
.linuxtools
.lttng
.core
.tests
.jni
;
34 import junit
.framework
.TestCase
;
36 import org
.eclipse
.linuxtools
.lttng
.jni
.JniEvent
;
37 import org
.eclipse
.linuxtools
.lttng
.jni
.JniTracefile
;
38 import org
.eclipse
.linuxtools
.lttng
.jni
.common
.JniTime
;
39 import org
.eclipse
.linuxtools
.lttng
.jni
.exception
.JniException
;
40 import org
.eclipse
.linuxtools
.lttng
.jni
.factory
.JniTraceFactory
;
42 @SuppressWarnings("nls")
43 public class JniEventTest
extends TestCase
45 private final static boolean printLttDebug
= false;
47 private final static String tracepath
="traceset/trace-15316events_nolost_newformat";
48 private final static String eventName
="kernel0";
50 private final static int numberOfMarkersInTracefile
= 45;
52 private final static int numberOfparsedFieldsFirstEvent
= 1;
53 private final static int numberOfparsedFieldsSecondEvent
= 3;
55 private final static int chosenPositionOfFieldsFirstEvent
= 1;
56 private final static int chosenPositionOfFieldsSecondEvent
= 0;
57 private final static int chosenPositionOfFieldsAfterSeekEvent
= 1;
59 private final static String chosenNameOfFieldsFirstEvent
= "string";
60 private final static String chosenNameOfFieldsSecondEvent
= "ip";
61 private final static String chosenNameOfFieldsThirdEvent
= "syscall_id";
63 private final static String contentOfFieldsFirstEvent
= "LTT state dump begin";
64 private final static String contentOfFieldsSecondEvent
= "0xc142176d";
65 private final static long contentOfFieldsThirdEvent
= 3L;
67 private final static int numberOfByteInContent
= 4;
69 private final static long firstEventTimestamp
= 13589760262237L;
70 private final static long secondEventTimestamp
= 13589762149621L;
71 private final static long thirdEventTimestamp
= 13589762917527L;
73 private final static long timestampToSeekTest1
= 13589807108560L;
74 private final static long timestampAfterSeekTest1
= 13589807116344L;
76 private final static long timestampToSeekLast
= 13589906758692L;
78 private final static long timestampToSeekTooFarAway
= Long
.MAX_VALUE
;
80 private JniEvent
prepareEventToTest() {
82 JniEvent tmpEvent
= null;
84 // This trace should be valid
86 tmpEvent
= JniTraceFactory
.getJniTrace(tracepath
, null, printLttDebug
).requestEventByName(eventName
);
88 catch( JniException e
) { }
94 public void testEventConstructors() {
95 JniTracefile testTracefile
= null;
97 // This trace should be valid and will be used in test
99 testTracefile
= JniTraceFactory
.getJniTrace(tracepath
, null, printLttDebug
).requestTracefileByName(eventName
);
101 catch( JniException e
) {
102 fail("Could not get trace file");
106 // Test constructor on a wrong marker HashMap
108 testTracefile
.allocateNewJniEvent( testTracefile
.getCurrentEvent().getEventPtr(), null, testTracefile
);
109 fail("Construction with wrong marker hashmap should fail!");
111 catch( JniException e
) {
114 // Test constructor on a wrong tracefile reference
116 testTracefile
.allocateNewJniEvent( testTracefile
.getCurrentEvent().getEventPtr(), testTracefile
.getTracefileMarkersMap(), null );
117 fail("Construction with wrong tracefile reference should fail!");
119 catch( JniException e
) {
122 // Finally, test constructor with correct information
124 testTracefile
.allocateNewJniEvent( testTracefile
.getCurrentEvent().getEventPtr(), testTracefile
.getTracefileMarkersMap(), testTracefile
);
126 catch( JniException e
) {
127 fail("Construction with correct information failed!");
131 // Test copy constructor
133 testEvent1 = new JniEvent( testTracefile.getCurrentEvent() );
134 testEvent2 = new JniEvent( testEvent1);
136 catch( Exception e) {
137 fail("Copy constructor failed!");
139 assertEquals("JniEvent timestamp not same after using copy constructor", testEvent1.getEventTime().getTime() , testEvent2.getEventTime().getTime() );
144 public void testPrintAndToString() {
146 JniEvent testEvent
= prepareEventToTest();
148 // Test printEventInformation
150 testEvent
.printEventInformation();
152 catch( Exception e
) {
153 fail("printEventInformation failed!");
157 assertNotSame("toString returned empty data","",testEvent
.toString() );
161 public void testEventDisplacement() {
165 JniEvent testEvent
= prepareEventToTest();
167 // Test #1 readNextEvent()
168 readValue
= testEvent
.readNextEvent();
169 assertSame("readNextEvent() returned error (test #1)",0,readValue
);
170 assertEquals("readNextEvent() event timestamp is incoherent (test #1)",secondEventTimestamp
,testEvent
.getEventTime().getTime() );
172 // Test #2 readNextEvent()
173 readValue
= testEvent
.readNextEvent();
174 assertSame("readNextEvent() returned error (test #1)",0,readValue
);
175 assertEquals("readNextEvent() event timestamp is incoherent (test #1)",thirdEventTimestamp
,testEvent
.getEventTime().getTime() );
178 // Test #1 of seekToTime()
179 seekValue
= testEvent
.seekToTime(new JniTime(timestampToSeekTest1
) );
180 assertSame("seekToTime() returned error (test #1)",0,seekValue
);
181 // Read SHOULD NOT be performed after a seek!
182 assertEquals("readNextEvent() event timestamp is incoherent (test #1)",timestampToSeekTest1
,testEvent
.getEventTime().getTime() );
184 readValue
= testEvent
.readNextEvent();
185 assertEquals("readNextEvent() event timestamp is incoherent (test #1)",timestampAfterSeekTest1
,testEvent
.getEventTime().getTime() );
188 // Test #2 of seekToTime()
189 seekValue
= testEvent
.seekToTime(new JniTime(timestampToSeekLast
) );
190 assertSame("seekToTime() returned error (test #2)",0,seekValue
);
191 // Read SHOULD NOT be performed after a seek!
192 assertEquals("readNextEvent() event timestamp is incoherent (test #2)",timestampToSeekLast
,testEvent
.getEventTime().getTime() );
194 // Read AFTER the last event should bring an error
195 readValue
= testEvent
.readNextEvent();
196 assertNotSame("readNextEvent() AFTER last event should return error (test #2)",0,readValue
);
199 // Test to see if we can seek back
200 seekValue
= testEvent
.seekToTime(new JniTime(firstEventTimestamp
) );
201 assertSame("seekToTime() returned error (test seek back)",0,seekValue
);
202 // Read SHOULD NOT be performed after a seek!
203 assertEquals("readNextEvent() event timestamp is incoherent (test seek back)",firstEventTimestamp
,testEvent
.getEventTime().getTime() );
206 // Test #1 of seekOrFallBack() (seek within range)
207 seekValue
= testEvent
.seekOrFallBack(new JniTime(timestampToSeekTest1
) );
208 assertSame("seekToTime() returned error (test #1)",0,seekValue
);
209 // Read SHOULD NOT be performed after a seek!
210 assertEquals("readNextEvent() event timestamp is incoherent (test #1)",timestampToSeekTest1
,testEvent
.getEventTime().getTime() );
212 // Test #2 of seekOrFallBack() (seek out of range, should fall back)
213 seekValue
= testEvent
.seekOrFallBack(new JniTime(timestampToSeekTooFarAway
) );
214 assertNotSame("seekOrFallBack() should return an error (test #2)",0,seekValue
);
215 // The read should return the "last" value as we seek back
216 assertEquals("readNextEvent() event timestamp is incoherent (test #2)",timestampToSeekTest1
,testEvent
.getEventTime().getTime() );
219 public void testGetSet() {
221 JniEvent testEvent
= prepareEventToTest();
223 // Test that all Get/Set return data
224 assertNotSame("getEventMarkerId is 0",0,testEvent
.getEventMarkerId() );
226 // JniTime should never be null
227 assertNotNull("getEventTime returned null", testEvent
.getEventTime() );
229 assertNotSame("getEventDataSize is 0",0,testEvent
.getEventDataSize() );
231 // Test that the marker map is not null
232 assertNotSame("getMarkersMap is null",null,testEvent
.getMarkersMap() );
233 // Also check that the map contain some data
234 assertSame("getMarkersMap returned an unexpected number of markers",numberOfMarkersInTracefile
,testEvent
.getMarkersMap().size() );
236 assertNotSame("getTracefilePtr is 0",0,testEvent
.getTracefilePtr() );
237 assertNotSame("getEventPtr is 0",0,testEvent
.getEventPtr() );
238 // State 0 (EOK) means the event is in a sane state
239 assertSame("getEventState is not EOK",0,testEvent
.getEventState() );
241 // ParentTracefile should never be null
242 assertNotNull("getParentTracefile returned null", testEvent
.getParentTracefile() );
245 public void testRequestFunctions() {
247 JniEvent testEvent
= prepareEventToTest();
249 // Test requestEventMarker(). Should return an unique marker
250 assertNotNull("requestEventMarker returned null",testEvent
.requestEventMarker() );
252 // Test requestEventSource()
253 assertNotSame("requestEventSource is empty","",testEvent
.requestEventSource() );
255 // Test requestEventContent()
256 assertNotNull("requestEventContent returned null",testEvent
.requestEventContent() );
258 // Also check that the byte array contain some data
259 assertSame("requestEventContent returned an unexpected number of markers",numberOfByteInContent
,testEvent
.requestEventContent().length
);
263 public void testParseAllFieldsFunctions() {
265 JniEvent testEvent
= prepareEventToTest();
268 assertNotNull("parseAllFields returned null",testEvent
.parseAllFields() );
269 // Parse shouldn't be empty
270 assertSame("parseAllFields returned an unexpected number of parsed fields",numberOfparsedFieldsFirstEvent
,testEvent
.parseAllFields().size() );
272 // MORE PARSING TESTS
273 // We will perform several more unit tests about parsing as it is very important
274 // All those below use the same call as in the displacement test
275 // Test #1 readNextEvent()
276 testEvent
.readNextEvent();
277 assertNotNull("parseAllFields returned null",testEvent
.parseAllFields() );
278 assertSame("parseAllFields returned an unexpected number of parsed fields",numberOfparsedFieldsSecondEvent
,testEvent
.parseAllFields().size() );
279 // Test #2 readNextEvent()
280 testEvent
.readNextEvent();
281 assertNotNull("parseAllFields returned null",testEvent
.parseAllFields() );
283 // Test #1 of seekToTime()
284 testEvent
.seekToTime(new JniTime(timestampToSeekTest1
) );
285 // Read need to be perform after a seek!
286 testEvent
.readNextEvent();
287 assertNotNull("parseAllFields returned null",testEvent
.parseAllFields() );
288 testEvent
.readNextEvent();
289 assertNotNull("parseAllFields returned null",testEvent
.parseAllFields() );
291 // Test #2 of seekToTime()
292 testEvent
.seekToTime(new JniTime(timestampToSeekLast
) );
293 // Read need to be perform after a seek!
294 testEvent
.readNextEvent();
295 assertNotNull("parseAllFields returned null",testEvent
.parseAllFields() );
297 // Test to see if we can seek back
298 testEvent
.seekToTime(new JniTime(firstEventTimestamp
) );
299 // Read need to be perform after a seek!
300 testEvent
.readNextEvent();
301 assertNotNull("parseAllFields returned null",testEvent
.parseAllFields() );
304 public void testParseFieldByIdFunctions() {
305 JniEvent testEvent
= prepareEventToTest();
308 assertNotNull("parseFieldById returned null",testEvent
.parseFieldById(0) );
310 testEvent
.readNextEvent();
311 assertNotNull("parseFieldById returned null",testEvent
.parseFieldById(chosenPositionOfFieldsFirstEvent
) );
312 assertEquals("Content return by parseFieldById is invalid",contentOfFieldsFirstEvent
, testEvent
.parseFieldById(chosenPositionOfFieldsFirstEvent
) );
313 assertEquals("Content return by parseFieldByName is invalid",contentOfFieldsFirstEvent
, testEvent
.parseFieldByName(chosenNameOfFieldsFirstEvent
) );
315 // MORE PARSING TESTS
316 // We will perform several more unit tests about parsing as it is very important
317 // All those below use the same call as in the displacement test
318 // Test #1 readNextEvent()
319 testEvent
.readNextEvent();
320 assertNotNull("parseFieldById returned null",testEvent
.parseFieldById(chosenPositionOfFieldsSecondEvent
) );
321 assertEquals("Content return by parseFieldById is invalid", contentOfFieldsSecondEvent
, testEvent
.parseFieldById(chosenPositionOfFieldsSecondEvent
).toString() );
322 assertEquals("Content return by parseFieldByName is invalid",contentOfFieldsSecondEvent
, testEvent
.parseFieldByName(chosenNameOfFieldsSecondEvent
).toString() );
324 // Test #1 of seekToTime()
325 testEvent
.seekToTime(new JniTime(timestampToSeekTest1
) );
326 // Read need to be perform after a seek!
327 testEvent
.readNextEvent();
328 assertNotNull("parseFieldById returned null",testEvent
.parseFieldById(chosenPositionOfFieldsAfterSeekEvent
) );
329 assertEquals("Content return by parseFieldById is invalid",contentOfFieldsThirdEvent
, testEvent
.parseFieldById(chosenPositionOfFieldsAfterSeekEvent
) );
330 assertEquals("Content return by parseFieldByName is invalid",contentOfFieldsThirdEvent
, testEvent
.parseFieldByName(chosenNameOfFieldsThirdEvent
) );
332 // Test to see if we can seek back
333 testEvent
.seekToTime(new JniTime(firstEventTimestamp
) );
334 // Read need to be perform after a seek!
335 testEvent
.readNextEvent();
336 assertNotNull("parseFieldById returned null",testEvent
.parseFieldById(chosenPositionOfFieldsFirstEvent
) );
337 assertEquals("Content return by parseFieldById is invalid",contentOfFieldsFirstEvent
, testEvent
.parseFieldById(chosenPositionOfFieldsFirstEvent
) );
338 assertEquals("Content return by parseFieldByName is invalid",contentOfFieldsFirstEvent
, testEvent
.parseFieldByName(chosenNameOfFieldsFirstEvent
) );