Relax aos event loop test latency thresholds
We are seeing on CI machines that hitting 50ms is not reasonable,
especially under high load. --runs_per_test doesn't trigger this since
that doesn't load up the rest of the system heavily.
Efficiency isn't as big a concern as reliability. Give ourselves much
more time (10x) for everything by just multiplying all the times by 10
so we are much more tolerant of a couple ms here and there.
Change-Id: I4d3c02760ec6bdafc76befc1a7ee9fcb4c271ef5
Signed-off-by: Austin Schuh <austin.schuh@bluerivertech.com>
diff --git a/aos/events/event_loop_param_test.cc b/aos/events/event_loop_param_test.cc
index 1460663..4a298f0 100644
--- a/aos/events/event_loop_param_test.cc
+++ b/aos/events/event_loop_param_test.cc
@@ -1064,6 +1064,7 @@
// Verify that we can change a timer's parameters during execution.
TEST_P(AbstractEventLoopTest, TimerChangeParameters) {
auto loop = MakePrimary();
+ loop->SetRuntimeRealtimePriority(1);
std::vector<monotonic_clock::time_point> iteration_list;
auto test_timer = loop->AddTimer([&iteration_list, &loop]() {
@@ -1072,42 +1073,45 @@
monotonic_clock::time_point s;
auto modifier_timer = loop->AddTimer([&test_timer, &s]() {
- test_timer->Setup(s + chrono::milliseconds(45), chrono::milliseconds(30));
+ test_timer->Setup(s + chrono::milliseconds(1750),
+ chrono::milliseconds(600));
});
s = loop->monotonic_now();
- test_timer->Setup(s, chrono::milliseconds(20));
- modifier_timer->Setup(s + chrono::milliseconds(45));
- EndEventLoop(loop.get(), chrono::milliseconds(150));
+ test_timer->Setup(s, chrono::milliseconds(500));
+ modifier_timer->Setup(s + chrono::milliseconds(1250));
+ EndEventLoop(loop.get(), chrono::milliseconds(3950));
Run();
- EXPECT_EQ(iteration_list.size(), 7);
- EXPECT_EQ(iteration_list[0], s);
- EXPECT_EQ(iteration_list[1], s + chrono::milliseconds(20));
- EXPECT_EQ(iteration_list[2], s + chrono::milliseconds(40));
- EXPECT_EQ(iteration_list[3], s + chrono::milliseconds(45));
- EXPECT_EQ(iteration_list[4], s + chrono::milliseconds(75));
- EXPECT_EQ(iteration_list[5], s + chrono::milliseconds(105));
- EXPECT_EQ(iteration_list[6], s + chrono::milliseconds(135));
+ EXPECT_THAT(
+ iteration_list,
+ ::testing::ElementsAre(
+ s, s + chrono::milliseconds(500), s + chrono::milliseconds(1000),
+ s + chrono::milliseconds(1750), s + chrono::milliseconds(2350),
+ s + chrono::milliseconds(2950), s + chrono::milliseconds(3550)));
}
// Verify that we can disable a timer during execution.
TEST_P(AbstractEventLoopTest, TimerDisable) {
auto loop = MakePrimary();
+ loop->SetRuntimeRealtimePriority(1);
::std::vector<::aos::monotonic_clock::time_point> iteration_list;
auto test_timer = loop->AddTimer([&iteration_list, &loop]() {
- iteration_list.push_back(loop->monotonic_now());
+ iteration_list.push_back(loop->context().monotonic_event_time);
});
auto ender_timer = loop->AddTimer([&test_timer]() { test_timer->Disable(); });
- test_timer->Setup(loop->monotonic_now(), ::std::chrono::milliseconds(20));
- ender_timer->Setup(loop->monotonic_now() + ::std::chrono::milliseconds(45));
- EndEventLoop(loop.get(), ::std::chrono::milliseconds(150));
+ monotonic_clock::time_point s = loop->monotonic_now();
+ test_timer->Setup(s, ::std::chrono::milliseconds(70));
+ ender_timer->Setup(s + ::std::chrono::milliseconds(200));
+ EndEventLoop(loop.get(), ::std::chrono::milliseconds(350));
Run();
- EXPECT_EQ(iteration_list.size(), 3);
+ EXPECT_THAT(iteration_list,
+ ::testing::ElementsAre(s, s + chrono::milliseconds(70),
+ s + chrono::milliseconds(140)));
}
// Verify that a timer can disable itself.