Exemplo n.º 1
0
 def setUp(self):
     self.meter = Meter()
Exemplo n.º 2
0
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)