gdbtrace: Move plugins to the Trace Compass namespace
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.kernel.core.tests / perf / org / eclipse / linuxtools / lttng2 / kernel / core / tests / perf / event / matching / EventMatchingBenchmark.java
CommitLineData
ef3a9bfd
GB
1/*******************************************************************************
2 * Copyright (c) 2014 École Polytechnique de Montréal
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 * Geneviève Bastien - Initial API and implementation
11 *******************************************************************************/
12
13package org.eclipse.linuxtools.lttng2.kernel.core.tests.perf.event.matching;
14
15import static org.junit.Assume.assumeTrue;
16
17import java.util.Set;
18
19import org.eclipse.linuxtools.lttng2.kernel.core.event.matching.TcpEventMatching;
20import org.eclipse.linuxtools.lttng2.kernel.core.event.matching.TcpLttngEventMatching;
21import org.eclipse.linuxtools.tmf.core.event.matching.TmfEventMatching;
22import org.eclipse.linuxtools.tmf.core.event.matching.TmfNetworkEventMatching;
23import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
24import org.eclipse.linuxtools.tmf.ctf.core.CtfTmfTrace;
25import org.eclipse.linuxtools.tmf.ctf.core.tests.shared.CtfTmfTestTrace;
26import org.eclipse.test.performance.Dimension;
27import org.eclipse.test.performance.Performance;
28import org.eclipse.test.performance.PerformanceMeter;
29import org.junit.BeforeClass;
ef3a9bfd
GB
30import org.junit.Test;
31
32import com.google.common.collect.ImmutableSet;
33
34/**
35 * Benchmark simple event matching, without trace synchronization
36 *
37 * @author Geneviève Bastien
38 */
39public class EventMatchingBenchmark {
40
b09d20dc 41 private static final String TEST_ID = "org.eclipse.linuxtools#Event matching#";
ef3a9bfd
GB
42 private static final String TIME = " (time)";
43 private static final String MEMORY = " (memory usage)";
44 private static final String TEST_SUMMARY = "Event matching";
45
46 /**
47 * Initialize some data
48 */
49 @BeforeClass
50 public static void setUp() {
51 TmfEventMatching.registerMatchObject(new TcpEventMatching());
52 TmfEventMatching.registerMatchObject(new TcpLttngEventMatching());
53 }
54
55 /**
56 * Run the benchmark with 2 small traces
57 */
58 @Test
59 public void testSmallTraces() {
60 assumeTrue(CtfTmfTestTrace.SYNC_SRC.exists());
61 assumeTrue(CtfTmfTestTrace.SYNC_DEST.exists());
62 try (CtfTmfTrace trace1 = CtfTmfTestTrace.SYNC_SRC.getTrace();
63 CtfTmfTrace trace2 = CtfTmfTestTrace.SYNC_DEST.getTrace();) {
64 Set<ITmfTrace> traces = ImmutableSet.of((ITmfTrace) trace1, trace2);
f14c2f97 65 runCpuTest(traces, "Match TCP events", 100);
ef3a9bfd
GB
66 }
67 }
68
69 /**
70 * Run the benchmark with 3 bigger traces
ef3a9bfd 71 */
ef3a9bfd
GB
72 @Test
73 public void testDjangoTraces() {
74 assumeTrue(CtfTmfTestTrace.DJANGO_CLIENT.exists());
75 assumeTrue(CtfTmfTestTrace.DJANGO_DB.exists());
76 assumeTrue(CtfTmfTestTrace.DJANGO_HTTPD.exists());
77 try (CtfTmfTrace trace1 = CtfTmfTestTrace.DJANGO_CLIENT.getTrace();
78 CtfTmfTrace trace2 = CtfTmfTestTrace.DJANGO_DB.getTrace();
79 CtfTmfTrace trace3 = CtfTmfTestTrace.DJANGO_HTTPD.getTrace();) {
80 Set<ITmfTrace> traces = ImmutableSet.of((ITmfTrace) trace1, trace2, trace3);
81 runCpuTest(traces, "Django traces", 10);
82 runMemoryTest(traces, "Django traces", 10);
83 }
84 }
85
86 private static void runCpuTest(Set<ITmfTrace> testTraces, String testName, int loop_count) {
87 Performance perf = Performance.getDefault();
b09d20dc
GB
88 PerformanceMeter pm = perf.createPerformanceMeter(TEST_ID + testName + TIME);
89 perf.tagAsSummary(pm, TEST_SUMMARY + ':' + testName + TIME, Dimension.CPU_TIME);
ef3a9bfd
GB
90
91 for (int i = 0; i < loop_count; i++) {
92 TmfNetworkEventMatching traceMatch = new TmfNetworkEventMatching(testTraces);
93
94 pm.start();
95 traceMatch.matchEvents();
96 pm.stop();
97 }
98 pm.commit();
99
100 }
101
102 /* Benchmark memory used by the algorithm */
103 private static void runMemoryTest(Set<ITmfTrace> testTraces, String testName, int loop_count) {
104 Performance perf = Performance.getDefault();
b09d20dc
GB
105 PerformanceMeter pm = perf.createPerformanceMeter(TEST_ID + testName + MEMORY);
106 perf.tagAsSummary(pm, TEST_SUMMARY + ':' + testName + MEMORY, Dimension.USED_JAVA_HEAP);
ef3a9bfd
GB
107
108 for (int i = 0; i < loop_count; i++) {
109 TmfNetworkEventMatching traceMatch = new TmfNetworkEventMatching(testTraces);
110
111 System.gc();
112 pm.start();
113 traceMatch.matchEvents();
114 System.gc();
115 pm.stop();
116 }
117 pm.commit();
118
119 }
120}
This page took 0.030331 seconds and 5 git commands to generate.