| OLD | NEW |
| 1 # Copyright 2016 The Chromium Authors. All rights reserved. | 1 # Copyright 2016 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 collections | 5 import collections |
| 6 import copy | 6 import copy |
| 7 import logging | 7 import logging |
| 8 import operator | 8 import operator |
| 9 import unittest | 9 import unittest |
| 10 | 10 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 {'ts': 10, 'ph': 'X', 'dur': 2, 'pid': 2, 'tid': 2, | 35 {'ts': 10, 'ph': 'X', 'dur': 2, 'pid': 2, 'tid': 2, |
| 36 'args': {'name': 'D'}}, | 36 'args': {'name': 'D'}}, |
| 37 {'ts': 13, 'ph': 'X', 'dur': 1, 'pid': 2, 'tid': 1, | 37 {'ts': 13, 'ph': 'X', 'dur': 1, 'pid': 2, 'tid': 1, |
| 38 'args': {'name': 'F'}}, | 38 'args': {'name': 'F'}}, |
| 39 {'ts': 12, 'ph': 'X', 'dur': 3, 'pid': 2, 'tid': 1, | 39 {'ts': 12, 'ph': 'X', 'dur': 3, 'pid': 2, 'tid': 1, |
| 40 'args': {'name': 'E'}}] | 40 'args': {'name': 'E'}}] |
| 41 | 41 |
| 42 def setUp(self): | 42 def setUp(self): |
| 43 self.tree_threshold = _IntervalTree._TRESHOLD | 43 self.tree_threshold = _IntervalTree._TRESHOLD |
| 44 _IntervalTree._TRESHOLD = 2 # Expose more edge cases in the tree. | 44 _IntervalTree._TRESHOLD = 2 # Expose more edge cases in the tree. |
| 45 self.track = TracingTrack(None, additional_categories=('A', 'B', 'C', 'D')) | 45 self.track = TracingTrack(None, ['A', 'B', 'C', 'D']) |
| 46 | 46 |
| 47 def tearDown(self): | 47 def tearDown(self): |
| 48 _IntervalTree._TRESHOLD = self.tree_threshold | 48 _IntervalTree._TRESHOLD = self.tree_threshold |
| 49 | 49 |
| 50 def EventToMicroseconds(self, event): | 50 def EventToMicroseconds(self, event): |
| 51 result = copy.deepcopy(event) | 51 result = copy.deepcopy(event) |
| 52 if 'ts' in result: | 52 if 'ts' in result: |
| 53 result['ts'] *= 1000 | 53 result['ts'] *= 1000 |
| 54 if 'dur' in result: | 54 if 'dur' in result: |
| 55 result['dur'] *= 1000 | 55 result['dur'] *= 1000 |
| (...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 353 self.assertListEqual([tracing_events[0], tracing_events[3]], | 353 self.assertListEqual([tracing_events[0], tracing_events[3]], |
| 354 filtered_events) | 354 filtered_events) |
| 355 filtered_events = self.track.Filter(categories=set(['Z'])).GetEvents() | 355 filtered_events = self.track.Filter(categories=set(['Z'])).GetEvents() |
| 356 self.assertEquals(0, len(filtered_events)) | 356 self.assertEquals(0, len(filtered_events)) |
| 357 filtered_events = self.track.Filter(categories=set(['B', 'C'])).GetEvents() | 357 filtered_events = self.track.Filter(categories=set(['B', 'C'])).GetEvents() |
| 358 self.assertEquals(3, len(filtered_events)) | 358 self.assertEquals(3, len(filtered_events)) |
| 359 self.assertListEqual(tracing_events[1:], filtered_events) | 359 self.assertListEqual(tracing_events[1:], filtered_events) |
| 360 self.assertSetEqual( | 360 self.assertSetEqual( |
| 361 set('A'), self.track.Filter(categories=set('A')).Categories()) | 361 set('A'), self.track.Filter(categories=set('A')).Categories()) |
| 362 | 362 |
| 363 def testAdditionalCategories(self): | |
| 364 track = TracingTrack(None, additional_categories=('best-category-ever',)) | |
| 365 self.assertIn('best-category-ever', track.Categories()) | |
| 366 # Cannot re-enable a category. | |
| 367 with self.assertRaises(AssertionError): | |
| 368 TracingTrack(None, additional_categories=('cc',)) | |
| 369 # Cannot disable categories via |additional_categories|. | |
| 370 with self.assertRaises(AssertionError): | |
| 371 TracingTrack(None, additional_categories=('-best-category-ever',)) | |
| 372 | |
| 373 def testDisabledCategories(self): | |
| 374 track = TracingTrack(None, disabled_categories=('toplevel',)) | |
| 375 self.assertNotIn('toplevel', track.Categories()) | |
| 376 self.assertIn('-toplevel', track.Categories()) | |
| 377 # Can only disable categories that are enabled by default. | |
| 378 with self.assertRaises(AssertionError): | |
| 379 TracingTrack(None, disabled_categories=('best-category-ever',)) | |
| 380 with self.assertRaises(AssertionError): | |
| 381 TracingTrack(None, disabled_categories=('cc',)) | |
| 382 | |
| 383 def _HandleEvents(self, events): | 363 def _HandleEvents(self, events): |
| 384 self.track.Handle('Tracing.dataCollected', {'params': {'value': [ | 364 self.track.Handle('Tracing.dataCollected', {'params': {'value': [ |
| 385 self.EventToMicroseconds(e) for e in events]}}) | 365 self.EventToMicroseconds(e) for e in events]}}) |
| 386 | 366 |
| 387 | 367 |
| 388 class IntervalTreeTestCase(unittest.TestCase): | 368 class IntervalTreeTestCase(unittest.TestCase): |
| 389 class FakeEvent(object): | 369 class FakeEvent(object): |
| 390 def __init__(self, start_msec, end_msec): | 370 def __init__(self, start_msec, end_msec): |
| 391 self.start_msec = start_msec | 371 self.start_msec = start_msec |
| 392 self.end_msec = end_msec | 372 self.end_msec = end_msec |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 'cat': 'bar,baz,bizbiz', | 439 'cat': 'bar,baz,bizbiz', |
| 460 'ph': 'X', | 440 'ph': 'X', |
| 461 'ts': 0, 'dur': 0}) | 441 'ts': 0, 'dur': 0}) |
| 462 self.assertTrue(event.Matches('bar', 'foo')) | 442 self.assertTrue(event.Matches('bar', 'foo')) |
| 463 self.assertTrue(event.Matches('baz', 'foo')) | 443 self.assertTrue(event.Matches('baz', 'foo')) |
| 464 self.assertFalse(event.Matches('bar', 'biz')) | 444 self.assertFalse(event.Matches('bar', 'biz')) |
| 465 self.assertFalse(event.Matches('biz', 'foo')) | 445 self.assertFalse(event.Matches('biz', 'foo')) |
| 466 | 446 |
| 467 if __name__ == '__main__': | 447 if __name__ == '__main__': |
| 468 unittest.main() | 448 unittest.main() |
| OLD | NEW |