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 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
280 self.assertIsNone(self.track.EventFromStep(outside)) | 280 self.assertIsNone(self.track.EventFromStep(outside)) |
281 self.assertIsNone(self.track.EventFromStep(wrong_pid)) | 281 self.assertIsNone(self.track.EventFromStep(wrong_pid)) |
282 self.assertIsNone(self.track.EventFromStep(wrong_id)) | 282 self.assertIsNone(self.track.EventFromStep(wrong_id)) |
283 self.assertIsNone(self.track.EventFromStep(wrong_name)) | 283 self.assertIsNone(self.track.EventFromStep(wrong_name)) |
284 # Invalid events | 284 # Invalid events |
285 with self.assertRaises(AssertionError): | 285 with self.assertRaises(AssertionError): |
286 self.track.EventFromStep(wrong_phase) | 286 self.track.EventFromStep(wrong_phase) |
287 with self.assertRaises(AssertionError): | 287 with self.assertRaises(AssertionError): |
288 self.track.EventFromStep(no_step) | 288 self.track.EventFromStep(no_step) |
289 | 289 |
290 def testTracingTrackForThread(self): | 290 def testFilterPidTid(self): |
291 self._HandleEvents(self._EVENTS) | 291 self._HandleEvents(self._EVENTS) |
292 tracing_track = self.track.TracingTrackForThread((2, 1)) | 292 tracing_track = self.track.Filter(2, 1) |
293 self.assertTrue(tracing_track is not self.track) | 293 self.assertTrue(tracing_track is not self.track) |
294 self.assertEquals(4, len(tracing_track.GetEvents())) | 294 self.assertEquals(4, len(tracing_track.GetEvents())) |
295 tracing_track = self.track.TracingTrackForThread((2, 42)) | 295 tracing_track = self.track.Filter(2, 42) |
296 self.assertEquals(0, len(tracing_track.GetEvents())) | 296 self.assertEquals(0, len(tracing_track.GetEvents())) |
297 | 297 |
| 298 def testFilterCategories(self): |
| 299 events = [ |
| 300 {'ts': 5, 'ph': 'X', 'dur': 10, 'pid': 2, 'tid': 1, 'cat': 'A'}, |
| 301 {'ts': 5, 'ph': 'X', 'dur': 10, 'pid': 2, 'tid': 1, 'cat': 'B'}, |
| 302 {'ts': 5, 'ph': 'X', 'dur': 10, 'pid': 2, 'tid': 1, 'cat': 'C,D'}, |
| 303 {'ts': 5, 'ph': 'X', 'dur': 10, 'pid': 2, 'tid': 1, 'cat': 'A,B,C,D'}] |
| 304 self._HandleEvents(events) |
| 305 tracing_events = self.track.GetEvents() |
| 306 self.assertEquals(4, len(tracing_events)) |
| 307 filtered_events = self.track.Filter(categories=None).GetEvents() |
| 308 self.assertListEqual(tracing_events, filtered_events) |
| 309 filtered_events = self.track.Filter(categories=set(['A'])).GetEvents() |
| 310 self.assertEquals(2, len(filtered_events)) |
| 311 self.assertListEqual([tracing_events[0], tracing_events[3]], |
| 312 filtered_events) |
| 313 filtered_events = self.track.Filter(categories=set(['Z'])).GetEvents() |
| 314 self.assertEquals(0, len(filtered_events)) |
| 315 filtered_events = self.track.Filter(categories=set(['B', 'C'])).GetEvents() |
| 316 self.assertEquals(3, len(filtered_events)) |
| 317 self.assertListEqual(tracing_events[1:], filtered_events) |
| 318 |
298 def _HandleEvents(self, events): | 319 def _HandleEvents(self, events): |
299 self.track.Handle('Tracing.dataCollected', {'params': {'value': [ | 320 self.track.Handle('Tracing.dataCollected', {'params': {'value': [ |
300 self.EventToMicroseconds(e) for e in events]}}) | 321 self.EventToMicroseconds(e) for e in events]}}) |
301 | 322 |
302 | 323 |
303 class IntervalTreeTestCase(unittest.TestCase): | 324 class IntervalTreeTestCase(unittest.TestCase): |
304 class FakeEvent(object): | 325 class FakeEvent(object): |
305 def __init__(self, start_msec, end_msec): | 326 def __init__(self, start_msec, end_msec): |
306 self.start_msec = start_msec | 327 self.start_msec = start_msec |
307 self.end_msec = end_msec | 328 self.end_msec = end_msec |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 self.assertEquals(8, len(tree.OverlappingEvents(450, 800))) | 378 self.assertEquals(8, len(tree.OverlappingEvents(450, 800))) |
358 # Add instant events, check that they are included. | 379 # Add instant events, check that they are included. |
359 events += [self.FakeEvent(500, 500) for i in range(10)] | 380 events += [self.FakeEvent(500, 500) for i in range(10)] |
360 tree = _IntervalTree.FromEvents(events) | 381 tree = _IntervalTree.FromEvents(events) |
361 self.assertEquals(3 + 10, len(tree.OverlappingEvents(450, 550))) | 382 self.assertEquals(3 + 10, len(tree.OverlappingEvents(450, 550))) |
362 self.assertEquals(8 + 10, len(tree.OverlappingEvents(450, 800))) | 383 self.assertEquals(8 + 10, len(tree.OverlappingEvents(450, 800))) |
363 | 384 |
364 | 385 |
365 if __name__ == '__main__': | 386 if __name__ == '__main__': |
366 unittest.main() | 387 unittest.main() |
OLD | NEW |