def test_static_constructor(self): gauge = FakeGauge('test').supplies([100000]) rate = Rate.of(gauge) assert rate.name() == 'test_per_1secs' rate = Rate.of(gauge, window = Amount(5, Time.MINUTES)) assert rate.name() == 'test_per_5mins' rate = Rate.of(gauge, name = 'holyguacamole') assert rate.name() == 'holyguacamole_per_1secs' rate = Rate.of(gauge, name = 'holyguacamole', window = Amount(3, Time.HOURS)) assert rate.name() == 'holyguacamole_per_3hrs'
def test_windowing(self): TEN_SECONDS = Amount(10, Time.SECONDS).as_(Time.SECONDS) clock = TestClock() gauge = FakeGauge('test').supplies([100, 0, 50, 100, 150, 100, 50]) rate = Rate("foo", gauge, window = Amount(30, Time.SECONDS), clock=clock) assert rate.read() == 0 clock.advance(TEN_SECONDS) assert -100.0 / 10 == rate.read() clock.advance(TEN_SECONDS) assert -50.0 / 20 == rate.read() clock.advance(TEN_SECONDS) assert 0 == rate.read() clock.advance(TEN_SECONDS) assert 150.0 / 30 == rate.read() clock.advance(TEN_SECONDS) assert 50.0 / 30 == rate.read() clock.advance(TEN_SECONDS) assert -50.0 / 30 == rate.read()
def test_empty(self): clock = TestClock() gauge = FakeGauge('test').supplies([100000]) rate = Rate("foo", gauge, window = Amount(30, Time.SECONDS), clock=clock) assert rate.read() == 0