Skip to content

Commit

Permalink
Merge pull request #30 from DataDog/23-monotonic-rate-counters
Browse files Browse the repository at this point in the history
Fixes Monotonic rate counters (#23)
  • Loading branch information
alq666 committed Apr 19, 2012
2 parents 1c24583 + 08c56f0 commit 4725dbd
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 3 deletions.
6 changes: 6 additions & 0 deletions checks/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,10 +130,16 @@ def _rate(cls, sample1, sample2):
interval = sample2[0] - sample1[0]
if interval == 0:
raise Infinity()

delta = sample2[1] - sample1[1]
if delta < 0:
raise UnknownValue()

return (sample2[0], delta / interval)
except Infinity:
raise
except UnknownValue:
raise
except Exception, e:
raise NaN(e)

Expand Down
6 changes: 3 additions & 3 deletions tests/test_common.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,17 @@ def test_counter(self):
self.assertEquals(self.c.get_sample("test-counter"), 1.0)
self.assertEquals(self.c.get_sample_with_timestamp("test-counter"), (2.0, 1.0))
self.c.save_sample("test-counter", -2.0, 3.0)
self.assertEquals(self.c.get_sample_with_timestamp("test-counter"), (3.0, -4.0))
self.assertRaises(UnknownValue, self.c.get_sample_with_timestamp, "test-counter")

def test_samples(self):
self.assertEquals(self.c.get_samples(), {})
self.c.save_sample("test-metric", 1.0, 0.0) # value, ts
self.c.save_sample("test-counter", 1.0, 1.0) # value, ts
self.c.save_sample("test-counter", 0.0, 2.0) # value, ts
self.c.save_sample("test-counter", 4.0, 2.0) # value, ts
assert "test-metric" in self.c.get_samples_with_timestamps(), self.c.get_samples_with_timestamps()
self.assertEquals(self.c.get_samples_with_timestamps()["test-metric"], (0.0, 1.0))
assert "test-counter" in self.c.get_samples_with_timestamps(), self.c.get_samples_with_timestamps()
self.assertEquals(self.c.get_samples_with_timestamps()["test-counter"], (2.0, -1.0))
self.assertEquals(self.c.get_samples_with_timestamps()["test-counter"], (2.0, 3.0))

if __name__ == '__main__':
unittest.main()

0 comments on commit 4725dbd

Please sign in to comment.