X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fdaemon%2Fcommon_test.c;h=d34e4112ee3f27577184054937c4869bfd736c03;hb=130316f078cadab03f6bbbbd6a8cd5cee77dc558;hp=f40b2b1a50defda7e9e859a4bd74e8c7f08afa6b;hpb=233ef890d210e7f231ebbc474894e90032ba49b1;p=collectd.git diff --git a/src/daemon/common_test.c b/src/daemon/common_test.c index f40b2b1a..d34e4112 100644 --- a/src/daemon/common_test.c +++ b/src/daemon/common_test.c @@ -338,6 +338,44 @@ DEF_TEST(parse_values) return (0); } +DEF_TEST(value_to_rate) +{ + struct { + time_t t0; + time_t t1; + int ds_type; + value_t v0; + value_t v1; + gauge_t want; + } cases[] = { + { 0, 10, DS_TYPE_DERIVE, {.derive = 0}, {.derive = 1000}, NAN}, + {10, 20, DS_TYPE_DERIVE, {.derive = 1000}, {.derive = 2000}, 100.0}, + {20, 30, DS_TYPE_DERIVE, {.derive = 2000}, {.derive = 1800}, -20.0}, + { 0, 10, DS_TYPE_COUNTER, {.counter = 0}, {.counter = 1000}, NAN}, + {10, 20, DS_TYPE_COUNTER, {.counter = 1000}, {.counter = 5000}, 400.0}, + /* 32bit wrap-around. */ + {20, 30, DS_TYPE_COUNTER, {.counter = 4294967238ULL}, {.counter = 42}, 10.0}, + /* 64bit wrap-around. */ + {30, 40, DS_TYPE_COUNTER, {.counter = 18446744073709551558ULL}, {.counter = 42}, 10.0}, + }; + size_t i; + + for (i = 0; i < STATIC_ARRAY_SIZE (cases); i++) { + value_to_rate_state_t state = { cases[i].v0, TIME_T_TO_CDTIME_T (cases[i].t0) }; + value_t got; + + if (cases[i].t0 == 0) { + OK(value_to_rate (&got, cases[i].v1.derive, &state, cases[i].ds_type, TIME_T_TO_CDTIME_T (cases[i].t1)) == EAGAIN); + continue; + } + + OK(value_to_rate (&got, cases[i].v1.derive, &state, cases[i].ds_type, TIME_T_TO_CDTIME_T (cases[i].t1)) == 0); + DBLEQ(cases[i].want, got.gauge); + } + + return 0; +} + int main (void) { RUN_TEST(sstrncpy); @@ -349,6 +387,7 @@ int main (void) RUN_TEST(escape_string); RUN_TEST(strunescape); RUN_TEST(parse_values); + RUN_TEST(value_to_rate); END_TEST; }