diff options
| author | Nick Mathewson <[email protected]> | 2016-02-26 09:00:05 +0100 |
|---|---|---|
| committer | Nick Mathewson <[email protected]> | 2016-02-26 09:00:05 +0100 |
| commit | d6b1d96614572cc414949e176bdc67a4af8d6682 (patch) | |
| tree | 2a6916d4c37c34e438011c972d01b56d3b0dea96 | |
| parent | d00a3762cd9813446a97ae8a5b3a621d20cd608d (diff) | |
Make the tests cover timeout_readd() better
Also, make them check the required invariants for to->expires after
timeout_readd().
Also, actually use the different timeout values in the main()
function (whoops).
| -rw-r--r-- | test-timeout.c | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/test-timeout.c b/test-timeout.c index 7f31008..9a58006 100644 --- a/test-timeout.c +++ b/test-timeout.c @@ -224,6 +224,7 @@ struct intervals_cfg { int n_timeouts; timeout_t start_at; timeout_t end_at; + timeout_t skip; }; int @@ -259,23 +260,35 @@ check_intervals(struct intervals_cfg *cfg) while (now < cfg->end_at) { timeout_t delay = timeouts_timeout(tos); + if (cfg->skip && delay < cfg->skip) + delay = cfg->skip; timeouts_step(tos, delay); - now += delay; while (NULL != (to = timeouts_get(tos))) { i = to - &t[0]; assert(&t[i] == to); fired[i]++; + if (0 != (to->expires - cfg->start_at) % cfg->timeouts[i]) + FAIL(); + if (to->expires <= now) + FAIL(); + if (to->expires > now + cfg->timeouts[i]) + FAIL(); } if (!timeouts_check(tos, stderr)) FAIL(); } - timeout_t duration = cfg->end_at - cfg->start_at; + timeout_t duration = now - cfg->start_at; for (i = 0; i < cfg->n_timeouts; ++i) { - if (fired[i] != duration / cfg->timeouts[i]) - FAIL(); + if (cfg->skip) { + if (fired[i] > duration / cfg->timeouts[i]) + FAIL(); + } else { + if (fired[i] != duration / cfg->timeouts[i]) + FAIL(); + } if (!timeout_pending(&t[i])) FAIL(); } @@ -418,25 +431,36 @@ main(int argc, char **argv) .n_timeouts = sizeof(primes)/sizeof(timeout_t), .start_at = 50, .end_at = 5322, + .skip = 0, }; DO(check_intervals(&icfg1)); struct intervals_cfg icfg2 = { - .timeouts = primes, + .timeouts = factors_of_1337, .n_timeouts = sizeof(factors_of_1337)/sizeof(timeout_t), .start_at = 50, .end_at = 50000, + .skip = 0, }; DO(check_intervals(&icfg2)); struct intervals_cfg icfg3 = { - .timeouts = primes, + .timeouts = multiples_of_five, .n_timeouts = sizeof(multiples_of_five)/sizeof(timeout_t), .start_at = 49, .end_at = 5333, + .skip = 0, }; DO(check_intervals(&icfg3)); + struct intervals_cfg icfg4 = { + .timeouts = primes, + .n_timeouts = sizeof(primes)/sizeof(timeout_t), + .start_at = 50, + .end_at = 5322, + .skip = 16, + }; + DO(check_intervals(&icfg4)); if (n_failed) { puts("\nFAIL"); |
