X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=tests%2Fplugins%2Fsrc.ctf.fs%2Fquery%2Ftest_query_trace_info.py;h=41b2b83121206ef8938451174d65c4e88519ecd9;hb=5f2a1585bf407f3f3aa7e63d9041b75390cf8563;hp=2d99d681086020f909d5ab0ab3800090518b42b8;hpb=3c729b9af1b926f739be5bbba4ec20a296746023;p=babeltrace.git diff --git a/tests/plugins/src.ctf.fs/query/test_query_trace_info.py b/tests/plugins/src.ctf.fs/query/test_query_trace_info.py index 2d99d681..41b2b831 100644 --- a/tests/plugins/src.ctf.fs/query/test_query_trace_info.py +++ b/tests/plugins/src.ctf.fs/query/test_query_trace_info.py @@ -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): @@ -42,29 +39,20 @@ class QueryTraceInfoClockOffsetTestCase(unittest.TestCase): ] 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 - ) - self.assertEqual( - trace['intersection-range-ns']['end'], 13515309000000100 + offset - ) - - streams = sorted(trace['streams'], key=sort_predictably) + streams = sorted(trace['stream-infos'], key=sort_predictably) self.assertEqual(streams[0]['range-ns']['begin'], 13515309000000000 + offset) self.assertEqual(streams[0]['range-ns']['end'], 13515309000000100 + offset) self.assertEqual(streams[1]['range-ns']['begin'], 13515309000000070 + offset) self.assertEqual(streams[1]['range-ns']['end'], 13515309000000120 + offset) # Test various cominations of the clock-class-offset-s and - # clock-class-offset-ns parameters to babeltrace.trace-info queries. + # clock-class-offset-ns parameters to babeltrace.trace-infos queries. # Without clock class offset def test_no_clock_class_offset(self): res = bt2.QueryExecutor( - self._fs, 'babeltrace.trace-info', {'inputs': self._inputs} + self._fs, 'babeltrace.trace-infos', {'inputs': self._inputs} ).query() trace = res[0] self._check(trace, 0) @@ -74,7 +62,7 @@ class QueryTraceInfoClockOffsetTestCase(unittest.TestCase): def test_clock_class_offset_s(self): res = bt2.QueryExecutor( self._fs, - 'babeltrace.trace-info', + 'babeltrace.trace-infos', {'inputs': self._inputs, 'clock-class-offset-s': 2}, ).query() trace = res[0] @@ -85,7 +73,7 @@ class QueryTraceInfoClockOffsetTestCase(unittest.TestCase): def test_clock_class_offset_ns(self): res = bt2.QueryExecutor( self._fs, - 'babeltrace.trace-info', + 'babeltrace.trace-infos', {'inputs': self._inputs, 'clock-class-offset-ns': 2}, ).query() trace = res[0] @@ -96,7 +84,7 @@ class QueryTraceInfoClockOffsetTestCase(unittest.TestCase): def test_clock_class_offset_both(self): res = bt2.QueryExecutor( self._fs, - 'babeltrace.trace-info', + 'babeltrace.trace-infos', { 'inputs': self._inputs, 'clock-class-offset-s': -2, @@ -110,7 +98,7 @@ class QueryTraceInfoClockOffsetTestCase(unittest.TestCase): with self.assertRaises(bt2._Error): bt2.QueryExecutor( self._fs, - 'babeltrace.trace-info', + 'babeltrace.trace-infos', {'inputs': self._inputs, 'clock-class-offset-s': "2"}, ).query() @@ -118,7 +106,7 @@ class QueryTraceInfoClockOffsetTestCase(unittest.TestCase): with self.assertRaises(bt2._Error): bt2.QueryExecutor( self._fs, - 'babeltrace.trace-info', + 'babeltrace.trace-infos', {'inputs': self._inputs, 'clock-class-offset-s': None}, ).query() @@ -126,7 +114,7 @@ class QueryTraceInfoClockOffsetTestCase(unittest.TestCase): with self.assertRaises(bt2._Error): bt2.QueryExecutor( self._fs, - 'babeltrace.trace-info', + 'babeltrace.trace-infos', {'inputs': self._inputs, 'clock-class-offset-ns': "2"}, ).query() @@ -134,7 +122,7 @@ class QueryTraceInfoClockOffsetTestCase(unittest.TestCase): with self.assertRaises(bt2._Error): bt2.QueryExecutor( self._fs, - 'babeltrace.trace-info', + 'babeltrace.trace-infos', {'inputs': self._inputs, 'clock-class-offset-ns': None}, ).query() @@ -147,7 +135,7 @@ class QueryTraceInfoPortNameTestCase(unittest.TestCase): def test_trace_uuid_stream_class_id_no_stream_id(self): res = bt2.QueryExecutor( self._fs, - "babeltrace.trace-info", + "babeltrace.trace-infos", { "inputs": [ os.path.join( @@ -165,7 +153,7 @@ class QueryTraceInfoPortNameTestCase(unittest.TestCase): self.assertEqual(len(res), 1) trace = res[0] - streams = sorted(trace["streams"], key=sort_predictably) + streams = sorted(trace["stream-infos"], key=sort_predictably) self.assertEqual(len(streams), 2) self.assertRegexpMatches( str(streams[0]["port-name"]), @@ -183,7 +171,7 @@ class QueryTraceInfoPortNameTestCase(unittest.TestCase): def test_trace_uuid_no_stream_class_id_no_stream_id(self): res = bt2.QueryExecutor( self._fs, - "babeltrace.trace-info", + "babeltrace.trace-infos", {"inputs": [os.path.join(test_ctf_traces_path, "succeed", "succeed1")]}, ).query() @@ -195,7 +183,7 @@ class QueryTraceInfoPortNameTestCase(unittest.TestCase): self.assertEqual(len(res), 1) trace = res[0] - streams = sorted(trace["streams"], key=sort_predictably) + streams = sorted(trace["stream-infos"], key=sort_predictably) self.assertEqual(len(streams), 1) self.assertRegexpMatches( str(streams[0]["port-name"]), @@ -212,24 +200,57 @@ class QueryTraceInfoRangeTestCase(unittest.TestCase): 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 + # packet context. The `babeltrace.trace-infos` query should omit # the `range-ns` fields in the `trace` and `stream` data # structures. res = bt2.QueryExecutor( self._fs, - "babeltrace.trace-info", + "babeltrace.trace-infos", {"inputs": [os.path.join(test_ctf_traces_path, "succeed", "succeed1")]}, ).query() self.assertEqual(len(res), 1) trace = res[0] - streams = trace["streams"] + streams = trace["stream-infos"] self.assertEqual(len(streams), 1) self.assertRaises(KeyError, lambda: trace['range-ns']) 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-infos", + {"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["stream-infos"] + 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["stream-infos"] + 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()