File: test_platform_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 (67 lines) | stat: -rw-r--r-- 2,000 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
56
57
58
59
60
61
62
63
64
65
66
67
import unittest

from prometheus_client import CollectorRegistry, PlatformCollector


class TestPlatformCollector(unittest.TestCase):
    def setUp(self):
        self.registry = CollectorRegistry()
        self.platform = _MockPlatform()

    def test_python_info(self):
        PlatformCollector(registry=self.registry, platform=self.platform)
        self.assertLabels("python_info", {
            "version": "python_version",
            "implementation": "python_implementation",
            "major": "pvt_major",
            "minor": "pvt_minor",
            "patchlevel": "pvt_patchlevel"
        })

    def test_system_info_java(self):
        self.platform._system = "Java"
        PlatformCollector(registry=self.registry, platform=self.platform)
        self.assertLabels("python_info", {
            "version": "python_version",
            "implementation": "python_implementation",
            "major": "pvt_major",
            "minor": "pvt_minor",
            "patchlevel": "pvt_patchlevel",
            "jvm_version": "jv_release",
            "jvm_release": "vm_release",
            "jvm_vendor": "vm_vendor",
            "jvm_name": "vm_name"
        })

    def assertLabels(self, name, labels):
        for metric in self.registry.collect():
            for s in metric.samples:
                if s.name == name:
                    assert s.labels == labels
                    return
        assert False


class _MockPlatform:
    def __init__(self):
        self._system = "system"

    def python_version_tuple(self):
        return "pvt_major", "pvt_minor", "pvt_patchlevel"

    def python_version(self):
        return "python_version"

    def python_implementation(self):
        return "python_implementation"

    def system(self):
        return self._system

    def java_ver(self):
        return (
            "jv_release",
            "jv_vendor",
            ("vm_name", "vm_release", "vm_vendor"),
            ("os_name", "os_version", "os_arch")
        )