CHECK_ZERO(metric_family_append(fams[1], "metric.label", "bar",
(value_t){.counter = 31337}, NULL));
+ resource_metrics_set_t set = {0};
+ CHECK_ZERO(resource_metrics_add(&set, fams[0]));
+ CHECK_ZERO(resource_metrics_add(&set, fams[1]));
+
strbuf_t buf = STRBUF_CREATE;
- 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\":\"" 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);
+ CHECK_ZERO(format_json_open_telemetry(&buf, &set));
+
+ EXPECT_EQ_STR(
+ "{\"resourceMetrics\":[{\"resource\":{\"attributes\":[{\"key\":\"service."
+ "name\",\"value\":{\"stringValue\":\"unit "
+ "test\"}}]},\"scopeMetrics\":[{\"scope\":{\"name\":\"collectd\","
+ "\"version\":\"5.12.0.383.ge714589+\"},\"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}"
+ "},{\"name\":\"unit.tests\",\"description\":\"Example gauge "
+ "metric\",\"gauge\":{\"dataPoints\":[{\"attributes\":[{\"key\":\"metric."
+ "label\",\"value\":{\"stringValue\":\"test "
+ "label\"}}],\"timeUnixNano\":0,\"asDouble\":42.0}]}}]}]}]}",
+ buf.ptr);
STRBUF_DESTROY(buf);
+ resource_metrics_reset(&set);
label_set_reset(&fams[0]->resource);
label_set_reset(&fams[1]->resource);
metric_family_metric_reset(fams[0]);
return 0;
}
-static int scope_metrics(yajl_gen g, metric_family_t const *fam) {
+static int scope_metrics(yajl_gen g, resource_metrics_t const *rm) {
CHECK(yajl_gen_map_open(g)); /* BEGIN ScopeMetrics */
CHECK(json_add_string(g, "scope"));
CHECK(json_add_string(g, "metrics"));
CHECK(yajl_gen_array_open(g));
- CHECK(metric(g, fam));
+ for (size_t i = 0; i < rm->families_num; i++) {
+ CHECK(metric(g, rm->families[i]));
+ }
CHECK(yajl_gen_array_close(g));
CHECK(yajl_gen_map_close(g)); /* END ScopeMetrics */
CHECK(json_add_string(g, "scopeMetrics"));
CHECK(yajl_gen_array_open(g));
- for (size_t i = 0; i < rm->families_num; i++) {
- CHECK(scope_metrics(g, rm->families[i]));
- }
+ CHECK(scope_metrics(g, rm));
CHECK(yajl_gen_array_close(g));
CHECK(yajl_gen_map_close(g)); /* END ResourceMetrics */
yajl_gen_config(g, yajl_gen_validate_utf8, 1);
#endif
- // TODO
CHECK(yajl_gen_map_open(g)); /* BEGIN ExportMetricsServiceRequest */
CHECK(json_add_string(g, "resourceMetrics"));
CHECK(yajl_gen_array_open(g));