From: Florian Forster Date: Fri, 15 Dec 2023 18:12:13 +0000 (+0100) Subject: format_json: Use `yajl_gen_double` to encode gauge metrics. X-Git-Tag: 6.0.0-rc0~18^2~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=458c31d8a391425a458624ef2ab600a34730f9c2;p=thirdparty%2Fcollectd.git format_json: Use `yajl_gen_double` to encode gauge metrics. This also fixes the unit test by embedding PACKAGE_VERSION. --- diff --git a/src/utils/format_json/format_json_test.c b/src/utils/format_json/format_json_test.c index 5ab8a5b04..713015941 100644 --- a/src/utils/format_json/format_json_test.c +++ b/src/utils/format_json/format_json_test.c @@ -314,25 +314,26 @@ DEF_TEST(open_telemetry) { CHECK_ZERO( format_json_open_telemetry(&buf, (metric_family_t const **)fams, 2)); - EXPECT_EQ_STR( - "{\"resourceMetrics\":[{\"resource\":{\"attributes\":[{\"key\":\"service." - "name\",\"value\":{\"stringValue\":\"unit " - "test\"}}]},\"scopeMetrics\":[{\"scope\":{\"name\":\"collectd\"," - "\"version\":\"5.12.0.375.gc561e17+\"},\"metrics\":[{\"name\":\"unit." - "tests\",\"description\":\"Example gauge " - "metric\",\"gauge\":{\"dataPoints\":[{\"attributes\":[{\"key\":\"metric." - "label\",\"value\":{\"stringValue\":\"test " - "label\"}}],\"timeUnixNano\":0,\"asDouble\":42}]}}]}]},{\"resource\":{" - "\"attributes\":[{\"key\":\"service.name\",\"value\":{\"stringValue\":" - "\"unit " - "test\"}}]},\"scopeMetrics\":[{\"scope\":{\"name\":\"collectd\"," - "\"version\":\"5.12.0.375.gc561e17+\"},\"metrics\":[{\"name\":\"unit." - "test.count\",\"description\":\"Example counter " - "metric\",\"sum\":{\"dataPoints\":[{\"attributes\":[{\"key\":\"metric." - "label\",\"value\":{\"stringValue\":\"bar\"}}],\"timeUnixNano\":0," - "\"asInt\":31337}],\"aggregationTemporality\":\"2\",\"isMonotonic\":true}" - "}]}]}]}", - buf.ptr); + EXPECT_EQ_STR("{\"resourceMetrics\":[{\"resource\":{\"attributes\":[{\"key\":" + "\"service.name\",\"value\":{\"stringValue\":\"unit " + "test\"}}]},\"scopeMetrics\":[{\"scope\":{\"name\":" + "\"collectd\",\"version\":\"" PACKAGE_VERSION + "\"},\"metrics\":[{\"name\":\"unit.tests\",\"description\":" + "\"Example gauge " + "metric\",\"gauge\":{\"dataPoints\":[{\"attributes\":[{\"key\":" + "\"metric.label\",\"value\":{\"stringValue\":\"test " + "label\"}}],\"timeUnixNano\":0,\"asDouble\":42.0}]}}]}]},{" + "\"resource\":{\"attributes\":[{\"key\":\"service.name\"," + "\"value\":{\"stringValue\":\"unit " + "test\"}}]},\"scopeMetrics\":[{\"scope\":{\"name\":" + "\"collectd\",\"version\":\"" PACKAGE_VERSION + "\"},\"metrics\":[{\"name\":\"unit.test.count\"," + "\"description\":\"Example counter " + "metric\",\"sum\":{\"dataPoints\":[{\"attributes\":[{\"key\":" + "\"metric.label\",\"value\":{\"stringValue\":\"bar\"}}]," + "\"timeUnixNano\":0,\"asInt\":31337}]," + "\"aggregationTemporality\":\"2\",\"isMonotonic\":true}}]}]}]}", + buf.ptr); STRBUF_DESTROY(buf); label_set_reset(&fams[0]->resource); diff --git a/src/utils/format_json/open_telemetry.c b/src/utils/format_json/open_telemetry.c index 4a754b18d..5f0af1e50 100644 --- a/src/utils/format_json/open_telemetry.c +++ b/src/utils/format_json/open_telemetry.c @@ -93,7 +93,7 @@ static int number_data_point(yajl_gen g, metric_t const *m) { break; case METRIC_TYPE_GAUGE: CHECK(json_add_string(g, "asDouble")); - CHECK(yajl_gen_integer(g, m->value.gauge)); + CHECK(yajl_gen_double(g, m->value.gauge)); break; case METRIC_TYPE_UNTYPED: // TODO