Skip to content

Commit 4c89979

Browse files
committed
add raise in other classes as well
Signed-off-by: AlexPadron <alexp@kensho.com>
1 parent 09c7835 commit 4c89979

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

prometheus_client/metrics.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,13 +362,15 @@ def track_inprogress(self):
362362
Increments the gauge when the code is entered,
363363
and decrements when it is exited.
364364
"""
365+
self._raise_if_not_observable()
365366
return InprogressTracker(self)
366367

367368
def time(self):
368369
"""Time a block of code or function, and set the duration in seconds.
369370
370371
Can be used as a function decorator or context manager.
371372
"""
373+
self._raise_if_not_observable()
372374
return Timer(self.set)
373375

374376
def set_function(self, f):
@@ -436,6 +438,7 @@ def time(self):
436438
437439
Can be used as a function decorator or context manager.
438440
"""
441+
self._raise_if_not_observable()
439442
return Timer(self.observe)
440443

441444
def _child_samples(self):

tests/test_core.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,22 @@ def test_time_block_decorator(self):
158158
time.sleep(.001)
159159
self.assertNotEqual(0, self.registry.get_sample_value('g'))
160160

161+
def test_track_in_progress_not_observable(self):
162+
g = Gauge('test', 'help', labelnames=('label',), registry=self.registry)
163+
164+
try:
165+
g.track_inprogress()
166+
except ValueError as e:
167+
self.assertIn('missing label values', str(e))
168+
169+
def test_timer_not_observable(self):
170+
g = Gauge('test', 'help', labelnames=('label',), registry=self.registry)
171+
172+
try:
173+
g.time()
174+
except ValueError as e:
175+
self.assertIn('missing label values', str(e))
176+
161177

162178
class TestSummary(unittest.TestCase):
163179
def setUp(self):
@@ -238,6 +254,14 @@ def test_block_decorator(self):
238254
pass
239255
self.assertEqual(1, self.registry.get_sample_value('s_count'))
240256

257+
def test_timer_not_observable(self):
258+
s = Summary('test', 'help', labelnames=('label',), registry=self.registry)
259+
260+
try:
261+
s.time()
262+
except ValueError as e:
263+
self.assertIn('missing label values', str(e))
264+
241265

242266
class TestHistogram(unittest.TestCase):
243267
def setUp(self):

0 commit comments

Comments
 (0)