blob: dd7f2d84642c9f37c639c1749ff0162693ac4d39 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014 Ericsson
*
* 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
*
* Contributors:
* Matthew Khouzam - Initial API and implementation
*******************************************************************************/
package org.eclipse.tracecompass.btf.core.tests.utils;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Path;
import org.eclipse.tracecompass.btf.core.tests.BtfTestPlugin;
import org.eclipse.tracecompass.btf.core.trace.BtfTrace;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfTraceException;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
import org.osgi.framework.Bundle;
/**
* Wrapper like CtfTestTrace but for BTF, the best trace format
* @author Matthew Khouzam
*/
public enum BtfTestTrace {
/** btf test trace*/
BTF_TEST("20140219-123819.btf");
private final String fPath;
private final String fDirectory = "testfiles";
private BtfTrace fTrace = null;
private BtfTestTrace(String file) {
fPath = file;
}
/**
* Get the path of the trace
*
* @return The path of this trace
*/
public String getPath() {
return fPath;
}
/**
* Get the full path of the trace
*
* @return The full path of the trace
*/
public String getFullPath() {
return fDirectory + File.separator + fPath;
}
/**
* Return a ITmfTrace object of this test trace. It will be already
* initTrace()'ed. This method will always return a new trace and dispose of
* the old one.
*
* After being used by unit tests, traces must be properly disposed of by
* calling the {@link BtfTestTrace#dispose()} method.
*
* @return A {@link ITmfTrace} reference to this trace
*/
public BtfTrace getTrace() {
if (fTrace != null) {
fTrace.dispose();
}
Bundle bundle = BtfTestPlugin.getBundle();
Path path = new Path(fDirectory + File.separator + fPath);
final URL location = FileLocator.find(bundle,path, null);
File test;
try {
test = new File(FileLocator.toFileURL(location).toURI());
fTrace = new BtfTrace();
fTrace.initTrace(null, test.getAbsolutePath(), null);
} catch (URISyntaxException | IOException | TmfTraceException e) {
throw new RuntimeException(e);
}
return fTrace;
}
/**
* Dispose of the trace
*/
public void dispose() {
if (fTrace != null) {
fTrace.dispose();
fTrace = null;
}
}
}