]> git.ipfire.org Git - thirdparty/collectd.git/commitdiff
src/daemon/metric.[ch]: Export `label_set_format`. 4214/head
authorFlorian Forster <octo@collectd.org>
Thu, 28 Dec 2023 08:32:00 +0000 (09:32 +0100)
committerFlorian Forster <octo@collectd.org>
Thu, 28 Dec 2023 08:32:00 +0000 (09:32 +0100)
This is now also used in the metric test, replacing the custom
implementation there.

src/daemon/metric.c
src/daemon/metric.h
src/daemon/metric_test.c

index 558d5b44263f0b03fad59ba5f6c3561a16f48bff..f7b816c90c67e6091c57932e331dd686a877f473 100644 (file)
@@ -257,8 +257,8 @@ int metric_reset(metric_t *m) {
   return 0;
 }
 
-static int format_label_set(strbuf_t *buf, label_set_t const *labels,
-                            char const *prefix, bool first_label) {
+static int internal_label_set_format(strbuf_t *buf, label_set_t const *labels,
+                                     char const *prefix, bool first_label) {
   int status = 0;
   for (size_t i = 0; i < labels->num; i++) {
     if (!first_label) {
@@ -276,6 +276,10 @@ static int format_label_set(strbuf_t *buf, label_set_t const *labels,
   return status;
 }
 
+int label_set_format(strbuf_t *buf, label_set_t labels) {
+  return internal_label_set_format(buf, &labels, "", true);
+}
+
 int metric_identity(strbuf_t *buf, metric_t const *m) {
   if ((buf == NULL) || (m == NULL) || (m->family == NULL)) {
     return EINVAL;
@@ -291,11 +295,11 @@ int metric_identity(strbuf_t *buf, metric_t const *m) {
 
   bool first_label = true;
   if (resource->num != 0) {
-    status = status || format_label_set(buf, resource, RESOURCE_LABEL_PREFIX,
-                                        first_label);
+    status = status || internal_label_set_format(
+                           buf, resource, RESOURCE_LABEL_PREFIX, first_label);
     first_label = false;
   }
-  status = status || format_label_set(buf, &m->label, "", first_label);
+  status = status || internal_label_set_format(buf, &m->label, "", first_label);
 
   return status || strbuf_print(buf, "}");
 }
index dc422a94c70beb78e0a3dd8d95fda1b948674811..ba80fcf0316dd7a2bf187894f9204dcbdbf330b1 100644 (file)
@@ -92,6 +92,10 @@ void label_set_reset(label_set_t *labels);
  */
 int label_set_compare(label_set_t a, label_set_t b);
 
+/* label_set_format formats a label set as a string, returned in "buf".
+ * Returns zero on success and non-zero on failure. */
+int label_set_format(strbuf_t *buf, label_set_t labels);
+
 /*
  * Metric
  */
index 8335e9e01926fabf9e65591f92eaecc82d5cd1bc..a7cd9bd18eb592d172e534a2bb36192dfdf12d7e 100644 (file)
 #include "metric.h"
 #include "testing.h"
 
-static void format_label_set(strbuf_t *buf, label_set_t labels) {
-  for (size_t i = 0; i < labels.num; i++) {
-    strbuf_printf(buf, "[i=%zu]", i);
-    if (i != 0) {
-      strbuf_print(buf, ",");
-    }
-    strbuf_print_escaped(buf, labels.ptr[i].name, "\\\"\n\r\t", '\\');
-    strbuf_print(buf, "=\"");
-    strbuf_print_escaped(buf, labels.ptr[i].value, "\\\"\n\r\t", '\\');
-    strbuf_print(buf, "\"");
-  }
-}
-
 DEF_TEST(metric_label_set) {
   struct {
     char const *name;
@@ -186,8 +173,8 @@ DEF_TEST(metric_label_set) {
     strbuf_t got = STRBUF_CREATE;
     strbuf_t want = STRBUF_CREATE;
 
-    format_label_set(&want, cases[i].want);
-    format_label_set(&got, m.label);
+    label_set_format(&want, cases[i].want);
+    label_set_format(&got, m.label);
 
     EXPECT_EQ_STR(want.ptr, got.ptr);