def test_one_minute_EWMA_one_minute_tick(self):
        self.ewma = ExpWeightedMovingAvg(1, 60, clock=self.clock)
        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [
                0.6, 0.22072766, 0.08120117, 0.02987224, 0.01098938,
                0.00404277, 0.00148725, 0.00054713, 0.00020128, 0.00007405
        ]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)
    def test_fifteen_minute_EWMA_one_minute_tick(self):
        self.ewma = ExpWeightedMovingAvg(15, 60, clock=self.clock)

        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [
                0.6, 0.56130419, 0.52510399, 0.49123845, 0.45955700,
                0.42991879, 0.40219203, 0.37625345, 0.35198773, 0.32928698
        ]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)
    def test_five_minute_EWMA_one_minute_tick(self):
        self.ewma = ExpWeightedMovingAvg(5, 60, clock=self.clock)

        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [
                0.6, 0.49123845, 0.40219203, 0.32928698, 0.26959738,
                0.22072766, 0.18071653, 0.14795818, 0.12113791, 0.09917933
        ]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)
Esempio n. 4
0
    def test_one_minute_EWMA_one_minute_tick(self):
        self.ewma = ExpWeightedMovingAvg(1, 60, clock=self.clock)
        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [0.6, 0.22072766, 0.08120117, 0.02987224,
                              0.01098938, 0.00404277, 0.00148725,
                              0.00054713, 0.00020128, 0.00007405]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)
Esempio n. 5
0
    def test_fifteen_minute_EWMA_one_minute_tick(self):
        self.ewma = ExpWeightedMovingAvg(15, 60, clock=self.clock)

        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [0.6, 0.56130419, 0.52510399, 0.49123845,
                              0.45955700, 0.42991879, 0.40219203,
                              0.37625345, 0.35198773, 0.32928698]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)
Esempio n. 6
0
    def test_five_minute_EWMA_one_minute_tick(self):
        self.ewma = ExpWeightedMovingAvg(5, 60, clock=self.clock)

        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [0.6, 0.49123845, 0.40219203, 0.32928698,
                              0.26959738, 0.22072766, 0.18071653,
                              0.14795818, 0.12113791, 0.09917933]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)
Esempio n. 7
0
 def clear(self):
     with self.lock:
         self.start_time = self.clock.time()
         self.counter = 0.0
         self.m1rate = ExpWeightedMovingAvg(period=1, clock=self.clock)
         self.m5rate = ExpWeightedMovingAvg(period=5, clock=self.clock)
         self.m15rate = ExpWeightedMovingAvg(period=15, clock=self.clock)
class EWMATests(TimedTestCase):
    def test_one_minute_EWMA_five_sec_tick(self):
        self.ewma = ExpWeightedMovingAvg(1, clock=self.clock)

        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [
                0.6, 0.22072766, 0.08120117, 0.02987224, 0.01098938,
                0.00404277, 0.00148725, 0.00054713, 0.00020128, 0.00007405
        ]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)

    def test_five_minute_EWMA_five_sec_tick(self):
        self.ewma = ExpWeightedMovingAvg(5, clock=self.clock)

        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [
                0.6, 0.49123845, 0.40219203, 0.32928698, 0.26959738,
                0.22072766, 0.18071653, 0.14795818, 0.12113791, 0.09917933
        ]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)

    def test_fifteen_minute_EWMA_five_sec_tick(self):
        self.ewma = ExpWeightedMovingAvg(15, clock=self.clock)

        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [
                0.6, 0.56130419, 0.52510399, 0.49123845, 0.45955700,
                0.42991879, 0.40219203, 0.37625345, 0.35198773, 0.32928698
        ]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)

    def test_one_minute_EWMA_one_minute_tick(self):
        self.ewma = ExpWeightedMovingAvg(1, 60, clock=self.clock)
        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [
                0.6, 0.22072766, 0.08120117, 0.02987224, 0.01098938,
                0.00404277, 0.00148725, 0.00054713, 0.00020128, 0.00007405
        ]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)

    def test_five_minute_EWMA_one_minute_tick(self):
        self.ewma = ExpWeightedMovingAvg(5, 60, clock=self.clock)

        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [
                0.6, 0.49123845, 0.40219203, 0.32928698, 0.26959738,
                0.22072766, 0.18071653, 0.14795818, 0.12113791, 0.09917933
        ]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)

    def test_fifteen_minute_EWMA_one_minute_tick(self):
        self.ewma = ExpWeightedMovingAvg(15, 60, clock=self.clock)

        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [
                0.6, 0.56130419, 0.52510399, 0.49123845, 0.45955700,
                0.42991879, 0.40219203, 0.37625345, 0.35198773, 0.32928698
        ]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)
