Convert control loop tests over to simulated event loop
This makes it so that we properly only use ShmEventLoop for running in
realtime on a robot. Very nice.
Change-Id: I46b770b336f59e08cfaf28511b3bd5689f72fff1
diff --git a/aos/events/shm-event-loop_test.cc b/aos/events/shm-event-loop_test.cc
index 8d0f552..8af00f0 100644
--- a/aos/events/shm-event-loop_test.cc
+++ b/aos/events/shm-event-loop_test.cc
@@ -24,6 +24,8 @@
void Run() override { CHECK_NOTNULL(primary_event_loop_)->Run(); }
+ void Exit() override { CHECK_NOTNULL(primary_event_loop_)->Exit(); }
+
void SleepFor(::std::chrono::nanoseconds duration) override {
::std::this_thread::sleep_for(duration);
}
@@ -80,10 +82,10 @@
bool did_timer = false;
bool did_watcher = false;
- auto timer = loop->AddTimer([&did_timer, &loop]() {
+ auto timer = loop->AddTimer([&did_timer, &loop, &factory]() {
EXPECT_TRUE(IsRealtime());
did_timer = true;
- loop->Exit();
+ factory.Exit();
});
loop->MakeWatcher("/test", [&did_watcher](const TestMessage &) {
@@ -118,7 +120,7 @@
constexpr chrono::milliseconds kOffset = chrono::milliseconds(400);
loop1->AddPhasedLoop(
- [×, &loop1, &kOffset](int count) {
+ [×, &loop1, &kOffset, &factory](int count) {
const ::aos::monotonic_clock::time_point monotonic_now =
loop1->monotonic_now();
@@ -143,7 +145,7 @@
times.push_back(loop1->monotonic_now());
if (times.size() == 2) {
- loop1->Exit();
+ factory.Exit();
}
// Now, add a large delay. This should push us up to 3 cycles.