Analysis: Add unit tests for the critical path module
[deliverable/tracecompass.git] / ctf / org.eclipse.tracecompass.ctf.core.tests / shared / org / eclipse / tracecompass / ctf / core / tests / shared / CtfTestTrace.java
1 /*******************************************************************************
2 * Copyright (c) 2013, 2014 Ericsson
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * Alexandre Montplaisir - Initial API and implementation
10 *******************************************************************************/
11
12 package org.eclipse.tracecompass.ctf.core.tests.shared;
13
14 import java.io.File;
15
16 import org.eclipse.tracecompass.ctf.core.CTFException;
17 import org.eclipse.tracecompass.ctf.core.tests.synthetictraces.LttngKernelTraceGenerator;
18 import org.eclipse.tracecompass.ctf.core.trace.CTFTrace;
19
20 /**
21 * Here is the list of the available test traces for the CTF parser.
22 *
23 * Make sure you run the traces/get-traces.xml Ant script to download them
24 * first!
25 *
26 * @author Alexandre Montplaisir
27 */
28 public enum CtfTestTrace {
29 /**
30 * Example kernel trace
31 *
32 * <pre>
33 * Trace Size: 13 MB
34 * Tracer: lttng-modules 2.0.0
35 * Event count: 695 319
36 * Kernel version: 3.0.0-16-generic-pae
37 * Trace length: 10s
38 * </pre>
39 */
40 KERNEL("../../ctf/org.eclipse.tracecompass.ctf.core.tests/traces/kernel", 695319, 10),
41
42 /**
43 * Another kernel trace
44 *
45 * <pre>
46 * Trace Size: 14 MB
47 * Tracer: lttng-modules 2.0.0
48 * Event count: 595 641
49 * Kernel version: 3.2.0-18-generic
50 * Trace length: 11s
51 * </pre>
52 */
53 TRACE2("../../ctf/org.eclipse.tracecompass.ctf.core.tests/traces/trace2", 595641, 11),
54
55 /**
56 * Kernel trace with event contexts: pid, ppid, tid, procname,
57 * perf_page_fault, perf_major_faults, perf_minor_faults
58 *
59 * <pre>
60 * Trace Size: 56 MB
61 * Tracer: lttng-modules 2.1.0
62 * Event count: 714 484
63 * Kernel version: 3.8.1
64 * Trace length: 29s
65 * </pre>
66 */
67 KERNEL_VM("../../ctf/org.eclipse.tracecompass.ctf.core.tests/traces/kernel_vm", 714484, 29),
68
69 /**
70 * Kernel trace with all events enabled. Contains 'inet_sock_local_*' events
71 * provided by Francis's Giraldeau lttng-modules addons branch to trace TCP
72 * events. Can be used along with {@link CtfTestTrace#SYNC_DEST} for trace
73 * synchronization.
74 *
75 * <pre>
76 * Trace Size: 2.4 MB
77 * Tracer: lttng-modules 2.1.0
78 * Event count: 110 771
79 * Kernel version: 3.6.11-1-ARCH
80 * Trace length: 23s
81 * </pre>
82 */
83 SYNC_SRC("../../ctf/org.eclipse.tracecompass.ctf.core.tests/traces/synctraces/scp_src", 110771, 23),
84
85 /**
86 * Kernel trace with all events enabled. Contains 'inet_sock_local_*' events
87 * provided by Francis's Giraldeau lttng-modules addons branch to trace TCP
88 * events. Can be used along with {@link CtfTestTrace#SYNC_SRC} for trace
89 * synchronization.
90 *
91 * <pre>
92 * Trace Size: 1.9 MB
93 * Tracer: lttng-modules 2.1.0
94 * Event count: 85 729
95 * Kernel version: 3.6.11-1-ARCH
96 * Trace length: 17s
97 * </pre>
98 */
99 SYNC_DEST("../../ctf/org.eclipse.tracecompass.ctf.core.tests/traces/synctraces/scp_dest", 85729, 17),
100
101 /**
102 * LTTng Kernel trace. Contains 'inet_sock_local_*' events provided by
103 * Francis's Giraldeau lttng-modules addons branch to trace TCP events. Can
104 * be used along with {@link CtfTestTrace#DJANGO_DB} and
105 * {@link CtfTestTrace#DJANGO_HTTPD} for trace synchronization.
106 *
107 * <pre>
108 * Trace Size: 33 MB
109 * Tracer: lttng-modules 2.4.0
110 * Event count: 754 787
111 * Kernel version: 3.13.0-24-generic
112 * Trace length: 15s
113 * </pre>
114 */
115 DJANGO_CLIENT("../../ctf/org.eclipse.tracecompass.ctf.core.tests/traces/django-benchmark/django-client", 754787, 15),
116
117 /**
118 * LTTng Kernel trace. Contains 'inet_sock_local_*' events provided by
119 * Francis's Giraldeau lttng-modules addons branch to trace TCP events. Can
120 * be used along with {@link CtfTestTrace#DJANGO_CLIENT} and
121 * {@link CtfTestTrace#DJANGO_HTTPD} for trace synchronization.
122 *
123 * <pre>
124 * Trace Size: 28 MB
125 * Tracer: lttng-modules 2.4.0
126 * Event count: 692 098
127 * Kernel version: 3.13.0-24-generic
128 * Trace length: 14s
129 * </pre>
130 */
131 DJANGO_DB("../../ctf/org.eclipse.tracecompass.ctf.core.tests/traces/django-benchmark/django-db", 692098, 14),
132
133 /**
134 * LTTng Kernel trace. Contains 'inet_sock_local_*' events provided by
135 * Francis's Giraldeau lttng-modules addons branch to trace TCP events. Can
136 * be used along with {@link CtfTestTrace#DJANGO_DB} and
137 * {@link CtfTestTrace#DJANGO_CLIENT} for trace synchronization.
138 *
139 * <pre>
140 * Trace Size: 31 MB
141 * Tracer: lttng-modules 2.4.0
142 * Event count: 779 096
143 * Kernel version:3.13.0-24-generic
144 * Trace length: 13s
145 * </pre>
146 */
147 DJANGO_HTTPD("../../ctf/org.eclipse.tracecompass.ctf.core.tests/traces/django-benchmark/django-httpd", 779096, 13),
148
149 /**
150 * UST trace with lots of lost events
151 *
152 * <pre>
153 * Trace Size: 3.4 MB
154 * Tracer: lttng-ust 2.3
155 * Event count: 1 000 000, with 967 700 lost events
156 * Trace length: 279ms
157 * </pre>
158 */
159 HELLO_LOST("../../ctf/org.eclipse.tracecompass.ctf.core.tests/traces/hello-lost", 1000000, 0),
160
161 /**
162 * UST trace with lttng-ust-cyg-profile events (aka -finstrument-functions)
163 *
164 * <pre>
165 * Trace Size: 236 KB
166 * Tracer: lttng-ust 2.3
167 * Event count: 4 977
168 * Trace length: 10s
169 * </pre>
170 */
171 CYG_PROFILE("../../ctf/org.eclipse.tracecompass.ctf.core.tests/traces/cyg-profile/glxgears-cyg-profile", 4977, 10),
172
173 /**
174 * UST trace with lttng-ust-cyg-profile-fast events (no address in
175 * func_exit)
176 *
177 * <pre>
178 * Trace Size: 184 KB
179 * Tracer: lttng-ust 2.3
180 * Event count: 5 161
181 * Trace length: 11s
182 * </pre>
183 */
184 CYG_PROFILE_FAST("../../ctf/org.eclipse.tracecompass.ctf.core.tests/traces/cyg-profile/glxgears-cyg-profile-fast", 5161, 11),
185
186 /** Autogenerated Syntetic trace */
187 SYNTHETIC_TRACE(LttngKernelTraceGenerator.getPath(), -1, -1),
188
189 /** Trace with non-standard field sizes */
190 FUNKY_TRACE("../../ctf/org.eclipse.tracecompass.ctf.core.tests/traces/funky_trace", 100002, 0),
191
192 /**
193 * Kernel Trace with 64 bit aligned headers
194 *
195 * <pre>
196 * Trace Size: 1.1 MB
197 * Tracer: lttng-kernel 2.5
198 * Event count: 31 556
199 * Trace length: 6 s
200 * </pre>
201 */
202 ARM_64_BIT_HEADER("../../ctf/org.eclipse.tracecompass.ctf.core.tests/traces/bug446190", 31556, 6),
203
204 /**
205 * Kernel Trace with flipping endianness
206 *
207 * <pre>
208 * Trace Size: 327 KB
209 * Tracer: lttng-kernel 2.5
210 * Event count: 14 310
211 * Trace length: 41 s
212 * </pre>
213 */
214 FLIPPING_ENDIANNESS("../../ctf/org.eclipse.tracecompass.ctf.core.tests/traces/flipping-endianness", 14310, 41),
215
216 /**
217 * Example dynamic scope, timestamp in field, empty stream trace
218 *
219 * <pre>
220 * Trace Size: 3.5 MB
221 * Tracer: generated
222 * Event count: 101 003
223 * Kernel version: 4.0.6-1
224 * Trace length: 1 ms
225 * </pre>
226 */
227 DYNSCOPE("../../ctf/org.eclipse.tracecompass.ctf.core.tests/traces/ctfwriter_JF8nq3", 101003, 1),
228
229 /** Set of many traces, do not call getTrace */
230 TRACE_EXPERIMENT("../../ctf/org.eclipse.tracecompass.ctf.core.tests/traces/exp", -1, -1);
231
232 private final String fPath;
233 private CTFTrace fTrace = null;
234 private CTFTrace fTraceFromFile = null;
235 private final int fNbEvent;
236 private int fDuration;
237
238 private CtfTestTrace(String path, int nbEvent, int time) {
239 fPath = path;
240 fNbEvent = nbEvent;
241 fDuration = time;
242 }
243
244 /**
245 * @return The path to the test trace
246 */
247 public String getPath() {
248 return fPath;
249 }
250
251 /**
252 * Get the number of events for a trace
253 *
254 * @return the number of events, -1 if irrelevant
255 */
256 public int getNbEvents() {
257 return fNbEvent;
258 }
259
260 /**
261 * Get the duration in seconds of a trace
262 *
263 * @return the duration in seconds of a trace, -1 if irrelevant
264 */
265 public int getDuration() {
266 return fDuration;
267 }
268
269 /**
270 * Get a CTFTrace instance of a test trace. Make sure {@link #exists()}
271 * before calling this!
272 *
273 * @return The CTFTrace object
274 * @throws CTFException
275 * If the trace cannot be found.
276 */
277 public CTFTrace getTrace() throws CTFException {
278 if (fTrace == null) {
279 fTrace = new CTFTrace(fPath);
280 }
281 return fTrace;
282 }
283
284 /**
285 * Get a CTFTrace instance created from a File. Make sure {@link #exists()}
286 * before calling this!
287 *
288 * @return The CTFTrace object
289 * @throws CTFException
290 * If the trace cannot be found.
291 */
292 public CTFTrace getTraceFromFile() throws CTFException {
293 if (fTraceFromFile == null) {
294 fTraceFromFile = new CTFTrace(new File(fPath));
295 }
296 return fTraceFromFile;
297 }
298
299 /**
300 * Check if this test trace actually exists on disk.
301 *
302 * @return If the trace exists
303 */
304 public boolean exists() {
305 try {
306 getTrace();
307 } catch (CTFException e) {
308 return false;
309 }
310 return true;
311 }
312 }
This page took 0.038892 seconds and 5 git commands to generate.