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

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: 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
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(
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
29 class MainFuncTest(auto_stub.TestCase):
30
31 def setUp(self):
32 # Collect calls to 'subprocess.Popen', which calls send_ts_mon_values.py
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"
luqui 2015/09/03 01:10:41 else: die horribly
bpastene 2015/09/04 03:47:21 Done.
71
72 self.mock(
73 spawn_device_temp_monitor.subprocess,
74 'check_output',
75 mocked_adb_calls)
76 spawn_device_temp_monitor.main(
77 '/some/adb/path',
78 '["device_serial_1"]',
79 'metric_prefix', None)
80
81 # Should build args to send_ts_mon_values correctly
82 self.assertEquals(6, len(self.send_ts_mon_call))
luqui 2015/09/03 01:10:41 Woah that's a lot of asserts, why not just assert
bpastene 2015/09/04 03:47:21 Done.
83 self.assertEquals(
84 spawn_device_temp_monitor._RUN_PY,
85 self.send_ts_mon_call[0])
86 self.assertEquals(
87 'infra.tools.send_ts_mon_values',
88 self.send_ts_mon_call[1])
89 self.assertEquals('--float', self.send_ts_mon_call[2])
90 self.assertEquals(
91 '{"name": "metric_prefix/device_serial_1/cpu_temp", "value": 123}',
92 self.send_ts_mon_call[3])
93 self.assertEquals('--float', self.send_ts_mon_call[4])
94 self.assertEquals(
95 '{"name": "metric_prefix/device_serial_1/battery_temp", "value": 456}',
96 self.send_ts_mon_call[5])
97
98 def test_main_unresponsive_device(self):
99 # Collect calls to 'subprocess.check_output', which calls adb, and
100 # simulate an unresponsive device
101 adb_calls = []
102 def mocked_adb_calls(args):
103 adb_calls.append(args)
104 raise subprocess.CalledProcessError
105
106 self.mock(
107 spawn_device_temp_monitor.subprocess,
108 'check_output',
109 mocked_adb_calls)
110 spawn_device_temp_monitor.main(
111 '/some/adb/path',
112 '["device_serial_1"]',
113 'metric_prefix',
114 None)
115
116 # Should build args to send_ts_mon_values without any metrics
117 self.assertEquals(2, len(self.send_ts_mon_call))
118 self.assertEquals(
119 spawn_device_temp_monitor._RUN_PY,
120 self.send_ts_mon_call[0])
121 self.assertEquals(
122 'infra.tools.send_ts_mon_values',
123 self.send_ts_mon_call[1])
124
125 def test_pid_file_creation(self):
126 m_open = mock.mock_open()
127 m_open.return_value.readline = lambda: "789"
128 with mock.patch('__builtin__.open', m_open):
129 spawn_device_temp_monitor.main(
130 '/some/adb/path',
131 '[]',
132 'metric_prefix',
133 '/tmp/tmp_pid')
134 self.assertEquals(1, len(self.kill_calls))
135 self.assertEquals(789, self.kill_calls[0][0])
136 self.assertEquals(signal.SIGTERM, self.kill_calls[0][1])
137
138 if __name__ == '__main__':
139 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698