4 package org
.eclipse
.linuxtools
.lttng
.core
.tests
.jni
;
6 import junit
.framework
.TestCase
;
7 import java
.util
.HashMap
;
8 import java
.util
.HashSet
;
12 import org
.eclipse
.linuxtools
.lttng
.jni
.JniEvent
;
13 import org
.eclipse
.linuxtools
.lttng
.jni
.JniMarker
;
14 import org
.eclipse
.linuxtools
.lttng
.jni
.JniMarkerField
;
15 import org
.eclipse
.linuxtools
.lttng
.jni
.JniTrace
;
16 import org
.eclipse
.linuxtools
.lttng
.jni
.exception
.JniException
;
17 import org
.eclipse
.linuxtools
.lttng
.jni
.factory
.JniTraceFactory
;
24 @SuppressWarnings("nls")
25 public class Combinations
extends TestCase
{
27 private final static boolean printLttDebug
= false;
29 private final static String tracepath
="traceset/trace-618339events-1293lost-1cpu";
30 private final static String eventName
= "syscall_state";
32 private final static Integer expect_syscall_entry
= 195596;
33 private final static Integer expect_syscall_exit
= 195598;
34 private final static Integer expect_core_marker_format
= 177;
35 private final static Integer expect_core_marker_id
= 177;
37 // private static final String LTT_EVENT_SYSCALL_ENTRY = "syscall_entry";
38 // private static final String LTT_EVENT_SYSCALL_EXIT = "syscall_exit";
39 // private static final String LTT_EVENT_TRAP_ENTRY = "trap_entry";
40 // private static final String LTT_EVENT_TRAP_EXIT = "trap_exit";
41 // private static final String LTT_EVENT_PAGE_FAULT_ENTRY =
42 // "page_fault_entry";
43 // private static final String LTT_EVENT_PAGE_FAULT_EXIT =
45 // private static final String LTT_EVENT_PAGE_FAULT_NOSEM_ENTRY =
46 // "page_fault_nosem_entry";
47 // private static final String LTT_EVENT_PAGE_FAULT_NOSEM_EXIT =
48 // "page_fault_nosem_exit";
49 // private static final String LTT_EVENT_IRQ_ENTRY = "irq_entry";
50 // private static final String LTT_EVENT_IRQ_EXIT = "irq_exit";
51 // private static final String LTT_EVENT_SOFT_IRQ_RAISE = "softirq_raise";
52 // private static final String LTT_EVENT_SOFT_IRQ_ENTRY = "softirq_entry";
53 // private static final String LTT_EVENT_SOFT_IRQ_EXIT = "softirq_exit";
54 // private static final String LTT_EVENT_SCHED_SCHEDULE = "sched_schedule";
55 // private static final String LTT_EVENT_PROCESS_FORK = "process_fork";
56 // private static final String LTT_EVENT_KTHREAD_CREATE = "kthread_create";
57 // private static final String LTT_EVENT_PROCESS_EXIT = "process_exit";
58 // private static final String LTT_EVENT_PROCESS_FREE = "process_free";
59 // private static final String LTT_EVENT_EXEC = "exec";
60 // private static final String LTT_EVENT_PROCESS_STATE = "process_state";
61 // private static final String LTT_EVENT_STATEDUMP_END = "statedump_end";
62 // private static final String LTT_EVENT_FUNCTION_ENTRY = "function_entry";
63 // private static final String LTT_EVENT_FUNCTION_EXIT = "function_exit";
64 // private static final String LTT_EVENT_THREAD_BRAND = "thread_brand";
65 // private static final String LTT_EVENT_REQUEST_ISSUE =
66 // "_blk_request_issue";
67 // private static final String LTT_EVENT_REQUEST_COMPLETE =
68 // "_blk_request_complete";
69 // private static final String LTT_EVENT_LIST_INTERRUPT = "interrupt";
70 // private static final String LTT_EVENT_SYS_CALL_TABLE = "sys_call_table";
71 // private static final String LTT_EVENT_SOFTIRQ_VEC = "softirq_vec";
72 // private static final String LTT_EVENT_KPROBE_TABLE = "kprobe_table";
73 // private static final String LTT_EVENT_KPROBE = "kprobe";
76 // syscall_entry, syscall_exit, trap_entry, trap_exit, page_fault_entry,
77 // page_fault_exit, page_fault_nosem_entry, page_fault_nosem_exit,
78 // irq_entry, irq_exit, softirq_raise, softirq_entry, softirq_exit,
79 // sched_schedule, process_fork, kthread_create, process_exit, process_free,
80 // exec, process_state, statedump_end, function_entry, function_exit,
81 // thread_brand, _blk_request_issue, blk_request_complete, interrupt,
82 // sys_call_table, softirq_vec, kprobe_table, kprobe
86 syscall_entry
, syscall_exit
, trap_entry
, trap_exit
, page_fault_entry
, page_fault_exit
, page_fault_nosem_entry
, page_fault_nosem_exit
, irq_entry
, irq_exit
, softirq_raise
, softirq_entry
, softirq_exit
, sched_schedule
, process_fork
, kthread_create
, process_exit
, process_free
, exec
, thread_brand
89 private static Set
<String
> stateSet
;
91 stateSet
= new HashSet
<String
>();
92 EvStateTrans
[] stateArr
= EvStateTrans
.values();
93 for (EvStateTrans event
: stateArr
) {
94 stateSet
.add(event
.name());
98 private JniEvent
prepareEventToTest() {
100 JniEvent tmpEvent
= null;
101 // This trace should be valid
103 tmpEvent
= JniTraceFactory
.getJniTrace(tracepath
, null, printLttDebug
).requestEventByName(eventName
);
104 } catch (JniException e
) {
110 public void testGetSpecEventFields() {
111 JniEvent event
= prepareEventToTest();
112 JniMarker dmarker
= event
.requestEventMarker();
113 List
<JniMarkerField
> markers
= dmarker
.getMarkerFieldsArrayList();
115 assertNotNull(markers
);
116 System
.out
.println("Markers: " + markers
);
120 public void testEventsLoop() {
121 JniTrace trace
= null;
122 JniEvent event
= null;
124 trace
= JniTraceFactory
.getJniTrace(tracepath
, null, printLttDebug
);
125 } catch (JniException e
) {
129 HashMap
<String
, Integer
> eventCount
= new HashMap
<String
, Integer
>();
131 event
= trace
.readNextEvent();
135 JniMarker dmarker
= event
.requestEventMarker();
136 assertNotNull(dmarker
);
138 String name
= dmarker
.getName();
140 if (eventCount
.containsKey(name
)) {
141 Integer cnt
= eventCount
.get(name
);
142 eventCount
.put(name
, cnt
+ 1);
144 eventCount
.put(name
, 1);
145 // Only print state transition states and it's format
146 if (stateSet
.contains(name
)) {
147 System
.out
.println("\nMarker name: " + name
+ "\nFields:");
149 Object
[] tmpMarkerFields
= dmarker
.getMarkerFieldsArrayList().toArray();
150 String
[] fields
= new String
[tmpMarkerFields
.length
];
152 for (int pos
= 0; pos
< tmpMarkerFields
.length
; pos
++) {
153 fields
[pos
] = ((JniMarkerField
) tmpMarkerFields
[pos
]).getField() + ":" + ((JniMarkerField
) tmpMarkerFields
[pos
]).getFormat();
156 for (String field
: fields
) {
157 System
.out
.println(field
+ " ");
163 for (String state
: eventCount
.keySet()) {
164 System
.out
.println(state
+ " : " + eventCount
.get(state
));
167 assertEquals("syscall_entry mismatch", expect_syscall_entry
, eventCount
168 .get(EvStateTrans
.syscall_entry
.name()));
169 assertEquals("syscall_exit mismatch", expect_syscall_exit
, eventCount
170 .get(EvStateTrans
.syscall_exit
.name()));
171 assertEquals("core_market_format mismatch", expect_core_marker_format
,
172 eventCount
.get("core_marker_format"));
173 assertEquals("core_market_id mismatch", expect_core_marker_id
,
174 eventCount
.get("core_marker_id"));