5
5
import shutil
6
6
import sys
7
7
import tempfile
8
+ import warnings
8
9
9
10
from prometheus_client import mmap_dict , values
10
11
from prometheus_client .core import (
13
14
from prometheus_client .multiprocess import (
14
15
mark_process_dead , MultiProcessCollector ,
15
16
)
16
- from prometheus_client .values import MultiProcessValue , MutexValue
17
+ from prometheus_client .values import (
18
+ get_value_class , MultiProcessValue , MutexValue ,
19
+ )
17
20
18
21
if sys .version_info < (2 , 7 ):
19
22
# We need the skip decorators from unittest2 on Python 2.6.
F438
tr>22
25
import unittest
23
26
24
27
25
- class TestMultiProcess (unittest .TestCase ):
28
+ class TestMultiProcessDeprecation (unittest .TestCase ):
26
29
def setUp (self ):
27
30
self .tempdir = tempfile .mkdtemp ()
31
+
32
+ def tearDown (self ):
33
+ del os .environ ['prometheus_multiproc_dir' ]
34
+ del os .environ ['PROMETHEUS_MULTIPROC_DIR' ]
35
+ values .ValueClass = MutexValue
36
+ shutil .rmtree (self .tempdir )
37
+
38
+ def test_deprecation_warning (self ):
28
39
os .environ ['prometheus_multiproc_dir' ] = self .tempdir
40
+ with warnings .catch_warnings (record = True ) as w :
41
+ values .ValueClass = get_value_class ()
42
+ registry = CollectorRegistry ()
43
+ collector = MultiProcessCollector (registry )
44
+ Counter ('c' , 'help' , registry = None )
45
+
46
+ assert os .environ ['PROMETHEUS_MULTIPROC_DIR' ] == self .tempdir
47
+ assert len (w ) == 1
48
+ assert issubclass (w [- 1 ].category , DeprecationWarning )
49
+ assert "PROMETHEUS_MULTIPROC_DIR" in str (w [- 1 ].message )
50
+
51
+
52
+ class TestMultiProcess (unittest .TestCase ):
53
+ def setUp (self ):
54
+ self .tempdir = tempfile .mkdtemp ()
55
+ os .environ ['PROMETHEUS_MULTIPROC_DIR' ] = self .tempdir
29
56
values .ValueClass = MultiProcessValue (lambda : 123 )
30
57
self .registry = CollectorRegistry ()
31
- self .collector = MultiProcessCollector (self .registry , self . tempdir )
58
+ self .collector = MultiProcessCollector (self .registry )
32
59
33
60
@property
34
61
def _value_class (self ):
35
62
return
36
63
37
64
def tearDown (self ):
38
- del os .environ ['prometheus_multiproc_dir ' ]
65
+ del os .environ ['PROMETHEUS_MULTIPROC_DIR ' ]
39
66
shutil .rmtree (self .tempdir )
40
67
values .ValueClass = MutexValue
41
68
@@ -80,7 +107,7 @@ def test_gauge_all(self):
80
107
self .assertEqual (0 , self .registry .get_sample_value ('g' , {'pid' : '456' }))
81
108
g1 .set (1 )
82
109
g2 .set (2 )
83
- mark_process_dead (123 , os . environ [ 'prometheus_multiproc_dir' ] )
110
+ mark_process_dead (123 )
84
111
self .assertEqual (1 , self .registry .get_sample_value ('g' , {'pid' : '123' }))
85
112
self .assertEqual (2 , self .registry .get_sample_value ('g' , {'pid' : '456' }))
86
113
@@ -94,7 +121,7 @@ def test_gauge_liveall(self):
94
121
g2 .set (2 )
95
122
self .assertEqual (1 , self .registry .get_sample_value ('g' , {'pid' : '123' }))
96
123
self .assertEqual (2 , self .registry .get_sample_value ('g' , {'pid' : '456' }))
97
- mark_process_dead (123 , os .environ ['prometheus_multiproc_dir ' ])
124
+ mark_process_dead (123 , os .environ ['PROMETHEUS_MULTIPROC_DIR ' ])
98
125
self .assertEqual (None , self .registry .get_sample_value ('g' , {'pid' : '123' }))
99
126
self .assertEqual (2 , self .registry .get_sample_value ('g' , {'pid' : '456' }))
100
127
@@ -124,7 +151,7 @@ def test_gauge_livesum(self):
124
151
g1 .set (1 )
125
152
g2 .set (2 )
126
153
self .assertEqual (3 , self .registry .get_sample_value ('g' ))
127
- mark_process_dead (123 , os .environ ['prometheus_multiproc_dir ' ])
154
+ mark_process_dead (123 , os .environ ['PROMETHEUS_MULTIPROC_DIR ' ])
128
155
self .assertEqual (2 , self .registry .get_sample_value ('g' ))
129
156
130
157
def test_namespace_subsystem (self ):
@@ -151,7 +178,7 @@ def test_initialization_detects_pid_change(self):
151
178
# can not inspect the files cache directly, as it's a closure, so we
152
179
# check for the actual files themselves
153
180
def files ():
154
- fs = os .listdir (os .environ ['prometheus_multiproc_dir ' ])
181
+ fs = os .listdir (os .environ ['PROMETHEUS_MULTIPROC_DIR ' ])
155
182
fs .sort ()
156
183
return fs
157
184
@@ -240,7 +267,7 @@ def add_label(key, value):
240
267
pid = 1
241
268
h .labels (** labels ).observe (5 )
242
269
243
- path = os .path .join (os .environ ['prometheus_multiproc_dir ' ], '*.db' )
270
+ path = os .path .join (os .environ ['PROMETHEUS_MULTIPROC_DIR ' ], '*.db' )
244
271
files = glob .glob (path )
245
272
metrics = dict (
246
273
(m .name , m ) for m in self .collector .merge (files , accumulate = False )
0 commit comments