diff options
author | Alexander Smirnov <alex@ydb.tech> | 2024-12-24 22:01:20 +0000 |
---|---|---|
committer | Alexander Smirnov <alex@ydb.tech> | 2024-12-24 22:01:20 +0000 |
commit | bd0e2de0b1035962a4d5b9e847eaa6508fad7fcf (patch) | |
tree | 79878ca309f9f7fada064f9b78b4223af4635f28 /library/python | |
parent | be43a4691ebdd4dbe260a8d77df4cd8423b14c05 (diff) | |
parent | e6bd80ded127cd064560f7ea471974b602770cb1 (diff) | |
download | ydb-bd0e2de0b1035962a4d5b9e847eaa6508fad7fcf.tar.gz |
Merge branch 'PR'
Diffstat (limited to 'library/python')
-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 == {} |