Skip to content

Commit

Permalink
fix(metric): handle dec correctly when no value exists for labels
Browse files Browse the repository at this point in the history
  • Loading branch information
ssube committed Dec 26, 2019
1 parent 68c851a commit a3dcea1
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 1 deletion.
2 changes: 1 addition & 1 deletion prometheus_express/metric.py
Expand Up @@ -99,7 +99,7 @@ def dec(self, value):
if self.labelValues in self.values:
self.values[self.labelValues] -= value
else:
self.values[self.labelValues] = value
self.values[self.labelValues] = 0 - value

self.labelValues = self.emptyLabels

Expand Down
26 changes: 26 additions & 0 deletions tests/test_metric.py
Expand Up @@ -121,6 +121,32 @@ def test_repeat_labels(self):
'foo_bin{key_1="value-1",key_2="value-2"} 90',
], v)

class CounterValueTest(unittest.TestCase):
def test_existing(self):
c = pm.Counter('foo', 'foo values')
c.inc(20)
self.assertEqual(c.values[c.emptyLabels], 20)
c.dec(10)
self.assertEqual(c.values[c.emptyLabels], 10)

def test_fresh(self):
c = pm.Counter('foo', 'foo values', ['bar'])
c.labels('bin').dec(30)
self.assertEqual(c.values[('bin',)], -30)

class GaugeValueTest(unittest.TestCase):
def test_empty(self):
g = pm.Gauge('foo', 'foo values')
g.inc(90)
self.assertEqual(g.values[g.emptyLabels], 90)
g.set(40)
self.assertEqual(g.values[g.emptyLabels], 40)

def test_tuple(self):
g = pm.Gauge('foo', 'foo values')
g.set(100)
self.assertEqual(g.values[()], 100)

class SummaryRenderTest(unittest.TestCase):
def test(self):
m = pm.Summary('foo', 'foo values', ['group'])
Expand Down

0 comments on commit a3dcea1

Please sign in to comment.