Esempio n. 9
0
class EWMATests(TimedTestCase):

    def test_one_minute_EWMA_five_sec_tick(self):
        self.ewma = ExpWeightedMovingAvg(1, clock=self.clock)

        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [0.6, 0.22072766, 0.08120117, 0.02987224,
                              0.01098938, 0.00404277, 0.00148725,
                              0.00054713, 0.00020128, 0.00007405]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)

    def test_five_minute_EWMA_five_sec_tick(self):
        self.ewma = ExpWeightedMovingAvg(5, clock=self.clock)

        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [0.6, 0.49123845, 0.40219203, 0.32928698,
                              0.26959738, 0.22072766, 0.18071653,
                              0.14795818, 0.12113791, 0.09917933]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)

    def test_fifteen_minute_EWMA_five_sec_tick(self):
        self.ewma = ExpWeightedMovingAvg(15, clock=self.clock)

        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [0.6, 0.56130419, 0.52510399, 0.49123845,
                              0.45955700, 0.42991879, 0.40219203,
                              0.37625345, 0.35198773, 0.32928698]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)

    def test_one_minute_EWMA_one_minute_tick(self):
        self.ewma = ExpWeightedMovingAvg(1, 60, clock=self.clock)
        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [0.6, 0.22072766, 0.08120117, 0.02987224,
                              0.01098938, 0.00404277, 0.00148725,
                              0.00054713, 0.00020128, 0.00007405]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)

    def test_five_minute_EWMA_one_minute_tick(self):
        self.ewma = ExpWeightedMovingAvg(5, 60, clock=self.clock)

        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [0.6, 0.49123845, 0.40219203, 0.32928698,
                              0.26959738, 0.22072766, 0.18071653,
                              0.14795818, 0.12113791, 0.09917933]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)

    def test_fifteen_minute_EWMA_one_minute_tick(self):
        self.ewma = ExpWeightedMovingAvg(15, 60, clock=self.clock)

        self.ewma.add(3)
        self.clock.add(5)
        self.ewma.tick()

        for expected_rate in [0.6, 0.56130419, 0.52510399, 0.49123845,
                              0.45955700, 0.42991879, 0.40219203,
                              0.37625345, 0.35198773, 0.32928698]:
            self.assertAlmostEqual(self.ewma.get_rate(), expected_rate)
            self.clock.add(60)
Esempio n. 10
0
class Meter(object):

    """
    A meter metric which measures mean throughput and one-, five-, and fifteen-minute
    exponentially-weighted moving average throughputs.
    """

    def __init__(self, clock=time):
        super(Meter, self).__init__()
        self.lock = Lock()
        self.clock = clock
        self.clear()

    def clear(self):
        with self.lock:
            self.start_time = self.clock.time()
            self.counter = 0.0
            self.m1rate = ExpWeightedMovingAvg(period=1, clock=self.clock)
            self.m5rate = ExpWeightedMovingAvg(period=5, clock=self.clock)
            self.m15rate = ExpWeightedMovingAvg(period=15, clock=self.clock)

    def get_one_minute_rate(self):
        return self.m1rate.get_rate()

    def get_five_minute_rate(self):
        return self.m5rate.get_rate()

    def get_fifteen_minute_rate(self):
        return self.m15rate.get_rate()

    def tick(self):
        self.m1rate.tick()
        self.m5rate.tick()
        self.m15rate.tick()

    def mark(self, value=1):
        with self.lock:
            self.counter += value
            self.m1rate.add(value)
            self.m5rate.add(value)
            self.m15rate.add(value)

    def get_count(self):
        return self.counter

    def get_mean_rate(self):
        if self.counter == 0:
            return 0
        elapsed = self.clock.time() - self.start_time
        return self.counter / elapsed

    def _convertNsRate(self, ratePerNs):
        return ratePerNs