Only add node to the log file when needed

We were adding an empty node to the log file when run in a single-node
setup.  Add a test and don't add a node instead.

Change-Id: I9c579140705adb7e85aaf3e17e1dea75bf75776d
diff --git a/aos/events/logging/logger.cc b/aos/events/logging/logger.cc
index 6eae9e9..2942ab7 100644
--- a/aos/events/logging/logger.cc
+++ b/aos/events/logging/logger.cc
@@ -164,15 +164,20 @@
       flatbuffers::Offset<flatbuffers::String> string_offset =
           fbb.CreateString(network::GetHostname());
 
-      flatbuffers::Offset<Node> node_offset =
-          CopyFlatBuffer(event_loop_->node(), &fbb);
+      flatbuffers::Offset<Node> node_offset;
+      if (event_loop_->node() != nullptr) {
+        node_offset = CopyFlatBuffer(event_loop_->node(), &fbb);
+      }
       LOG(INFO) << "Logging node as " << FlatbufferToJson(event_loop_->node());
 
       aos::logger::LogFileHeader::Builder log_file_header_builder(fbb);
 
       log_file_header_builder.add_name(string_offset);
 
-      log_file_header_builder.add_node(node_offset);
+      // Only add the node if we are running in a multinode configuration.
+      if (event_loop_->node() != nullptr) {
+        log_file_header_builder.add_node(node_offset);
+      }
 
       log_file_header_builder.add_configuration(configuration_offset);
       // The worst case theoretical out of order is the polling period times 2.
@@ -448,12 +453,24 @@
 }
 
 const Node *LogReader::node() const {
-  return configuration::GetNode(
-      configuration(),
-      flatbuffers::GetSizePrefixedRoot<LogFileHeader>(configuration_.data())
-          ->node()
-          ->name()
-          ->string_view());
+  if (configuration()->has_nodes()) {
+    CHECK(flatbuffers::GetSizePrefixedRoot<LogFileHeader>(configuration_.data())
+              ->has_node());
+    CHECK(flatbuffers::GetSizePrefixedRoot<LogFileHeader>(configuration_.data())
+              ->node()
+              ->has_name());
+    return configuration::GetNode(
+        configuration(),
+        flatbuffers::GetSizePrefixedRoot<LogFileHeader>(configuration_.data())
+            ->node()
+            ->name()
+            ->string_view());
+  } else {
+    CHECK(
+        !flatbuffers::GetSizePrefixedRoot<LogFileHeader>(configuration_.data())
+             ->has_node());
+    return nullptr;
+  }
 }
 
 monotonic_clock::time_point LogReader::monotonic_start_time() {