aboutsummaryrefslogtreecommitdiffstats
path: root/library/python
diff options
context:
space:
mode:
authorAlexander Smirnov <alex@ydb.tech>2024-12-24 15:46:17 +0000
committerAlexander Smirnov <alex@ydb.tech>2024-12-24 15:46:17 +0000
commitc7decaf9230ddcb1ec2c42d1f50fb3998166c4ef (patch)
tree4efde4e4276bb0f24c314909403a1f6ed94c60d7 /library/python
parentcf344b64297e6a79d1e538be9f8f59afb06a2a97 (diff)
parentb821606f7bd364dc755d37b5bcb3559130675364 (diff)
downloadydb-c7decaf9230ddcb1ec2c42d1f50fb3998166c4ef.tar.gz
Merge branch 'rightlib' into merge-libs-241224-1545
Diffstat (limited to 'library/python')
-rw-r--r--library/python/monlib/metric_registry.pxd1
-rw-r--r--library/python/monlib/metric_registry.pyx3
-rw-r--r--library/python/monlib/ut/py2/test.py91
-rw-r--r--library/python/monlib/ut/py3/test.py91
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 == {}