def setUp(self): self.meter = Meter()
class TestMeter(TestCase): def setUp(self): self.meter = Meter() def test_mark_increments_count_by_one(self): self.meter.mark() self.assertEqual(self.meter.count, 1) def test_mark_increments_count_by_N(self): self.meter.mark(42) self.assertEqual(self.meter.count, 42) def test_mark_calls_tick(self): with patch.object(self.meter, "_tick") as _tick: self.meter.mark() _tick.assert_called_once_with() def test_mark_calls_rate_updates(self): self.meter.m1rate = Mock() self.meter.m5rate = Mock() self.meter.m15rate = Mock() self.meter.mark() self.meter.m1rate.update.assert_called_once_with(1) self.meter.m5rate.update.assert_called_once_with(1) self.meter.m15rate.update.assert_called_once_with(1) def test_tick_does_not_prematurely_tick_rates(self): self.meter.m1rate = Mock() self.meter.m5rate = Mock() self.meter.m15rate = Mock() self.meter.mark() self.meter.m1rate.tick.assert_not_called() self.meter.m5rate.tick.assert_not_called() self.meter.m15rate.tick.assert_not_called() def test_tick_sets_last_tick(self): then = datetime.now() - timedelta(seconds=7) self.meter._last_tick = then self.meter.mark() self.assertTrue(self.meter._last_tick >= then + timedelta(seconds=7)) def test_tick_updates_rates_n_times(self): then = datetime.now() - timedelta(seconds=14) self.meter._last_tick = then self.meter.m1rate = Mock() self.meter.m5rate = Mock() self.meter.m15rate = Mock() self.meter.mark() self.assertEqual(self.meter.m1rate.tick.call_count, 2) self.assertEqual(self.meter.m5rate.tick.call_count, 2) self.assertEqual(self.meter.m15rate.tick.call_count, 2)