Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(431)

Side by Side Diff: scripts/slave/recipe_modules/chromium_android/tests/spawn_device_temp_monitor_test.py

Issue 1308173006: Create daemon to monitor android device temperatures (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: respond to comments Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 #!/usr/bin/env python
ghost stip (do not use) 2015/09/08 21:46:36 you should append a LICENSE directive at the top.
bpastene 2015/09/09 00:02:19 Done.
2
3 import json
4 import os
5 import shutil
6 import signal
7 import subprocess
8 import sys
9 import tempfile
10 import unittest
11
12 THIS_DIR = os.path.dirname(os.path.abspath(__file__))
13
14 # For 'test_env'.
15 sys.path.insert(
ghost stip (do not use) 2015/09/08 21:46:37 I wonder if you can use https://chromium.googlesou
bpastene 2015/09/09 00:02:19 It couldn't find unittests/test_env
16 0, os.path.abspath(os.path.join(THIS_DIR, '..', '..', '..', 'unittests')))
17 # For 'spawn_device_temp_monitor.py'.
18 sys.path.insert(
19 0, os.path.abspath(os.path.join(THIS_DIR, '..', 'resources')))
20
21 # Imported for side effects on sys.path.
22 import test_env
23 import mock
24
25 # In depot_tools/
26 from testing_support import auto_stub
27 import spawn_device_temp_monitor
28
ghost stip (do not use) 2015/09/08 21:46:37 two spaces for top-level import
bpastene 2015/09/09 00:02:19 Done.
29 class MainFuncTest(auto_stub.TestCase):
30
ghost stip (do not use) 2015/09/08 21:46:37 remove spaces
bpastene 2015/09/09 00:02:19 Done.
31 def setUp(self):
32 # Collect calls to 'subprocess.Popen', which calls send_ts_mon_values.py
ghost stip (do not use) 2015/09/08 21:46:36 period after comment
bpastene 2015/09/09 00:02:19 Done.
33 self.send_ts_mon_call = []
34 def mocked_ts_mon_calls(args):
35 self.send_ts_mon_call = args
36 self.mock(
37 spawn_device_temp_monitor.subprocess,
38 'Popen',
39 mocked_ts_mon_calls)
40
41 # Make sleep throw sigterm to simulate a kill and break out of loop
42 def mocked_sleep_call(duration):
43 self.assertEquals(30, duration)
44 raise spawn_device_temp_monitor.SigtermError()
45 self.mock(
46 spawn_device_temp_monitor.time,
47 'sleep',
48 mocked_sleep_call)
49
50 # Collect calls to os.kill
51 self.kill_calls = []
52 def mocked_kill_call(pid, thrown_signal):
53 self.kill_calls.append([pid, thrown_signal])
54 self.mock(
55 spawn_device_temp_monitor.os,
56 'kill',
57 mocked_kill_call)
58
59 def test_main_responsive_device(self):
60 # Collect calls to 'subprocess.check_output', which calls adb, and
61 # simulate a responsive device
62 adb_calls = []
63 def mocked_adb_calls(args):
64 adb_calls.append(args)
65 if args[4].startswith('grep'):
66 return "some_thermal_file_name"
67 elif args[4].startswith('cat'):
68 return "123"
69 elif args[4].startswith('dumpsys'):
70 return "temperature: 456"
71 else:
72 self.fail('Unexpected adb command: %s' % (' '.join(args)))
73
74 self.mock(
75 spawn_device_temp_monitor.subprocess,
76 'check_output',
77 mocked_adb_calls)
78 spawn_device_temp_monitor.main(
79 '/some/adb/path',
80 '["device_serial_1"]',
81 'metric_prefix')
82
83 # Should build args to send_ts_mon_values correctly
84 expected_cmd = [spawn_device_temp_monitor._RUN_PY,
85 'infra.tools.send_ts_mon_values',
86 '--float',
87 '{"name": "metric_prefix/device_serial_1/cpu_temp", "value": 123}',
88 '--float',
89 '{"name": "metric_prefix/device_serial_1/battery_temp", "value": 456}']
90 self.assertEquals(expected_cmd, self.send_ts_mon_call)
91
92 def test_main_unresponsive_device(self):
93 # Collect calls to 'subprocess.check_output', which calls adb, and
94 # simulate an unresponsive device
95 adb_calls = []
96 def mocked_adb_calls(args):
97 adb_calls.append(args)
98 raise subprocess.CalledProcessError
99
100 self.mock(
101 spawn_device_temp_monitor.subprocess,
102 'check_output',
103 mocked_adb_calls)
104 spawn_device_temp_monitor.main(
105 '/some/adb/path',
106 '["device_serial_1"]',
107 'metric_prefix')
108
109 # Should build args to send_ts_mon_values without any metrics
110 self.assertEquals(2, len(self.send_ts_mon_call))
111 self.assertEquals(
112 spawn_device_temp_monitor._RUN_PY,
113 self.send_ts_mon_call[0])
114 self.assertEquals(
115 'infra.tools.send_ts_mon_values',
116 self.send_ts_mon_call[1])
117
ghost stip (do not use) 2015/09/08 21:46:37 two spaces for top-level declarations
bpastene 2015/09/09 00:02:19 Done.
118 if __name__ == '__main__':
119 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698