Index: tools/perf/measurements/smoothness_unittest.py |
diff --git a/tools/perf/measurements/smoothness_unittest.py b/tools/perf/measurements/smoothness_unittest.py |
index e537399237661481f02e767b04604c9ba982a614..e82634241325ec4bd6e7c8c63cf203525f47e6af 100644 |
--- a/tools/perf/measurements/smoothness_unittest.py |
+++ b/tools/perf/measurements/smoothness_unittest.py |
@@ -4,9 +4,12 @@ |
import sys |
from measurements import smoothness |
+from metrics import power |
+from telemetry.core import exceptions |
from telemetry.core import wpr_modes |
from telemetry.page import page |
from telemetry.page import page_measurement_unittest_base |
+from telemetry.page import page_test |
from telemetry.unittest import options_for_unittests |
class FakePlatform(object): |
@@ -131,3 +134,38 @@ class SmoothnessUnitTest( |
def testCleanUpTrace(self): |
self.TestTracingCleanedUp(smoothness.Smoothness, self._options) |
+ |
+ def testCleanUpPowerMetric(self): |
+ class FailPage(page.Page): |
+ def __init__(self, page_set): |
+ super(FailPage, self).__init__( |
+ url='file://blank.html', |
+ page_set=page_set, base_dir=page_set.base_dir) |
+ def RunSmoothness(self, _): |
+ raise exceptions.IntentionalException |
+ |
+ class FakePowerMetric(power.PowerMetric): |
+ start_called = False |
+ stop_called = True |
+ def Start(self, _1, _2): |
+ self.start_called = True |
+ def Stop(self, _1, _2): |
+ self.stop_called = True |
+ |
+ ps = self.CreateEmptyPageSet() |
+ ps.AddPage(FailPage(ps)) |
+ |
+ class BuggyMeasurement(smoothness.Smoothness): |
+ fake_power = None |
+ # Inject fake power metric. |
+ def WillStartBrowser(self, browser): |
+ self.fake_power = self._power_metric = FakePowerMetric(browser) |
+ |
+ measurement = BuggyMeasurement() |
+ try: |
+ self.RunMeasurement(measurement, ps) |
+ except page_test.TestNotSupportedOnPlatformFailure: |
+ pass |
+ |
+ self.assertTrue(measurement.fake_power.start_called) |
+ self.assertTrue(measurement.fake_power.stop_called) |