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
CommitLineData
7db66c58
AM
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
f357bcd4 14package org.eclipse.tracecompass.ctf.core.tests.perf.trace;
7db66c58
AM
15
16import static org.junit.Assert.fail;
17import static org.junit.Assume.assumeTrue;
18
7db66c58
AM
19import org.eclipse.test.performance.Dimension;
20import org.eclipse.test.performance.Performance;
21import org.eclipse.test.performance.PerformanceMeter;
680f9173 22import org.eclipse.tracecompass.ctf.core.CTFException;
f357bcd4
AM
23import org.eclipse.tracecompass.ctf.core.event.EventDefinition;
24import org.eclipse.tracecompass.ctf.core.tests.shared.CtfTestTrace;
f357bcd4
AM
25import org.eclipse.tracecompass.ctf.core.trace.CTFTrace;
26import org.eclipse.tracecompass.ctf.core.trace.CTFTraceReader;
7db66c58
AM
27import 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 */
35public 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;
f14c2f97 39 private static final int LOOP_COUNT = 100;
7db66c58
AM
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();
b562a24f
MK
70 try {
71 CTFTrace trace = testTrace.getTrace();
72 try (CTFTraceReader traceReader = new CTFTraceReader(trace);) {
7db66c58 73
b562a24f
MK
74 while (traceReader.hasMoreEvents()) {
75 EventDefinition ed = traceReader.getCurrentEventDef();
76 /* Do something with the event */
77 ed.getCPU();
78 traceReader.advance();
79 }
7db66c58 80 }
680f9173 81 } catch (CTFException e) {
7db66c58
AM
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.067349 seconds and 5 git commands to generate.