ctf: Fix CtfTmfTrace.readEnd() to use createTimestamp()
authorPatrick Tasse <patrick.tasse@gmail.com>
Mon, 15 May 2017 21:13:20 +0000 (17:13 -0400)
committerPatrick Tasse <patrick.tasse@gmail.com>
Wed, 17 May 2017 23:28:45 +0000 (19:28 -0400)
The method should use createTimestamp(long) to create the timestamp, so
that any timestamp transformation configured for the trace is applied.

Change-Id: I55fc504dd3139600f3b211a359bfffbec34dc927
Signed-off-by: Patrick Tasse <patrick.tasse@gmail.com>
Reviewed-on: https://git.eclipse.org/r/97147
Reviewed-by: Hudson CI
Reviewed-by: Loic Prieur-Drevon <loic.prieurdrevon@gmail.com>
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
ctf/org.eclipse.tracecompass.tmf.ctf.core.tests/src/org/eclipse/tracecompass/tmf/ctf/core/tests/trace/CtfTmfReadBoundsTest.java
ctf/org.eclipse.tracecompass.tmf.ctf.core/src/org/eclipse/tracecompass/tmf/ctf/core/trace/CtfTmfTrace.java

index e3d4635e74d3ac3a4fa284cdb7fb0156db1459f2..c33c3d7cf8eab81b81e4ef820446076f5a6f5e3a 100644 (file)
@@ -13,7 +13,11 @@ 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;
@@ -34,13 +38,41 @@ public class CtfTmfReadBoundsTest {
     @Test
     public void testRapidBounds() {
         CtfTmfTrace trace = CtfTmfTestTraceUtils.getTrace(CtfTestTrace.TRACE2);
-        trace.init(trace.getPath());
         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(1331668259053641544L, end.toNanos());
         } finally {
-            trace.dispose();
+            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(1331668259553641544L, end.toNanos());
+        } finally {
+            traceWithOffset.dispose();
+            TmfTraceManager.deleteSupplementaryFiles(traceWithOffset);
+            CtfTmfTestTraceUtils.dispose(CtfTestTrace.TRACE2);
         }
     }
 
index 9e21f16ad506da99eebad03b450cb8e8b26cf97d..017d1dfbc57eeb221b002ec37b9376783ce0f50f 100644 (file)
@@ -823,11 +823,11 @@ public class CtfTmfTrace extends TmfTrace
      * @since 2.2
      */
     @Override
-    public ITmfTimestamp readEnd()  {
-        try (CTFTraceReader reader = new CTFTraceReader(fTrace);) {
+    public ITmfTimestamp readEnd() {
+        try (CTFTraceReader reader = new CTFTraceReader(fTrace)) {
             reader.goToLastEvent();
             long end = reader.getEndTime();
-            return TmfTimestamp.fromNanos(end);
+            return createTimestamp(end);
         } catch (CTFException e) {
             return null;
         }
This page took 0.027752 seconds and 5 git commands to generate.