Exemplo n.º 1
0
 def test_histogram_adds(self):
     h1 = Histogram('h', 'help', registry=None)
     h2 = Histogram('h', 'help', registry=None)
     self.assertEqual(0, self.registry.get_sample_value('h_count'))
     self.assertEqual(0, self.registry.get_sample_value('h_sum'))
     self.assertEqual(0, self.registry.get_sample_value('h_bucket', {'le': '5.0'}))
     h1.observe(1)
     h2.observe(2)
     self.assertEqual(2, self.registry.get_sample_value('h_count'))
     self.assertEqual(3, self.registry.get_sample_value('h_sum'))
     self.assertEqual(2, self.registry.get_sample_value('h_bucket', {'le': '5.0'}))
Exemplo n.º 2
0
 def test_histogram_adds(self):
     h1 = Histogram('h', 'help', registry=None)
     core._ValueClass = core._MultiProcessValue(lambda: 456)
     h2 = Histogram('h', 'help', registry=None)
     self.assertEqual(0, self.registry.get_sample_value('h_count'))
     self.assertEqual(0, self.registry.get_sample_value('h_sum'))
     self.assertEqual(0, self.registry.get_sample_value('h_bucket', {'le': '5.0'}))
     h1.observe(1)
     h2.observe(2)
     self.assertEqual(2, self.registry.get_sample_value('h_count'))
     self.assertEqual(3, self.registry.get_sample_value('h_sum'))
     self.assertEqual(2, self.registry.get_sample_value('h_bucket', {'le': '5.0'}))
Exemplo n.º 3
0
class TestHistogram(unittest.TestCase):
    def setUp(self):
        self.registry = CollectorRegistry()
        self.histogram = Histogram('h', 'help', registry=self.registry)
        self.labels = Histogram('hl', 'help', ['l'], registry=self.registry)

    def test_histogram(self):
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '1.0'}))
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '2.5'}))
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '5.0'}))
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        self.assertEqual(0, self.registry.get_sample_value('h_count'))
        self.assertEqual(0, self.registry.get_sample_value('h_sum'))

        self.histogram.observe(2)
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '1.0'}))
        self.assertEqual(
            1, self.registry.get_sample_value('h_bucket', {'le': '2.5'}))
        self.assertEqual(
            1, self.registry.get_sample_value('h_bucket', {'le': '5.0'}))
        self.assertEqual(
            1, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        self.assertEqual(1, self.registry.get_sample_value('h_count'))
        self.assertEqual(2, self.registry.get_sample_value('h_sum'))

        self.histogram.observe(2.5)
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '1.0'}))
        self.assertEqual(
            2, self.registry.get_sample_value('h_bucket', {'le': '2.5'}))
        self.assertEqual(
            2, self.registry.get_sample_value('h_bucket', {'le': '5.0'}))
        self.assertEqual(
            2, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        self.assertEqual(2, self.registry.get_sample_value('h_count'))
        self.assertEqual(4.5, self.registry.get_sample_value('h_sum'))

        self.histogram.observe(float("inf"))
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '1.0'}))
        self.assertEqual(
            2, self.registry.get_sample_value('h_bucket', {'le': '2.5'}))
        self.assertEqual(
            2, self.registry.get_sample_value('h_bucket', {'le': '5.0'}))
        self.assertEqual(
            3, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        self.assertEqual(3, self.registry.get_sample_value('h_count'))
        self.assertEqual(float("inf"), self.registry.get_sample_value('h_sum'))

    def test_setting_buckets(self):
        h = Histogram('h', 'help', registry=None, buckets=[0, 1, 2])
        self.assertEqual([0.0, 1.0, 2.0, float("inf")], h._upper_bounds)

        h = Histogram('h',
                      'help',
                      registry=None,
                      buckets=[0, 1, 2, float("inf")])
        self.assertEqual([0.0, 1.0, 2.0, float("inf")], h._upper_bounds)

        self.assertRaises(ValueError,
                          Histogram,
                          'h',
                          'help',
                          registry=None,
                          buckets=[])
        self.assertRaises(ValueError,
                          Histogram,
                          'h',
                          'help',
                          registry=None,
                          buckets=[float("inf")])
        self.assertRaises(ValueError,
                          Histogram,
                          'h',
                          'help',
                          registry=None,
                          buckets=[3, 1])

    def test_labels(self):
        self.assertRaises(ValueError,
                          Histogram,
                          'h',
                          'help',
                          registry=None,
                          labelnames=['le'])

        self.labels.labels('a').observe(2)
        self.assertEqual(
            0,
            self.registry.get_sample_value('hl_bucket', {
                'le': '1.0',
                'l': 'a'
            }))
        self.assertEqual(
            1,
            self.registry.get_sample_value('hl_bucket', {
                'le': '2.5',
                'l': 'a'
            }))
        self.assertEqual(
            1,
            self.registry.get_sample_value('hl_bucket', {
                'le': '5.0',
                'l': 'a'
            }))
        self.assertEqual(
            1,
            self.registry.get_sample_value('hl_bucket', {
                'le': '+Inf',
                'l': 'a'
            }))
        self.assertEqual(
            1, self.registry.get_sample_value('hl_count', {'l': 'a'}))
        self.assertEqual(2,
                         self.registry.get_sample_value('hl_sum', {'l': 'a'}))

    def test_function_decorator(self):
        self.assertEqual(0, self.registry.get_sample_value('h_count'))
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))

        @self.histogram.time()
        def f():
            pass

        self.assertEqual(([], None, None, None), inspect.getargspec(f))

        f()
        self.assertEqual(1, self.registry.get_sample_value('h_count'))
        self.assertEqual(
            1, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))

    def test_function_decorator_multithread(self):
        self.assertEqual(0, self.registry.get_sample_value('h_count'))
        workers = 3
        duration = 0.1
        pool = ThreadPoolExecutor(max_workers=workers)

        @self.histogram.time()
        def f():
            time.sleep(duration)

        jobs = workers * 3
        for i in range(jobs):
            pool.submit(f)
        pool.shutdown(wait=True)

        self.assertEqual(jobs, self.registry.get_sample_value('h_count'))

        rounding_coefficient = 0.9
        total_expected_duration = jobs * duration * rounding_coefficient
        self.assertLess(total_expected_duration,
                        self.registry.get_sample_value('h_sum'))

    def test_block_decorator(self):
        self.assertEqual(0, self.registry.get_sample_value('h_count'))
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        with self.histogram.time():
            pass
        self.assertEqual(1, self.registry.get_sample_value('h_count'))
        self.assertEqual(
            1, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))
