diff options
author | KP Singh <kpsingh@google.com> | 2017-06-21 22:10:14 +0200 |
---|---|---|
committer | KP Singh <kpsingh@google.com> | 2017-06-21 22:10:14 +0200 |
commit | 3b9f139fdcdb086e7ac8314a4beb3441a0b1418c (patch) | |
tree | 98550b0059ea3f694ded757f23fd8c18b4071465 | |
parent | 16ad8df451f9280ba91f3bc03f91c781b4f4596a (diff) | |
parent | 609a57afbb408c756357aa95f36713fa77be1865 (diff) | |
download | trappy-3b9f139fdcdb086e7ac8314a4beb3441a0b1418c.tar.gz |
Merge branch 'joelagnel-systrace-line-test'
-rw-r--r-- | tests/test_systrace.py | 41 | ||||
-rw-r--r-- | trappy/systrace.py | 12 |
2 files changed, 42 insertions, 11 deletions
diff --git a/tests/test_systrace.py b/tests/test_systrace.py index 0442458..667bf2c 100644 --- a/tests/test_systrace.py +++ b/tests/test_systrace.py @@ -17,6 +17,8 @@ import utils_tests import trappy +import numpy as np + class TestSystrace(utils_tests.SetupDirectory): def __init__(self, *args, **kwargs): @@ -55,14 +57,41 @@ class TestSystrace(utils_tests.SetupDirectory): def test_systrace_userspace(self): """Test parsing of userspace events""" + # Test a 'B' event (begin) trace = trappy.SysTrace("trace_sf.html") dfr = trace.tracing_mark_write.data_frame - self.assertTrue(dfr['__pid'].iloc[2], 7459) - self.assertTrue(dfr['__comm'].iloc[2], 'RenderThread') - self.assertTrue(dfr['pid'].iloc[2], 7459) - self.assertTrue(dfr['event'].iloc[2], 'B') - self.assertTrue(dfr['func'].iloc[2], 'notifyFramePending') - self.assertTrue(dfr['data'].iloc[-2], 'HW_VSYNC_0') + self.assertEquals(dfr['__pid'].iloc[2], 7591) + self.assertEquals(dfr['__comm'].iloc[2], 'RenderThread') + self.assertEquals(dfr['pid'].iloc[2], 7459) + self.assertEquals(dfr['event'].iloc[2], 'B') + self.assertEquals(dfr['func'].iloc[2], 'notifyFramePending') + self.assertEquals(dfr['data'].iloc[2], None) + + # Test a 'C' event (count) + self.assertEquals(dfr['__pid'].iloc[-2], 612) + self.assertEquals(dfr['__comm'].iloc[-2], 'HwBinder:594_1') + self.assertEquals(dfr['pid'].iloc[-2], 594) + self.assertEquals(dfr['func'].iloc[-2], 'HW_VSYNC_0') + self.assertEquals(dfr['event'].iloc[-2], 'C') + self.assertEquals(dfr['data'].iloc[-2], '0') + + # Test an 'E' event (end) + edfr = dfr[dfr['event'] == 'E'] + self.assertEquals(edfr['__pid'].iloc[0], 7591) + self.assertEquals(edfr['__comm'].iloc[0], 'RenderThread') + self.assertTrue(np.isnan(edfr['pid'].iloc[0])) + self.assertEquals(edfr['func'].iloc[0], None) + self.assertEquals(edfr['event'].iloc[0], 'E') + self.assertEquals(edfr['data'].iloc[0], None) + + def test_systrace_line_num(self): + """Test for line numbers in a systrace""" + trace = trappy.SysTrace("trace_sf.html") + dfr = trace.sched_switch.data_frame + self.assertEquals(trace.lines, 2506) + self.assertEquals(dfr['__line'].iloc[0], 0) + self.assertEquals(dfr['__line'].iloc[1], 6) + self.assertEquals(dfr['__line'].iloc[-1], 2505) class TestLegacySystrace(utils_tests.SetupDirectory): diff --git a/trappy/systrace.py b/trappy/systrace.py index 0a7f42b..2404f92 100644 --- a/trappy/systrace.py +++ b/trappy/systrace.py @@ -17,7 +17,7 @@ from trappy.ftrace import GenericFTrace import re SYSTRACE_EVENT = re.compile( - r'^(?P<event>[A-Z])(\|(?P<pid>\d+)\|(?P<func>.*)(\|(?P<data>\d+))?)?') + r'^(?P<event>[A-Z])(\|(?P<pid>\d+)\|(?P<func>[^|]*)(\|(?P<data>.*))?)?') class drop_before_trace(object): """Object that, when called, returns True if the line is not part of @@ -88,9 +88,11 @@ class SysTrace(GenericFTrace): match = SYSTRACE_EVENT.match(data_str) if match: - data_dict = { 'event': match.group('event'), - 'pid' : match.group('pid'), - 'func' : match.group('func'), - 'data' : match.group('data') } + data_dict = { + 'event': match.group('event'), + 'pid' : int(match.group('pid')) if match.group('pid') else None, + 'func' : match.group('func' ), + 'data' : match.group('data' ) + } return data_dict |