blob: d834203b243ea8f64a61e9747104078c2c037dd7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2019 École Polytechnique de Montréal
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
package org.eclipse.tracecompass.lttng2.kernel.core.tests.perf.analysis.xml;
import java.io.IOException;
import java.util.Arrays;
import org.apache.commons.io.FileUtils;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.ctf.core.tests.shared.CtfBenchmarkTrace;
import org.eclipse.tracecompass.lttng2.kernel.core.tests.Activator;
import org.eclipse.tracecompass.lttng2.kernel.core.trace.LttngKernelTrace;
import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace;
import org.eclipse.tracecompass.tmf.analysis.xml.core.tests.perf.XmlAnalysisPerfBenchmark;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfTraceException;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
import org.eclipse.tracecompass.tmf.ctf.core.event.CtfTmfEvent;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
/**
* Performance test of some XML analyses for kernel traces
*
* @author Geneviève Bastien
*/
@RunWith(Parameterized.class)
public class LttngKernelXmlAnalysisBenchmark extends XmlAnalysisPerfBenchmark {
/**
* @return The arrays of parameters
* @throws IOException
* Exception thrown by reading files
*/
@Parameters(name = "{index}: {0}")
public static Iterable<Object[]> getParameters() throws IOException {
return Arrays.asList(new Object[][] {
{ "syscall with many threads", 25, "syscallSegments.xml", "xml.syscall.cpu.time", FileUtils.toFile(FileLocator.toFileURL(CtfTestTrace.MANY_THREADS.getTraceURL())).getAbsolutePath() },
{ "syscall with os_events", 10, "syscallSegments.xml", "xml.syscall.cpu.time", CtfBenchmarkTrace.ALL_OS_ANALYSES.getTracePath().toString() },
});
}
private final String fFileTracePath;
/**
* Constructor
*
* @param name
* Name of the test
* @param loopCount
* The number of iterations to do
* @param xmlFileName
* File name
* @param xmlAnalysisName
* The name of the XML analysis
* @param testTrace
* The CTF test trace to use
*/
public LttngKernelXmlAnalysisBenchmark(String name, int loopCount, String xmlFileName, @NonNull String xmlAnalysisName, String testTrace) {
super(name, Activator.getAbsoluteFilePath("testfiles/xml/" + xmlFileName).toOSString(), xmlAnalysisName, loopCount);
fFileTracePath = testTrace;
}
@Override
protected ITmfTrace getTrace() throws TmfTraceException {
LttngKernelTrace trace = new LttngKernelTrace();
try {
trace.initTrace(null, fFileTracePath, CtfTmfEvent.class);
return trace;
} catch (TmfTraceException e) {
trace.dispose();
throw e;
}
}
}