diff options
Diffstat (limited to 'catapult/telemetry/telemetry/timeline/counter_unittest.py')
-rw-r--r-- | catapult/telemetry/telemetry/timeline/counter_unittest.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/catapult/telemetry/telemetry/timeline/counter_unittest.py b/catapult/telemetry/telemetry/timeline/counter_unittest.py new file mode 100644 index 00000000..a97d4aca --- /dev/null +++ b/catapult/telemetry/telemetry/timeline/counter_unittest.py @@ -0,0 +1,64 @@ +# Copyright 2014 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import types +import unittest + +from telemetry.timeline import counter as counter_module + + +class FakeProcess(object): + pass + + +class CounterIterEventsInThisContainerTest(unittest.TestCase): + + def setUp(self): + parent = FakeProcess() + self.counter = counter_module.Counter(parent, 'cat', 'name') + + def assertIsEmptyIterator(self, itr): + self.assertIsInstance(itr, types.GeneratorType) + self.assertRaises(StopIteration, itr.next) + + def testEmptyTimestamps(self): + self.assertIsEmptyIterator(self.counter.IterEventsInThisContainer( + event_type_predicate=lambda x: True, + event_predicate=lambda x: True)) + + def testEventTypeMismatch(self): + self.counter.timestamps = [111, 222] + self.assertIsEmptyIterator(self.counter.IterEventsInThisContainer( + event_type_predicate=lambda x: False, + event_predicate=lambda x: True)) + + def testNoEventMatch(self): + self.counter.timestamps = [111, 222] + self.assertIsEmptyIterator(self.counter.IterEventsInThisContainer( + event_type_predicate=lambda x: True, + event_predicate=lambda x: False)) + + def testAllMatch(self): + self.counter.timestamps = [111, 222] + self.counter.samples = [100, 200] + events = self.counter.IterEventsInThisContainer( + event_type_predicate=lambda x: True, + event_predicate=lambda x: True) + self.assertIsInstance(events, types.GeneratorType) + eventlist = list(events) + self.assertEqual([111, 222], [s.start for s in eventlist]) + self.assertEqual(['cat.name', 'cat.name'], [s.name for s in eventlist]) + self.assertEqual([100, 200], [s.value for s in eventlist]) + + def testPartialMatch(self): + self.counter.timestamps = [111, 222] + self.counter.samples = [100, 200] + events = self.counter.IterEventsInThisContainer( + event_type_predicate=lambda x: True, + event_predicate=lambda x: x.start > 200) + self.assertIsInstance(events, types.GeneratorType) + eventlist = list(events) + self.assertEqual([222], [s.start for s in eventlist]) + self.assertEqual(['cat.name'], [s.name for s in eventlist]) + self.assertEqual([200], [s.value for s in eventlist]) |