diff options
author | robot-piglet <robot-piglet@yandex-team.com> | 2024-12-23 17:11:16 +0300 |
---|---|---|
committer | robot-piglet <robot-piglet@yandex-team.com> | 2024-12-23 17:25:34 +0300 |
commit | 4d2bff2bd759552e44884ed32392999b380b1080 (patch) | |
tree | 1669193268fae9fcd7d374ef2844e0cc9604d37f /library/python/monlib | |
parent | 17b4a6629c276485d889d170214297f449f519ec (diff) | |
download | ydb-4d2bff2bd759552e44884ed32392999b380b1080.tar.gz |
Intermediate changes
commit_hash:e95937c5f2c37075ed358ebb01e274fc9ddfcbb6
Diffstat (limited to 'library/python/monlib')
-rw-r--r-- | library/python/monlib/metric_registry.pxd | 1 | ||||
-rw-r--r-- | library/python/monlib/metric_registry.pyx | 3 | ||||
-rw-r--r-- | library/python/monlib/ut/py2/test.py | 91 | ||||
-rw-r--r-- | library/python/monlib/ut/py3/test.py | 91 |
4 files changed, 186 insertions, 0 deletions
diff --git a/library/python/monlib/metric_registry.pxd b/library/python/monlib/metric_registry.pxd index e57c963929..998acf3141 100644 --- a/library/python/monlib/metric_registry.pxd +++ b/library/python/monlib/metric_registry.pxd @@ -20,6 +20,7 @@ cdef extern from "library/cpp/monlib/metrics/metric_registry.h" namespace "NMoni THistogram* HistogramRate(const TLabels&, IHistogramCollectorPtr collector) except + void Reset() except + + void Clear() except + void Accept(TInstant time, IMetricConsumer* consumer) except + void Append(TInstant time, IMetricConsumer* consumer) except + diff --git a/library/python/monlib/metric_registry.pyx b/library/python/monlib/metric_registry.pyx index aae0a5962a..6ddf64cd78 100644 --- a/library/python/monlib/metric_registry.pyx +++ b/library/python/monlib/metric_registry.pyx @@ -264,6 +264,9 @@ cdef class MetricRegistry: def reset(self): self.__wrapped.Get().Reset() + def clear(self): + self.__wrapped.Get().Clear() + def accept(self, time, Encoder encoder): cdef IMetricConsumer* ptr = <IMetricConsumer*>encoder.native() timestamp = int((time - dt.datetime(1970, 1, 1)).total_seconds()) diff --git a/library/python/monlib/ut/py2/test.py b/library/python/monlib/ut/py2/test.py index 2880120a12..4e389c47f1 100644 --- a/library/python/monlib/ut/py2/test.py +++ b/library/python/monlib/ut/py2/test.py @@ -311,3 +311,94 @@ EXPECTED = json.loads(""" def test_unistat_conversion(request): j = loads(UNISTAT_DATA, from_format='unistat', to_format='json') assert json.loads(j) == EXPECTED + + +def test_reset_and_clear_registry(): + registry = MetricRegistry() + + c = registry.counter({'foo': 'counter'}) + c.inc() + + g = registry.gauge({'foo': 'gauge'}) + g.set(20) + + r = registry.rate({'foo': 'rate'}) + r.add(10) + + out = dumps(registry, format="json") + expected = json.loads("""{ + "sensors": + [ + { + "kind":"RATE", + "labels": + { + "foo":"rate" + }, + "value":10 + }, + { + "kind":"COUNTER", + "labels": + { + "foo":"counter" + }, + "value":1 + }, + { + "kind":"GAUGE", + "labels": + { + "foo":"gauge" + }, + "value":20 + } + ] + } + """) + + j = json.loads(out) + assert j == expected + + registry.reset() + + out = dumps(registry, format="json") + expected = json.loads("""{ + "sensors": + [ + { + "kind":"RATE", + "labels": + { + "foo":"rate" + }, + "value":0 + }, + { + "kind":"COUNTER", + "labels": + { + "foo":"counter" + }, + "value":0 + }, + { + "kind":"GAUGE", + "labels": + { + "foo":"gauge" + }, + "value":0 + } + ] + } + """) + + j = json.loads(out) + assert j == expected + + registry.clear() + + out = dumps(registry, format="json") + j = json.loads(out) + assert j == {} diff --git a/library/python/monlib/ut/py3/test.py b/library/python/monlib/ut/py3/test.py index 431241c657..5a68c1653e 100644 --- a/library/python/monlib/ut/py3/test.py +++ b/library/python/monlib/ut/py3/test.py @@ -309,3 +309,94 @@ EXPECTED = json.loads(""" def test_unistat_conversion(request): j = loads(UNISTAT_DATA, from_format='unistat', to_format='json') assert json.loads(j) == EXPECTED + + +def test_reset_and_clear_registry(): + registry = MetricRegistry() + + c = registry.counter({'foo': 'counter'}) + c.inc() + + g = registry.gauge({'foo': 'gauge'}) + g.set(20) + + r = registry.rate({'foo': 'rate'}) + r.add(10) + + out = dumps(registry, format="json") + expected = json.loads("""{ + "sensors": + [ + { + "kind":"RATE", + "labels": + { + "foo":"rate" + }, + "value":10 + }, + { + "kind":"COUNTER", + "labels": + { + "foo":"counter" + }, + "value":1 + }, + { + "kind":"GAUGE", + "labels": + { + "foo":"gauge" + }, + "value":20 + } + ] + } + """) + + j = json.loads(out) + assert j == expected + + registry.reset() + + out = dumps(registry, format="json") + expected = json.loads("""{ + "sensors": + [ + { + "kind":"RATE", + "labels": + { + "foo":"rate" + }, + "value":0 + }, + { + "kind":"COUNTER", + "labels": + { + "foo":"counter" + }, + "value":0 + }, + { + "kind":"GAUGE", + "labels": + { + "foo":"gauge" + }, + "value":0 + } + ] + } + """) + + j = json.loads(out) + assert j == expected + + registry.clear() + + out = dumps(registry, format="json") + j = json.loads(out) + assert j == {} |