Example #1
0
    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)
Example #2
0
 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)
Example #3
0
    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))
Example #4
0
    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))
Example #5
0
    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))
Example #6
0
 def test_duplicate_start(self):
     r = Registry()
     r.start()
     t1 = r._timer
     r.start()
     self.assertEqual(r._timer, t1)