File: test_gc_collector.py

package info (click to toggle)
python-prometheus-client 0.21.1%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 768 kB
  • sloc: python: 6,309; makefile: 9
file content (55 lines) | stat: -rw-r--r-- 1,791 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import gc
import platform
import unittest

from prometheus_client import CollectorRegistry, GCCollector

SKIP = platform.python_implementation() != "CPython"


@unittest.skipIf(SKIP, "Test requires CPython")
class TestGCCollector(unittest.TestCase):
    def setUp(self):
        gc.disable()
        gc.collect()
        self.registry = CollectorRegistry()

    def test_working(self):
        GCCollector(registry=self.registry)
        self.registry.collect()
        before = self.registry.get_sample_value('python_gc_objects_collected_total',
                                                labels={"generation": "0"})

        #  add targets for gc
        a = []
        a.append(a)
        del a
        b = []
        b.append(b)
        del b

        gc.collect(0)
        self.registry.collect()

        after = self.registry.get_sample_value('python_gc_objects_collected_total',
                                               labels={"generation": "0"})
        self.assertEqual(2, after - before)
        self.assertEqual(0,
                         self.registry.get_sample_value(
                             'python_gc_objects_uncollectable_total',
                             labels={"generation": "0"}))

    def test_empty(self):
        GCCollector(registry=self.registry)
        self.registry.collect()
        before = self.registry.get_sample_value('python_gc_objects_collected_total',
                                                labels={"generation": "0"})
        gc.collect(0)
        self.registry.collect()

        after = self.registry.get_sample_value('python_gc_objects_collected_total',
                                               labels={"generation": "0"})
        self.assertEqual(0, after - before)

    def tearDown(self):
        gc.enable()