OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 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 timeit | 5 import timeit |
6 import unittest | 6 import unittest |
7 | 7 |
8 from telemetry import decorators | 8 from telemetry import decorators |
9 from telemetry.internal.backends.chrome_inspector import tracing_backend | 9 from telemetry.internal.backends.chrome_inspector import tracing_backend |
10 from telemetry.internal.backends.chrome_inspector.tracing_backend import _DevToo
lsStreamReader | 10 from telemetry.internal.backends.chrome_inspector.tracing_backend import _DevToo
lsStreamReader |
11 from telemetry.testing import fakes | 11 from telemetry.testing import fakes |
12 from telemetry.testing import simple_mock | 12 from telemetry.testing import simple_mock |
13 from telemetry.testing import tab_test_case | 13 from telemetry.testing import tab_test_case |
14 from telemetry.timeline import model as model_module | 14 from telemetry.timeline import model as model_module |
15 from telemetry.timeline import trace_data | 15 from telemetry.timeline import trace_data |
16 from telemetry.timeline import tracing_config | 16 from telemetry.timeline import tracing_config |
17 | 17 |
18 | 18 |
19 class TracingBackendTest(tab_test_case.TabTestCase): | 19 class TracingBackendTest(tab_test_case.TabTestCase): |
20 | 20 |
21 # Number of consecutively requested memory dumps. | 21 # Number of consecutively requested memory dumps. |
22 _REQUESTED_DUMP_COUNT = 3 | 22 _REQUESTED_DUMP_COUNT = 3 |
23 | 23 |
24 @classmethod | 24 @classmethod |
25 def CustomizeBrowserOptions(cls, options): | 25 def CustomizeBrowserOptions(cls, options): |
26 options.enable_logging = True | 26 options.logging_verbosity = options.VERBOSE_LOGGING |
27 options.AppendExtraBrowserArgs([ | 27 options.AppendExtraBrowserArgs([ |
28 # Memory maps currently cannot be retrieved on sandboxed processes. | 28 # Memory maps currently cannot be retrieved on sandboxed processes. |
29 # See crbug.com/461788. | 29 # See crbug.com/461788. |
30 '--no-sandbox', | 30 '--no-sandbox', |
31 | 31 |
32 # Workaround to disable periodic memory dumps. See crbug.com/513692. | 32 # Workaround to disable periodic memory dumps. See crbug.com/513692. |
33 '--enable-memory-benchmarking' | 33 '--enable-memory-benchmarking' |
34 ]) | 34 ]) |
35 | 35 |
36 def setUp(self): | 36 def setUp(self): |
37 super(TracingBackendTest, self).setUp() | 37 super(TracingBackendTest, self).setUp() |
38 self._tracing_controller = self._browser.platform.tracing_controller | 38 self._tracing_controller = self._browser.platform.tracing_controller |
39 if not self._tracing_controller.IsChromeTracingSupported(): | 39 if not self._tracing_controller.IsChromeTracingSupported(): |
40 self.skipTest('Browser does not support tracing, skipping test.') | 40 self.skipTest('Browser does not support tracing, skipping test.') |
41 if not self._browser.supports_memory_dumping: | 41 if not self._browser.supports_memory_dumping: |
42 self.skipTest('Browser does not support memory dumping, skipping test.') | 42 self.skipTest('Browser does not support memory dumping, skipping test.') |
43 | 43 |
44 # See https://github.com/catapult-project/catapult/issues/2409. | 44 # See https://github.com/catapult-project/catapult/issues/2409. |
45 @decorators.Disabled('win-reference') | 45 @decorators.Disabled('win-reference') |
46 def testDumpMemorySuccess(self): | 46 def testDumpMemorySuccess(self): |
47 # Check that dumping memory before tracing starts raises an exception. | 47 # Check that dumping memory before tracing starts raises an exception. |
48 self.assertRaises(Exception, self._browser.DumpMemory) | 48 self.assertRaises(Exception, self._browser.DumpMemory) |
49 | 49 |
50 # Start tracing with memory dumps enabled. | 50 # Start tracing with memory dumps enabled. |
51 config = tracing_config.TracingConfig() | 51 config = tracing_config.TracingConfig() |
52 config.chrome_trace_config.tracing_category_filter.AddDisabledByDefault( | 52 config.chrome_trace_config.category_filter.AddDisabledByDefault( |
53 'disabled-by-default-memory-infra') | 53 'disabled-by-default-memory-infra') |
54 config.enable_chrome_trace = True | 54 config.enable_chrome_trace = True |
55 self._tracing_controller.StartTracing(config) | 55 self._tracing_controller.StartTracing(config) |
56 | 56 |
57 # Request several memory dumps in a row and test that they were all | 57 # Request several memory dumps in a row and test that they were all |
58 # successfully created with unique IDs. | 58 # successfully created with unique IDs. |
59 expected_dump_ids = [] | 59 expected_dump_ids = [] |
60 for _ in xrange(self._REQUESTED_DUMP_COUNT): | 60 for _ in xrange(self._REQUESTED_DUMP_COUNT): |
61 dump_id = self._browser.DumpMemory() | 61 dump_id = self._browser.DumpMemory() |
62 self.assertIsNotNone(dump_id) | 62 self.assertIsNotNone(dump_id) |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
224 n1 = 1000 | 224 n1 = 1000 |
225 while True: | 225 while True: |
226 t1 = self._MeasureReadTime(n1) | 226 t1 = self._MeasureReadTime(n1) |
227 if t1 > 0.01: | 227 if t1 > 0.01: |
228 break | 228 break |
229 n1 *= 5 | 229 n1 *= 5 |
230 t2 = self._MeasureReadTime(n1 * 10) | 230 t2 = self._MeasureReadTime(n1 * 10) |
231 # Time is an illusion, CPU time is doubly so, allow great deal of tolerance. | 231 # Time is an illusion, CPU time is doubly so, allow great deal of tolerance. |
232 toleranceFactor = 5 | 232 toleranceFactor = 5 |
233 self.assertLess(t2, t1 * 10 * toleranceFactor) | 233 self.assertLess(t2, t1 * 10 * toleranceFactor) |
OLD | NEW |