def test_largebuffer(self): m = Metrics(threadsafe=True) m2 = Metrics(threadsafe=True, shared=m.share()) # intentionally just over the int overflow for _ in range(32768 + 1): m2.add('key', SumMetric(1)) m2.flush() assert m.report()['key'] == 32768 + 1
def test_simpleadd(self): m = Metrics(threadsafe=False) m.add('key', SumMetric(1)) m.add('key', SumMetric(2)) assert m.report()['key'] == 3 m.clear() assert 'key' not in m.report() m.add('key', SumMetric(1.5)) m.add('key', SumMetric(2.5)) assert m.report()['key'] == 4.0 # shouldn't throw exception m.flush()
def test_shared(self): m = Metrics(threadsafe=False) m2 = Metrics(threadsafe=False, shared=m.share()) m3 = Metrics(threadsafe=False, shared=m.share()) m2.add('key', SumMetric(1)) m3.add('key', SumMetric(2)) m2.flush() # just make sure this doesn't throw exception, it's a no-op m.add('key', SumMetric(3)) assert m.report()['key'] == 6 # shouldn't throw exception m.flush() m2.flush() m3.flush()
def test_multithreaded(self): m = Metrics(threadsafe=True) m2 = Metrics(threadsafe=True, shared=m.share()) m3 = Metrics(threadsafe=True, shared=m.share()) m2.add('key', SumMetric(1)) m2.flush() m3.add('key', SumMetric(2)) m3.flush() m.add('key', SumMetric(3)) m.flush() m.report()['key'] == 6