| Index: tools/telemetry/telemetry/page/page_measurement_unittest_base.py
|
| diff --git a/tools/telemetry/telemetry/page/page_measurement_unittest_base.py b/tools/telemetry/telemetry/page/page_measurement_unittest_base.py
|
| index 35c3db806ca6e6877fc6651d1f9168357acf58a6..b1e70ebb1c6c74f072c606fd27c6f42175abccae 100644
|
| --- a/tools/telemetry/telemetry/page/page_measurement_unittest_base.py
|
| +++ b/tools/telemetry/telemetry/page/page_measurement_unittest_base.py
|
| @@ -51,3 +51,35 @@ class PageMeasurementUnitTestBase(unittest.TestCase):
|
| page_runner.ProcessCommandLineArgs(temp_parser, options)
|
| measurement.ProcessCommandLineArgs(temp_parser, options)
|
| return page_runner.Run(measurement, ps, expectations, options)
|
| +
|
| + def TestTracingCleanedUp(self, measurement_class, options=None):
|
| + ps = self.CreatePageSetFromFileInUnittestDataDir('blank.html')
|
| + start_tracing_called = [False]
|
| + tracing_closed_called = [False]
|
| +
|
| + class BuggyMeasurement(measurement_class):
|
| + def __init__(self, *args, **kwargs):
|
| + measurement_class.__init__(self, *args, **kwargs)
|
| +
|
| + # Inject fake tracing methods to browser
|
| + def TabForPage(self, page, browser):
|
| + ActualStartTracing = browser.StartTracing
|
| + def FakeStartTracing(*args, **kwargs):
|
| + ActualStartTracing(*args, **kwargs)
|
| + start_tracing_called[0] = True
|
| + raise Exception('Intentional exception')
|
| + browser.StartTracing = FakeStartTracing
|
| +
|
| + ActualStopTracing = browser.StopTracing
|
| + def FakeStopTracing(*args, **kwargs):
|
| + ActualStopTracing(*args, **kwargs)
|
| + tracing_closed_called[0] = True
|
| + browser.StopTracing = FakeStopTracing
|
| +
|
| + return measurement_class.TabForPage(self, page, browser)
|
| +
|
| + measurement = BuggyMeasurement()
|
| + self.RunMeasurement(measurement, ps, options=options)
|
| + assert start_tracing_called[0], ("%s measurement doesn't start tracing" %
|
| + measurement_class)
|
| + self.assertTrue(tracing_closed_called[0])
|
|
|