ctf: Fix CtfTmfLostEvent time range does not use timestamp transform
authorPatrick Tasse <patrick.tasse@gmail.com>
Wed, 11 Nov 2015 14:49:12 +0000 (09:49 -0500)
committerPatrick Tasse <patrick.tasse@gmail.com>
Thu, 12 Nov 2015 18:08:35 +0000 (13:08 -0500)
When a timestamp transform or trace offset was set on the trace, the
lost event time range end time was not transformed, but the timestamp
and time range start time were.

Change-Id: Ie2e79b5e90e900bdaf2e7e8391868132bd632332
Signed-off-by: Patrick Tasse <patrick.tasse@gmail.com>
Reviewed-on: https://git.eclipse.org/r/60136
Reviewed-by: Hudson CI
Reviewed-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
Tested-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
ctf/org.eclipse.tracecompass.tmf.ctf.core.tests/src/org/eclipse/tracecompass/tmf/ctf/core/tests/event/CtfTmfLostEventsTest.java
ctf/org.eclipse.tracecompass.tmf.ctf.core/src/org/eclipse/tracecompass/tmf/ctf/core/event/CtfTmfEventFactory.java

index cfac0ae9ceefafef7cf19ab6ba80354bec9801bf..dc04ed68bfc56140b98db1cbe5465896a1d92110 100644 (file)
@@ -22,9 +22,11 @@ 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.CtfTmfTestTraceUtils;
 import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
@@ -188,6 +190,37 @@ public class CtfTmfLostEventsTest {
         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 = 190;
+        final ITmfTimestamp start = new TmfNanoTimestamp(1376592664828900165L + offset);
+        final ITmfTimestamp end   = new TmfNanoTimestamp(1376592664829403076L + 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
     // ------------------------------------------------------------------------
index d0632bb49ca172074dad5e234188e68b381e1ed4..4e8cc087857719e871a96d87c762420139c3a6b5 100644 (file)
@@ -140,7 +140,7 @@ public class CtfTmfEventFactory {
         }
         long nbLostEvents = ((IntegerDefinition) nbLostEventsDef).getValue();
         long duration = ((IntegerDefinition) durationDef).getValue();
-        TmfNanoTimestamp timestampEnd = new TmfNanoTimestamp(
+        TmfNanoTimestamp timestampEnd = trace.createTimestamp(
                 trace.timestampCyclesToNanos(ts) + duration);
 
         CtfTmfLostEvent lostEvent = new CtfTmfLostEvent(trace,
This page took 0.026784 seconds and 5 git commands to generate.