OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 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.core import util | 7 from telemetry.core import util |
8 from telemetry.page import page_runner | 8 from telemetry.page import page_runner |
9 from telemetry.page import page as page_module | 9 from telemetry.page import page as page_module |
10 from telemetry.page import page_set | 10 from telemetry.page import page_set |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 continue | 44 continue |
45 setattr(options, k, v) | 45 setattr(options, k, v) |
46 | 46 |
47 measurement.CustomizeBrowserOptions(options) | 47 measurement.CustomizeBrowserOptions(options) |
48 options.output_file = None | 48 options.output_file = None |
49 options.output_format = 'none' | 49 options.output_format = 'none' |
50 options.output_trace_tag = None | 50 options.output_trace_tag = None |
51 page_runner.ProcessCommandLineArgs(temp_parser, options) | 51 page_runner.ProcessCommandLineArgs(temp_parser, options) |
52 measurement.ProcessCommandLineArgs(temp_parser, options) | 52 measurement.ProcessCommandLineArgs(temp_parser, options) |
53 return page_runner.Run(measurement, ps, expectations, options) | 53 return page_runner.Run(measurement, ps, expectations, options) |
| 54 |
| 55 def TestTracingCleanedUp(self, measurement_class, options=None): |
| 56 ps = self.CreatePageSetFromFileInUnittestDataDir('blank.html') |
| 57 start_tracing_called = [False] |
| 58 tracing_closed_called = [False] |
| 59 |
| 60 class BuggyMeasurement(measurement_class): |
| 61 def __init__(self, *args, **kwargs): |
| 62 measurement_class.__init__(self, *args, **kwargs) |
| 63 |
| 64 # Inject fake tracing methods to browser |
| 65 def TabForPage(self, page, browser): |
| 66 ActualStartTracing = browser.StartTracing |
| 67 def FakeStartTracing(*args, **kwargs): |
| 68 ActualStartTracing(*args, **kwargs) |
| 69 start_tracing_called[0] = True |
| 70 raise Exception('Intentional exception') |
| 71 browser.StartTracing = FakeStartTracing |
| 72 |
| 73 ActualStopTracing = browser.StopTracing |
| 74 def FakeStopTracing(*args, **kwargs): |
| 75 ActualStopTracing(*args, **kwargs) |
| 76 tracing_closed_called[0] = True |
| 77 browser.StopTracing = FakeStopTracing |
| 78 |
| 79 return measurement_class.TabForPage(self, page, browser) |
| 80 |
| 81 measurement = BuggyMeasurement() |
| 82 self.RunMeasurement(measurement, ps, options=options) |
| 83 assert start_tracing_called[0], ("%s measurement doesn't start tracing" % |
| 84 measurement_class) |
| 85 self.assertTrue(tracing_closed_called[0]) |
OLD | NEW |