ctf: remove unused fields from `babeltrace.trace-info` query
[babeltrace.git] / tests / plugins / src.ctf.fs / query / test_query_trace_info.py
index 8d8cda783a58e7762fb61e478b44550d6436b25c..1c532bb54f8474159ca2a8efe3bf7c7b37192452 100644 (file)
@@ -26,10 +26,7 @@ test_ctf_traces_path = os.environ['BT_CTF_TRACES_PATH']
 
 # Key to sort streams in a predictable order.
 def sort_predictably(stream):
-    if 'range-ns' in stream:
-        return stream['range-ns']['begin']
-    else:
-        return stream['paths'][0]
+    return stream['port-name']
 
 
 class QueryTraceInfoClockOffsetTestCase(unittest.TestCase):
@@ -40,11 +37,8 @@ class QueryTraceInfoClockOffsetTestCase(unittest.TestCase):
         self._inputs = [
             os.path.join(test_ctf_traces_path, 'intersection', '3eventsintersect')
         ]
-        self._executor = bt2.QueryExecutor()
 
     def _check(self, trace, offset):
-        self.assertEqual(trace['range-ns']['begin'], 13515309000000000 + offset)
-        self.assertEqual(trace['range-ns']['end'], 13515309000000120 + offset)
         self.assertEqual(
             trace['intersection-range-ns']['begin'], 13515309000000070 + offset
         )
@@ -64,38 +58,38 @@ class QueryTraceInfoClockOffsetTestCase(unittest.TestCase):
     # Without clock class offset
 
     def test_no_clock_class_offset(self):
-        res = self._executor.query(
+        res = bt2.QueryExecutor(
             self._fs, 'babeltrace.trace-info', {'inputs': self._inputs}
-        )
+        ).query()
         trace = res[0]
         self._check(trace, 0)
 
     # With clock-class-offset-s
 
     def test_clock_class_offset_s(self):
-        res = self._executor.query(
+        res = bt2.QueryExecutor(
             self._fs,
             'babeltrace.trace-info',
             {'inputs': self._inputs, 'clock-class-offset-s': 2},
-        )
+        ).query()
         trace = res[0]
         self._check(trace, 2000000000)
 
     # With clock-class-offset-ns
 
     def test_clock_class_offset_ns(self):
-        res = self._executor.query(
+        res = bt2.QueryExecutor(
             self._fs,
             'babeltrace.trace-info',
             {'inputs': self._inputs, 'clock-class-offset-ns': 2},
-        )
+        ).query()
         trace = res[0]
         self._check(trace, 2)
 
     # With both, negative
 
     def test_clock_class_offset_both(self):
-        res = self._executor.query(
+        res = bt2.QueryExecutor(
             self._fs,
             'babeltrace.trace-info',
             {
@@ -103,41 +97,41 @@ class QueryTraceInfoClockOffsetTestCase(unittest.TestCase):
                 'clock-class-offset-s': -2,
                 'clock-class-offset-ns': -2,
             },
-        )
+        ).query()
         trace = res[0]
         self._check(trace, -2000000002)
 
     def test_clock_class_offset_s_wrong_type(self):
         with self.assertRaises(bt2._Error):
-            self._executor.query(
+            bt2.QueryExecutor(
                 self._fs,
                 'babeltrace.trace-info',
                 {'inputs': self._inputs, 'clock-class-offset-s': "2"},
-            )
+            ).query()
 
     def test_clock_class_offset_s_wrong_type_none(self):
         with self.assertRaises(bt2._Error):
-            self._executor.query(
+            bt2.QueryExecutor(
                 self._fs,
                 'babeltrace.trace-info',
                 {'inputs': self._inputs, 'clock-class-offset-s': None},
-            )
+            ).query()
 
     def test_clock_class_offset_ns_wrong_type(self):
         with self.assertRaises(bt2._Error):
-            self._executor.query(
+            bt2.QueryExecutor(
                 self._fs,
                 'babeltrace.trace-info',
                 {'inputs': self._inputs, 'clock-class-offset-ns': "2"},
-            )
+            ).query()
 
     def test_clock_class_offset_ns_wrong_type_none(self):
         with self.assertRaises(bt2._Error):
