counter_unittest.py revision cef7893435aa41160dd1255c43cb8498279738cc
1784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi# Copyright 2014 The Chromium Authors. All rights reserved. 2784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi# Use of this source code is governed by a BSD-style license that can be 3784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi# found in the LICENSE file. 4784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi 5784df0c730f522dc4de83fa81c0f6fe211247673Dan Shiimport types 6784df0c730f522dc4de83fa81c0f6fe211247673Dan Shiimport unittest 7784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi 8784df0c730f522dc4de83fa81c0f6fe211247673Dan Shifrom telemetry.timeline import counter as counter_module 9784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi 10784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi 11784df0c730f522dc4de83fa81c0f6fe211247673Dan Shiclass FakeProcess(object): 12784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi pass 13784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi 14784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi 15784df0c730f522dc4de83fa81c0f6fe211247673Dan Shiclass CounterIterEventsInThisContainerTest(unittest.TestCase): 16784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi 17784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi def setUp(self): 18784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi parent = FakeProcess() 19784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi self.counter = counter_module.Counter(parent, 'cat', 'name') 20784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi 21784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi def assertIsEmptyIterator(self, itr): 22784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi self.assertIsInstance(itr, types.GeneratorType) 23784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi self.assertRaises(StopIteration, itr.next) 24784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi 25784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi def testEmptyTimestamps(self): 26b9144a457ac2be505eac18f61e75d68751b3cea0Dan Shi self.assertIsEmptyIterator(self.counter.IterEventsInThisContainer( 27b9144a457ac2be505eac18f61e75d68751b3cea0Dan Shi event_type_predicate=lambda x: True, 2856f1ba77e4b8b4c13d5bc72b0ebaeabda9f9d0bcDan Shi event_predicate=lambda x: True)) 29784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi 3056f1ba77e4b8b4c13d5bc72b0ebaeabda9f9d0bcDan Shi def testEventTypeMismatch(self): 31784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi self.counter.timestamps = [111, 222] 32784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi self.assertIsEmptyIterator(self.counter.IterEventsInThisContainer( 33784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi event_type_predicate=lambda x: False, 34784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi event_predicate=lambda x: True)) 35784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi 36784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi def testNoEventMatch(self): 37784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi self.counter.timestamps = [111, 222] 38784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi self.assertIsEmptyIterator(self.counter.IterEventsInThisContainer( 39784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi event_type_predicate=lambda x: True, 40784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi event_predicate=lambda x: False)) 41784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi 42784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi def testAllMatch(self): 43784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi self.counter.timestamps = [111, 222] 44784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi self.counter.samples = [100, 200] 45784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi events = self.counter.IterEventsInThisContainer( 46784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi event_type_predicate=lambda x: True, 47784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi event_predicate=lambda x: True) 48784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi self.assertIsInstance(events, types.GeneratorType) 49784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi eventlist = list(events) 50784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi self.assertEqual([111, 222], [s.start for s in eventlist]) 51784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi self.assertEqual(['cat.name', 'cat.name'], [s.name for s in eventlist]) 52784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi self.assertEqual([100, 200], [s.value for s in eventlist]) 53784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi 54784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi def testPartialMatch(self): 5556f1ba77e4b8b4c13d5bc72b0ebaeabda9f9d0bcDan Shi self.counter.timestamps = [111, 222] 5656f1ba77e4b8b4c13d5bc72b0ebaeabda9f9d0bcDan Shi self.counter.samples = [100, 200] 5756f1ba77e4b8b4c13d5bc72b0ebaeabda9f9d0bcDan Shi events = self.counter.IterEventsInThisContainer( 5856f1ba77e4b8b4c13d5bc72b0ebaeabda9f9d0bcDan Shi event_type_predicate=lambda x: True, 5956f1ba77e4b8b4c13d5bc72b0ebaeabda9f9d0bcDan Shi event_predicate=lambda x: x.start > 200) 6056f1ba77e4b8b4c13d5bc72b0ebaeabda9f9d0bcDan Shi self.assertIsInstance(events, types.GeneratorType) 6156f1ba77e4b8b4c13d5bc72b0ebaeabda9f9d0bcDan Shi eventlist = list(events) 62784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi self.assertEqual([222], [s.start for s in eventlist]) 63784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi self.assertEqual(['cat.name'], [s.name for s in eventlist]) 64784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi self.assertEqual([200], [s.value for s in eventlist]) 65784df0c730f522dc4de83fa81c0f6fe211247673Dan Shi