def test_counter_without_reference(self): r = Registry( config=SidecarConfig({"sidecar.output-location": "memory"})) self.assertTrue(r.counter("test")._writer.is_empty()) r.counter("test").increment() self.assertEqual("c:test:1", r.counter("test")._writer.last_line())
def test_publish_cleanup_noref(self): r = Registry() with r.start(): id = r.counter('test').meterId r.counter('test').increment() self.assertTrue(id in r._meters) r._publish() self.assertFalse(id in r._meters)
def test_iterate(self): r = Registry() r.counter("counter") r.timer("timer") meters = 0 for m in r: meters += 1 self.assertEqual(2, meters)
def test_iterate(self): """Avoid breaking the API.""" r = Registry( config=SidecarConfig({"sidecar.output-location": "memory"})) for _ in r: self.fail("registry should be empty") r.counter("counter") r.timer("timer") for _ in r: self.fail("registry no longer holds references to MeterIds")
def test_get_measurements_only_useful(self): r = Registry() with r.start(): c = r.counter('counter') g = r.gauge('gauge') c.increment() g.set(1) ms = r._get_measurements() self.assertEqual(2, len(ms)) r.gauge('nan').set(float('nan')) r.counter('zero') ms = r._get_measurements() self.assertEqual(0, len(ms))
def test_measurements_to_json(self): r = Registry() with r.start({'common_tags': {'nf.app': 'app'}}): c = r.counter('c') c.increment() r.gauge('g').set(42) ms = r._get_measurements() expected_counter = { 'op': 'sum', 'value': 1, 'tags': { 'nf.app': 'app', 'name': 'c', 'statistic': 'count' } } expected_gauge = { 'op': 'max', 'value': 42, 'tags': { 'nf.app': 'app', 'name': 'g', 'statistic': 'gauge' } } expected_entries = [expected_gauge, expected_counter] payload = r._measurements_to_json(ms) # sort payload so we ensure we get gauges first entries = sorted(self.payload_to_entries(payload), key=lambda m: m.get('op')) self.assertEqual(expected_entries, entries)
def test_get_measurements_only_useful(self): r = Registry() with r.start(): # meters with reference held c = r.counter('counter') g = r.gauge('gauge') c.increment() g.set(1) ms = r._get_measurements() self.assertEqual(2, len(ms)) # meters without reference held; only the non-nan gauge will report r.gauge('gauge-nan').set(float('nan')) r.counter('counter-zero') ms = r._get_measurements() self.assertEqual(1, len(ms))
def test_close(self): r = Registry( config=SidecarConfig({"sidecar.output-location": "memory"})) c = r.counter("test") c.increment() self.assertEqual("c:test:1", c._writer.last_line()) r.close() self.assertTrue(c._writer.is_empty())
def test_counter(self): r = Registry() c = r.counter("test") self.assertEqual(c.count(), 0) c.increment() self.assertEqual(c.count(), 1)
def test_timer_and_counter_same_name_different_tags(self): r = Registry() c = r.counter("check_value", tags=dict(tag="a")) t = r.timer("check_value", tags=dict(tag="b")) self.assertIsNot(c, t) self.assertIsNot(t, r.noopTimer)
def test_duplicate_distro_different_type(self): r = Registry() c = r.counter("check_value") d = r.distribution_summary("check_value") self.assertIsNot(c, d) self.assertIs(d, r.noopDistributionSummary)
def test_duplicate_timer_different_type(self): r = Registry() c = r.counter("check_value") t = r.timer("check_value") self.assertIsNot(c, t) self.assertIs(t, r.noopTimer)
def test_duplicate_counter_different_type(self): r = Registry() g = r.gauge("check_value", tags=dict(taga="a")) c = r.counter("check_value", tags=dict(taga="a")) self.assertIsNot(g, c) self.assertIs(c, r.noopCounter)
def test_duplicate_gauge_different_type(self): r = Registry() c = r.counter("check_value", tags=dict(taga="a")) g = r.gauge("check_value", tags=dict(taga="a")) self.assertIsNot(c, g) self.assertIs(g, r.noopGauge)
def test_counter_get(self): r = Registry() r.counter("test").increment() self.assertEqual(r.counter("test").count(), 1)