| /******************************************************************************* |
| * 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 v1.0 which |
| * accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| *******************************************************************************/ |
| |
| package org.eclipse.tracecompass.incubator.scripting.core.tests.stubs; |
| |
| import static org.junit.Assert.assertNotNull; |
| import static org.junit.Assert.fail; |
| |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.jdt.annotation.NonNullByDefault; |
| import org.eclipse.tracecompass.incubator.scripting.core.analysis.AnalysisScriptingModule; |
| import org.eclipse.tracecompass.incubator.scripting.core.analysis.ScriptedAnalysis; |
| import org.eclipse.tracecompass.incubator.scripting.core.tests.ActivatorTest; |
| import org.eclipse.tracecompass.tmf.core.event.TmfEvent; |
| import org.eclipse.tracecompass.tmf.core.signal.TmfTraceOpenedSignal; |
| import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace; |
| import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager; |
| import org.eclipse.tracecompass.tmf.tests.stubs.trace.xml.TmfXmlTraceStub; |
| import org.eclipse.tracecompass.tmf.tests.stubs.trace.xml.TmfXmlTraceStubNs; |
| |
| /** |
| * Utility methods for scripting tests. |
| * |
| * @author Geneviève Bastien |
| */ |
| @NonNullByDefault |
| public class ScriptingTestUtils { |
| |
| private static final String CALLSTACK_FILE = "testfiles/traces/callstack.xml"; |
| |
| private ScriptingTestUtils() { |
| // Nothing to do |
| } |
| |
| /** |
| * Get a trace to run tests with. The trace will be initialized and opened. |
| * The caller should dispose of it at the end of the test. |
| * |
| * @return A trace to run tests on |
| */ |
| public static ITmfTrace getTrace() { |
| TmfXmlTraceStub trace = new TmfXmlTraceStubNs(); |
| try { |
| |
| IPath filePath = ActivatorTest.getAbsoluteFilePath(CALLSTACK_FILE); |
| IStatus status = trace.validate(null, filePath.toOSString()); |
| if (!status.isOK()) { |
| fail(status.getException().getMessage()); |
| } |
| trace.initTrace(null, filePath.toOSString(), TmfEvent.class); |
| |
| TmfTraceOpenedSignal signal = new TmfTraceOpenedSignal(null, trace, null); |
| trace.traceOpened(signal); |
| TmfTraceManager.getInstance().traceOpened(signal); |
| |
| return trace; |
| } catch (Exception e) { |
| trace.dispose(); |
| throw new NullPointerException("The trace could not be instantiated" + e.getMessage()); |
| } |
| |
| } |
| |
| /** |
| * Get a {@link ScriptedAnalysis} instance with the given name for a trace |
| * |
| * @param trace |
| * The trace associated with the analysis. The trace can be |
| * obtained using {@link #getTrace()}. |
| * @param analysisName |
| * The name of the analysis to generate. |
| * @return The scripted analysis |
| */ |
| public static ScriptedAnalysis getAnalysis(ITmfTrace trace, String analysisName) { |
| AnalysisScriptingModule scriptModule = new AnalysisScriptingModule(); |
| |
| ScriptedAnalysis analysis = scriptModule.createScriptedAnalysis(trace, analysisName); |
| assertNotNull(analysis); |
| |
| return analysis; |
| } |
| |
| } |