diff --git a/CHANGELOG.md b/CHANGELOG.md index 80ec616b..b8843328 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added - collector's method `remove` to clear observations with given label pairs [#263](https://github.com/tarantool/metrics/issues/263) +- `counter:reset()` method [#260](https://github.com/tarantool/metrics/issues/260) ## [0.10.0] - 2021-08-03 ### Changed diff --git a/doc/monitoring/api_reference.rst b/doc/monitoring/api_reference.rst index 6250426b..c6715c4e 100644 --- a/doc/monitoring/api_reference.rst +++ b/doc/monitoring/api_reference.rst @@ -69,6 +69,10 @@ Counter Removes an observation with ``label_pairs``. + .. method:: reset(label_pairs) + + Set an observation under ``label_pairs`` to 0. + :param table label_pairs: Table containing label names as keys, label values as values. diff --git a/metrics/collectors/counter.lua b/metrics/collectors/counter.lua index 4f922c54..ddb9c48b 100644 --- a/metrics/collectors/counter.lua +++ b/metrics/collectors/counter.lua @@ -9,4 +9,8 @@ function Counter:inc(num, label_pairs) Shared.inc(self, num, label_pairs) end +function Counter:reset(label_pairs) + Shared.set(self, 0, label_pairs) +end + return Counter diff --git a/test/collectors_test.lua b/test/collectors_test.lua index f0bb2b9e..7752ce8e 100755 --- a/test/collectors_test.lua +++ b/test/collectors_test.lua @@ -269,7 +269,6 @@ g.test_global_labels = function() t.assert_equals(obs_bucket_inf_hist_2.value, 1, "bucket +inf has 1 value: 2; observation global label has changed") end - g.test_counter_remove_metric_by_label = function() local c = metrics.counter('cnt') @@ -303,3 +302,11 @@ g.test_gauge_remove_metric_by_label = function() {'gauge', 1, {label = 2}}, }) end + +g.test_collector_reset = function() + local c = metrics.counter('cnt', 'some counter') + c:inc() + t.assert_equals(c:collect()[1].value, 1) + c:reset() + t.assert_equals(c:collect()[1].value, 0) +end