Index: tools/telemetry/telemetry/internal/platform/android_platform_backend_unittest.py |
diff --git a/tools/telemetry/telemetry/internal/platform/android_platform_backend_unittest.py b/tools/telemetry/telemetry/internal/platform/android_platform_backend_unittest.py |
index 22939f862b8e7524d7f7a08347c6a6fe8093e12a..6ce664f20ff4c52ee48e0b2309b479280a2753b0 100644 |
--- a/tools/telemetry/telemetry/internal/platform/android_platform_backend_unittest.py |
+++ b/tools/telemetry/telemetry/internal/platform/android_platform_backend_unittest.py |
@@ -2,6 +2,7 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
+import os |
import unittest |
from telemetry.core import util |
@@ -17,6 +18,23 @@ util.AddDirToPythonPath(util.GetChromiumSrcDir(), 'build', 'android') |
from pylib.device import battery_utils |
from pylib.device import device_utils |
+ |
+class TestBackend(android_platform_backend.AndroidPlatformBackend): |
+ |
+ # pylint: disable=W0223 |
+ |
+ def __init__(self, device, finder_options): |
+ super(TestBackend, self).__init__(device, finder_options) |
+ self._mock_files = {} |
+ |
+ def SetMockFile(self, real_file, mock_file): |
+ with open(os.path.join(util.GetUnittestDataDir(), real_file)) as f: |
+ self._mock_files[mock_file] = f.read() |
+ |
+ def GetFileContents(self, filename): |
+ return self._mock_files.get(filename) |
+ |
+ |
class AndroidPlatformBackendTest(unittest.TestCase): |
def setUp(self): |
self._options = options_for_unittests.GetCopy() |
@@ -45,12 +63,18 @@ class AndroidPlatformBackendTest(unittest.TestCase): |
GetProp=mock.MagicMock(side_effect=get_prop)) |
self.device_patcher.start() |
+ self.idle_wakeup_patcher = mock.patch.object( |
+ android_platform_backend.AndroidPlatformBackend, |
+ '_GetIdleWakeupCount', return_value=None) |
+ self.idle_wakeup_patcher.start() |
+ |
def tearDown(self): |
self._stubs.Restore() |
android_platform_backend.psutil = self._actual_ps_util |
self.battery_patcher.stop() |
self.setup_prebuilt_tool_patcher.stop() |
self.device_patcher.stop() |
+ self.idle_wakeup_patcher.stop() |
@decorators.Disabled('chromeos') |
def testGetCpuStats(self): |
@@ -100,6 +124,34 @@ class AndroidPlatformBackendTest(unittest.TestCase): |
for state in result[cpu]: |
self.assertAlmostEqual(result[cpu][state], expected_cstate[cpu][state]) |
+ def testGetIdleWakeupCount(self): |
+ self.idle_wakeup_patcher.stop() |
+ with open(os.path.join( |
+ util.GetUnittestDataDir(), 'ps_for_timer_stats')) as ps_return: |
+ with mock.patch.object( |
+ device_utils.DeviceUtils, 'RunShellCommand', |
+ return_value=ps_return.read().splitlines()): |
+ backend = TestBackend( |
+ android_device.AndroidDevice('1234'), self._options) |
+ backend.SetMockFile('timer_stats_empty', '/proc/timer_stats') |
+ cpu_stats = backend.GetCpuStats('31735') |
+ self.assertTrue('IdleWakeupCount' in cpu_stats) |
+ result = cpu_stats['IdleWakeupCount'].total_sum() |
+ self.assertEquals(result, 0) |
+ |
+ backend.SetMockFile('timer_stats', '/proc/timer_stats') |
+ cpu_stats = backend.GetCpuStats('31735') |
+ self.assertTrue('IdleWakeupCount' in cpu_stats) |
+ result = cpu_stats['IdleWakeupCount'].total_sum() |
+ self.assertEquals(result, 111) |
+ |
+ backend.SetMockFile('timer_stats_dup_pid', '/proc/timer_stats') |
+ cpu_stats = backend.GetCpuStats('31735') |
+ self.assertTrue('IdleWakeupCount' in cpu_stats) |
+ result = cpu_stats['IdleWakeupCount'].total_sum() |
+ self.assertEquals(result, 1400) |
+ self.idle_wakeup_patcher.start() |
+ |
def testInstallTestCaFailure(self): |
backend = android_platform_backend.AndroidPlatformBackend( |
android_device.AndroidDevice('failure'), self._options) |