| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 | 2 |
| 3 # Copyright 2016 The Chromium Authors. All rights reserved. | 3 # Copyright 2016 The Chromium Authors. All rights reserved. |
| 4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
| 5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
| 6 | 6 |
| 7 from collections import namedtuple | 7 from collections import namedtuple |
| 8 import unittest | 8 import unittest |
| 9 import logging | 9 import logging |
| 10 | 10 |
| 11 from systrace import decorators | 11 from systrace import decorators |
| 12 from systrace.tracing_agents import battor_trace_agent | 12 from systrace.tracing_agents import battor_trace_agent |
| 13 from battor import battor_wrapper | 13 from battor import battor_wrapper |
| 14 from devil.android import battery_utils | 14 from devil.android import battery_utils |
| 15 from devil.utils import battor_device_mapping | 15 from devil.utils import battor_device_mapping |
| 16 | 16 |
| 17 | 17 |
| 18 mock_opts = namedtuple('mock_opts', ['target', 'device_serial_number', | 18 mock_opts = namedtuple('mock_opts', ['target', 'device_serial_number', |
| 19 'hub_types', 'battor_path', | 19 'hub_types', 'battor_path', |
| 20 'update_map', 'serial_map']) | 20 'update_map', 'serial_map']) |
| 21 OPTIONS = mock_opts('android', 'Phn2', ['plugable_7port'], | 21 OPTIONS = mock_opts('android', 'Phn2', ['plugable_7port'], |
| 22 None, False, __file__) | 22 None, False, __file__) |
| 23 CATEGORIES = None | 23 CATEGORIES = None |
| 24 | 24 |
| 25 |
| 25 def raise_error(*args, **kwargs): | 26 def raise_error(*args, **kwargs): |
| 26 del args | 27 del args |
| 27 del kwargs | 28 del kwargs |
| 28 raise RuntimeError('Should not call this function in the test') | 29 raise RuntimeError('Should not call this function in the test') |
| 29 | 30 |
| 30 battor_device_mapping.GenerateSerialMapFile = raise_error | 31 battor_device_mapping.GenerateSerialMapFile = raise_error |
| 31 | 32 |
| 32 | |
| 33 def setup_battor_test(StartShell_error, StartTracing_error, | 33 def setup_battor_test(StartShell_error, StartTracing_error, |
| 34 StopTracing_error, CollectTraceData_error): | 34 StopTracing_error, CollectTraceData_error): |
| 35 wrapper = MockBattorWrapper(StartShell_error, StartTracing_error, | 35 wrapper = MockBattorWrapper(StartShell_error, StartTracing_error, |
| 36 StopTracing_error, CollectTraceData_error) | 36 StopTracing_error, CollectTraceData_error) |
| 37 def wrapper_maker(*args, **kwargs): | 37 def wrapper_maker(*args, **kwargs): |
| 38 del args | 38 del args |
| 39 del kwargs | 39 del kwargs |
| 40 return wrapper | 40 return wrapper |
| 41 battor_wrapper.BattorWrapper = wrapper_maker | 41 battor_wrapper.BattorWrapper = wrapper_maker |
| 42 | 42 |
| 43 |
| 43 class MockBattorWrapper(object): | 44 class MockBattorWrapper(object): |
| 44 def __init__(self, StartShell_error=False, StartTracing_error=False, | 45 def __init__(self, StartShell_error=False, StartTracing_error=False, |
| 45 StopTracing_error=False, CollectTraceData_error=False): | 46 StopTracing_error=False, CollectTraceData_error=False): |
| 46 self._StartShell_error = StartShell_error | 47 self._StartShell_error = StartShell_error |
| 47 self._StartTracing_error = StartTracing_error | 48 self._StartTracing_error = StartTracing_error |
| 48 self._StopTracing_error = StopTracing_error | 49 self._StopTracing_error = StopTracing_error |
| 49 self._CollectTraceData_error = CollectTraceData_error | 50 self._CollectTraceData_error = CollectTraceData_error |
| 50 self._running = False | 51 self._running = False |
| 51 self._tracing = False | 52 self._tracing = False |
| 52 self._output = False | 53 self._output = False |
| (...skipping 22 matching lines...) Expand all Loading... |
| 75 self._running = False | 76 self._running = False |
| 76 self._tracing = False | 77 self._tracing = False |
| 77 self._output = True | 78 self._output = True |
| 78 | 79 |
| 79 def CollectTraceData(self): | 80 def CollectTraceData(self): |
| 80 assert self._output | 81 assert self._output |
| 81 if self._CollectTraceData_error: | 82 if self._CollectTraceData_error: |
| 82 raise RuntimeError('Simulated error in CollectTraceData') | 83 raise RuntimeError('Simulated error in CollectTraceData') |
| 83 return 'traceout1\ntraceout2' | 84 return 'traceout1\ntraceout2' |
| 84 | 85 |
| 86 |
| 85 class MockBatteryUtils(object): | 87 class MockBatteryUtils(object): |
| 86 def __init__(self, _): | 88 def __init__(self, _): |
| 87 self._is_charging = True | 89 self._is_charging = True |
| 88 | 90 |
| 89 def GetCharging(self): | 91 def GetCharging(self): |
| 90 return self._is_charging | 92 return self._is_charging |
| 91 | 93 |
| 92 def SetCharging(self, value): | 94 def SetCharging(self, value): |
| 93 self._is_charging = value | 95 self._is_charging = value |
| 94 | 96 |
| 97 |
| 95 battery_utils.BatteryUtils = MockBatteryUtils | 98 battery_utils.BatteryUtils = MockBatteryUtils |
| 96 | 99 |
| 100 |
| 97 class BattorAgentTest(unittest.TestCase): | 101 class BattorAgentTest(unittest.TestCase): |
| 98 | 102 |
| 99 @decorators.HostOnlyTest | 103 @decorators.HostOnlyTest |
| 100 def test_trace_double_start(self): | 104 def test_trace_double_start(self): |
| 101 setup_battor_test(StartShell_error=False, StartTracing_error=False, | 105 setup_battor_test(StartShell_error=False, StartTracing_error=False, |
| 102 StopTracing_error=False, CollectTraceData_error=False) | 106 StopTracing_error=False, CollectTraceData_error=False) |
| 103 agent = battor_trace_agent.BattorTraceAgent() | 107 agent = battor_trace_agent.BattorTraceAgent() |
| 104 agent.StartAgentTracing(OPTIONS, CATEGORIES) | 108 agent.StartAgentTracing(OPTIONS, CATEGORIES) |
| 105 self.assertRaises(AssertionError, | 109 self.assertRaises(AssertionError, |
| 106 lambda: agent.StartAgentTracing(OPTIONS, CATEGORIES)) | 110 lambda: agent.StartAgentTracing(OPTIONS, CATEGORIES)) |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 @decorators.HostOnlyTest | 145 @decorators.HostOnlyTest |
| 142 def test_trace_complete(self): | 146 def test_trace_complete(self): |
| 143 setup_battor_test(StartShell_error=False, StartTracing_error=False, | 147 setup_battor_test(StartShell_error=False, StartTracing_error=False, |
| 144 StopTracing_error=False, CollectTraceData_error=False) | 148 StopTracing_error=False, CollectTraceData_error=False) |
| 145 agent = battor_trace_agent.BattorTraceAgent() | 149 agent = battor_trace_agent.BattorTraceAgent() |
| 146 agent.StartAgentTracing(OPTIONS, CATEGORIES) | 150 agent.StartAgentTracing(OPTIONS, CATEGORIES) |
| 147 agent.StopAgentTracing() | 151 agent.StopAgentTracing() |
| 148 x = agent.GetResults() | 152 x = agent.GetResults() |
| 149 self.assertEqual(x.raw_data, 'traceout1\ntraceout2') | 153 self.assertEqual(x.raw_data, 'traceout1\ntraceout2') |
| 150 | 154 |
| 155 |
| 151 if __name__ == "__main__": | 156 if __name__ == "__main__": |
| 152 logging.getLogger().setLevel(logging.DEBUG) | 157 logging.getLogger().setLevel(logging.DEBUG) |
| 153 unittest.main(verbosity=2) | 158 unittest.main(verbosity=2) |
| OLD | NEW |