Rename xxx.lttng to xxx.lttng.core
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng.tests / src / org / eclipse / linuxtools / lttng / tests / jni / Combinations.java
CommitLineData
03c71d1e
ASL
1/**
2 *
3 */
4package org.eclipse.linuxtools.lttng.tests.jni;
5
6import junit.framework.TestCase;
7import java.util.HashMap;
8import java.util.HashSet;
9import java.util.List;
10import java.util.Set;
11
12import org.eclipse.linuxtools.lttng.jni.JniEvent;
13import org.eclipse.linuxtools.lttng.jni.JniMarker;
14import org.eclipse.linuxtools.lttng.jni.JniMarkerField;
15import org.eclipse.linuxtools.lttng.jni.JniTrace;
9c841e9c
WB
16import org.eclipse.linuxtools.lttng.jni.exception.JniException;
17import org.eclipse.linuxtools.lttng.jni.factory.JniTraceFactory;
18
03c71d1e
ASL
19
20/**
21 * @author alvaro
22 *
23 */
3b38ea61 24@SuppressWarnings("nls")
03c71d1e
ASL
25public class Combinations extends TestCase {
26
27 private final static boolean printLttDebug = false;
28
29 private final static String tracepath="traceset/trace-618339events-1293lost-1cpu";
30 private final static String eventName = "syscall_state";
31
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;
36
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 =
44 // "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";
74
75 // enum EventString {
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
83 // };
84
85 enum EvStateTrans {
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
87 };
88
89 private static Set<String> stateSet;
90 static {
91 stateSet = new HashSet<String>();
92 EvStateTrans[] stateArr = EvStateTrans.values();
93 for (EvStateTrans event : stateArr) {
94 stateSet.add(event.name());
95 }
96 }
97
98 private JniEvent prepareEventToTest() {
99
100 JniEvent tmpEvent = null;
101 // This trace should be valid
102 try {
a3767fd9 103 tmpEvent = JniTraceFactory.getJniTrace(tracepath, null, printLttDebug).requestEventByName(eventName);
03c71d1e
ASL
104 } catch (JniException e) {
105 }
106
107 return tmpEvent;
108 }
109
110 public void testGetSpecEventFields() {
111 JniEvent event = prepareEventToTest();
112 JniMarker dmarker = event.requestEventMarker();
113 List<JniMarkerField> markers = dmarker.getMarkerFieldsArrayList();
114
115 assertNotNull(markers);
116 System.out.println("Markers: " + markers);
117
118 }
119
120 public void testEventsLoop() {
121 JniTrace trace = null;
122 JniEvent event = null;
123 try {
a3767fd9 124 trace = JniTraceFactory.getJniTrace(tracepath, null, printLttDebug);
03c71d1e
ASL
125 } catch (JniException e) {
126 e.printStackTrace();
127 }
128
129 HashMap<String, Integer> eventCount = new HashMap<String, Integer>();
130 while (true) {
131 event = trace.readNextEvent();
132 if (event == null) {
133 break;
134 }
135 JniMarker dmarker = event.requestEventMarker();
136 assertNotNull(dmarker);
137
138 String name = dmarker.getName();
139
140 if (eventCount.containsKey(name)) {
141 Integer cnt = eventCount.get(name);
142 eventCount.put(name, cnt + 1);
143 } else {
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:");
148
149 Object[] tmpMarkerFields = dmarker.getMarkerFieldsArrayList().toArray();
150 String[] fields = new String[tmpMarkerFields.length];
151
152 for (int pos = 0; pos < tmpMarkerFields.length; pos++) {
153 fields[pos] = ((JniMarkerField) tmpMarkerFields[pos]).getField() + ":" + ((JniMarkerField) tmpMarkerFields[pos]).getFormat();
154 }
155
156 for (String field : fields) {
157 System.out.println(field + " ");
158 }
159 }
160 }
161 }
162
163 for (String state : eventCount.keySet()) {
164 System.out.println(state + " : " + eventCount.get(state));
165 }
166
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"));
175 }
176
177}
This page took 0.034812 seconds and 5 git commands to generate.