Exemplo n.º 4
0
class TestHistogram(unittest.TestCase):
    def setUp(self):
        self.registry = CollectorRegistry()
        self.histogram = Histogram('h', 'help', registry=self.registry)
        self.labels = Histogram('hl', 'help', ['l'], registry=self.registry)

    def test_histogram(self):
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '1.0'}))
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '2.5'}))
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '5.0'}))
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        self.assertEqual(0, self.registry.get_sample_value('h_count'))
        self.assertEqual(0, self.registry.get_sample_value('h_sum'))

        self.histogram.observe(2)
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '1.0'}))
        self.assertEqual(
            1, self.registry.get_sample_value('h_bucket', {'le': '2.5'}))
        self.assertEqual(
            1, self.registry.get_sample_value('h_bucket', {'le': '5.0'}))
        self.assertEqual(
            1, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        self.assertEqual(1, self.registry.get_sample_value('h_count'))
        self.assertEqual(2, self.registry.get_sample_value('h_sum'))

        self.histogram.observe(2.5)
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '1.0'}))
        self.assertEqual(
            2, self.registry.get_sample_value('h_bucket', {'le': '2.5'}))
        self.assertEqual(
            2, self.registry.get_sample_value('h_bucket', {'le': '5.0'}))
        self.assertEqual(
            2, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        self.assertEqual(2, self.registry.get_sample_value('h_count'))
        self.assertEqual(4.5, self.registry.get_sample_value('h_sum'))

        self.histogram.observe(float("inf"))
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '1.0'}))
        self.assertEqual(
            2, self.registry.get_sample_value('h_bucket', {'le': '2.5'}))
        self.assertEqual(
            2, self.registry.get_sample_value('h_bucket', {'le': '5.0'}))
        self.assertEqual(
            3, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        self.assertEqual(3, self.registry.get_sample_value('h_count'))
        self.assertEqual(float("inf"), self.registry.get_sample_value('h_sum'))

    def test_setting_buckets(self):
        h = Histogram('h', 'help', registry=None, buckets=[0, 1, 2])
        self.assertEqual([0.0, 1.0, 2.0, float("inf")], h._upper_bounds)

        h = Histogram('h',
                      'help',
                      registry=None,
                      buckets=[0, 1, 2, float("inf")])
        self.assertEqual([0.0, 1.0, 2.0, float("inf")], h._upper_bounds)

        self.assertRaises(ValueError,
                          Histogram,
                          'h',
                          'help',
                          registry=None,
                          buckets=[])
        self.assertRaises(ValueError,
                          Histogram,
                          'h',
                          'help',
                          registry=None,
                          buckets=[float("inf")])
        self.assertRaises(ValueError,
                          Histogram,
                          'h',
                          'help',
                          registry=None,
                          buckets=[3, 1])

    def test_labels(self):
        self.labels.labels('a').observe(2)
        self.assertEqual(
            0,
            self.registry.get_sample_value('hl_bucket', {
                'le': '1.0',
                'l': 'a'
            }))
        self.assertEqual(
            1,
            self.registry.get_sample_value('hl_bucket', {
                'le': '2.5',
                'l': 'a'
            }))
        self.assertEqual(
            1,
            self.registry.get_sample_value('hl_bucket', {
                'le': '5.0',
                'l': 'a'
            }))
        self.assertEqual(
            1,
            self.registry.get_sample_value('hl_bucket', {
                'le': '+Inf',
                'l': 'a'
            }))
        self.assertEqual(
            1, self.registry.get_sample_value('hl_count', {'l': 'a'}))
        self.assertEqual(2,
                         self.registry.get_sample_value('hl_sum', {'l': 'a'}))

    def test_function_decorator(self):
        self.assertEqual(0, self.registry.get_sample_value('h_count'))
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))

        @self.histogram.time()
        def f():
            pass

        self.assertEqual(([], None, None, None), inspect.getargspec(f))

        f()
        self.assertEqual(1, self.registry.get_sample_value('h_count'))
        self.assertEqual(
            1, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))

    def test_block_decorator(self):
        self.assertEqual(0, self.registry.get_sample_value('h_count'))
        self.assertEqual(
            0, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        with self.histogram.time():
            pass
        self.assertEqual(1, self.registry.get_sample_value('h_count'))
        self.assertEqual(
            1, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))
