]> git.ipfire.org Git - thirdparty/collectd.git/commitdiff
Fix tests for uc_get_percentile_by_name function
authorBarbara Kaczorowska <bkjg@google.com>
Tue, 18 Aug 2020 21:37:33 +0000 (21:37 +0000)
committerBarbara Kaczorowska <bkjg@google.com>
Wed, 19 Aug 2020 07:42:09 +0000 (07:42 +0000)
src/daemon/utils_cache_test.c

index dc97adf1426d8480e27eeeae4eddd3e16bde4ffd..d443bad63c4406983fe47c2ace93841ec5dc9027 100644 (file)
@@ -278,7 +278,7 @@ DEF_TEST(uc_update) {
               },
           .num_updates = (size_t[]){10, 6, 4},
           .fam = create_metric_family_for_test7("test4-update", 3, 5, 23),
-      },
+      }
   };
   uc_init();
   for (size_t i = 0; i < (sizeof(cases) / sizeof(cases[0])); ++i) {
@@ -317,8 +317,8 @@ DEF_TEST(uc_get_percentile_by_name) {
     gauge_t ret_value;
     gauge_t want_ret_value;
     metric_family_t *fam;
-    double *updates;
-    int num_updates;
+    double **updates;
+    size_t *num_updates;
   } cases[] = {
       {
           /* TODO(bkjg): maybe change the return value to EINVAL when the
@@ -328,6 +328,7 @@ DEF_TEST(uc_get_percentile_by_name) {
               (gauge_t[]){43.543, 654.32, 948.543, 1342.42}),
           .want_get = -1,
           .percent = 57.34,
+          .num_updates = (size_t[]){0, 0, 0, 0},
       },
       {
           .fam = create_metric_family_for_test2(
@@ -336,23 +337,27 @@ DEF_TEST(uc_get_percentile_by_name) {
               (uint64_t[]){3, 543, 5, 654, 43, 4}),
           .want_get = -1,
           .percent = 49.23,
+          .num_updates = (size_t[]){0, 0, 0, 0, 0, 0},
       },
       {
           .fam = create_metric_family_for_test3(
               "test3-percentile-by-name", 2, (gauge_t[]){324.234, 52452.342}),
           .want_get = -1,
           .percent = 23.54,
+          .num_updates = (size_t[]){0, 0},
       },
       {
           .fam = create_metric_family_for_test4("test4-percentile-by-name"),
           .percent = 89.73,
           .want_ret_value = NAN,
+          .num_updates = (size_t[]){0},
       },
       {
           .fam = create_metric_family_for_test5("test5-percentile-by-name", 6,
                                                 104, 1.0012, 8),
           .want_get = -1,
           .percent = -76,
+          .num_updates = (size_t[]){0, 0, 0, 0, 0, 0},
       },
       {
           .fam = create_metric_family_for_test6(
@@ -384,52 +389,81 @@ DEF_TEST(uc_get_percentile_by_name) {
                          99031.53623, 99147.69204}),
           .want_get = -1,
           .percent = 100.4,
+          .num_updates = (size_t[]){0, 0, 0, 0, 0, 0, 0, 0},
       },
       {
           .fam = create_metric_family_for_test7("test7-percentile-by-name", 4,
                                                 193, 47.97),
           .percent = 0,
-          .num_updates = 71,
-          .updates =
-              (double[]){82359.12294, 68158.41378, 48412.81238, 5904.4289,
-                         34826.95792, 57900.41609, 33671.55587, 24959.94718,
-                         93646.26915, 1520.75565,  14639.69397, 70222.39415,
-                         21981.56962, 16146.0281,  13983.92362, 52167.56135,
-                         27539.19779, 45057.29114, 3319.77024,  34066.56465,
-                         10173.62876, 91667.04402, 98416.81719, 96030.39534,
-                         79983.43468, 77316.03541, 5659.02605,  55984.92588,
-                         77457.94164, 3384.64733,  72593.37989, 66288.34529,
-                         17548.12711, 39080.58183, 70098.8097,  64922.09787,
-                         38622.17965, 63267.44964, 80319.19425, 57421.82315,
-                         54532.87389, 23394.05223, 6053.33071,  81659.40367,
-                         38240.65576, 85423.95662, 54837.08557, 30067.92726,
-                         60829.11685, 5428.52609,  6612.06311,  70475.98393,
-                         85464.98161, 20740.81419, 43986.23893, 70876.29799,
-                         1037.86676,  76031.71462, 53813.00219, 4035.65718,
-                         5811.23089,  58692.27907, 94178.50533, 12500.30161,
-                         81487.15188, 69029.50582, 49662.02744, 73422.53592,
-                         68386.53142, 91320.37996, 91735.92333},
+          .num_updates = (size_t[]){71, 8, 45, 3},
+          .updates = (double*[]) {
+              (double[]){8194, 68.41378, 488, 5904.4289,
+                          348.952, 5.41609, 33687, 24959.94718,
+                          93646.26915, 1520.5, 14639.697, 7022,
+                          281.52, 16146.0281, 1.92362, 52167.56135,
+                          29.19779, 45057.14, 3319.7724, 34066.55,
+                          1073.62876, 91667.0, 98416.1719, 96030.39534,
+                          783.438, 77316.03541, 5659.005, 55984.9258,
+                          7.94164, 3384.647, 72593.99, 6628.329,
+                          17548.12711, 3.58183, 70.8097, 64922.09787,
+                          3822.1765, 67.44964, 819.125, 57421.823,
+                          52.8739, 2394.23, 6053.3371, 81659.40367,
+                          38240.76, 8542.95662, 54837.08557, 7.92726,
+                          69.11685, 5428.26, 6612.06311, 70475.98393,
+                          85464.98161, 20740.9, 43986.93, 70876.29799,
+                          1037.866, 71.71462, 53813.0019, 4035.658,
+                          5811.23089, 582.7, 94178.50533, 12500.30161,
+                          81487.188, 690.50582, 49662.044, 73422.52,
+                          68386.53142, 91320.37996, 35.92333},
+              (double[]){745.38815,481.05336,6.41994,1.95525,1156.20533,1268.7098,1295.84116,917.62886},
+              (double[]){516.9201,4849.31623,7221.34863,7527.68604,1151.26575,6524.27975,705.95819,4513.90006,5128.38355,6394.32618,5547.92822,5852.66449,1573.28964,4182.4275,8472.49003,2649.24761,9031.21648,273.19715,9269.87663,3111.26556,5555.49909,1971.95879,4414.7191,6246.03113,4236.78126,8654.59594,1718.24435,7858.42398,5748.95136,1579.52587,3661.98626,2142.41081,7568.26255,5097.90185,5640.32226,3454.39562,9409.04172,4254.11444,4606.8975,8475.69705,4081.69481,6739.58349,7981.12462,8370.65351,7414.76374},
+              (double[]){5454.43, 9854.432, 10000.432},
+          },
           .want_ret_value = 47.97,
       },
       {
           .fam = create_metric_family_for_test5("test8-percentile-by-name", 5,
                                                 74, 1.065, 45.784),
           .percent = 100,
-          .num_updates = 42,
-          .updates =
-              (double[]){72506.34561, 91418.8635,  80572.52619, 38484.68244,
-                         87877.24226, 57174.59598, 1551.41153,  9145.58047,
-                         72967.20258, 53348.1573,  48132.4808,  39831.68688,
-                         78359.72224, 76905.47862, 5348.62723,  8070.63794,
-                         11716.49737, 29432.91898, 67222.86733, 29114.50366,
-                         67117.86881, 15388.23779, 48933.6252,  74134.36183,
-                         24786.55592, 42282.17781, 87869.09351, 26252.42492,
-                         7323.72669,  47943.4361,  29671.97547, 6225.43339,
-                         44457.12541, 34822.90173, 50059.94181, 26860.86093,
-                         71182.72552, 65944.4019,  21285.09149, 19641.2854,
-                         19254.37358, 61342.40975},
-          .want_ret_value = 45.784,
-      },
+          .num_updates = (size_t[]) {42, 0, 67, 5, 89},
+          .updates = (double *[]) {
+              (double[]) {72506.34561, 91418.8635, 80572.52619, 38484.68244,
+                          87877.24226, 57174.59598, 1551.41153, 9145.58047,
+                          72967.20258, 53348.1573, 48132.4808, 39831.68688,
+                          78359.72224, 76905.47862, 5348.62723, 8070.63794,
+                          11716.49737, 29432.91898, 67222.86733, 29114.50366,
+                          67117.86881, 15388.23779, 48933.6252, 74134.36183,
+                          24786.55592, 42282.17781, 87869.09351, 26252.42492,
+                          7323.72669, 47943.4361, 29671.97547, 6225.43339,
+                          44457.12541, 34822.90173, 50059.94181, 26860.86093,
+                          71182.72552, 65944.4019, 21285.09149, 19641.2854,
+                          19254.37358, 61342.40975},
+              (double[]) {
+
+              },
+              (double[]) {5586.54111, 3841.94096, 5834.15027, 8247.97183, 9499.93153, 7472.58943, 219.47985, 7686.70986,
+                          1219.55743, 2415.15816, 8955.29092, 3480.59525, 1879.67425, 1275.56004, 3295.58027,
+                          2139.82266, 456.72684, 562.50828, 1941.86819, 9780.2701, 4234.51139, 1287.71429, 571.7637,
+                          3018.60717, 3024.39436, 10317.61782, 3059.65791, 6248.61059, 10178.41514, 3430.92157,
+                          5205.66822, 3387.48332, 2669.69809, 7532.6, 6981.75202, 2897.25262, 8964.52642, 4209.86327,
+                          3735.92037, 878.27845, 4097.70763, 10419.35129, 2094.15747, 9162.93322, 6691.67488,
+                          1529.17463, 10293.11383, 10388.03797, 4898.96937, 9262.156, 833.49287, 1568.14635, 1187.62364,
+                          8168.1532, 8849.88077, 8484.26639, 10457.05272, 1759.43482, 288.39094, 7405.56667, 9778.09951,
+                          6290.33759, 7102.4534, 2172.31562, 8277.08193, 8824.99498, 5797.51546},
+          (double[]) {56.43, 879.453, 5.324, 765.342, 64.4356},
+          (double[]) {1013.25449, 9089.16126, 9854.27631, 9420.94215, 509.43821, 7299.78937, 2293.54321, 7308.0138,
+                      4066.37637, 6305.31349, 7006.66839, 2503.36452, 5787.31125, 4247.16623, 5803.29759, 8303.8097,
+                      9543.26322, 2027.47232, 486.42233, 6603.60027, 1440.39473, 9132.76392, 4395.65407, 6737.9134,
+                      6162.07532, 5855.29759, 802.30289, 10121.34827, 10029.5615, 2886.96024, 3185.46451, 517.43518,
+                      892.29103, 5515.76823, 8022.44596, 3888.66676, 4320.34148, 5751.74699, 5016.10839, 343.68796,
+                      2926.28764, 3061.87651, 4463.04963, 5255.43202, 4029.81862, 3254.9407, 6082.41397, 10433.08612,
+                      2011.06951, 2968.68571, 7948.21252, 4659.80086, 8464.0979, 1424.92974, 6664.08464, 7246.80407,
+                      4714.69846, 6168.91884, 6315.78325, 9857.07278, 5709.06859, 176.3125, 5244.00458, 3999.77758,
+                      7247.30445, 9108.6723, 7354.32423, 7918.81314, 3666.6743, 7315.87523, 5687.41806, 293.34054,
+                      1812.20181, 3585.62552, 6423.85917, 4389.82836, 3467.02384, 6070.2832, 8559.86769, 1225.99976,
+                      2808.22175, 4888.729, 7613.12619, 414.86679, 7449.10677, 6598.8391, 2551.38054, 9092.67749,
+                      5626.38473},
+      },          .want_ret_value = INFINITY,},
       {
           .fam = create_metric_family_for_test6(
               "test9-percentile-by-name", 3, 26,
@@ -441,8 +475,8 @@ DEF_TEST(uc_get_percentile_by_name) {
                          84368.98886, 86621.73007, 94893.89038, 95883.59771,
                          96327.48458, 97958.59675}),
           .percent = 42.3,
-          .num_updates = 38,
-          .updates =
+          .num_updates = (size_t[]){38, 0, 2},
+          .updates = (double*[]){
               (double[]){71079.41279, 64378.08534, 58308.74218, 62899.70407,
                          43084.69866, 59286.43609, 95311.89101, 46082.97057,
                          21002.88808, 13767.93511, 6832.77194,  9641.53968,
@@ -453,6 +487,8 @@ DEF_TEST(uc_get_percentile_by_name) {
                          11471.67096, 82920.8644,  57711.02046, 73579.12752,
                          35093.01442, 95393.57805, 17610.14104, 54931.47418,
                          19359.63012, 46414.44434},
+              (double[]){},
+              (double[]){468.435, 54267.54}, },
           .want_ret_value = 7174.31149,
       },
   };
@@ -460,10 +496,16 @@ DEF_TEST(uc_get_percentile_by_name) {
   uc_init();
   for (size_t i = 0; i < (sizeof(cases) / sizeof(cases[0])); ++i) {
     printf("## Case %zu:\n", i);
-    for (int j = 0; j < cases[i].num_updates; ++j) {
-      CHECK_ZERO(distribution_update(
-          cases[i].fam->metric.ptr[0].value.distribution, cases[i].updates[j]));
-    }
+
+    for (size_t k = 0; k < cases[i].fam->metric.num; ++k) {
+      for (size_t l = 0; l <= k; ++l) {
+          for (size_t j = 0; j < cases[i].num_updates[l]; ++j) {
+            CHECK_ZERO(distribution_update(
+                cases[i].fam->metric.ptr[k].value.distribution, cases[i].updates[l][j]));
+          }
+        }
+      }
+      /* TODO(bkjg): add test, where fam will be NULL */
 
     CHECK_ZERO(uc_update(cases[i].fam));