@@ -37,6 +37,7 @@ def test_mark_process_dead_respects_lowercase(self):
37
37
class TestMultiProcess (unittest .TestCase ):
38
38
def setUp (self ):
39
39
self .tempdir = tempfile .mkdtemp ()
40
+ self .tempdir_multiproc = tempfile .mkdtemp ()
40
41
os .environ ['PROMETHEUS_MULTIPROC_DIR' ] = self .tempdir
41
42
values .ValueClass = MultiProcessValue (lambda : 123 )
42
43
self .registry = CollectorRegistry ()
@@ -49,6 +50,7 @@ def _value_class(self):
49
50
def tearDown (self ):
50
51
del os .environ ['PROMETHEUS_MULTIPROC_DIR' ]
51
52
shutil .rmtree (self .tempdir )
53
+ shutil .rmtree (self .tempdir_multiproc )
52
54
values .ValueClass = MutexValue
53
55
54
56
def test_counter_adds (self ):
@@ -384,6 +386,37 @@ def test_remove_clear_warning(self):
384
386
assert issubclass (w [- 1 ].category , UserWarning )
385
387
assert "Clearing labels has not been implemented" in str (w [- 1 ].message )
386
388
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
+
387
420
388
421
class TestMmapedDict (unittest .TestCase ):
389
422
def setUp (self ):
0 commit comments