@@ -37,6 +37,7 @@ def test_mark_process_dead_respects_lowercase(self):
3737class 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
388421class TestMmapedDict (unittest .TestCase ):
389422 def setUp (self ):
0 commit comments