blob: 998926a16c8e6243d2ec9b7b4858f2701e07dc01 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2017 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
*******************************************************************************/
package org.eclipse.tracecompass.tmf.ctf.core.tests.trace;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfTraceException;
import org.eclipse.tracecompass.tmf.core.synchronization.TimestampTransformFactory;
import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp;
import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
import org.eclipse.tracecompass.tmf.ctf.core.event.CtfTmfEvent;
import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTraceUtils;
import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
import org.junit.Test;
/**
* Test the methods to read the start and end times from a CtfTmfTrace trace without reading
* the entire trace or indexing it.
*
* @author Loic Prieur-Drevon
*
*/
public class CtfTmfReadBoundsTest {
/**
* Test that the methods for reading the trace without indexing it return
* the right values.
*/
@Test
public void testRapidBounds() {
CtfTmfTrace trace = CtfTmfTestTraceUtils.getTrace(CtfTestTrace.TRACE2);
try {
ITmfTimestamp start = trace.readStart();
assertNotNull("Failed to read CtfTmfTrace start time", start);
assertEquals(1331668247314038062L, start.toNanos());
ITmfTimestamp end = trace.readEnd();
assertNotNull("Failed to read CtfTmfTrace end time", end);
assertEquals(1331668259054285979L, end.toNanos());
} finally {
CtfTmfTestTraceUtils.dispose(CtfTestTrace.TRACE2);
}
}
/**
* Test that the methods for reading the trace without indexing it return
* the right values, using a trace with a timestamp transform.
*
* @throws TmfTraceException if an exception occurs
*/
@Test
public void testRapidBoundsWithTransform() throws TmfTraceException {
CtfTmfTrace trace = CtfTmfTestTraceUtils.getTrace(CtfTestTrace.TRACE2);
CtfTmfTrace traceWithOffset = new CtfTmfTrace();
traceWithOffset.setTimestampTransform(TimestampTransformFactory.createWithOffset(500000000L));
traceWithOffset.initTrace(null, trace.getPath(), CtfTmfEvent.class);
try {
ITmfTimestamp start = traceWithOffset.readStart();
assertNotNull("Failed to read CtfTmfTrace start time", start);
assertEquals(1331668247814038062L, start.toNanos());
ITmfTimestamp end = traceWithOffset.readEnd();
assertNotNull("Failed to read CtfTmfTrace end time", end);
assertEquals(1331668259554285979L, end.toNanos());
} finally {
traceWithOffset.dispose();
CtfTmfTestTraceUtils.dispose(CtfTestTrace.TRACE2);
TmfTraceManager.deleteSupplementaryFiles(traceWithOffset);
}
}
}