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

index d443bad63c4406983fe47c2ace93841ec5dc9027..964a5382a6640d2b353b49a4d31cf95c976afc5e 100644 (file)
@@ -533,8 +533,9 @@ DEF_TEST(uc_get_percentile) {
     gauge_t ret_value;
     gauge_t want_ret_value;
     metric_family_t *fam;
-    double *updates;
-    int num_updates;
+    double **updates;
+    size_t *num_updates;
+    size_t metric_idx;
   } cases[] = {
       {
           /* TODO(bkjg): maybe change the return value to EINVAL when the
@@ -544,6 +545,7 @@ DEF_TEST(uc_get_percentile) {
               (gauge_t[]){6.5, 3.423, 5232.523, 432.342, 65.43, 9.7}),
           .want_get = -1,
           .percent = 57.34,
+          .num_updates = (size_t[]){0, 0, 0, 0},
       },
       {
           .fam = create_metric_family_for_test2("test2-percentile", &tmp, 2,
@@ -551,24 +553,28 @@ DEF_TEST(uc_get_percentile) {
                                                 (uint64_t[]){43, 654}),
           .want_get = -1,
           .percent = 49.23,
+          .num_updates = (size_t[]){0, 0},
       },
       {
           .fam = create_metric_family_for_test3(
               "test3-percentile", 3, (gauge_t[]){4234.432, 54364.324, 4324.43}),
           .want_get = -1,
           .percent = 23.54,
+          .num_updates = (size_t[]){0, 0, 0},
       },
       {
           .fam = create_metric_family_for_test4("test4-percentile"),
           .percent = 89.73,
           .want_ret_value = NAN,
+          .num_updates = (size_t[]){0},
       },
       {
           .fam = create_metric_family_for_test5("test5-percentile", 6, 56, 1.24,
                                                 5),
           .want_get = -1,
           .percent = -76,
-      },
+      .num_updates = (size_t[]){0, 0, 0, 0, 0, 0},
+          },
       {
           .fam = create_metric_family_for_test6(
               "test6-percentile", 5, 8,
@@ -576,33 +582,50 @@ DEF_TEST(uc_get_percentile) {
                          100043.43, 900000.43}),
           .want_get = -1,
           .percent = 100.4,
+          .num_updates = (size_t[]){0, 0, 0, 0, 0},
       },
       {
           .fam =
               create_metric_family_for_test7("test7-percentile", 9, 68, 84.543),
           .percent = 0,
-          .num_updates = 9,
-          .updates = (double[]){1.354, 4.2343, 67.543, 7243.2435, 543.2543,
+          .num_updates = (size_t[]){9, 1, 0, 6, 8, 0, 7, 0, 4},
+          .updates = (double*[]){(double[]){1.354, 4.2343, 67.543, 7243.2435, 543.2543,
                                 54.43, 543.534, 9023.534, 2358453.534534},
+              (double[]){67.543},
+              (double[]){},
+              (double[]){54.4645, 768.435, 6.4534, 986.43, 987.534, 23.5},
+              (double[]){546.654, 1324.324, 457.43, 678.435, 5785.435, 895.32, 9.423, 9853.543},
+              (double[]){},
+              (double[]){654.645, 45352.6, 53453.43, 543.435, 76.43, 797.43, 76.43},
+              (double[]){},
+              (double[]){83.4653, 943.463, 573.543, 90.543}, },
           .want_ret_value = 84.543,
+          .metric_idx = 35,
       },
       {
           .fam = create_metric_family_for_test5("test8-percentile", 7, 24,
                                                 1.345, 9.67),
           .percent = 100,
-          .num_updates = 15,
-          .updates = (double[]){7273.23889, 2332.61737, 5700.55615, 7812.98765,
-                                4264.86158, 268.74688,  6486.08937, 6204.44048,
-                                7235.73534, 2794.02672, 9288.39283, 4662.6566,
-                                6517.20614, 7785.61931, 8087.83614, 1094.24435,
-                                8093.33661, 2796.65101, 1425.40209, 2949.08743,
-                                3074.2948,  9631.15671, 1448.20895, 9843.30987,
-                                5045.33169, 6653.13623},
-          .want_ret_value = 9.67,
+          .num_updates = (size_t[]){15, 67, 6, 0, 56, 26, 1},
+          .updates = (double*[]) {(double[]) {7273.23889, 2332.61737, 5700.55615, 7812.98765,
+                                              4264.86158, 268.74688, 6486.08937, 6204.44048,
+                                              7235.73534, 2794.02672, 9288.39283, 4662.6566,
+                                              6517.20614, 7785.61931, 8087.83614, 1094.24435,
+                                              8093.33661, 2796.65101, 1425.40209, 2949.08743,
+                                              3074.2948, 9631.15671, 1448.20895, 9843.30987,
+                                              5045.33169, 6653.13623},
+                                  (double[]){8.9836,44.92963,3.13412,72.36738,107.39301,21.2692,33.24933,10.00479,11.07998,101.58473,56.7942,102.57711,85.23387,5.50962,109.7728,25.13287,82.06147,7.88873,65.86362,68.49312,76.34463,11.84615,51.95518,51.36831,44.59729,27.56038,54.12334,3.14058,70.23039,113.51434,100.76535,1.42056,98.09661,70.88242,55.39125,4.84537,48.7601,3.89373,61.61134,97.6968,42.15975,66.19623,83.75841,93.82006,86.68521,47.97931,83.52405,79.94514,52.24084,34.4199,89.83969,93.75171,88.65762,8.99014,1.12716,9.23472,44.18075,75.32575,40.50866,0.62965,109.54525,63.84394,19.85427,20.86203,42.07358,100.14113,9.58807},
+                                  (double[]){65.43, 7.54, 10.42323, 11.543, 20.4235, 109.423},
+                                  (double[]){},
+                                  (double[]){40.70721,111.25481,58.84637,130.57275,12.98124,107.43372,7.30452,62.89139,98.57436,81.20726,32.09759,142.48247,45.98872,26.61524,91.13035,105.86144,110.31826,43.40806,46.45192,23.47531,6.53419,149.77225,119.41684,8.76683,134.67231,59.93585,129.2164,108.17816,43.76639,138.4096,44.9372,146.85231,35.69273,91.43816,50.39418,139.84918,132.96587,41.81809,35.02065,67.94941,59.01611,138.43066,95.45903,51.71665,31.17835,125.77984,24.81209,43.67169,59.02432,77.40476,72.55881,103.22872,61.44734,110.21046,22.42225,53.0431},
+                                  (double[]){38.81053,2.92907,58.62993,1.02672,21.98664,27.78435,62.01765,11.04862,35.70885,20.19808,48.87309,16.81291,46.22889,50.54755,59.58231,50.21794,26.45925,10.17534,26.77216,18.10478,30.72786,16.07058,16.60934,44.67609,46.58571,66.82775},
+                                  (double[]){44.32},
+          },.want_ret_value = 57.2479817070748,
+          .metric_idx = 0,
       },
       {
           .fam = create_metric_family_for_test6(
-              "test9", 4, 49,
+              "test9-percentile", 4, 49,
               (double[]){
                   283.11051,  341.94139,  512.86531,  604.69627,  657.38026,
                   868.54382,  1057.70293, 1441.49331, 1499.54159, 2011.40738,
@@ -615,21 +638,25 @@ DEF_TEST(uc_get_percentile) {
                   8055.85652, 8514.09805, 8786.67945, 8814.77247, 9421.52142,
                   9584.05069, 9618.27028, 9788.40721, 9862.77031}),
           .percent = 56.3,
-          .num_updates = 54,
-          .updates =
-              (double[]){
+          .num_updates = (size_t[]){54,67,8,9},
+          .updates = (double*[]) {
+              (double[]) {
                   9473.99522, 9682.46524, 6902.22386, 2632.59974, 224.97903,
                   4425.67438, 1094.25828, 5507.07452, 6140.55588, 6586.78403,
-                  3748.51025, 7342.42407, 461.98087,  2370.005,   6234.53679,
+                  3748.51025, 7342.42407, 461.98087, 2370.005, 6234.53679,
                   3630.13252, 9190.53656, 2377.16807, 2554.37586, 5973.07804,
-                  9459.471,   977.36175,  4707.95627, 9373.90178, 5625.67662,
+                  9459.471, 977.36175, 4707.95627, 9373.90178, 5625.67662,
                   9200.20201, 2503.82766, 5539.63445, 8564.03697, 5179.19388,
-                  8530.74263, 3829.30061, 9251.19378, 8991.0057,  8464.4043,
-                  7580.73952, 9025.62113, 8952.42671, 9287.5265,  8579.52376,
+                  8530.74263, 3829.30061, 9251.19378, 8991.0057, 8464.4043,
+                  7580.73952, 9025.62113, 8952.42671, 9287.5265, 8579.52376,
                   2938.24169, 1229.20803, 3995.36776, 2629.81514, 222.9282,
-                  321.08365,  958.73825,  393.90684,  7396.77622, 2706.27567,
+                  321.08365, 958.73825, 393.90684, 7396.77622, 2706.27567,
                   7376.80843, 3028.44747, 8684.45493, 8277.39937},
-          .want_ret_value = 283.11051,
+              (double[]){94.34024,5369.42045,106.99225,4845.37869,3694.95099,6859.38458,3403.18808,9102.51424,4098.48109,5954.08755,6146.62894,3494.39408,4229.73443,1400.66599,8942.00647,6992.12526,3145.67041,4158.62876,8337.978,8311.53907,5934.71194,6885.4022,7941.92203,1636.68227,6086.39492,1893.09594,4984.28907,756.5788,9298.44361,6460.4752,8455.53452,2607.52741,62.34891,2499.08504,1370.14777,7838.19529,4335.81203,736.71981,9177.66445,8299.95565,7745.85028,5442.34546,7129.24099,6034.30483,2666.01496,5626.89066,1948.9354,842.76915,4425.71523,8022.58775,3228.76266,6616.1537,7016.92999,6867.16531,4919.9911,3812.5397,353.57387,7504.68569,8575.42736,9262.40423,6691.10738,9253.02204,9171.75229,6153.56538,8469.24383,4859.31769,1161.66019},
+              (double[]){4400.00001,9833.13863,100.16011,6849.80943,510.31266,2866.47649,4492.46879,8692.87943},
+              (double[]){1566.00821,7594.931,995.13973,1289.97209,9242.79285,9702.15248,82.44731,1854.97795,5236.74648},
+          },.want_ret_value = 2011.40738,
+          .metric_idx = 48,
       },
   };
 
@@ -637,10 +664,14 @@ DEF_TEST(uc_get_percentile) {
   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]));
+          }
+        }
+      }
 
     CHECK_ZERO(uc_update(cases[i].fam));