0

tracing: fix datasource adaptation in perfetto config

This CL fixes a bug in AdaptPerfettoConfigForChrome() in
crrev.com/c/5581575 - |enable_system_backend| needs to be propagated
so that only Chrome data sources are adapted in system background tracing scenarios.

Bug: b:388424720
Test: unit test AdaptPerfettoConfigForChromeTest.EnableSystemBackend*
Change-Id: Ie74b20c719854682f29401d614fb68e5e4135113
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6275227
Reviewed-by: Mikhail Khokhlov <khokhlov@google.com>
Reviewed-by: Etienne Pierre-Doray <etiennep@chromium.org>
Commit-Queue: Chinglin Yu <chinglinyu@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1422622}
This commit is contained in:
Chinglin Yu
2025-02-20 09:16:02 -08:00
committed by Chromium LUCI CQ
parent 627be3e8f3
commit 05218a6014
2 changed files with 49 additions and 1 deletions
services/tracing/public/cpp/perfetto

@ -414,7 +414,7 @@ bool AdaptPerfettoConfigForChrome(
for (auto& data_source_config : *perfetto_config->mutable_data_sources()) {
AdaptDataSourceConfig(data_source_config.mutable_config(),
chrome_config_string, privacy_filtering_enabled,
client_priority);
client_priority, enable_system_backend);
}
return true;
}

@ -234,4 +234,52 @@ TEST_F(AdaptPerfettoConfigForChromeTest, Systrace) {
}
#endif // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_CASTOS)
TEST_F(AdaptPerfettoConfigForChromeTest, EnableSystemBackend_NonChrome) {
auto perfetto_config = ParsePerfettoConfigFromText(R"pb(
data_sources: { config: { name: "linux.some_system_ds" } }
data_sources: { config: { name: "linux.ftrace" } }
)pb");
EXPECT_TRUE(AdaptPerfettoConfigForChrome(
&perfetto_config, false, false,
perfetto::protos::gen::ChromeConfig::USER_INITIATED, true));
// System data sources are not adapted.
for (auto& ds : perfetto_config.data_sources()) {
EXPECT_FALSE(ds.config().has_chrome_config());
}
}
TEST_F(AdaptPerfettoConfigForChromeTest, EnableSystemBackend_Chrome) {
auto perfetto_config = ParsePerfettoConfigFromText(R"pb(
data_sources: {
config: {
name: "org.chromium.trace_event"
track_event_config: {
enabled_categories: [ "foo", "__metadata" ]
disabled_categories: [ "*" ]
}
}
}
data_sources: {
config: {
name: "track_event"
track_event_config: {
enabled_categories: [ "foo", "__metadata" ]
disabled_categories: [ "*" ]
}
}
}
data_sources: { config: { name: "org.chromium.trace_metadata" } }
)pb");
EXPECT_TRUE(AdaptPerfettoConfigForChrome(
&perfetto_config, false, false,
perfetto::protos::gen::ChromeConfig::USER_INITIATED, true));
for (auto& ds : perfetto_config.data_sources()) {
EXPECT_TRUE(ds.config().has_chrome_config());
}
}
} // namespace tracing