-            self._executor.query(
+            bt2.QueryExecutor(
                 self._fs,
                 'babeltrace.trace-info',
                 {'inputs': self._inputs, 'clock-class-offset-ns': None},
-            )
+            ).query()
 
 
 class QueryTraceInfoPortNameTestCase(unittest.TestCase):
@@ -145,10 +139,8 @@ class QueryTraceInfoPortNameTestCase(unittest.TestCase):
         ctf = bt2.find_plugin("ctf")
         self._fs = ctf.source_component_classes["fs"]
 
-        self._executor = bt2.QueryExecutor()
-
     def test_trace_uuid_stream_class_id_no_stream_id(self):
-        res = self._executor.query(
+        res = bt2.QueryExecutor(
             self._fs,
             "babeltrace.trace-info",
             {
@@ -158,7 +150,7 @@ class QueryTraceInfoPortNameTestCase(unittest.TestCase):
                     )
                 ]
             },
-        )
+        ).query()
 
         os_stream_path = PurePosixPath(
             '/tests/data/ctf-traces/intersection/3eventsintersect/'
@@ -184,11 +176,11 @@ class QueryTraceInfoPortNameTestCase(unittest.TestCase):
         )
 
     def test_trace_uuid_no_stream_class_id_no_stream_id(self):
-        res = self._executor.query(
+        res = bt2.QueryExecutor(
             self._fs,
             "babeltrace.trace-info",
             {"inputs": [os.path.join(test_ctf_traces_path, "succeed", "succeed1")]},
-        )
+        ).query()
 
         os_stream_path = PurePosixPath(
             '/tests/data/ctf-traces/succeed/succeed1/dummystream'
@@ -213,19 +205,17 @@ class QueryTraceInfoRangeTestCase(unittest.TestCase):
         ctf = bt2.find_plugin("ctf")
         self._fs = ctf.source_component_classes["fs"]
 
-        self._executor = bt2.QueryExecutor()
-
     def test_trace_no_range(self):
         # This trace has no `timestamp_begin` and `timestamp_end` in its
         # packet context. The `babeltrace.trace-info` query should omit
         # the `range-ns` fields in the `trace` and `stream` data
         # structures.
 
-        res = self._executor.query(
+        res = bt2.QueryExecutor(
             self._fs,
             "babeltrace.trace-info",
             {"inputs": [os.path.join(test_ctf_traces_path, "succeed", "succeed1")]},
-        )
+        ).query()
 
         self.assertEqual(len(res), 1)
         trace = res[0]
@@ -236,5 +226,38 @@ class QueryTraceInfoRangeTestCase(unittest.TestCase):
         self.assertRaises(KeyError, lambda: streams[0]['range-ns'])
 
 
+class QueryTraceInfoPacketTimestampQuirksTestCase(unittest.TestCase):
+    def setUp(self):
+        ctf = bt2.find_plugin('ctf')
+        self._fs = ctf.source_component_classes['fs']
+        self._path = os.path.join(test_ctf_traces_path, 'succeed')
+
+    def _test_lttng_quirks(self, trace_name):
+        res = bt2.QueryExecutor(
+            self._fs,
+            "babeltrace.trace-info",
+            {"inputs": [os.path.join(self._path, trace_name)]},
+        ).query()
+
+        self.assertEqual(len(res), 1)
+        return res[0]
+
+    def test_event_after_packet(self):
+        trace = self._test_lttng_quirks("lttng-event-after-packet")
+        streams = trace["streams"]
+        self.assertEqual(len(streams), 1)
+
+        self.assertEqual(streams[0]['range-ns']['begin'], 1565957300948091100)
+        self.assertEqual(streams[0]['range-ns']['end'], 1565957302180016069)
+
+    def test_lttng_crash(self):
+        trace = self._test_lttng_quirks("lttng-crash")
+        streams = trace["streams"]
+        self.assertEqual(len(streams), 1)
+
+        self.assertEqual(streams[0]['range-ns']['begin'], 1565891729288866738)
+        self.assertEqual(streams[0]['range-ns']['end'], 1565891729293526525)
+
+
 if __name__ == '__main__':
     unittest.main()
This page took 0.026701 seconds and 4 git commands to generate.