OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import unittest | 5 import unittest |
6 | 6 |
7 from telemetry import decorators | 7 from telemetry import decorators |
8 from telemetry.internal.platform import android_device | 8 from telemetry.internal.platform import android_device |
9 from telemetry.internal.platform import android_platform_backend | 9 from telemetry.internal.platform import android_platform_backend |
10 from telemetry.testing import system_stub | 10 from telemetry.testing import system_stub |
(...skipping 23 matching lines...) Expand all Loading... |
34 HasRoot=mock.MagicMock(return_value=True), | 34 HasRoot=mock.MagicMock(return_value=True), |
35 GetProp=mock.MagicMock(side_effect=get_prop)) | 35 GetProp=mock.MagicMock(side_effect=get_prop)) |
36 self.device_patcher.start() | 36 self.device_patcher.start() |
37 | 37 |
38 def tearDown(self): | 38 def tearDown(self): |
39 self._stubs.Restore() | 39 self._stubs.Restore() |
40 android_platform_backend.psutil = self._actual_ps_util | 40 android_platform_backend.psutil = self._actual_ps_util |
41 self.battery_patcher.stop() | 41 self.battery_patcher.stop() |
42 self.device_patcher.stop() | 42 self.device_patcher.stop() |
43 | 43 |
44 @decorators.Disabled('chromeos') | 44 @decorators.Disabled('chromeos', 'mac', 'win') |
45 def testIsSvelte(self): | 45 def testIsSvelte(self): |
46 with mock.patch('devil.android.device_utils.DeviceUtils.GetProp', | 46 with mock.patch('devil.android.device_utils.DeviceUtils.GetProp', |
47 return_value='svelte'): | 47 return_value='svelte'): |
48 backend = android_platform_backend.AndroidPlatformBackend( | 48 backend = android_platform_backend.AndroidPlatformBackend( |
49 android_device.AndroidDevice('12345')) | 49 android_device.AndroidDevice('12345')) |
50 self.assertTrue(backend.IsSvelte()) | 50 self.assertTrue(backend.IsSvelte()) |
51 | 51 |
52 @decorators.Disabled('chromeos') | 52 @decorators.Disabled('chromeos', 'mac', 'win') |
53 def testIsNotSvelte(self): | 53 def testIsNotSvelte(self): |
54 with mock.patch('devil.android.device_utils.DeviceUtils.GetProp', | 54 with mock.patch('devil.android.device_utils.DeviceUtils.GetProp', |
55 return_value='foo'): | 55 return_value='foo'): |
56 backend = android_platform_backend.AndroidPlatformBackend( | 56 backend = android_platform_backend.AndroidPlatformBackend( |
57 android_device.AndroidDevice('12345')) | 57 android_device.AndroidDevice('12345')) |
58 self.assertFalse(backend.IsSvelte()) | 58 self.assertFalse(backend.IsSvelte()) |
59 | 59 |
60 @decorators.Disabled('chromeos') | 60 @decorators.Disabled('chromeos', 'mac', 'win') |
61 def testGetCpuStats(self): | 61 def testGetCpuStats(self): |
62 proc_stat_content = ( | 62 proc_stat_content = ( |
63 '7702 (.android.chrome) S 167 167 0 0 -1 1077936448 ' | 63 '7702 (.android.chrome) S 167 167 0 0 -1 1077936448 ' |
64 '3247 0 0 0 4 1 0 0 20 0 9 0 5603962 337379328 5867 ' | 64 '3247 0 0 0 4 1 0 0 20 0 9 0 5603962 337379328 5867 ' |
65 '4294967295 1074458624 1074463824 3197495984 3197494152 ' | 65 '4294967295 1074458624 1074463824 3197495984 3197494152 ' |
66 '1074767676 0 4612 0 38136 4294967295 0 0 17 0 0 0 0 0 0 ' | 66 '1074767676 0 4612 0 38136 4294967295 0 0 17 0 0 0 0 0 0 ' |
67 '1074470376 1074470912 1102155776\n') | 67 '1074470376 1074470912 1102155776\n') |
68 with mock.patch('devil.android.device_utils.DeviceUtils.ReadFile', | 68 with mock.patch('devil.android.device_utils.DeviceUtils.ReadFile', |
69 return_value=proc_stat_content): | 69 return_value=proc_stat_content): |
70 backend = android_platform_backend.AndroidPlatformBackend( | 70 backend = android_platform_backend.AndroidPlatformBackend( |
71 android_device.AndroidDevice('12345')) | 71 android_device.AndroidDevice('12345')) |
72 cpu_stats = backend.GetCpuStats('7702') | 72 cpu_stats = backend.GetCpuStats('7702') |
73 self.assertEquals(cpu_stats, {'CpuProcessTime': 0.05}) | 73 self.assertEquals(cpu_stats, {'CpuProcessTime': 0.05}) |
74 | 74 |
75 @decorators.Disabled('chromeos') | 75 @decorators.Disabled('chromeos', 'mac', 'win') |
76 def testGetCpuStatsInvalidPID(self): | 76 def testGetCpuStatsInvalidPID(self): |
77 # Mock an empty /proc/pid/stat. | 77 # Mock an empty /proc/pid/stat. |
78 with mock.patch('devil.android.device_utils.DeviceUtils.ReadFile', | 78 with mock.patch('devil.android.device_utils.DeviceUtils.ReadFile', |
79 return_value=''): | 79 return_value=''): |
80 backend = android_platform_backend.AndroidPlatformBackend( | 80 backend = android_platform_backend.AndroidPlatformBackend( |
81 android_device.AndroidDevice('1234')) | 81 android_device.AndroidDevice('1234')) |
82 cpu_stats = backend.GetCpuStats('7702') | 82 cpu_stats = backend.GetCpuStats('7702') |
83 self.assertEquals(cpu_stats, {}) | 83 self.assertEquals(cpu_stats, {}) |
84 | 84 |
| 85 @decorators.Disabled('chromeos', 'mac', 'win') |
85 def testAndroidParseCpuStates(self): | 86 def testAndroidParseCpuStates(self): |
86 cstate = { | 87 cstate = { |
87 'cpu0': 'C0\nC1\n103203424\n5342040\n300\n500\n1403232500', | 88 'cpu0': 'C0\nC1\n103203424\n5342040\n300\n500\n1403232500', |
88 'cpu1': 'C0\n124361858\n300\n1403232500' | 89 'cpu1': 'C0\n124361858\n300\n1403232500' |
89 } | 90 } |
90 expected_cstate = { | 91 expected_cstate = { |
91 'cpu0': { | 92 'cpu0': { |
92 'WFI': 103203424, | 93 'WFI': 103203424, |
93 'C0': 1403232391454536, | 94 'C0': 1403232391454536, |
94 'C1': 5342040 | 95 'C1': 5342040 |
95 }, | 96 }, |
96 'cpu1': { | 97 'cpu1': { |
97 'WFI': 124361858, | 98 'WFI': 124361858, |
98 'C0': 1403232375638142 | 99 'C0': 1403232375638142 |
99 } | 100 } |
100 } | 101 } |
101 # Use mock start and end times to allow for the test to calculate C0. | 102 # Use mock start and end times to allow for the test to calculate C0. |
102 result = android_platform_backend.AndroidPlatformBackend.ParseCStateSample( | 103 result = android_platform_backend.AndroidPlatformBackend.ParseCStateSample( |
103 cstate) | 104 cstate) |
104 for cpu in result: | 105 for cpu in result: |
105 for state in result[cpu]: | 106 for state in result[cpu]: |
106 self.assertAlmostEqual(result[cpu][state], expected_cstate[cpu][state]) | 107 self.assertAlmostEqual(result[cpu][state], expected_cstate[cpu][state]) |
107 | 108 |
| 109 @decorators.Disabled('chromeos', 'mac', 'win') |
108 def testInstallTestCaSuccess(self): | 110 def testInstallTestCaSuccess(self): |
109 backend = android_platform_backend.AndroidPlatformBackend( | 111 backend = android_platform_backend.AndroidPlatformBackend( |
110 android_device.AndroidDevice('success')) | 112 android_device.AndroidDevice('success')) |
111 with mock.patch('adb_install_cert.AndroidCertInstaller'): | 113 with mock.patch('adb_install_cert.AndroidCertInstaller'): |
112 backend.InstallTestCa('testca.pem') | 114 backend.InstallTestCa('testca.pem') |
113 self.assertIsNotNone(backend._device_cert_util) | 115 self.assertIsNotNone(backend._device_cert_util) |
114 | 116 |
115 backend.RemoveTestCa() | 117 backend.RemoveTestCa() |
116 self.assertIsNone(backend._device_cert_util) | 118 self.assertIsNone(backend._device_cert_util) |
117 | 119 |
| 120 @decorators.Disabled('chromeos', 'mac', 'win') |
118 def testIsScreenLockedTrue(self): | 121 def testIsScreenLockedTrue(self): |
119 test_input = ['a=b', 'mHasBeenInactive=true'] | 122 test_input = ['a=b', 'mHasBeenInactive=true'] |
120 backend = android_platform_backend.AndroidPlatformBackend( | 123 backend = android_platform_backend.AndroidPlatformBackend( |
121 android_device.AndroidDevice('success')) | 124 android_device.AndroidDevice('success')) |
122 self.assertTrue(backend._IsScreenLocked(test_input)) | 125 self.assertTrue(backend._IsScreenLocked(test_input)) |
123 | 126 |
| 127 @decorators.Disabled('chromeos', 'mac', 'win') |
124 def testIsScreenLockedFalse(self): | 128 def testIsScreenLockedFalse(self): |
125 test_input = ['a=b', 'mHasBeenInactive=false'] | 129 test_input = ['a=b', 'mHasBeenInactive=false'] |
126 backend = android_platform_backend.AndroidPlatformBackend( | 130 backend = android_platform_backend.AndroidPlatformBackend( |
127 android_device.AndroidDevice('success')) | 131 android_device.AndroidDevice('success')) |
128 self.assertFalse(backend._IsScreenLocked(test_input)) | 132 self.assertFalse(backend._IsScreenLocked(test_input)) |
129 | 133 |
130 | 134 |
131 class AndroidPlatformBackendPsutilTest(unittest.TestCase): | 135 class AndroidPlatformBackendPsutilTest(unittest.TestCase): |
132 | 136 |
133 class psutil_1_0(object): | 137 class psutil_1_0(object): |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 GetProp=mock.MagicMock(side_effect=get_prop), | 180 GetProp=mock.MagicMock(side_effect=get_prop), |
177 HasRoot=mock.MagicMock(return_value=True)) | 181 HasRoot=mock.MagicMock(return_value=True)) |
178 self.device_patcher.start() | 182 self.device_patcher.start() |
179 | 183 |
180 def tearDown(self): | 184 def tearDown(self): |
181 self._stubs.Restore() | 185 self._stubs.Restore() |
182 android_platform_backend.psutil = self._actual_ps_util | 186 android_platform_backend.psutil = self._actual_ps_util |
183 self.battery_patcher.stop() | 187 self.battery_patcher.stop() |
184 self.device_patcher.stop() | 188 self.device_patcher.stop() |
185 | 189 |
186 @decorators.Disabled('chromeos') | 190 @decorators.Disabled('chromeos', 'mac', 'win') |
187 def testPsutil1(self): | 191 def testPsutil1(self): |
188 psutil = self.psutil_1_0() | 192 psutil = self.psutil_1_0() |
189 android_platform_backend.psutil = psutil | 193 android_platform_backend.psutil = psutil |
190 | 194 |
191 # Mock an empty /proc/pid/stat. | 195 # Mock an empty /proc/pid/stat. |
192 with mock.patch('devil.android.device_utils.DeviceUtils.ReadFile', | 196 with mock.patch('devil.android.device_utils.DeviceUtils.ReadFile', |
193 return_value=''): | 197 return_value=''): |
194 backend = android_platform_backend.AndroidPlatformBackend( | 198 backend = android_platform_backend.AndroidPlatformBackend( |
195 android_device.AndroidDevice('1234')) | 199 android_device.AndroidDevice('1234')) |
196 cpu_stats = backend.GetCpuStats('7702') | 200 cpu_stats = backend.GetCpuStats('7702') |
197 self.assertEquals({}, cpu_stats) | 201 self.assertEquals({}, cpu_stats) |
198 self.assertEquals([[0]], psutil.set_cpu_affinity_args) | 202 self.assertEquals([[0]], psutil.set_cpu_affinity_args) |
199 | 203 |
200 @decorators.Disabled('chromeos') | 204 @decorators.Disabled('chromeos', 'mac', 'win') |
201 def testPsutil2(self): | 205 def testPsutil2(self): |
202 psutil = self.psutil_2_0() | 206 psutil = self.psutil_2_0() |
203 android_platform_backend.psutil = psutil | 207 android_platform_backend.psutil = psutil |
204 | 208 |
205 # Mock an empty /proc/pid/stat. | 209 # Mock an empty /proc/pid/stat. |
206 with mock.patch('devil.android.device_utils.DeviceUtils.ReadFile', | 210 with mock.patch('devil.android.device_utils.DeviceUtils.ReadFile', |
207 return_value=''): | 211 return_value=''): |
208 backend = android_platform_backend.AndroidPlatformBackend( | 212 backend = android_platform_backend.AndroidPlatformBackend( |
209 android_device.AndroidDevice('1234')) | 213 android_device.AndroidDevice('1234')) |
210 cpu_stats = backend.GetCpuStats('7702') | 214 cpu_stats = backend.GetCpuStats('7702') |
211 self.assertEquals({}, cpu_stats) | 215 self.assertEquals({}, cpu_stats) |
212 self.assertEquals([[0]], psutil.set_cpu_affinity_args) | 216 self.assertEquals([[0]], psutil.set_cpu_affinity_args) |
OLD | NEW |