Exemplo n.º 5
0
class TestHistogram(unittest.TestCase):
    def setUp(self):
        self.registry = CollectorRegistry()
        self.histogram = Histogram('h', 'help', registry=self.registry)
        self.labels = Histogram('hl', 'help', ['l'], registry=self.registry)

    def test_repr(self):
        self.assertEqual(repr(self.histogram), "prometheus_client.metrics.Histogram(h)")
        self.assertEqual(repr(self.labels), "prometheus_client.metrics.Histogram(hl)")

    def test_histogram(self):
        self.assertEqual(0, self.registry.get_sample_value('h_bucket', {'le': '1.0'}))
        self.assertEqual(0, self.registry.get_sample_value('h_bucket', {'le': '2.5'}))
        self.assertEqual(0, self.registry.get_sample_value('h_bucket', {'le': '5.0'}))
        self.assertEqual(0, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        self.assertEqual(0, self.registry.get_sample_value('h_count'))
        self.assertEqual(0, self.registry.get_sample_value('h_sum'))

        self.histogram.observe(2)
        self.assertEqual(0, self.registry.get_sample_value('h_bucket', {'le': '1.0'}))
        self.assertEqual(1, self.registry.get_sample_value('h_bucket', {'le': '2.5'}))
        self.assertEqual(1, self.registry.get_sample_value('h_bucket', {'le': '5.0'}))
        self.assertEqual(1, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        self.assertEqual(1, self.registry.get_sample_value('h_count'))
        self.assertEqual(2, self.registry.get_sample_value('h_sum'))

        self.histogram.observe(2.5)
        self.assertEqual(0, self.registry.get_sample_value('h_bucket', {'le': '1.0'}))
        self.assertEqual(2, self.registry.get_sample_value('h_bucket', {'le': '2.5'}))
        self.assertEqual(2, self.registry.get_sample_value('h_bucket', {'le': '5.0'}))
        self.assertEqual(2, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        self.assertEqual(2, self.registry.get_sample_value('h_count'))
        self.assertEqual(4.5, self.registry.get_sample_value('h_sum'))

        self.histogram.observe(float("inf"))
        self.assertEqual(0, self.registry.get_sample_value('h_bucket', {'le': '1.0'}))
        self.assertEqual(2, self.registry.get_sample_value('h_bucket', {'le': '2.5'}))
        self.assertEqual(2, self.registry.get_sample_value('h_bucket', {'le': '5.0'}))
        self.assertEqual(3, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        self.assertEqual(3, self.registry.get_sample_value('h_count'))
        self.assertEqual(float("inf"), self.registry.get_sample_value('h_sum'))

    def test_histogram_not_observable(self):
        """.observe() must fail if the Summary is not observable."""
        assert_not_observable(self.labels.observe, 1)

    def test_setting_buckets(self):
        h = Histogram('h', 'help', registry=None, buckets=[0, 1, 2])
        self.assertEqual([0.0, 1.0, 2.0, float("inf")], h._upper_bounds)

        h = Histogram('h', 'help', registry=None, buckets=[0, 1, 2, float("inf")])
        self.assertEqual([0.0, 1.0, 2.0, float("inf")], h._upper_bounds)

        self.assertRaises(ValueError, Histogram, 'h', 'help', registry=None, buckets=[])
        self.assertRaises(ValueError, Histogram, 'h', 'help', registry=None, buckets=[float("inf")])
        self.assertRaises(ValueError, Histogram, 'h', 'help', registry=None, buckets=[3, 1])

    def test_labels(self):
        self.assertRaises(ValueError, Histogram, 'h', 'help', registry=None, labelnames=['le'])

        self.labels.labels('a').observe(2)
        self.assertEqual(0, self.registry.get_sample_value('hl_bucket', {'le': '1.0', 'l': 'a'}))
        self.assertEqual(1, self.registry.get_sample_value('hl_bucket', {'le': '2.5', 'l': 'a'}))
        self.assertEqual(1, self.registry.get_sample_value('hl_bucket', {'le': '5.0', 'l': 'a'}))
        self.assertEqual(1, self.registry.get_sample_value('hl_bucket', {'le': '+Inf', 'l': 'a'}))
        self.assertEqual(1, self.registry.get_sample_value('hl_count', {'l': 'a'}))
        self.assertEqual(2, self.registry.get_sample_value('hl_sum', {'l': 'a'}))

    def test_function_decorator(self):
        self.assertEqual(0, self.registry.get_sample_value('h_count'))
        self.assertEqual(0, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))

        @self.histogram.time()
        def f():
            pass

        self.assertEqual(([], None, None, None), getargspec(f))

        f()
        self.assertEqual(1, self.registry.get_sample_value('h_count'))
        self.assertEqual(1, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))

    def test_function_decorator_multithread(self):
        self.assertEqual(0, self.registry.get_sample_value('h_count'))
        workers = 3
        duration = 0.1
        pool = ThreadPoolExecutor(max_workers=workers)

        @self.histogram.time()
        def f():
            time.sleep(duration)

        jobs = workers * 3
        for i in range(jobs):
            pool.submit(f)
        pool.shutdown(wait=True)

        self.assertEqual(jobs, self.registry.get_sample_value('h_count'))

        rounding_coefficient = 0.9
        total_expected_duration = jobs * duration * rounding_coefficient
        self.assertLess(total_expected_duration, self.registry.get_sample_value('h_sum'))

    def test_block_decorator(self):
        self.assertEqual(0, self.registry.get_sample_value('h_count'))
        self.assertEqual(0, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        with self.histogram.time():
            pass
        self.assertEqual(1, self.registry.get_sample_value('h_count'))
        self.assertEqual(1, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))

    def test_exemplar_invalid_label_name(self):
        self.assertRaises(ValueError, self.histogram.observe, 3.0, exemplar={':o)': 'smile'})
        self.assertRaises(ValueError, self.histogram.observe, 3.0, exemplar={'1': 'number'})

    def test_exemplar_too_long(self):
        # 129 characters in total should fail.
        self.assertRaises(ValueError, self.histogram.observe, 1.0, exemplar={
            'abcdefghijklmnopqrstuvwxyz': '26+16 characters',
            'x1234567': '8+15 characters',
            'zyxwvutsrqponmlkjihgfedcba': '26+16 characters',
            'y123456': '7+15 characters',
        })
Exemplo n.º 6
0
    def test_reset_registry(self):
        registry = CollectorRegistry()

        gauge = Gauge('g', 'help', registry=registry)
        gauge.inc()
        self.assertEqual(1, registry.get_sample_value('g'))

        counter = Counter('c_total', 'help', registry=registry)
        counter.inc()
        self.assertEqual(1, registry.get_sample_value('c_total'))

        summary = Summary('s', 'help', registry=registry)
        summary.observe(10)
        self.assertEqual(1, registry.get_sample_value('s_count'))
        self.assertEqual(10, registry.get_sample_value('s_sum'))

        histogram = Histogram('h', 'help', registry=registry)
        histogram.observe(2)
        self.assertEqual(0, registry.get_sample_value('h_bucket', {'le': '1.0'}))
        self.assertEqual(1, registry.get_sample_value('h_bucket', {'le': '2.5'}))
        self.assertEqual(1, registry.get_sample_value('h_bucket', {'le': '5.0'}))
        self.assertEqual(1, registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        self.assertEqual(1, registry.get_sample_value('h_count'))
        self.assertEqual(2, registry.get_sample_value('h_sum'))


        registry.reset()

        self.assertEqual(0, registry.get_sample_value('g'))

        self.assertEqual(0, registry.get_sample_value('c_total'))

        self.assertEqual(0, registry.get_sample_value('s_count'))
        self.assertEqual(0, registry.get_sample_value('s_sum'))

        self.assertEqual(0, registry.get_sample_value('h_bucket', {'le': '1.0'}))
        self.assertEqual(0, registry.get_sample_value('h_bucket', {'le': '2.5'}))
        self.assertEqual(0, registry.get_sample_value('h_bucket', {'le': '5.0'}))
        self.assertEqual(0, registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        self.assertEqual(0, registry.get_sample_value('h_count'))
        self.assertEqual(0, registry.get_sample_value('h_sum'))

        # --------------------------

        gauge.inc()
        gauge.inc()
        gauge.inc()
        gauge.dec()
        self.assertEqual(2, registry.get_sample_value('g'))

        counter.inc()
        counter.inc()
        counter.inc()
        self.assertEqual(3, registry.get_sample_value('c_total'))

        summary.observe(10)
        summary.observe(5)
        self.assertEqual(2, registry.get_sample_value('s_count'))
        self.assertEqual(15, registry.get_sample_value('s_sum'))

        histogram.observe(2)
        histogram.observe(6)
        histogram.observe(1)
        self.assertEqual(1, registry.get_sample_value('h_bucket', {'le': '1.0'}))
        self.assertEqual(2, registry.get_sample_value('h_bucket', {'le': '2.5'}))
        self.assertEqual(2, registry.get_sample_value('h_bucket', {'le': '5.0'}))
        self.assertEqual(3, registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        self.assertEqual(3, registry.get_sample_value('h_count'))
        self.assertEqual(9, registry.get_sample_value('h_sum'))


        registry.reset()

        self.assertEqual(0, registry.get_sample_value('g'))

        self.assertEqual(0, registry.get_sample_value('c_total'))

        self.assertEqual(0, registry.get_sample_value('s_count'))
        self.assertEqual(0, registry.get_sample_value('s_sum'))

        self.assertEqual(0, registry.get_sample_value('h_bucket', {'le': '1.0'}))
        self.assertEqual(0, registry.get_sample_value('h_bucket', {'le': '2.5'}))
        self.assertEqual(0, registry.get_sample_value('h_bucket', {'le': '5.0'}))
        self.assertEqual(0, registry.get_sample_value('h_bucket', {'le': '+Inf'}))
        self.assertEqual(0, registry.get_sample_value('h_count'))
        self.assertEqual(0, registry.get_sample_value('h_sum'))