Chromium Code Reviews| Index: build/android/pylib/perf_tests_helper.py |
| diff --git a/build/android/pylib/perf_tests_helper.py b/build/android/pylib/perf_tests_helper.py |
| index 44397c01058f8d9e310e5aea3c7872fa00621d54..6ef49b8c771b67ba6d591df9e51efdfa20897c1c 100644 |
| --- a/build/android/pylib/perf_tests_helper.py |
| +++ b/build/android/pylib/perf_tests_helper.py |
| @@ -128,9 +128,21 @@ def PrintPerfResult(measurement, trace, values, units, result_type='default', |
| return output |
| -class PerfTestSetup(object): |
| - """Provides methods for setting up a device for perf testing.""" |
| +class CacheControl(object): |
| _DROP_CACHES = '/proc/sys/vm/drop_caches' |
| + |
| + def __init__(self, adb): |
| + self._adb = adb |
| + |
| + def DropRamCaches(self): |
| + """Drops the filesystem ram caches for performance testing.""" |
| + self._adb.RunShellCommand('su -c sync') |
| + self._adb.SetProtectedFileContents(CacheControl._DROP_CACHES, '3') |
| + |
|
bulach
2013/03/19 17:28:46
nit: remove extra \n
aberent
2013/03/19 17:35:46
Done.
|
| + |
| + |
| +class PerfControl(object): |
| + """Provides methods for setting the performance mode of a device.""" |
| _SCALING_GOVERNOR_FMT = ( |
| '/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor') |
| @@ -140,30 +152,48 @@ class PerfTestSetup(object): |
| log_result=False) |
| assert kernel_max, 'Unable to find /sys/devices/system/cpu/kernel_max' |
| self._kernel_max = int(kernel_max[0]) |
| - self._original_scaling_governor = None |
| + self._original_scaling_governor = self._adb.GetFileContents( |
| + PerfControl._SCALING_GOVERNOR_FMT % 0, |
| + log_result=False)[0] |
| + |
| + def SetHighPerfMode(self): |
| + """Sets the highest possible performance mode for the device.""" |
| + self._SetScalingGovernorInternal('performance') |
| + |
| + def SetDefaultPerfMode(self): |
| + """Sets the performance mode for the device to its default mode.""" |
| + product_model = self._adb.GetProductModel() |
| + governor_mode = { |
| + "GT-I9300" : 'pegasusq', |
| + "Galaxy Nexus" : 'interactive', |
| + "Nexus 4" : 'ondemand', |
| + "Nexus 7" : 'interactive', |
| + "Nexus 10": 'interactive' |
| + }.get(product_model, 'ondemand') |
|
bulach
2013/03/19 17:28:46
maybe interactive as default?
aberent
2013/03/19 17:35:46
My understanding is that ondemand exists on everyt
|
| + self._SetScalingGovernorInternal(governor_mode) |
| + |
| + def RestoreOriginalPerfMode(self): |
| + """Resets the original performance mode of the device.""" |
| + self._SetScalingGovernorInternal(self._original_scaling_governor) |
| + |
| + def _SetScalingGovernorInternal(self, value): |
| + for cpu in range(self._kernel_max + 1): |
| + scaling_governor_file = PerfControl._SCALING_GOVERNOR_FMT % cpu |
| + if self._adb.FileExistsOnDevice(scaling_governor_file): |
| + self._adb.SetProtectedFileContents(scaling_governor_file, value) |
| + |
| +class PerfTestSetup(PerfControl): |
| + """Provides methods for setting up a device for perf testing. |
| + |
| + Will be removed once all tests have been moved to the new classes |
|
bulach
2013/03/19 17:28:46
TODO(aberent): remove once all tests have been mov
aberent
2013/03/19 17:35:46
Done.
|
| + """ |
| def DropRamCaches(self): |
| - """Drops the filesystem ram caches for performance testing.""" |
| - self._adb.RunShellCommand('su -c sync') |
| - self._adb.SetProtectedFileContents(PerfTestSetup._DROP_CACHES, '3') |
| + CacheControl(self._adb).DropRamCaches() |
| def SetUp(self): |
| - """Sets up performance tests.""" |
| - if not self._original_scaling_governor: |
| - self._original_scaling_governor = self._adb.GetFileContents( |
| - PerfTestSetup._SCALING_GOVERNOR_FMT % 0, |
| - log_result=False)[0] |
| - self._SetScalingGovernorInternal('performance') |
| + self.SetHighPerfMode() |
| self.DropRamCaches() |
| def TearDown(self): |
| - """Tears down performance tests.""" |
| - if self._original_scaling_governor: |
| - self._SetScalingGovernorInternal(self._original_scaling_governor) |
| - self._original_scaling_governor = None |
| - |
| - def _SetScalingGovernorInternal(self, value): |
| - for cpu in range(self._kernel_max + 1): |
| - scaling_governor_file = PerfTestSetup._SCALING_GOVERNOR_FMT % cpu |
| - if self._adb.FileExistsOnDevice(scaling_governor_file): |
| - self._adb.SetProtectedFileContents(scaling_governor_file, value) |
| + self.ResetOriginalPerfMode() |