Make logger work again with an external SimulatedEventLoopFactory

The only way to get a node, and therefore a remapped_configuration_ and
therefore be able to call Register(SimulatedEventLoopFactory *factory)
is to be able to get the remapped config at all times.  This makes that
work again.

Change-Id: I1be0e751f4b92d3712f73fdff2b5edee4d453a40
diff --git a/aos/events/logging/logger_test.cc b/aos/events/logging/logger_test.cc
index 98f6a74..4fff962 100644
--- a/aos/events/logging/logger_test.cc
+++ b/aos/events/logging/logger_test.cc
@@ -72,8 +72,6 @@
 
   EXPECT_EQ(reader.node(), nullptr);
 
-  EXPECT_EQ(reader.event_loop_factory()->node(), nullptr);
-
   std::unique_ptr<EventLoop> test_event_loop =
       reader.event_loop_factory()->MakeEventLoop("log_reader");
 
@@ -213,10 +211,12 @@
   // TODO(austin): Also replay as pi2 or pi3 and make sure we see the pong
   // messages.  This won't work today yet until the log reading code gets
   // significantly better.
+  SimulatedEventLoopFactory log_reader_factory(reader.logged_configuration(), reader.node());
+  log_reader_factory.set_send_delay(chrono::microseconds(0));
 
   // This sends out the fetched messages and advances time to the start of the
   // log file.
-  reader.Register();
+  reader.Register(&log_reader_factory);
 
   ASSERT_NE(reader.node(), nullptr);
   EXPECT_EQ(reader.node()->name()->string_view(), "pi1");
@@ -224,7 +224,7 @@
   reader.event_loop_factory()->set_send_delay(chrono::microseconds(0));
 
   std::unique_ptr<EventLoop> test_event_loop =
-      reader.event_loop_factory()->MakeEventLoop("test");
+      log_reader_factory.MakeEventLoop("test");
 
   int ping_count = 10;
   int pong_count = 10;
@@ -252,9 +252,11 @@
         EXPECT_EQ(ping_count, pong_count);
       });
 
-  reader.event_loop_factory()->RunFor(std::chrono::seconds(100));
+  log_reader_factory.RunFor(std::chrono::seconds(100));
   EXPECT_EQ(ping_count, 2010);
   EXPECT_EQ(pong_count, 2010);
+
+  reader.Deregister();
 }
 
 }  // namespace testing