#!/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 = '\n' agent._clock_sync_marker = '\n' result = agent._get_trace_result() self.assertEquals(result, '# tracer: \n# clock_type=LINUX_CLOCK_MONOTONIC\n' '\n\n') if __name__ == "__main__": logging.getLogger().setLevel(logging.DEBUG) unittest.main(verbosity=2)