]> git.ipfire.org Git - thirdparty/collectd.git/commitdiff
Add test for uc_update function
authorBarbara Kaczorowska <bkjg@google.com>
Tue, 18 Aug 2020 06:54:37 +0000 (06:54 +0000)
committerBarbara Kaczorowska <bkjg@google.com>
Wed, 19 Aug 2020 07:42:08 +0000 (07:42 +0000)
src/daemon/utils_cache_test.c

index be294af60f79c21da30282e32465d5570abf7c54..7238122effd7fc89b2a9bef3a1e99ff9b6681834 100644 (file)
 
 #include "collectd.h"
 
+#include "distribution.h"
 #include "testing.h"
 #include "utils_cache.h"
 
-DEF_TEST(uc_insert) {
+static metric_family_t create_metric_family(char *name) {
+  metric_family_t fam = {
+      .name = name,
+      .type = METRIC_TYPE_DISTRIBUTION,
+  };
 
-  return 0;
+  metric_t m[] = {{
+                      .family = &fam,
+                      .value.distribution = distribution_new_linear(5, 23),
+                      .time = cdtime_mock++,
+                  },
+                  {
+                      .family = &fam,
+                      .value.distribution = distribution_new_linear(5, 23),
+                      .time = cdtime_mock++,
+                  },
+                  {
+                      .family = &fam,
+                      .value.distribution = distribution_new_linear(5, 23),
+                      .time = cdtime_mock++,
+                  }};
+
+  for (int i = 0; i < (sizeof(m) / sizeof(m[0])); ++i) {
+    metric_family_metric_append(&fam, m[i]);
+  }
+
+  return fam;
 }
 
 DEF_TEST(uc_update) {
+  struct {
+    int want_get;
+    double **updates;
+    int *num_updates;
+    metric_family_t fam;
+  } cases[] = {
+      {
+          .want_get = 0,
 
-  return 0;
-}
+          .updates =
+              (double *[]){
+                  (double[]){5.432, 5.4234, 6.3424, 7.5453, 902.3525,
+                             52352.523523, 523524.524524, 90342.4325, 136.352,
+                             90.8},
+                  (double[]){5.432, 5.4234, 6.3424, 7.5453, 902.3525,
+                             52352.523523, 523524.524524, 90342.4325, 136.352,
+                             90.8, 1.214, 90432.31434, 43141.1342, 41412.4314,
+                             97.47, 90.78},
+                  (double[]){
+                      5.432,      5.4234,       6.3424,        7.5453,
+                      902.3525,   52352.523523, 523524.524524, 90342.4325,
+                      136.352,    90.8,         1.214,         90432.31434,
+                      43141.1342, 41412.4314,   97.47,         90.78,
+                      78.57,      90.467,       89.658,        879.67},
+              },
+          .num_updates = (int[]){10, 16, 20},
+          .fam = create_metric_family("abc"),
+      },
+  };
+  for (int i = 0; i < (sizeof(cases) / sizeof(cases[0])); ++i) {
+    uc_init();
+    for (int k = 0; k < cases[i].fam.metric.num; ++k) {
+      for (int j = 0; j < cases[i].num_updates[k]; ++j) {
+        CHECK_ZERO(
+            distribution_update(cases[i].fam.metric.ptr[k].value.distribution,
+                                cases[i].updates[k][j]));
+      }
+    }
 
-DEF_TEST(uc_get_percentile) {
+    EXPECT_EQ_INT(cases[i].want_get, uc_update(&cases[i].fam));
 
+    metric_family_metric_reset(&cases[i].fam);
+  }
   return 0;
 }
 
-DEF_TEST(uc_get_rate) {
+DEF_TEST(uc_get_percentile) { return 0; }
 
-  return 0;
-}
+DEF_TEST(uc_get_rate) { return 0; }
 
 int main() {
-  RUN_TEST(uc_insert);
   RUN_TEST(uc_update);
   RUN_TEST(uc_get_percentile);
   RUN_TEST(uc_get_rate);
 
-  return 0;
+  END_TEST;
 }