Merge "ui: Fix unit tests" into main
diff --git a/src/traced/probes/ftrace/ftrace_config_muxer.cc b/src/traced/probes/ftrace/ftrace_config_muxer.cc
index 97969be..3e2b9ab 100644
--- a/src/traced/probes/ftrace/ftrace_config_muxer.cc
+++ b/src/traced/probes/ftrace/ftrace_config_muxer.cc
@@ -625,12 +625,12 @@
// Set up the rest of the tracefs state, without starting it.
// Notes:
// * resizing buffers can be quite slow (up to hundreds of ms).
- // * resizing buffers doesn't clear their existing contents, which matters
- // to the preserve_ftrace_buffer option.
+ // * resizing buffers may truncate existing contents if the new size is
+ // smaller, which matters to the preserve_ftrace_buffer option.
if (!request.preserve_ftrace_buffer()) {
SetupClock(request);
+ SetupBufferSize(request);
}
- SetupBufferSize(request);
}
std::set<GroupAndName> events = GetFtraceEvents(request, table_);
diff --git a/src/traced/probes/ftrace/ftrace_config_muxer_unittest.cc b/src/traced/probes/ftrace/ftrace_config_muxer_unittest.cc
index d5d7f05..3ef5635 100644
--- a/src/traced/probes/ftrace/ftrace_config_muxer_unittest.cc
+++ b/src/traced/probes/ftrace/ftrace_config_muxer_unittest.cc
@@ -1385,5 +1385,28 @@
ASSERT_FALSE(model.SetupConfig(/* id= */ 73, config));
}
+TEST_F(FtraceConfigMuxerTest, PreserveFtraceBufferNotSetBufferSizeKb) {
+ auto fake_table = CreateFakeTable();
+ NiceMock<MockFtraceProcfs> ftrace;
+ FtraceConfigMuxer model(&ftrace, fake_table.get(), GetSyscallTable(), {},
+ /* secondary_instance= */ false);
+
+ FtraceConfig config = CreateFtraceConfig({"sched/sched_switch"});
+
+ config.set_preserve_ftrace_buffer(true);
+ EXPECT_CALL(ftrace, ReadOneCharFromFile("/root/tracing_on"))
+ .WillOnce(Return('1'));
+ ON_CALL(ftrace, ReadFileIntoString("/root/trace_clock"))
+ .WillByDefault(Return("[local] global boot"));
+ EXPECT_CALL(ftrace, ReadFileIntoString("/root/trace_clock"))
+ .Times(AnyNumber());
+ EXPECT_CALL(ftrace, WriteToFile("/root/buffer_size_kb", _)).Times(0);
+ EXPECT_CALL(ftrace,
+ WriteToFile("/root/events/sched/sched_switch/enable", "1"));
+
+ FtraceConfigId id = 44;
+ ASSERT_TRUE(model.SetupConfig(id, config));
+}
+
} // namespace
} // namespace perfetto