Test disabling timing reports
Change-Id: I5b904bbf9e039b2a15f8328b156fcc7bdd1d71ca
diff --git a/aos/events/event_loop_param_test.cc b/aos/events/event_loop_param_test.cc
index a5b6b19..79f326d 100644
--- a/aos/events/event_loop_param_test.cc
+++ b/aos/events/event_loop_param_test.cc
@@ -24,7 +24,11 @@
name_copy += std::to_string(event_loop_count_);
}
++event_loop_count_;
- return factory_->Make(name_copy);
+ auto result = factory_->Make(name_copy);
+ if (do_timing_reports() == DoTimingReports::kNo) {
+ result->SkipTimingReport();
+ }
+ return result;
}
void AbstractEventLoopTest::VerifyBuffers(
@@ -1016,38 +1020,42 @@
EXPECT_LT(expected_times[expected_times.size() / 2], average_time + kEpsilon);
EXPECT_GT(expected_times[expected_times.size() / 2], average_time - kEpsilon);
- // And, since we are here, check that the timing report makes sense.
- // Start by looking for our event loop's timing.
- FlatbufferDetachedBuffer<timing::Report> report =
- FlatbufferDetachedBuffer<timing::Report>::Empty();
- while (report_fetcher.FetchNext()) {
- if (report_fetcher->name()->string_view() == "primary") {
- report = CopyFlatBuffer(report_fetcher.get());
+ if (do_timing_reports() == DoTimingReports::kYes) {
+ // And, since we are here, check that the timing report makes sense.
+ // Start by looking for our event loop's timing.
+ FlatbufferDetachedBuffer<timing::Report> report =
+ FlatbufferDetachedBuffer<timing::Report>::Empty();
+ while (report_fetcher.FetchNext()) {
+ if (report_fetcher->name()->string_view() == "primary") {
+ report = CopyFlatBuffer(report_fetcher.get());
+ }
}
+
+ // Confirm that we have the right number of reports, and the contents are
+ // sane.
+ VLOG(1) << FlatbufferToJson(report, {.multi_line = true});
+
+ EXPECT_EQ(report.message().name()->string_view(), "primary");
+
+ ASSERT_NE(report.message().senders(), nullptr);
+ EXPECT_EQ(report.message().senders()->size(), 2);
+
+ ASSERT_NE(report.message().timers(), nullptr);
+ EXPECT_EQ(report.message().timers()->size(), 2);
+
+ EXPECT_EQ(report.message().timers()->Get(0)->name()->string_view(),
+ "Test loop");
+ EXPECT_GE(report.message().timers()->Get(0)->count(), 1);
+
+ EXPECT_EQ(report.message().timers()->Get(1)->name()->string_view(),
+ "timing_reports");
+ EXPECT_EQ(report.message().timers()->Get(1)->count(), 1);
+
+ // Make sure there is a single phased loop report with our report in it.
+ ASSERT_EQ(report.message().phased_loops(), nullptr);
+ } else {
+ ASSERT_FALSE(report_fetcher.Fetch());
}
-
- // Confirm that we have the right number of reports, and the contents are
- // sane.
- VLOG(1) << FlatbufferToJson(report, {.multi_line = true});
-
- EXPECT_EQ(report.message().name()->string_view(), "primary");
-
- ASSERT_NE(report.message().senders(), nullptr);
- EXPECT_EQ(report.message().senders()->size(), 2);
-
- ASSERT_NE(report.message().timers(), nullptr);
- EXPECT_EQ(report.message().timers()->size(), 2);
-
- EXPECT_EQ(report.message().timers()->Get(0)->name()->string_view(),
- "Test loop");
- EXPECT_GE(report.message().timers()->Get(0)->count(), 1);
-
- EXPECT_EQ(report.message().timers()->Get(1)->name()->string_view(),
- "timing_reports");
- EXPECT_EQ(report.message().timers()->Get(1)->count(), 1);
-
- // Make sure there is a single phased loop report with our report in it.
- ASSERT_EQ(report.message().phased_loops(), nullptr);
}
// Verify that we can change a timer's parameters during execution.
@@ -1501,32 +1509,36 @@
EXPECT_LT(expected_times[expected_times.size() / 2], average_time + kEpsilon);
EXPECT_GT(expected_times[expected_times.size() / 2], average_time - kEpsilon);
- // And, since we are here, check that the timing report makes sense.
- // Start by looking for our event loop's timing.
- FlatbufferDetachedBuffer<timing::Report> report =
- FlatbufferDetachedBuffer<timing::Report>::Empty();
- while (report_fetcher.FetchNext()) {
- if (report_fetcher->name()->string_view() == "primary") {
- report = CopyFlatBuffer(report_fetcher.get());
+ if (do_timing_reports() == DoTimingReports::kYes) {
+ // And, since we are here, check that the timing report makes sense.
+ // Start by looking for our event loop's timing.
+ FlatbufferDetachedBuffer<timing::Report> report =
+ FlatbufferDetachedBuffer<timing::Report>::Empty();
+ while (report_fetcher.FetchNext()) {
+ if (report_fetcher->name()->string_view() == "primary") {
+ report = CopyFlatBuffer(report_fetcher.get());
+ }
}
+
+ VLOG(1) << FlatbufferToJson(report, {.multi_line = true});
+
+ EXPECT_EQ(report.message().name()->string_view(), "primary");
+
+ ASSERT_NE(report.message().senders(), nullptr);
+ EXPECT_EQ(report.message().senders()->size(), 2);
+
+ ASSERT_NE(report.message().timers(), nullptr);
+ EXPECT_EQ(report.message().timers()->size(), 1);
+
+ // Make sure there is a single phased loop report with our report in it.
+ ASSERT_NE(report.message().phased_loops(), nullptr);
+ ASSERT_EQ(report.message().phased_loops()->size(), 1);
+ EXPECT_EQ(report.message().phased_loops()->Get(0)->name()->string_view(),
+ "Test loop");
+ EXPECT_GE(report.message().phased_loops()->Get(0)->count(), 1);
+ } else {
+ ASSERT_FALSE(report_fetcher.Fetch());
}
-
- VLOG(1) << FlatbufferToJson(report, {.multi_line = true});
-
- EXPECT_EQ(report.message().name()->string_view(), "primary");
-
- ASSERT_NE(report.message().senders(), nullptr);
- EXPECT_EQ(report.message().senders()->size(), 2);
-
- ASSERT_NE(report.message().timers(), nullptr);
- EXPECT_EQ(report.message().timers()->size(), 1);
-
- // Make sure there is a single phased loop report with our report in it.
- ASSERT_NE(report.message().phased_loops(), nullptr);
- ASSERT_EQ(report.message().phased_loops()->size(), 1);
- EXPECT_EQ(report.message().phased_loops()->Get(0)->name()->string_view(),
- "Test loop");
- EXPECT_GE(report.message().phased_loops()->Get(0)->count(), 1);
}
// Tests that senders count correctly in the timing report.
@@ -1564,50 +1576,54 @@
Run();
- // And, since we are here, check that the timing report makes sense.
- // Start by looking for our event loop's timing.
- FlatbufferDetachedBuffer<timing::Report> primary_report =
- FlatbufferDetachedBuffer<timing::Report>::Empty();
- while (report_fetcher.FetchNext()) {
- LOG(INFO) << "Report " << FlatbufferToJson(report_fetcher.get());
- if (report_fetcher->name()->string_view() == "primary") {
- primary_report = CopyFlatBuffer(report_fetcher.get());
+ if (do_timing_reports() == DoTimingReports::kYes) {
+ // And, since we are here, check that the timing report makes sense.
+ // Start by looking for our event loop's timing.
+ FlatbufferDetachedBuffer<timing::Report> primary_report =
+ FlatbufferDetachedBuffer<timing::Report>::Empty();
+ while (report_fetcher.FetchNext()) {
+ LOG(INFO) << "Report " << FlatbufferToJson(report_fetcher.get());
+ if (report_fetcher->name()->string_view() == "primary") {
+ primary_report = CopyFlatBuffer(report_fetcher.get());
+ }
}
+
+ LOG(INFO) << FlatbufferToJson(primary_report, {.multi_line = true});
+
+ EXPECT_EQ(primary_report.message().name()->string_view(), "primary");
+
+ ASSERT_NE(primary_report.message().senders(), nullptr);
+ EXPECT_EQ(primary_report.message().senders()->size(), 3);
+
+ // Confirm that the sender looks sane.
+ EXPECT_EQ(
+ loop1->configuration()
+ ->channels()
+ ->Get(primary_report.message().senders()->Get(0)->channel_index())
+ ->name()
+ ->string_view(),
+ "/test");
+ EXPECT_EQ(primary_report.message().senders()->Get(0)->count(), 10);
+
+ // Confirm that the timing primary_report sender looks sane.
+ EXPECT_EQ(
+ loop1->configuration()
+ ->channels()
+ ->Get(primary_report.message().senders()->Get(1)->channel_index())
+ ->name()
+ ->string_view(),
+ "/aos");
+ EXPECT_EQ(primary_report.message().senders()->Get(1)->count(), 1);
+
+ ASSERT_NE(primary_report.message().timers(), nullptr);
+ EXPECT_EQ(primary_report.message().timers()->size(), 3);
+
+ // Make sure there are no phased loops or watchers.
+ ASSERT_EQ(primary_report.message().phased_loops(), nullptr);
+ ASSERT_EQ(primary_report.message().watchers(), nullptr);
+ } else {
+ ASSERT_FALSE(report_fetcher.Fetch());
}
-
- LOG(INFO) << FlatbufferToJson(primary_report, {.multi_line = true});
-
- EXPECT_EQ(primary_report.message().name()->string_view(), "primary");
-
- ASSERT_NE(primary_report.message().senders(), nullptr);
- EXPECT_EQ(primary_report.message().senders()->size(), 3);
-
- // Confirm that the sender looks sane.
- EXPECT_EQ(
- loop1->configuration()
- ->channels()
- ->Get(primary_report.message().senders()->Get(0)->channel_index())
- ->name()
- ->string_view(),
- "/test");
- EXPECT_EQ(primary_report.message().senders()->Get(0)->count(), 10);
-
- // Confirm that the timing primary_report sender looks sane.
- EXPECT_EQ(
- loop1->configuration()
- ->channels()
- ->Get(primary_report.message().senders()->Get(1)->channel_index())
- ->name()
- ->string_view(),
- "/aos");
- EXPECT_EQ(primary_report.message().senders()->Get(1)->count(), 1);
-
- ASSERT_NE(primary_report.message().timers(), nullptr);
- EXPECT_EQ(primary_report.message().timers()->size(), 3);
-
- // Make sure there are no phased loops or watchers.
- ASSERT_EQ(primary_report.message().phased_loops(), nullptr);
- ASSERT_EQ(primary_report.message().watchers(), nullptr);
}
// Tests that senders count correctly in the timing report.
@@ -1645,32 +1661,36 @@
Run();
- // And, since we are here, check that the timing report makes sense.
- // Start by looking for our event loop's timing.
- FlatbufferDetachedBuffer<timing::Report> primary_report =
- FlatbufferDetachedBuffer<timing::Report>::Empty();
- while (report_fetcher.FetchNext()) {
- LOG(INFO) << "Report " << FlatbufferToJson(report_fetcher.get());
- if (report_fetcher->name()->string_view() == "primary") {
- primary_report = CopyFlatBuffer(report_fetcher.get());
+ if (do_timing_reports() == DoTimingReports::kYes) {
+ // And, since we are here, check that the timing report makes sense.
+ // Start by looking for our event loop's timing.
+ FlatbufferDetachedBuffer<timing::Report> primary_report =
+ FlatbufferDetachedBuffer<timing::Report>::Empty();
+ while (report_fetcher.FetchNext()) {
+ LOG(INFO) << "Report " << FlatbufferToJson(report_fetcher.get());
+ if (report_fetcher->name()->string_view() == "primary") {
+ primary_report = CopyFlatBuffer(report_fetcher.get());
+ }
}
+
+ // Check the watcher report.
+ VLOG(1) << FlatbufferToJson(primary_report, {.multi_line = true});
+
+ EXPECT_EQ(primary_report.message().name()->string_view(), "primary");
+
+ // Just the timing report timer.
+ ASSERT_NE(primary_report.message().timers(), nullptr);
+ EXPECT_EQ(primary_report.message().timers()->size(), 3);
+
+ // No phased loops
+ ASSERT_EQ(primary_report.message().phased_loops(), nullptr);
+
+ ASSERT_NE(primary_report.message().watchers(), nullptr);
+ ASSERT_EQ(primary_report.message().watchers()->size(), 1);
+ EXPECT_EQ(primary_report.message().watchers()->Get(0)->count(), 10);
+ } else {
+ ASSERT_FALSE(report_fetcher.Fetch());
}
-
- // Check the watcher report.
- VLOG(1) << FlatbufferToJson(primary_report, {.multi_line = true});
-
- EXPECT_EQ(primary_report.message().name()->string_view(), "primary");
-
- // Just the timing report timer.
- ASSERT_NE(primary_report.message().timers(), nullptr);
- EXPECT_EQ(primary_report.message().timers()->size(), 3);
-
- // No phased loops
- ASSERT_EQ(primary_report.message().phased_loops(), nullptr);
-
- ASSERT_NE(primary_report.message().watchers(), nullptr);
- ASSERT_EQ(primary_report.message().watchers()->size(), 1);
- EXPECT_EQ(primary_report.message().watchers()->Get(0)->count(), 10);
}
// Tests that fetchers count correctly in the timing report.
@@ -1717,47 +1737,53 @@
Run();
- // And, since we are here, check that the timing report makes sense.
- // Start by looking for our event loop's timing.
- FlatbufferDetachedBuffer<timing::Report> primary_report =
- FlatbufferDetachedBuffer<timing::Report>::Empty();
- while (report_fetcher.FetchNext()) {
- if (report_fetcher->name()->string_view() == "primary") {
- primary_report = CopyFlatBuffer(report_fetcher.get());
+ if (do_timing_reports() == DoTimingReports::kYes) {
+ // And, since we are here, check that the timing report makes sense.
+ // Start by looking for our event loop's timing.
+ FlatbufferDetachedBuffer<timing::Report> primary_report =
+ FlatbufferDetachedBuffer<timing::Report>::Empty();
+ while (report_fetcher.FetchNext()) {
+ if (report_fetcher->name()->string_view() == "primary") {
+ primary_report = CopyFlatBuffer(report_fetcher.get());
+ }
}
+
+ VLOG(1) << FlatbufferToJson(primary_report, {.multi_line = true});
+
+ EXPECT_EQ(primary_report.message().name()->string_view(), "primary");
+
+ ASSERT_NE(primary_report.message().senders(), nullptr);
+ EXPECT_EQ(primary_report.message().senders()->size(), 2);
+
+ ASSERT_NE(primary_report.message().timers(), nullptr);
+ EXPECT_EQ(primary_report.message().timers()->size(), 4);
+
+ // Make sure there are no phased loops or watchers.
+ ASSERT_EQ(primary_report.message().phased_loops(), nullptr);
+ ASSERT_EQ(primary_report.message().watchers(), nullptr);
+
+ // Now look at the fetchrs.
+ ASSERT_NE(primary_report.message().fetchers(), nullptr);
+ ASSERT_EQ(primary_report.message().fetchers()->size(), 2);
+
+ EXPECT_EQ(primary_report.message().fetchers()->Get(0)->count(), 1);
+ EXPECT_GE(primary_report.message().fetchers()->Get(0)->latency()->average(),
+ 0.1);
+ EXPECT_GE(primary_report.message().fetchers()->Get(0)->latency()->min(),
+ 0.1);
+ EXPECT_GE(primary_report.message().fetchers()->Get(0)->latency()->max(),
+ 0.1);
+ EXPECT_EQ(primary_report.message()
+ .fetchers()
+ ->Get(0)
+ ->latency()
+ ->standard_deviation(),
+ 0.0);
+
+ EXPECT_EQ(primary_report.message().fetchers()->Get(1)->count(), 10);
+ } else {
+ ASSERT_FALSE(report_fetcher.Fetch());
}
-
- VLOG(1) << FlatbufferToJson(primary_report, {.multi_line = true});
-
- EXPECT_EQ(primary_report.message().name()->string_view(), "primary");
-
- ASSERT_NE(primary_report.message().senders(), nullptr);
- EXPECT_EQ(primary_report.message().senders()->size(), 2);
-
- ASSERT_NE(primary_report.message().timers(), nullptr);
- EXPECT_EQ(primary_report.message().timers()->size(), 4);
-
- // Make sure there are no phased loops or watchers.
- ASSERT_EQ(primary_report.message().phased_loops(), nullptr);
- ASSERT_EQ(primary_report.message().watchers(), nullptr);
-
- // Now look at the fetchrs.
- ASSERT_NE(primary_report.message().fetchers(), nullptr);
- ASSERT_EQ(primary_report.message().fetchers()->size(), 2);
-
- EXPECT_EQ(primary_report.message().fetchers()->Get(0)->count(), 1);
- EXPECT_GE(primary_report.message().fetchers()->Get(0)->latency()->average(),
- 0.1);
- EXPECT_GE(primary_report.message().fetchers()->Get(0)->latency()->min(), 0.1);
- EXPECT_GE(primary_report.message().fetchers()->Get(0)->latency()->max(), 0.1);
- EXPECT_EQ(primary_report.message()
- .fetchers()
- ->Get(0)
- ->latency()
- ->standard_deviation(),
- 0.0);
-
- EXPECT_EQ(primary_report.message().fetchers()->Get(1)->count(), 10);
}
// Tests that a raw watcher and raw fetcher can receive messages from a raw