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_gauge_not_deleted_before_ttl(self): clock = ManualClock() r = Registry(clock=clock) with r.start(): r.gauge('gauge').set(1) ms = r._get_measurements() self.assertEqual(1, len(ms)) # two cycles are required to delete a gauge after it expires ms = r._get_measurements() self.assertEqual(1, len(ms)) ms = r._get_measurements() self.assertEqual(1, len(ms))
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_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_gauge_ttl_seconds(self): r = Registry( config=SidecarConfig({"sidecar.output-location": "memory"})) g = r.gauge("test", ttl_seconds=120) self.assertTrue(g._writer.is_empty()) g.set(42) self.assertEqual("g,120:test:42", g._writer.last_line())
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)