metrics: Add counter support
Add support for a counter, where a metric key can be incremented or
decremented, optionally by a given value (default 1).
BUG=b:229737154
TEST=run_tests
Change-Id: I65408bd187d5de2ee7ede3e6172694d499deb452
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3593895
Tested-by: Alex Klein <saklein@chromium.org>
Reviewed-by: Lizzy Presland <zland@google.com>
Commit-Queue: Alex Klein <saklein@chromium.org>
diff --git a/api/metrics_unittest.py b/api/metrics_unittest.py
index 35f2758..7d9b72e 100644
--- a/api/metrics_unittest.py
+++ b/api/metrics_unittest.py
@@ -64,3 +64,25 @@
self.assertEqual(response.events[0].name, 'a.gauge')
self.assertEqual(response.events[0].timestamp_milliseconds, 1000)
self.assertEqual(response.events[0].gauge, 17)
+
+ def testDeserializeCounter(self):
+ """Test deserialization of a counter."""
+ response = build_api_test_pb2.TestResultMessage()
+ mock_events = [
+ metrics.MetricEvent(
+ 1000, 'a.counter', metrics.OP_INCREMENT_COUNTER, arg=1),
+ metrics.MetricEvent(
+ 1001, 'a.counter', metrics.OP_INCREMENT_COUNTER, arg=2),
+ metrics.MetricEvent(
+ 1002, 'a.counter', metrics.OP_INCREMENT_COUNTER, arg=3),
+ metrics.MetricEvent(
+ 1003, 'a.counter', metrics.OP_DECREMENT_COUNTER, arg=4),
+ ]
+ with mock.patch(
+ 'chromite.api.metrics.metrics.read_metrics_events',
+ return_value=mock_events):
+ api_metrics.deserialize_metrics_log(response.events)
+ self.assertEqual(len(response.events), 1)
+ self.assertEqual(response.events[0].name, 'a.counter')
+ self.assertEqual(response.events[0].timestamp_milliseconds, 1003)
+ self.assertEqual(response.events[0].gauge, 2)