@@ -13,7 +13,7 @@ class TestMultiProcess(unittest.TestCase):
1313    def  setUp (self ):
1414        self .tempdir  =  tempfile .mkdtemp ()
1515        os .environ ['prometheus_multiproc_dir' ] =  self .tempdir 
16-         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (123 )
16+         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (lambda :  123 )
1717        self .registry  =  CollectorRegistry ()
1818        MultiProcessCollector (self .registry , self .tempdir )
1919
@@ -24,7 +24,7 @@ def tearDown(self):
2424
2525    def  test_counter_adds (self ):
2626        c1  =  Counter ('c' , 'help' , registry = None )
27-         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (456 )
27+         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (lambda :  456 )
2828        c2  =  Counter ('c' , 'help' , registry = None )
2929        self .assertEqual (0 , self .registry .get_sample_value ('c' ))
3030        c1 .inc (1 )
@@ -33,7 +33,7 @@ def test_counter_adds(self):
3333
3434    def  test_summary_adds (self ):
3535        s1  =  Summary ('s' , 'help' , registry = None )
36-         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (456 )
36+         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (lambda :  456 )
3737        s2  =  Summary ('s' , 'help' , registry = None )
3838        self .assertEqual (0 , self .registry .get_sample_value ('s_count' ))
3939        self .assertEqual (0 , self .registry .get_sample_value ('s_sum' ))
@@ -44,7 +44,7 @@ def test_summary_adds(self):
4444
4545    def  test_histogram_adds (self ):
4646        h1  =  Histogram ('h' , 'help' , registry = None )
47-         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (456 )
47+         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (lambda :  456 )
4848        h2  =  Histogram ('h' , 'help' , registry = None )
4949        self .assertEqual (0 , self .registry .get_sample_value ('h_count' ))
5050        self .assertEqual (0 , self .registry .get_sample_value ('h_sum' ))
@@ -57,7 +57,7 @@ def test_histogram_adds(self):
5757
5858    def  test_gauge_all (self ):
5959        g1  =  Gauge ('g' , 'help' , registry = None )
60-         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (456 )
60+         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (lambda :  456 )
6161        g2  =  Gauge ('g' , 'help' , registry = None )
6262        self .assertEqual (0 , self .registry .get_sample_value ('g' , {'pid' : '123' }))
6363        self .assertEqual (0 , self .registry .get_sample_value ('g' , {'pid' : '456' }))
@@ -69,7 +69,7 @@ def test_gauge_all(self):
6969
7070    def  test_gauge_liveall (self ):
7171        g1  =  Gauge ('g' , 'help' , registry = None , multiprocess_mode = 'liveall' )
72-         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (456 )
72+         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (lambda :  456 )
7373        g2  =  Gauge ('g' , 'help' , registry = None , multiprocess_mode = 'liveall' )
7474        self .assertEqual (0 , self .registry .get_sample_value ('g' , {'pid' : '123' }))
7575        self .assertEqual (0 , self .registry .get_sample_value ('g' , {'pid' : '456' }))
@@ -83,7 +83,7 @@ def test_gauge_liveall(self):
8383
8484    def  test_gauge_min (self ):
8585        g1  =  Gauge ('g' , 'help' , registry = None , multiprocess_mode = 'min' )
86-         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (456 )
86+         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (lambda :  456 )
8787        g2  =  Gauge ('g' , 'help' , registry = None , multiprocess_mode = 'min' )
8888        self .assertEqual (0 , self .registry .get_sample_value ('g' ))
8989        g1 .set (1 )
@@ -92,7 +92,7 @@ def test_gauge_min(self):
9292
9393    def  test_gauge_max (self ):
9494        g1  =  Gauge ('g' , 'help' , registry = None , multiprocess_mode = 'max' )
95-         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (456 )
95+         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (lambda :  456 )
9696        g2  =  Gauge ('g' , 'help' , registry = None , multiprocess_mode = 'max' )
9797        self .assertEqual (0 , self .registry .get_sample_value ('g' ))
9898        g1 .set (1 )
@@ -101,7 +101,7 @@ def test_gauge_max(self):
101101
102102    def  test_gauge_livesum (self ):
103103        g1  =  Gauge ('g' , 'help' , registry = None , multiprocess_mode = 'livesum' )
104-         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (456 )
104+         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (lambda :  456 )
105105        g2  =  Gauge ('g' , 'help' , registry = None , multiprocess_mode = 'livesum' )
106106        self .assertEqual (0 , self .registry .get_sample_value ('g' ))
107107        g1 .set (1 )
@@ -115,6 +115,20 @@ def test_namespace_subsystem(self):
115115         c1 .inc (1 )
116116         self .assertEqual (1 , self .registry .get_sample_value ('ns_ss_c' ))
117117
118+     def  test_counter_across_forks (self ):
119+         pid  =  0 
120+         def  get_pid ():
121+             return  pid 
122+         prometheus_client .core ._ValueClass  =  prometheus_client .core ._MultiProcessValue (get_pid )
123+         c1  =  Counter ('c' , 'help' , registry = None )
124+         self .assertEqual (0 , self .registry .get_sample_value ('c' ))
125+         c1 .inc (1 )
126+         c1 .inc (1 )
127+         pid  =  1 
128+         c1 .inc (1 )
129+         self .assertEqual (3 , self .registry .get_sample_value ('c' ))
130+         self .assertEqual (1 , c1 ._value .get ())
131+ 
118132
119133class  TestMmapedDict (unittest .TestCase ):
120134    def  setUp (self ):
0 commit comments