Skip to content

Commit 34f9efb

Browse files
[TrackEvent] Add tests for upcoming API changes (#1484)
This adds TrackEvent tests in preparation for API changes in #1432 Bug: chromium:260418655
1 parent 334b92a commit 34f9efb

File tree

1 file changed

+150
-24
lines changed

1 file changed

+150
-24
lines changed

src/tracing/test/api_integrationtest.cc

Lines changed: 150 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -109,11 +109,15 @@ PERFETTO_DEFINE_CATEGORIES(
109109
perfetto::Category("test")
110110
.SetDescription("This is a test category")
111111
.SetTags("tag"),
112+
perfetto::Category("test.verbose")
113+
.SetDescription("This is a debug test category")
114+
.SetTags("tag", "debug"),
112115
perfetto::Category("foo"),
113116
perfetto::Category("bar"),
114117
perfetto::Category("cat").SetTags("slow"),
115118
perfetto::Category("cat.verbose").SetTags("debug"),
116119
perfetto::Category("cat-with-dashes"),
120+
perfetto::Category("slow_category").SetTags("slow"),
117121
perfetto::Category::Group("foo,bar"),
118122
perfetto::Category::Group("baz,bar,quux"),
119123
perfetto::Category::Group("red,green,blue,foo"),
@@ -1687,20 +1691,23 @@ TEST_P(PerfettoApiTest, TrackEventDescriptor) {
16871691

16881692
// Check that the advertised categories match PERFETTO_DEFINE_CATEGORIES (see
16891693
// above).
1690-
EXPECT_EQ(7, desc.available_categories_size());
1694+
EXPECT_EQ(9, desc.available_categories_size());
16911695
EXPECT_EQ("test", desc.available_categories()[0].name());
16921696
EXPECT_EQ("This is a test category",
16931697
desc.available_categories()[0].description());
16941698
EXPECT_EQ("tag", desc.available_categories()[0].tags()[0]);
1695-
EXPECT_EQ("foo", desc.available_categories()[1].name());
1696-
EXPECT_EQ("bar", desc.available_categories()[2].name());
1697-
EXPECT_EQ("cat", desc.available_categories()[3].name());
1698-
EXPECT_EQ("slow", desc.available_categories()[3].tags()[0]);
1699-
EXPECT_EQ("cat.verbose", desc.available_categories()[4].name());
1700-
EXPECT_EQ("debug", desc.available_categories()[4].tags()[0]);
1701-
EXPECT_EQ("cat-with-dashes", desc.available_categories()[5].name());
1702-
EXPECT_EQ("disabled-by-default-cat", desc.available_categories()[6].name());
1703-
EXPECT_EQ("slow", desc.available_categories()[6].tags()[0]);
1699+
EXPECT_EQ("test.verbose", desc.available_categories()[1].name());
1700+
EXPECT_EQ("foo", desc.available_categories()[2].name());
1701+
EXPECT_EQ("bar", desc.available_categories()[3].name());
1702+
EXPECT_EQ("cat", desc.available_categories()[4].name());
1703+
EXPECT_EQ("slow", desc.available_categories()[4].tags()[0]);
1704+
EXPECT_EQ("cat.verbose", desc.available_categories()[5].name());
1705+
EXPECT_EQ("debug", desc.available_categories()[5].tags()[0]);
1706+
EXPECT_EQ("cat-with-dashes", desc.available_categories()[6].name());
1707+
EXPECT_EQ("slow_category", desc.available_categories()[7].name());
1708+
EXPECT_EQ("slow", desc.available_categories()[7].tags()[0]);
1709+
EXPECT_EQ("disabled-by-default-cat", desc.available_categories()[8].name());
1710+
EXPECT_EQ("slow", desc.available_categories()[8].tags()[0]);
17041711
}
17051712

17061713
TEST_P(PerfettoApiTest, TrackEventSharedIncrementalState) {
@@ -3846,7 +3853,8 @@ TEST_P(PerfettoApiTest, TrackEventArgumentsNotEvaluatedWhenDisabled) {
38463853
}
38473854

38483855
TEST_P(PerfettoApiTest, TrackEventConfig) {
3849-
auto check_config = [&](perfetto::protos::gen::TrackEventConfig te_cfg) {
3856+
auto run_config = [&](perfetto::protos::gen::TrackEventConfig te_cfg,
3857+
auto check_fcn) {
38503858
perfetto::TraceConfig cfg;
38513859
cfg.set_duration_ms(500);
38523860
cfg.add_buffers()->set_size_kb(1024);
@@ -3857,6 +3865,8 @@ TEST_P(PerfettoApiTest, TrackEventConfig) {
38573865
auto* tracing_session = NewTrace(cfg);
38583866
tracing_session->get()->StartBlocking();
38593867

3868+
check_fcn();
3869+
38603870
TRACE_EVENT_BEGIN("foo", "FooEvent");
38613871
TRACE_EVENT_BEGIN("bar", "BarEvent");
38623872
TRACE_EVENT_BEGIN("foo,bar", "MultiFooBar");
@@ -3867,9 +3877,10 @@ TEST_P(PerfettoApiTest, TrackEventConfig) {
38673877
TRACE_EVENT_BEGIN("cat.verbose", "DebugEvent");
38683878
TRACE_EVENT_BEGIN("test", "TagEvent");
38693879
TRACE_EVENT_BEGIN(TRACE_DISABLED_BY_DEFAULT("cat"), "SlowDisabledEvent");
3870-
TRACE_EVENT_BEGIN("dynamic,foo", "DynamicGroupFooEvent");
3871-
perfetto::DynamicCategory dyn{"dynamic,bar"};
3872-
TRACE_EVENT_BEGIN(dyn, "DynamicGroupBarEvent");
3880+
perfetto::DynamicCategory dyn_foo{"dynamic,foo"};
3881+
TRACE_EVENT_BEGIN(dyn_foo, "DynamicGroupFooEvent");
3882+
perfetto::DynamicCategory dyn_bar{"dynamic,bar"};
3883+
TRACE_EVENT_BEGIN(dyn_bar, "DynamicGroupBarEvent");
38733884

38743885
auto slices = StopSessionAndReadSlicesFromTrace(tracing_session);
38753886
tracing_session->session.reset();
@@ -3879,7 +3890,16 @@ TEST_P(PerfettoApiTest, TrackEventConfig) {
38793890
// Empty config should enable all categories except slow ones.
38803891
{
38813892
perfetto::protos::gen::TrackEventConfig te_cfg;
3882-
auto slices = check_config(te_cfg);
3893+
auto slices = run_config(te_cfg, []() {
3894+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("foo"));
3895+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("bar"));
3896+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("foo,bar"));
3897+
perfetto::DynamicCategory dyn{"dynamic"};
3898+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED(dyn));
3899+
EXPECT_FALSE(
3900+
TRACE_EVENT_CATEGORY_ENABLED(TRACE_DISABLED_BY_DEFAULT("cat")));
3901+
EXPECT_FALSE(TRACE_EVENT_CATEGORY_ENABLED("cat.verbose"));
3902+
});
38833903
EXPECT_THAT(
38843904
slices,
38853905
ElementsAre("B:foo.FooEvent", "B:bar.BarEvent", "B:foo,bar.MultiFooBar",
@@ -3894,7 +3914,13 @@ TEST_P(PerfettoApiTest, TrackEventConfig) {
38943914
perfetto::protos::gen::TrackEventConfig te_cfg;
38953915
te_cfg.add_disabled_categories("*");
38963916
te_cfg.add_enabled_categories("foo");
3897-
auto slices = check_config(te_cfg);
3917+
auto slices = run_config(te_cfg, []() {
3918+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("foo"));
3919+
EXPECT_FALSE(TRACE_EVENT_CATEGORY_ENABLED("bar"));
3920+
perfetto::DynamicCategory dyn{"dynamic"};
3921+
EXPECT_FALSE(TRACE_EVENT_CATEGORY_ENABLED(dyn));
3922+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("foo,bar"));
3923+
});
38983924
EXPECT_THAT(slices, ElementsAre("B:foo.FooEvent", "B:foo,bar.MultiFooBar",
38993925
"B:red,green,blue,foo.MultiFoo",
39003926
"B:$dynamic,$foo.DynamicGroupFooEvent"));
@@ -3905,7 +3931,14 @@ TEST_P(PerfettoApiTest, TrackEventConfig) {
39053931
perfetto::protos::gen::TrackEventConfig te_cfg;
39063932
te_cfg.add_disabled_categories("*");
39073933
te_cfg.add_enabled_categories("dynamic");
3908-
auto slices = check_config(te_cfg);
3934+
auto slices = run_config(te_cfg, []() {
3935+
EXPECT_FALSE(TRACE_EVENT_CATEGORY_ENABLED("foo"));
3936+
perfetto::DynamicCategory dyn{"dynamic"};
3937+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED(dyn));
3938+
EXPECT_FALSE(TRACE_EVENT_CATEGORY_ENABLED("foo,bar"));
3939+
perfetto::DynamicCategory dyn_bar{"dynamic,bar"};
3940+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED(dyn_bar));
3941+
});
39093942
EXPECT_THAT(slices, ElementsAre("B:$dynamic,$foo.DynamicGroupFooEvent",
39103943
"B:$dynamic,$bar.DynamicGroupBarEvent"));
39113944
}
@@ -3917,7 +3950,17 @@ TEST_P(PerfettoApiTest, TrackEventConfig) {
39173950
te_cfg.add_enabled_categories("foo");
39183951
te_cfg.add_enabled_categories("baz");
39193952
te_cfg.add_enabled_categories("bar");
3920-
auto slices = check_config(te_cfg);
3953+
auto slices = run_config(te_cfg, []() {
3954+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("foo"));
3955+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("bar"));
3956+
EXPECT_FALSE(TRACE_EVENT_CATEGORY_ENABLED("test"));
3957+
perfetto::DynamicCategory dyn{"dynamic"};
3958+
EXPECT_FALSE(TRACE_EVENT_CATEGORY_ENABLED(dyn));
3959+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("foo,bar"));
3960+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("baz,bar,quux"));
3961+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("red,green,blue,foo"));
3962+
EXPECT_FALSE(TRACE_EVENT_CATEGORY_ENABLED("red,green,blue,yellow"));
3963+
});
39213964
EXPECT_THAT(
39223965
slices,
39233966
ElementsAre("B:foo.FooEvent", "B:bar.BarEvent", "B:foo,bar.MultiFooBar",
@@ -3930,7 +3973,12 @@ TEST_P(PerfettoApiTest, TrackEventConfig) {
39303973
{
39313974
perfetto::protos::gen::TrackEventConfig te_cfg;
39323975
te_cfg.add_enabled_categories("*");
3933-
auto slices = check_config(te_cfg);
3976+
auto slices = run_config(te_cfg, []() {
3977+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("foo"));
3978+
EXPECT_FALSE(
3979+
TRACE_EVENT_CATEGORY_ENABLED(TRACE_DISABLED_BY_DEFAULT("cat")));
3980+
EXPECT_FALSE(TRACE_EVENT_CATEGORY_ENABLED("cat.verbose"));
3981+
});
39343982
EXPECT_THAT(
39353983
slices,
39363984
ElementsAre("B:foo.FooEvent", "B:bar.BarEvent", "B:foo,bar.MultiFooBar",
@@ -3945,7 +3993,11 @@ TEST_P(PerfettoApiTest, TrackEventConfig) {
39453993
perfetto::protos::gen::TrackEventConfig te_cfg;
39463994
te_cfg.add_disabled_categories("*");
39473995
te_cfg.add_enabled_categories("fo*");
3948-
auto slices = check_config(te_cfg);
3996+
auto slices = run_config(te_cfg, []() {
3997+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("foo"));
3998+
EXPECT_FALSE(TRACE_EVENT_CATEGORY_ENABLED("bar"));
3999+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("foo,bar"));
4000+
});
39494001
EXPECT_THAT(slices, ElementsAre("B:foo.FooEvent", "B:foo,bar.MultiFooBar",
39504002
"B:red,green,blue,foo.MultiFoo",
39514003
"B:$dynamic,$foo.DynamicGroupFooEvent"));
@@ -3956,7 +4008,10 @@ TEST_P(PerfettoApiTest, TrackEventConfig) {
39564008
perfetto::protos::gen::TrackEventConfig te_cfg;
39574009
te_cfg.add_disabled_categories("*");
39584010
te_cfg.add_enabled_tags("tag");
3959-
auto slices = check_config(te_cfg);
4011+
auto slices = run_config(te_cfg, []() {
4012+
EXPECT_FALSE(TRACE_EVENT_CATEGORY_ENABLED("foo"));
4013+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("test"));
4014+
});
39604015
EXPECT_THAT(slices, ElementsAre("B:test.TagEvent"));
39614016
}
39624017

@@ -3965,7 +4020,10 @@ TEST_P(PerfettoApiTest, TrackEventConfig) {
39654020
perfetto::protos::gen::TrackEventConfig te_cfg;
39664021
te_cfg.add_disabled_categories("*");
39674022
te_cfg.add_enabled_tags("slow");
3968-
auto slices = check_config(te_cfg);
4023+
auto slices = run_config(te_cfg, []() {
4024+
EXPECT_FALSE(TRACE_EVENT_CATEGORY_ENABLED("foo"));
4025+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("cat"));
4026+
});
39694027
EXPECT_THAT(slices,
39704028
ElementsAre("B:cat.SlowEvent",
39714029
"B:disabled-by-default-cat.SlowDisabledEvent"));
@@ -3976,7 +4034,11 @@ TEST_P(PerfettoApiTest, TrackEventConfig) {
39764034
perfetto::protos::gen::TrackEventConfig te_cfg;
39774035
te_cfg.add_disabled_categories("*");
39784036
te_cfg.add_enabled_categories("disabled-by-default-*");
3979-
auto slices = check_config(te_cfg);
4037+
auto slices = run_config(te_cfg, []() {
4038+
EXPECT_FALSE(TRACE_EVENT_CATEGORY_ENABLED("foo"));
4039+
EXPECT_TRUE(
4040+
TRACE_EVENT_CATEGORY_ENABLED(TRACE_DISABLED_BY_DEFAULT("cat")));
4041+
});
39804042
EXPECT_THAT(slices,
39814043
ElementsAre("B:disabled-by-default-cat.SlowDisabledEvent"));
39824044
}
@@ -3987,7 +4049,13 @@ TEST_P(PerfettoApiTest, TrackEventConfig) {
39874049
te_cfg.add_enabled_categories("*");
39884050
te_cfg.add_enabled_tags("slow");
39894051
te_cfg.add_enabled_tags("debug");
3990-
auto slices = check_config(te_cfg);
4052+
auto slices = run_config(te_cfg, []() {
4053+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("foo"));
4054+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("cat"));
4055+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("cat.verbose"));
4056+
EXPECT_TRUE(
4057+
TRACE_EVENT_CATEGORY_ENABLED(TRACE_DISABLED_BY_DEFAULT("cat")));
4058+
});
39914059
EXPECT_THAT(
39924060
slices,
39934061
ElementsAre("B:foo.FooEvent", "B:bar.BarEvent", "B:foo,bar.MultiFooBar",
@@ -3998,6 +4066,64 @@ TEST_P(PerfettoApiTest, TrackEventConfig) {
39984066
"B:$dynamic,$foo.DynamicGroupFooEvent",
39994067
"B:$dynamic,$bar.DynamicGroupBarEvent"));
40004068
}
4069+
4070+
// Disable explicit category.
4071+
{
4072+
perfetto::protos::gen::TrackEventConfig te_cfg;
4073+
te_cfg.add_enabled_categories("*");
4074+
te_cfg.add_disabled_categories("foo");
4075+
run_config(te_cfg, []() {
4076+
EXPECT_FALSE(TRACE_EVENT_CATEGORY_ENABLED("foo"));
4077+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("bar"));
4078+
});
4079+
}
4080+
4081+
// Disable category with a pattern.
4082+
// TODO(crbug.com/260418655): Fix once API changes are announced.
4083+
{
4084+
perfetto::protos::gen::TrackEventConfig te_cfg;
4085+
te_cfg.add_enabled_categories("*");
4086+
te_cfg.add_disabled_categories("fo*");
4087+
run_config(te_cfg, []() {
4088+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("foo"));
4089+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("bar"));
4090+
});
4091+
}
4092+
4093+
// Enable tag and disable category with a pattern.
4094+
{
4095+
perfetto::protos::gen::TrackEventConfig te_cfg;
4096+
te_cfg.add_enabled_categories("slow_*");
4097+
te_cfg.add_disabled_tags("slow");
4098+
run_config(te_cfg, []() {
4099+
EXPECT_FALSE(TRACE_EVENT_CATEGORY_ENABLED("slow_category"));
4100+
});
4101+
}
4102+
4103+
// Enable tag and disable category explicitly.
4104+
// TODO(crbug.com/260418655): Fix once API changes are announced.
4105+
{
4106+
perfetto::protos::gen::TrackEventConfig te_cfg;
4107+
te_cfg.add_disabled_categories("slow_category");
4108+
te_cfg.add_enabled_tags("slow");
4109+
te_cfg.add_disabled_categories("*");
4110+
run_config(te_cfg, []() {
4111+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("slow_category"));
4112+
});
4113+
}
4114+
4115+
// Enable tag and disable another.
4116+
// TODO(crbug.com/260418655): Fix once API changes are announced.
4117+
{
4118+
perfetto::protos::gen::TrackEventConfig te_cfg;
4119+
te_cfg.add_enabled_tags("tag");
4120+
te_cfg.add_disabled_tags("slow");
4121+
te_cfg.add_disabled_categories("*");
4122+
run_config(te_cfg, []() {
4123+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("test"));
4124+
EXPECT_TRUE(TRACE_EVENT_CATEGORY_ENABLED("test.verbose"));
4125+
});
4126+
}
40014127
}
40024128

40034129
TEST_P(PerfettoApiTest, OneDataSourceOneEvent) {

0 commit comments

Comments
 (0)