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
(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,
(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,
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,
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,
},
};
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));