ctf: Move plugins to their own sub-directory
[deliverable/tracecompass.git] / ctf / org.eclipse.tracecompass.ctf.core.tests / perf / org / eclipse / tracecompass / ctf / core / tests / perf / trace / TraceReadBenchmark.java
1 /*******************************************************************************
2 * Copyright (c) 2012, 2014 Ericsson
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Matthew Khouzam - Initial API and implementation
11 * Alexandre Montplaisir - Convert to a org.eclipse.test.performance test
12 *******************************************************************************/
13
14 package org.eclipse.tracecompass.ctf.core.tests.perf.trace;
15
16 import static org.junit.Assert.fail;
17 import static org.junit.Assume.assumeTrue;
18
19 import org.eclipse.test.performance.Dimension;
20 import org.eclipse.test.performance.Performance;
21 import org.eclipse.test.performance.PerformanceMeter;
22 import org.eclipse.tracecompass.ctf.core.CTFException;
23 import org.eclipse.tracecompass.ctf.core.event.EventDefinition;
24 import org.eclipse.tracecompass.ctf.core.tests.shared.CtfTestTrace;
25 import org.eclipse.tracecompass.ctf.core.trace.CTFTrace;
26 import org.eclipse.tracecompass.ctf.core.trace.CTFTraceReader;
27 import org.junit.Test;
28
29 /**
30 * Benchmark of the CTF parser for reading a trace
31 *
32 * @author Matthew Khouzam
33 * @author Alexandre Montplaisir
34 */
35 public class TraceReadBenchmark {
36
37 private static final String TEST_SUITE_NAME = "CTF Read Benchmark";
38 private static final String TEST_ID = "org.eclipse.linuxtools#" + TEST_SUITE_NAME;
39 private static final int LOOP_COUNT = 100;
40
41 /**
42 * Benchmark reading the trace "kernel"
43 */
44 @Test
45 public void testKernelTrace() {
46 readTrace(CtfTestTrace.KERNEL, "trace-kernel", true);
47 }
48
49 /**
50 * Benchmark reading the bigger trace "kernel_vm"
51 */
52 @Test
53 public void testKernelVmTrace() {
54 readTrace(CtfTestTrace.KERNEL_VM, "trace-kernel-vm", false);
55 }
56
57 private static void readTrace(CtfTestTrace testTrace, String testName, boolean inGlobalSummary) {
58 assumeTrue(testTrace.exists());
59
60 Performance perf = Performance.getDefault();
61 PerformanceMeter pm = perf.createPerformanceMeter(TEST_ID + '#' + testName);
62 perf.tagAsSummary(pm, TEST_SUITE_NAME + ':' + testName, Dimension.CPU_TIME);
63
64 if (inGlobalSummary) {
65 perf.tagAsGlobalSummary(pm, TEST_SUITE_NAME + ':' + testName, Dimension.CPU_TIME);
66 }
67
68 for (int loop = 0; loop < LOOP_COUNT; loop++) {
69 pm.start();
70 try {
71 CTFTrace trace = testTrace.getTrace();
72 try (CTFTraceReader traceReader = new CTFTraceReader(trace);) {
73
74 while (traceReader.hasMoreEvents()) {
75 EventDefinition ed = traceReader.getCurrentEventDef();
76 /* Do something with the event */
77 ed.getCPU();
78 traceReader.advance();
79 }
80 }
81 } catch (CTFException e) {
82 /* Should not happen if assumeTrue() passed above */
83 fail("Test failed at iteration " + loop + ':' + e.getMessage());
84 }
85 pm.stop();
86 }
87 pm.commit();
88 }
89 }
This page took 0.047894 seconds and 5 git commands to generate.