Skip to content

Commit af95ab4

Browse files
committed
add tests for multiproc dir
Signed-off-by: iostream96 <jianing0412@hotmail.com>
1 parent e6aee13 commit af95ab4

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

prometheus_client/utils.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import math
22
import os
3-
import warnings
43

54
INF = float("inf")
65
MINUS_INF = float("-inf")

tests/test_multiprocess.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ def test_mark_process_dead_respects_lowercase(self):
3737
class TestMultiProcess(unittest.TestCase):
3838
def setUp(self):
3939
self.tempdir = tempfile.mkdtemp()
40+
self.tempdir_multiproc = tempfile.mkdtemp()
4041
os.environ['PROMETHEUS_MULTIPROC_DIR'] = self.tempdir
4142
values.ValueClass = MultiProcessValue(lambda: 123)
4243
self.registry = CollectorRegistry()
@@ -49,6 +50,7 @@ def _value_class(self):
4950
def tearDown(self):
5051
del os.environ['PROMETHEUS_MULTIPROC_DIR']
5152
shutil.rmtree(self.tempdir)
53+
shutil.rmtree(self.tempdir_multiproc)
5254
values.ValueClass = MutexValue
5355

5456
def test_counter_adds(self):
@@ -384,6 +386,37 @@ def test_remove_clear_warning(self):
384386
assert issubclass(w[-1].category, UserWarning)
385387
assert "Clearing labels has not been implemented" in str(w[-1].message)
386388

389+
def test_multiproc_dir(self):
390+
pid = 0
391+
values.ValueClass = MultiProcessValue(lambda: pid)
392+
393+
def files(path):
394+
fs = os.listdir(path)
395+
fs.sort()
396+
return fs
397+
398+
s1 = Summary('s1', 's1', registry=None)
399+
c1 = Counter('c1', 'c1', registry=None, multiprocess_dir=self.tempdir_multiproc)
400+
401+
self.assertEqual(files(self.tempdir), ['summary_0.db'])
402+
self.assertEqual(files(self.tempdir_multiproc), ['counter_0.db'])
403+
404+
pid = 1
405+
c2 = Counter('c2', 'c2', registry=None, multiprocess_dir=self.tempdir_multiproc)
406+
407+
self.assertEqual(files(self.tempdir_multiproc), ['counter_0.db', 'counter_1.db'])
408+
409+
c1.inc(1)
410+
411+
metrics = {m.name: m for m in self.collector.collect()}
412+
self.assertNotIn('c1', metrics)
413+
414+
multiproc_collector = MultiProcessCollector(self.registry, path=self.tempdir_multiproc)
415+
multiproc_metrics = {m.name: m for m in multiproc_collector.collect()}
416+
self.assertEqual(
417+
multiproc_metrics['c1'].samples, [Sample('c1_total', {}, 1.0)]
418+
)
419+
387420

388421
class TestMmapedDict(unittest.TestCase):
389422
def setUp(self):

0 commit comments

Comments
 (0)