| 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 |