| #!/usr/bin/env python |
| |
| # Copyright (c) 2017 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import logging |
| import unittest |
| |
| from systrace import decorators |
| from systrace import run_systrace |
| from systrace.tracing_agents import walt_agent |
| |
| |
| class WaltAgentTest(unittest.TestCase): |
| """ |
| The WALT agent pulls the trace log from the Android phone, and does not |
| communicate with the WALT device directly. This makes the agent similar |
| to atrace. Since the host only connects to the Android phone, more exhaustive |
| testing would require mocking DeviceUtils. |
| """ |
| |
| @decorators.HostOnlyTest |
| def test_construct_walt_args(self): |
| options, _ = run_systrace.parse_options(['./run_systrace.py', |
| '--walt']) |
| self.assertTrue(walt_agent.get_config(options).is_walt_enabled) |
| options, _ = run_systrace.parse_options(['./run_systrace.py']) |
| self.assertFalse(walt_agent.get_config(options).is_walt_enabled) |
| |
| @decorators.HostOnlyTest |
| def test_format_clock_sync_marker(self): |
| actual_marker = walt_agent.format_clock_sync_marker( |
| 'some_sync_id', 12345678901234) |
| expected_marker = ('<0>-0 (-----) [001] ...1 12345.6789012: ' + |
| 'tracing_mark_write: trace_event_clock_sync: ' + |
| 'name=some_sync_id\n') |
| self.assertEqual(actual_marker, expected_marker) |
| |
| @decorators.HostOnlyTest |
| def test_get_results_string(self): |
| agent = walt_agent.WaltAgent() |
| agent._trace_contents = '<trace contents here>\n' |
| agent._clock_sync_marker = '<clock sync marker here>\n' |
| result = agent._get_trace_result() |
| self.assertEquals(result, '# tracer: \n# clock_type=LINUX_CLOCK_MONOTONIC\n' |
| '<trace contents here>\n<clock sync marker here>\n') |
| |
| if __name__ == "__main__": |
| logging.getLogger().setLevel(logging.DEBUG) |
| unittest.main(verbosity=2) |