aboutsummaryrefslogtreecommitdiff
path: root/catapult/telemetry/telemetry/timeline/counter_unittest.py
diff options
context:
space:
mode:
Diffstat (limited to 'catapult/telemetry/telemetry/timeline/counter_unittest.py')
-rw-r--r--catapult/telemetry/telemetry/timeline/counter_unittest.py64
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])