int uc_get_percentile_by_name(const char *name, gauge_t *ret_values,
double percent) {
+ if (name == NULL || ret_values == NULL) {
+ ERROR("uc_get_percentile_by_name: Passed null pointer as an argument.");
+ return -1;
+ }
+
if (percent < 0 || percent > 100) {
ERROR("uc_get_percentile_by_name: Illegal percent %lf.", percent);
return -1;
} /* gauge_t *uc_get_percentile_by_name */
int uc_get_percentile(metric_t const *m, gauge_t *ret, double percent) {
+ if (m == NULL || ret == NULL) {
+ ERROR("uc_get_percentile: Passed null pointer as an argument.");
+ return -1;
+ }
+
if (m->family->type != METRIC_TYPE_DISTRIBUTION) {
ERROR("uc_get_percentile: Don't know how to handle data source type %i.",
m->family->type);
}
}
}
- /* TODO(bkjg): add test, where fam will be NULL */
CHECK_ZERO(uc_update(cases[i].fam));
}
DEF_TEST(uc_get_percentile) {
+ metric_family_t *metric_family_with_null_metric = calloc(1, sizeof(metric_family_t));
+ metric_family_with_null_metric->type = METRIC_TYPE_COUNTER;
+ metric_family_with_null_metric->name = "test-percentile-with-null";
+
double tmp;
struct {
int want_get;
(double[]){83.4653, 943.463, 573.543, 90.543},
},
.want_ret_value = 84.543,
- .metric_idx = 35,
+ .metric_idx = 5,
},
{
.fam = create_metric_family_for_test5("test8-percentile", 7, 24,
5236.74648},
},
.want_ret_value = 5579.60919,
- .metric_idx = 48,
+ .metric_idx = 3,
},
+ {
+ .fam = metric_family_with_null_metric,
+ .want_get = -1,
+ }
};
/* TODO(bkjg): add test cases to the uc_update function that will give an
CHECK_ZERO(uc_update(cases[i].fam));
+ printf("num: %lu\n", cases[i].fam->metric.num);
EXPECT_EQ_INT(cases[i].want_get,
- uc_get_percentile(&cases[i].fam->metric.ptr[0],
+ uc_get_percentile(&cases[i].fam->metric.ptr[cases[i].metric_idx],
&cases[i].ret_value, cases[i].percent));
if (cases[i].want_get != -1) {
CHECK_ZERO(metric_family_metric_reset(cases[i].fam));
free(cases[i].fam);
+ printf("after free\n");
}
// reset_cache_tree();
-
return 0;
}