fix RateKeeper test

pull/29829/head
Adeeb Shihadeh 2 years ago
parent dde225221e
commit f197decbc9
  1. 11
      common/tests/test_ratekeeper.cc

@ -6,11 +6,18 @@
TEST_CASE("RateKeeper") { TEST_CASE("RateKeeper") {
float freq = GENERATE(10, 50, 100); float freq = GENERATE(10, 50, 100);
RateKeeper rk("Test RateKeeper", freq); RateKeeper rk("Test RateKeeper", freq);
int lags = 0;
int bad_keep_times = 0;
for (int i = 0; i < freq; ++i) { for (int i = 0; i < freq; ++i) {
double begin = seconds_since_boot(); double begin = seconds_since_boot();
util::sleep_for(util::random_int(0, 1000.0 / freq - 1)); util::sleep_for(util::random_int(0, 1000.0 / freq - 1));
bool lagged = rk.keepTime(); bool lagged = rk.keepTime();
REQUIRE(std::abs(seconds_since_boot() - begin - (1 / freq)) < 1e-3); lags += lagged;
REQUIRE(lagged == false); bad_keep_times += (seconds_since_boot() - begin - (1 / freq)) > 1e-3;
} }
// need a tolerance here due to scheduling
REQUIRE(lags < 5);
REQUIRE(bad_keep_times < 5);
} }

Loading…
Cancel
Save