mirror of
https://github.com/logos-storage/logos-storage-nim.git
synced 2026-07-29 21:13:18 +00:00
48 lines
1.7 KiB
Nim
48 lines
1.7 KiB
Nim
import std/json
|
|
|
|
import pkg/unittest2
|
|
import pkg/metrics
|
|
|
|
import ../../library/logosmetrics
|
|
|
|
declareCounter myCounter, "Parts Counter", ["part_type"]
|
|
declareGauge myGauge, "My gauge"
|
|
declareHistogram myHistogram, "My histogram", buckets = [0.0, 1.0, 2.0]
|
|
|
|
suite "Metrics":
|
|
test "should serialize Nim metrics to Logos Metrics format":
|
|
myCounter.inc(labelValues = ["screws"])
|
|
myCounter.inc(labelValues = ["washers"])
|
|
|
|
myGauge.set(42.0)
|
|
|
|
myHistogram.observe(1)
|
|
myHistogram.observe(2)
|
|
myHistogram.observe(3)
|
|
myHistogram.observe(4)
|
|
myHistogram.observe(5)
|
|
|
|
let metrics = defaultRegistry.toJson(@["myCounter", "myGauge", "myHistogram"])
|
|
|
|
# Remove "created" metrics as we can't pin those down.
|
|
var filteredMetrics = %*{"metrics": @[]}
|
|
for metric in metrics["metrics"]:
|
|
if metric["name"].getStr() != "myCounter_created" and
|
|
metric["name"].getStr() != "myHistogram_created":
|
|
filteredMetrics["metrics"].add(metric)
|
|
|
|
check filteredMetrics ==
|
|
%*{
|
|
"metrics": [
|
|
{"name": "myCounter_total", "value": 1.0, "labels": {"part_type": "screws"}},
|
|
{"name": "myCounter_total", "value": 1.0, "labels": {"part_type": "washers"}},
|
|
{"name": "myGauge", "value": 42.0, "labels": {}},
|
|
{"name": "myHistogram_sum", "value": 15.0, "labels": {}},
|
|
{"name": "myHistogram_count", "value": 5.0, "labels": {}},
|
|
{"name": "myHistogram_bucket", "value": 0.0, "labels": {"le": "0.0"}},
|
|
{"name": "myHistogram_bucket", "value": 1.0, "labels": {"le": "1.0"}},
|
|
{"name": "myHistogram_bucket", "value": 2.0, "labels": {"le": "2.0"}},
|
|
{"name": "myHistogram_bucket", "value": 5.0, "labels": {"le": "+Inf"}},
|
|
]
|
|
}
|