Ejemplo n.º 1
0
class TestSummary(unittest.TestCase):
    def setUp(self):
        self.registry = CollectorRegistry()
        self.summary = Summary('s', 'help', registry=self.registry)

    def test_summary(self):
        self.assertEqual(0, self.registry.get_sample_value('s_count'))
        self.assertEqual(0, self.registry.get_sample_value('s_sum'))
        self.summary.observe(10)
        self.assertEqual(1, self.registry.get_sample_value('s_count'))
        self.assertEqual(10, self.registry.get_sample_value('s_sum'))

    def test_function_decorator(self):
        self.assertEqual(0, self.registry.get_sample_value('s_count'))

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

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

        f()
        self.assertEqual(1, self.registry.get_sample_value('s_count'))

    def test_block_decorator(self):
        self.assertEqual(0, self.registry.get_sample_value('s_count'))
        with self.summary.time():
            pass
        self.assertEqual(1, self.registry.get_sample_value('s_count'))
Ejemplo n.º 2
0
 def test_summary_adds(self):
     s1 = Summary('s', 'help', registry=None)
     s2 = Summary('s', 'help', registry=None)
     self.assertEqual(0, self.registry.get_sample_value('s_count'))
     self.assertEqual(0, self.registry.get_sample_value('s_sum'))
     s1.observe(1)
     s2.observe(2)
     self.assertEqual(2, self.registry.get_sample_value('s_count'))
     self.assertEqual(3, self.registry.get_sample_value('s_sum'))
Ejemplo n.º 3
0
 def test_summary_adds(self):
     s1 = Summary('s', 'help', registry=None)
     values.ValueClass = MultiProcessValue(lambda: 456)
     s2 = Summary('s', 'help', registry=None)
     self.assertEqual(0, self.registry.get_sample_value('s_count'))
     self.assertEqual(0, self.registry.get_sample_value('s_sum'))
     s1.observe(1)
     s2.observe(2)
     self.assertEqual(2, self.registry.get_sample_value('s_count'))
     self.assertEqual(3, self.registry.get_sample_value('s_sum'))
Ejemplo n.º 4
0
class TestSummary(unittest.TestCase):
    def setUp(self):
        self.registry = CollectorRegistry()
        self.summary = Summary('s', 'help', registry=self.registry)

    def test_summary(self):
        self.assertEqual(0, self.registry.get_sample_value('s_count'))
        self.assertEqual(0, self.registry.get_sample_value('s_sum'))
        self.summary.observe(10)
        self.assertEqual(1, self.registry.get_sample_value('s_count'))
        self.assertEqual(10, self.registry.get_sample_value('s_sum'))

    def test_function_decorator(self):
        self.assertEqual(0, self.registry.get_sample_value('s_count'))

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

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

        f()
        self.assertEqual(1, self.registry.get_sample_value('s_count'))

    def test_function_decorator_multithread(self):
        self.assertEqual(0, self.registry.get_sample_value('s_count'))
        summary2 = Summary('s2', 'help', registry=self.registry)

        workers = 3
        duration = 0.1
        pool = ThreadPoolExecutor(max_workers=workers)

        @self.summary.time()
        def f():
            time.sleep(duration / 2)
            # Testing that different instances of timer do not interfere
            summary2.time()(lambda : time.sleep(duration / 2))()

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

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

        rounding_coefficient = 0.9
        total_expected_duration = jobs * duration * rounding_coefficient
        self.assertLess(total_expected_duration, self.registry.get_sample_value('s_sum'))
        self.assertLess(total_expected_duration / 2 , self.registry.get_sample_value('s2_sum'))

    def test_block_decorator(self):
        self.assertEqual(0, self.registry.get_sample_value('s_count'))
        with self.summary.time():
            pass
        self.assertEqual(1, self.registry.get_sample_value('s_count'))
Ejemplo n.º 5
0
class TestSummary(unittest.TestCase):
    def setUp(self):
        self.registry = CollectorRegistry()
        self.summary = Summary('s', 'help', registry=self.registry)

    def test_repr(self):
        self.assertEqual(repr(self.summary), "prometheus_client.metrics.Summary(s)")

    def test_summary(self):
        self.assertEqual(0, self.registry.get_sample_value('s_count'))
        self.assertEqual(0, self.registry.get_sample_value('s_sum'))
        self.summary.observe(10)
        self.assertEqual(1, self.registry.get_sample_value('s_count'))
        self.assertEqual(10, self.registry.get_sample_value('s_sum'))

    def test_function_decorator(self):
        self.assertEqual(0, self.registry.get_sample_value('s_count'))

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

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

        f()
        self.assertEqual(1, self.registry.get_sample_value('s_count'))

    def test_function_decorator_multithread(self):
        self.assertEqual(0, self.registry.get_sample_value('s_count'))
        summary2 = Summary('s2', 'help', registry=self.registry)

        workers = 3
        duration = 0.1
        pool = ThreadPoolExecutor(max_workers=workers)

        @self.summary.time()
        def f():
            time.sleep(duration / 2)
            # Testing that different instances of timer do not interfere
            summary2.time()(lambda: time.sleep(duration / 2))()

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

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

        rounding_coefficient = 0.9
        total_expected_duration = jobs * duration * rounding_coefficient
        self.assertLess(total_expected_duration, self.registry.get_sample_value('s_sum'))
        self.assertLess(total_expected_duration / 2, self.registry.get_sample_value('s2_sum'))

    def test_function_decorator_reentrancy(self):
        self.assertEqual(0, self.registry.get_sample_value('s_count'))

        iterations = 2
        sleep = 0.1

        @self.summary.time()
        def f(i=1):
            time.sleep(sleep)
            if i == iterations:
                return
            f(i + 1)

        f()

        self.assertEqual(iterations, self.registry.get_sample_value('s_count'))

        # Arithmetic series with d == a_1
        total_expected_duration = sleep * (iterations ** 2 + iterations) / 2
        rounding_coefficient = 0.9
        total_expected_duration *= rounding_coefficient
        self.assertLess(total_expected_duration, self.registry.get_sample_value('s_sum'))

    def test_block_decorator(self):
        self.assertEqual(0, self.registry.get_sample_value('s_count'))
        with self.summary.time():
            pass
        self.assertEqual(1, self.registry.get_sample_value('s_count'))

    def test_timer_not_observable(self):
        s = Summary('test', 'help', labelnames=('label',), registry=self.registry)

        try:
            s.time()
        except ValueError as e:
            self.assertIn('missing label values', str(e))
Ejemplo 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'))