Skip to content

Commit 6d4afb2

Browse files
committed
Implement tests for distribution_get_buckets_counters function
1 parent 61caf83 commit 6d4afb2

File tree

1 file changed

+117
-33
lines changed

1 file changed

+117
-33
lines changed

src/daemon/distribution_test.c

+117-33
Original file line numberDiff line numberDiff line change
@@ -658,7 +658,7 @@ DEF_TEST(distribution_get_num_buckets) {
658658
}
659659

660660
DEF_TEST(distribution_get_buckets_boundaries) {
661-
distribution_t *dist_test1 = distribution_new_linear(5, 15.0);
661+
distribution_t *dist_test1 = distribution_new_linear(5, 15.0);
662662
distribution_t *dist_test2 = distribution_new_exponential(14, 1.5, 4);
663663
distribution_t *dist_test3 = distribution_new_custom(
664664
28,
@@ -675,43 +675,47 @@ DEF_TEST(distribution_get_buckets_boundaries) {
675675
int num_buckets;
676676
double *want_boundaries;
677677
int cannot_be_free;
678-
} cases[] = {{
679-
.input_dist = NULL,
680-
.want_boundaries = NULL,
681-
.num_buckets = 0,
682-
},
683-
{
684-
.input_dist = dist_test1,
685-
.num_buckets = 5,
686-
.want_boundaries = array_new_linear(5, 15.0),
687-
},
688-
{
689-
.input_dist = dist_test2,
690-
.num_buckets = 14,
691-
.want_boundaries = array_new_exponential(14, 1.5, 4),
692-
},
693-
{
694-
.input_dist = dist_test3,
695-
.num_buckets = 29,
696-
.want_boundaries = (double[]){1, 4, 6, 19.3, 65.35,
697-
98.9423, 904.4321, 1000.432, 7894.90145, 8000.5472,
698-
9000.852, 10942.11, 11443, 89002.432, 90423.62,
699-
95326.54, 97642.90, 100432.75, 109543.62, 209536.3543,
700-
500426.626, 635690.62, 790426.268, 800738.374, 1000436.637,
701-
1111111.98, 1234567.890, 2345678.901, INFINITY},
702-
.cannot_be_free = 1,
703-
},
704-
{
705-
.input_dist = dist_test4,
706-
.num_buckets = 30,
707-
.want_boundaries = array_new_linear(30, 1.5),
708-
}};
678+
} cases[] = {
679+
{
680+
.input_dist = NULL,
681+
.want_boundaries = NULL,
682+
.num_buckets = 0,
683+
},
684+
{
685+
.input_dist = dist_test1,
686+
.num_buckets = 5,
687+
.want_boundaries = array_new_linear(5, 15.0),
688+
},
689+
{
690+
.input_dist = dist_test2,
691+
.num_buckets = 14,
692+
.want_boundaries = array_new_exponential(14, 1.5, 4),
693+
},
694+
{
695+
.input_dist = dist_test3,
696+
.num_buckets = 29,
697+
.want_boundaries =
698+
(double[]){
699+
1, 4, 6, 19.3, 65.35,
700+
98.9423, 904.4321, 1000.432, 7894.90145, 8000.5472,
701+
9000.852, 10942.11, 11443, 89002.432, 90423.62,
702+
95326.54, 97642.90, 100432.75, 109543.62, 209536.3543,
703+
500426.626, 635690.62, 790426.268, 800738.374, 1000436.637,
704+
1111111.98, 1234567.890, 2345678.901, INFINITY},
705+
.cannot_be_free = 1,
706+
},
707+
{
708+
.input_dist = dist_test4,
709+
.num_buckets = 30,
710+
.want_boundaries = array_new_linear(30, 1.5),
711+
}};
709712

710713
for (size_t i = 0; i < (sizeof(cases) / sizeof(cases[0])); ++i) {
711714
EXPECT_EQ_UINT64(cases[i].num_buckets,
712715
distribution_get_num_buckets(cases[i].input_dist));
713716

714-
double *boundaries = distribution_get_buckets_boundaries(cases[i].input_dist);
717+
double *boundaries =
718+
distribution_get_buckets_boundaries(cases[i].input_dist);
715719

716720
if (cases[i].want_boundaries == NULL) {
717721
EXPECT_EQ_PTR(cases[i].want_boundaries, boundaries);
@@ -733,6 +737,85 @@ DEF_TEST(distribution_get_buckets_boundaries) {
733737
return 0;
734738
}
735739

740+
DEF_TEST(distribution_get_buckets_counters) {
741+
distribution_t *dist_test1 = distribution_new_linear(10, 5.0);
742+
distribution_t *dist_test2 = distribution_new_exponential(8, 1.5, 2);
743+
distribution_t *dist_test3 = distribution_new_custom(
744+
11, (double[]){1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144});
745+
746+
struct {
747+
distribution_t *input_dist;
748+
double *gauges;
749+
int num_queries;
750+
uint64_t *counters;
751+
int num_buckets;
752+
double sum_gauges;
753+
} cases[] = {
754+
{
755+
.input_dist = NULL,
756+
.num_queries = 0,
757+
.num_buckets = 0,
758+
.sum_gauges = NAN,
759+
},
760+
{
761+
.input_dist = dist_test1,
762+
.num_queries = 11,
763+
.gauges = (double[]){1, 2, 3, 5, 10, 90, 8, 45, 44, 41.45, 40.5},
764+
.num_buckets = 10,
765+
.counters = (uint64_t[]){3, 5, 6, 6, 6, 6, 6, 6, 9, 11},
766+
.sum_gauges = 0,
767+
},
768+
{
769+
.input_dist = dist_test2,
770+
.num_queries = 16,
771+
.gauges =
772+
(double[]){1.5, 1.23, 1.67, 2, 24.532, 25, 28.43, 98.43, 10.43,
773+
7.53, 11.235, 4.43256, 7.432, 3, 3.01, 2.98},
774+
.num_buckets = 8,
775+
.counters = (uint64_t[]){3, 5, 8, 8, 10, 12, 12, 16},
776+
.sum_gauges = 29.863,
777+
},
778+
{
779+
.input_dist = dist_test3,
780+
.num_queries = 15,
781+
.gauges = (double[]){0, 0.65, 0.7, 0.99, 0.999999, 1, 2.65, 3, 3.1123,
782+
10.923, 90.432, 145.90, 144, 143.999999, 190},
783+
.num_buckets = 12,
784+
.counters = (uint64_t[]){5, 6, 7, 9, 9, 10, 10, 10, 10, 10, 12, 15},
785+
.sum_gauges = 120.286546,
786+
}};
787+
788+
for (size_t i = 0; i < (sizeof(cases) / sizeof(cases[0])); ++i) {
789+
printf("## Case %zu:\n", i);
790+
791+
for (int j = 0; j < cases[i].num_queries; ++j) {
792+
// EXPECT_EQ_INT(cases[i].status_codes[j],
793+
distribution_update(cases[i].input_dist, cases[i].gauges[j]);
794+
}
795+
796+
EXPECT_EQ_UINT64(cases[i].num_buckets,
797+
distribution_get_num_buckets(cases[i].input_dist));
798+
799+
uint64_t *counters = distribution_get_buckets_counters(cases[i].input_dist);
800+
801+
if (cases[i].counters == NULL) {
802+
EXPECT_EQ_PTR(cases[i].counters, counters);
803+
} else {
804+
CHECK_NOT_NULL(counters);
805+
for (size_t j = 0; j < cases[i].num_buckets; ++j) {
806+
EXPECT_EQ_UINT64(cases[i].counters[j], counters[j]);
807+
}
808+
free(counters);
809+
}
810+
811+
//double sum = distribution_get_sum_gauges(cases[i].input_dist);
812+
//EXPECT_EQ_DOUBLE(cases[i].sum_gauges, sum);
813+
distribution_destroy(cases[i].input_dist);
814+
}
815+
816+
return 0;
817+
}
818+
736819
int main(void) {
737820
RUN_TEST(distribution_new_linear);
738821
RUN_TEST(distribution_new_exponential);
@@ -743,5 +826,6 @@ int main(void) {
743826
RUN_TEST(distribution_clone);
744827
RUN_TEST(distribution_get_num_buckets);
745828
RUN_TEST(distribution_get_buckets_boundaries);
829+
RUN_TEST(distribution_get_buckets_counters);
746830
END_TEST;
747831
}

0 commit comments

Comments
 (0)