import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assume.assumeTrue;
import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace;
import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
import org.eclipse.tracecompass.tmf.core.event.ITmfLostEvent;
import org.eclipse.tracecompass.tmf.core.request.ITmfEventRequest;
import org.eclipse.tracecompass.tmf.core.request.TmfEventRequest;
+import org.eclipse.tracecompass.tmf.core.synchronization.TimestampTransformFactory;
import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp;
import org.eclipse.tracecompass.tmf.core.timestamp.TmfNanoTimestamp;
import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimeRange;
+import org.eclipse.tracecompass.tmf.core.trace.ITmfContext;
import org.eclipse.tracecompass.tmf.ctf.core.event.CtfTmfEvent;
-import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTrace;
+import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTraceUtils;
import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
import org.junit.After;
import org.junit.Before;
*/
public class CtfTmfLostEventsTest {
- private static final CtfTmfTestTrace testTrace = CtfTmfTestTrace.HELLO_LOST;
+ private static final @NonNull CtfTestTrace testTrace = CtfTestTrace.HELLO_LOST;
private CtfTmfTrace fixture = null;
*/
@Before
public void setUp() {
- assumeTrue(testTrace.exists());
- fixture = testTrace.getTrace();
+ fixture = CtfTmfTestTraceUtils.getTrace(testTrace);
fixture.indexTrace(true);
}
*/
@Test
public void testNbEventsBug475007() {
- final CtfTmfTestTrace tmfTestTrace = CtfTmfTestTrace.DYNSCOPE;
- assumeTrue(tmfTestTrace.exists());
- CtfTmfTrace trace = tmfTestTrace.getTrace();
+ final CtfTestTrace tmfTestTrace = CtfTestTrace.DYNSCOPE;
+ CtfTmfTrace trace = CtfTmfTestTraceUtils.getTrace(tmfTestTrace);
trace.indexTrace(true);
final long expectedReal = 100003;
*/
@Test
public void testFirstLostEvent() {
- final long rank = 190;
- final ITmfTimestamp start = new TmfNanoTimestamp(1376592664828900165L);
- final ITmfTimestamp end = new TmfNanoTimestamp(1376592664829403076L);
+ final long rank = 152;
+ final long startTime = 1376592664828848222L;
+ final ITmfTimestamp start = new TmfNanoTimestamp(startTime);
+ final ITmfTimestamp end = new TmfNanoTimestamp(startTime + 554854L);
final long nbLost = 859;
- final CtfTmfEvent ev = getOneEventTime(start);
- /* Make sure seeking by rank yields the same event */
- final CtfTmfEvent ev2 = getOneEventRank(rank);
- assertEquals(ev, ev2);
-
- assertTrue(ev instanceof ITmfLostEvent);
- ITmfLostEvent event = (ITmfLostEvent) ev;
-
- assertEquals(start, event.getTimestamp());
- assertEquals(start, event.getTimeRange().getStartTime());
- assertEquals(end, event.getTimeRange().getEndTime());
- assertEquals(nbLost, event.getNbLostEvents());
+ validateLostEvent(rank, start, end, nbLost);
}
/**
*/
@Test
public void testSecondLostEvent() {
- final long rank = 229;
- final ITmfTimestamp start = new TmfNanoTimestamp(1376592664829477058L);
- final ITmfTimestamp end = new TmfNanoTimestamp(1376592664829824514L);
+ final long rank = 191;
+ final long startTime = 1376592664829402521L;
+ final ITmfTimestamp start = new TmfNanoTimestamp(startTime);
+ final ITmfTimestamp end = new TmfNanoTimestamp(startTime + 421993L);
final long nbLost = 488;
+ validateLostEvent(rank, start, end, nbLost);
+ }
+
+ private void validateLostEvent(final long rank, final @NonNull ITmfTimestamp start, final ITmfTimestamp end, final long nbLost) {
final CtfTmfEvent ev = getOneEventTime(start);
/* Make sure seeking by rank yields the same event */
final CtfTmfEvent ev2 = getOneEventRank(rank);
*/
@Test
public void testNormalEvent() {
- final long rank = 200;
- final ITmfTimestamp ts = new TmfNanoTimestamp(1376592664829425780L);
+ final long rank = 193;
+ final ITmfTimestamp ts = new TmfNanoTimestamp(1376592664829411423L);
final CtfTmfEvent event = getOneEventTime(ts);
/* Make sure seeking by rank yields the same event */
assertEquals(ts, event.getTimestamp());
}
+ /**
+ * Test getting a lost event from a trace that has a timestamp transform.
+ */
+ @Test
+ public void testLostEventWithTransform() {
+ CtfTmfTrace trace = CtfTmfTestTraceUtils.getTrace(testTrace);
+ long offset = 1234567890L;
+ trace.setTimestampTransform(TimestampTransformFactory.createWithOffset(offset));
+ trace.indexTrace(true);
+
+ final long rank = 152;
+ final ITmfTimestamp start = new TmfNanoTimestamp(1376592664828848222L + offset);
+ final ITmfTimestamp end = new TmfNanoTimestamp(1376592664828848222L + 554854L + offset);
+ final long nbLost = 859;
+
+ ITmfContext context = trace.seekEvent(rank);
+ final CtfTmfEvent ev = trace.getNext(context);
+ context.dispose();
+
+ assertTrue(ev instanceof ITmfLostEvent);
+ ITmfLostEvent event = (ITmfLostEvent) ev;
+
+ assertEquals(start, event.getTimestamp());
+ assertEquals(start, event.getTimeRange().getStartTime());
+ assertEquals(end, event.getTimeRange().getEndTime());
+ assertEquals(nbLost, event.getNbLostEvents());
+
+ trace.setTimestampTransform(null);
+ trace.dispose();
+ }
+
// ------------------------------------------------------------------------
// Event requests
// ------------------------------------------------------------------------
public OneEventRequestPerTs(@NonNull ITmfTimestamp ts) {
super(CtfTmfEvent.class,
new TmfTimeRange(ts, ts),
- 0, ITmfEventRequest.ALL_DATA, ExecutionType.FOREGROUND);
+ 0, 1, ExecutionType.FOREGROUND);
}
@Override