| Index: base/trace_event/trace_event_unittest.cc
|
| diff --git a/base/trace_event/trace_event_unittest.cc b/base/trace_event/trace_event_unittest.cc
|
| index d03224301cdffd3367bf85165832ff2e901f7152..2449d54cf63b1f2cc5cba2d732c3afd242bc7b4b 100644
|
| --- a/base/trace_event/trace_event_unittest.cc
|
| +++ b/base/trace_event/trace_event_unittest.cc
|
| @@ -48,6 +48,8 @@ const char kAsyncIdStr[] = "0x5";
|
| const int kAsyncId2 = 6;
|
| const char kAsyncId2Str[] = "0x6";
|
|
|
| +const char kRecordAllCategoryFilter[] = "*";
|
| +
|
| class TraceEventTestFixture : public testing::Test {
|
| public:
|
| void OnTraceDataCollected(
|
| @@ -79,10 +81,8 @@ class TraceEventTestFixture : public testing::Test {
|
|
|
| void BeginSpecificTrace(const std::string& filter) {
|
| event_watch_notification_ = 0;
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter(filter),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig(filter, ""),
|
| + TraceLog::RECORDING_MODE);
|
| }
|
|
|
| void EndTraceAndFlush() {
|
| @@ -168,8 +168,8 @@ void TraceEventTestFixture::OnTraceDataCollected(
|
| trace_buffer_.Finish();
|
|
|
| scoped_ptr<Value> root;
|
| - root.reset(base::JSONReader::Read(json_output_.json_output,
|
| - JSON_PARSE_RFC | JSON_DETACHABLE_CHILDREN));
|
| + root.reset(base::JSONReader::DeprecatedRead(
|
| + json_output_.json_output, JSON_PARSE_RFC | JSON_DETACHABLE_CHILDREN));
|
|
|
| if (!root.get()) {
|
| LOG(ERROR) << json_output_.json_output;
|
| @@ -872,10 +872,8 @@ void ValidateInstantEventPresentOnEveryThread(const ListValue& trace_parsed,
|
|
|
| // Simple Test for emitting data and validating it was received.
|
| TEST_F(TraceEventTestFixture, DataCaptured) {
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
|
| + TraceLog::RECORDING_MODE);
|
|
|
| TraceWithAllMacroVariants(NULL);
|
|
|
| @@ -897,10 +895,8 @@ TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) {
|
|
|
| EXPECT_CALL(observer, OnTraceLogEnabled())
|
| .Times(1);
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
|
| + TraceLog::RECORDING_MODE);
|
| testing::Mock::VerifyAndClear(&observer);
|
| EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
|
|
|
| @@ -910,10 +906,8 @@ TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) {
|
| }
|
|
|
| TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) {
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
|
| + TraceLog::RECORDING_MODE);
|
|
|
| testing::StrictMock<MockEnabledStateChangedObserver> observer;
|
| TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
|
| @@ -922,10 +916,8 @@ TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) {
|
| .Times(0);
|
| EXPECT_CALL(observer, OnTraceLogDisabled())
|
| .Times(0);
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
|
| + TraceLog::RECORDING_MODE);
|
| testing::Mock::VerifyAndClear(&observer);
|
| EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
|
|
|
| @@ -936,15 +928,9 @@ TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) {
|
| }
|
|
|
| TEST_F(TraceEventTestFixture, EnabledObserverFiresOnFirstDisable) {
|
| - CategoryFilter cf_inc_all("*");
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - cf_inc_all,
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - cf_inc_all,
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceConfig tc_inc_all("*", "");
|
| + TraceLog::GetInstance()->SetEnabled(tc_inc_all, TraceLog::RECORDING_MODE);
|
| + TraceLog::GetInstance()->SetEnabled(tc_inc_all, TraceLog::RECORDING_MODE);
|
|
|
| testing::StrictMock<MockEnabledStateChangedObserver> observer;
|
| TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
|
| @@ -962,10 +948,8 @@ TEST_F(TraceEventTestFixture, EnabledObserverFiresOnFirstDisable) {
|
| }
|
|
|
| TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) {
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
|
| + TraceLog::RECORDING_MODE);
|
|
|
| MockEnabledStateChangedObserver observer;
|
| TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
|
| @@ -1000,10 +984,8 @@ TEST_F(TraceEventTestFixture, ObserversFireAfterStateChange) {
|
| AfterStateChangeEnabledStateObserver observer;
|
| TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
|
|
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
|
| + TraceLog::RECORDING_MODE);
|
| EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
|
|
|
| TraceLog::GetInstance()->SetDisabled();
|
| @@ -1034,10 +1016,8 @@ TEST_F(TraceEventTestFixture, SelfRemovingObserver) {
|
| TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
|
| EXPECT_EQ(1u, TraceLog::GetInstance()->GetObserverCountForTest());
|
|
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
|
| + TraceLog::RECORDING_MODE);
|
| TraceLog::GetInstance()->SetDisabled();
|
| // The observer removed itself on disable.
|
| EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest());
|
| @@ -1051,10 +1031,8 @@ bool IsNewTrace() {
|
|
|
| TEST_F(TraceEventTestFixture, NewTraceRecording) {
|
| ASSERT_FALSE(IsNewTrace());
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
|
| + TraceLog::RECORDING_MODE);
|
| // First call to IsNewTrace() should succeed. But, the second shouldn't.
|
| ASSERT_TRUE(IsNewTrace());
|
| ASSERT_FALSE(IsNewTrace());
|
| @@ -1065,10 +1043,8 @@ TEST_F(TraceEventTestFixture, NewTraceRecording) {
|
|
|
| // Start another trace. IsNewTrace() should become true again, briefly, as
|
| // before.
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
|
| + TraceLog::RECORDING_MODE);
|
| ASSERT_TRUE(IsNewTrace());
|
| ASSERT_FALSE(IsNewTrace());
|
|
|
| @@ -1123,10 +1099,8 @@ TEST_F(TraceEventTestFixture, Categories) {
|
| // Include nonexistent category -> no events
|
| Clear();
|
| included_categories.clear();
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("not_found823564786"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig("not_found823564786", ""),
|
| + TraceLog::RECORDING_MODE);
|
| TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| @@ -1136,10 +1110,8 @@ TEST_F(TraceEventTestFixture, Categories) {
|
| // Include existent category -> only events of that category
|
| Clear();
|
| included_categories.clear();
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("inc"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig("inc", ""),
|
| + TraceLog::RECORDING_MODE);
|
| TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| @@ -1151,9 +1123,8 @@ TEST_F(TraceEventTestFixture, Categories) {
|
| Clear();
|
| included_categories.clear();
|
| TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("inc_wildcard_*,inc_wildchar_?_end"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceConfig("inc_wildcard_*,inc_wildchar_?_end", ""),
|
| + TraceLog::RECORDING_MODE);
|
| TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included",
|
| TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("inc_wildcard_", "included", TRACE_EVENT_SCOPE_THREAD);
|
| @@ -1181,10 +1152,8 @@ TEST_F(TraceEventTestFixture, Categories) {
|
|
|
| // Exclude nonexistent category -> all events
|
| Clear();
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("-not_found823564786"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig("-not_found823564786", ""),
|
| + TraceLog::RECORDING_MODE);
|
| TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("category1,category2", "name", TRACE_EVENT_SCOPE_THREAD);
|
| @@ -1195,10 +1164,8 @@ TEST_F(TraceEventTestFixture, Categories) {
|
|
|
| // Exclude existent category -> only events of other categories
|
| Clear();
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("-inc"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig("-inc", ""),
|
| + TraceLog::RECORDING_MODE);
|
| TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("inc2,inc", "name", TRACE_EVENT_SCOPE_THREAD);
|
| @@ -1212,9 +1179,8 @@ TEST_F(TraceEventTestFixture, Categories) {
|
| // Exclude existent wildcard -> all categories not matching wildcard
|
| Clear();
|
| TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("-inc_wildcard_*,-inc_wildchar_?_end"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceConfig("-inc_wildcard_*,-inc_wildchar_?_end", ""),
|
| + TraceLog::RECORDING_MODE);
|
| TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc",
|
| TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc",
|
| @@ -1733,22 +1699,16 @@ TEST_F(TraceEventTestFixture, TracingIsLazy) {
|
|
|
| TEST_F(TraceEventTestFixture, TraceEnableDisable) {
|
| TraceLog* trace_log = TraceLog::GetInstance();
|
| - CategoryFilter cf_inc_all("*");
|
| - trace_log->SetEnabled(cf_inc_all,
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceConfig tc_inc_all("*", "");
|
| + trace_log->SetEnabled(tc_inc_all, TraceLog::RECORDING_MODE);
|
| EXPECT_TRUE(trace_log->IsEnabled());
|
| trace_log->SetDisabled();
|
| EXPECT_FALSE(trace_log->IsEnabled());
|
|
|
| - trace_log->SetEnabled(cf_inc_all,
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + trace_log->SetEnabled(tc_inc_all, TraceLog::RECORDING_MODE);
|
| EXPECT_TRUE(trace_log->IsEnabled());
|
| const std::vector<std::string> empty;
|
| - trace_log->SetEnabled(CategoryFilter(),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + trace_log->SetEnabled(TraceConfig(), TraceLog::RECORDING_MODE);
|
| EXPECT_TRUE(trace_log->IsEnabled());
|
| trace_log->SetDisabled();
|
| EXPECT_FALSE(trace_log->IsEnabled());
|
| @@ -1758,70 +1718,59 @@ TEST_F(TraceEventTestFixture, TraceEnableDisable) {
|
|
|
| TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) {
|
| TraceLog* trace_log = TraceLog::GetInstance();
|
| - trace_log->SetEnabled(CategoryFilter("foo,bar"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + trace_log->SetEnabled(TraceConfig("foo,bar", ""), TraceLog::RECORDING_MODE);
|
| EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo"));
|
| EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar"));
|
| EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz"));
|
| - trace_log->SetEnabled(CategoryFilter("foo2"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + trace_log->SetEnabled(TraceConfig("foo2", ""), TraceLog::RECORDING_MODE);
|
| EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo2"));
|
| EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz"));
|
| // The "" becomes the default catergory set when applied.
|
| - trace_log->SetEnabled(CategoryFilter(),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + trace_log->SetEnabled(TraceConfig(), TraceLog::RECORDING_MODE);
|
| EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo"));
|
| EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz"));
|
| - EXPECT_STREQ("-*Debug,-*Test",
|
| - trace_log->GetCurrentCategoryFilter().ToString().c_str());
|
| + EXPECT_STREQ(
|
| + "-*Debug,-*Test",
|
| + trace_log->GetCurrentTraceConfig().ToCategoryFilterString().c_str());
|
| trace_log->SetDisabled();
|
| trace_log->SetDisabled();
|
| trace_log->SetDisabled();
|
| EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo"));
|
| EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz"));
|
|
|
| - trace_log->SetEnabled(CategoryFilter("-foo,-bar"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + trace_log->SetEnabled(TraceConfig("-foo,-bar", ""), TraceLog::RECORDING_MODE);
|
| EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo"));
|
| EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz"));
|
| - trace_log->SetEnabled(CategoryFilter("moo"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + trace_log->SetEnabled(TraceConfig("moo", ""), TraceLog::RECORDING_MODE);
|
| EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz"));
|
| EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("moo"));
|
| EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo"));
|
| - EXPECT_STREQ("-foo,-bar",
|
| - trace_log->GetCurrentCategoryFilter().ToString().c_str());
|
| + EXPECT_STREQ(
|
| + "-foo,-bar",
|
| + trace_log->GetCurrentTraceConfig().ToCategoryFilterString().c_str());
|
| trace_log->SetDisabled();
|
| trace_log->SetDisabled();
|
|
|
| // Make sure disabled categories aren't cleared if we set in the second.
|
| - trace_log->SetEnabled(CategoryFilter("disabled-by-default-cc,foo"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + trace_log->SetEnabled(TraceConfig("disabled-by-default-cc,foo", ""),
|
| + TraceLog::RECORDING_MODE);
|
| EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("bar"));
|
| - trace_log->SetEnabled(CategoryFilter("disabled-by-default-gpu"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + trace_log->SetEnabled(TraceConfig("disabled-by-default-gpu", ""),
|
| + TraceLog::RECORDING_MODE);
|
| EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-cc"));
|
| EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-gpu"));
|
| EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar"));
|
| - EXPECT_STREQ("disabled-by-default-cc,disabled-by-default-gpu",
|
| - trace_log->GetCurrentCategoryFilter().ToString().c_str());
|
| + EXPECT_STREQ(
|
| + "disabled-by-default-cc,disabled-by-default-gpu",
|
| + trace_log->GetCurrentTraceConfig().ToCategoryFilterString().c_str());
|
| trace_log->SetDisabled();
|
| trace_log->SetDisabled();
|
| }
|
|
|
| TEST_F(TraceEventTestFixture, TraceSampling) {
|
| - TraceOptions trace_options(RECORD_UNTIL_FULL);
|
| - trace_options.enable_sampling = true;
|
| - TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - trace_options);
|
| + TraceLog::GetInstance()->SetEnabled(
|
| + TraceConfig(kRecordAllCategoryFilter, "record-until-full,enable-sampling"),
|
| + TraceLog::RECORDING_MODE);
|
|
|
| TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Stuff");
|
| TraceLog::GetInstance()->WaitSamplingEventForTesting();
|
| @@ -1836,11 +1785,9 @@ TEST_F(TraceEventTestFixture, TraceSampling) {
|
| }
|
|
|
| TEST_F(TraceEventTestFixture, TraceSamplingScope) {
|
| - TraceOptions trace_options(RECORD_UNTIL_FULL);
|
| - trace_options.enable_sampling = true;
|
| - TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - trace_options);
|
| + TraceLog::GetInstance()->SetEnabled(
|
| + TraceConfig(kRecordAllCategoryFilter, "record-until-full,enable-sampling"),
|
| + TraceLog::RECORDING_MODE);
|
|
|
| TRACE_EVENT_SCOPED_SAMPLING_STATE("AAA", "name");
|
| TraceLog::GetInstance()->WaitSamplingEventForTesting();
|
| @@ -1871,12 +1818,9 @@ TEST_F(TraceEventTestFixture, TraceSamplingScope) {
|
| }
|
|
|
| TEST_F(TraceEventTestFixture, TraceContinuousSampling) {
|
| - TraceOptions trace_options(RECORD_UNTIL_FULL);
|
| - trace_options.enable_sampling = true;
|
| -
|
| - TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
|
| - TraceLog::MONITORING_MODE,
|
| - trace_options);
|
| + TraceLog::GetInstance()->SetEnabled(
|
| + TraceConfig(kRecordAllCategoryFilter, "record-until-full,enable-sampling"),
|
| + TraceLog::MONITORING_MODE);
|
|
|
| TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "AAA");
|
| TraceLog::GetInstance()->WaitSamplingEventForTesting();
|
| @@ -1933,10 +1877,8 @@ class MyData : public ConvertableToTraceFormat {
|
| };
|
|
|
| TEST_F(TraceEventTestFixture, ConvertableTypes) {
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
|
| + TraceLog::RECORDING_MODE);
|
|
|
| scoped_refptr<ConvertableToTraceFormat> data(new MyData());
|
| scoped_refptr<ConvertableToTraceFormat> data1(new MyData());
|
| @@ -2040,10 +1982,8 @@ TEST_F(TraceEventTestFixture, ConvertableTypes) {
|
| }
|
|
|
| TEST_F(TraceEventTestFixture, PrimitiveArgs) {
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
|
| + TraceLog::RECORDING_MODE);
|
|
|
| TRACE_EVENT1("foo", "event1", "int_one", 1);
|
| TRACE_EVENT1("foo", "event2", "int_neg_ten", -10);
|
| @@ -2205,6 +2145,51 @@ TEST_F(TraceEventTestFixture, PrimitiveArgs) {
|
| EXPECT_EQ(1, int_value);
|
| }
|
|
|
| +namespace {
|
| +
|
| +bool IsTraceEventArgsWhitelisted(const char* category_group_name,
|
| + const char* event_name) {
|
| + if (MatchPattern(category_group_name, "toplevel") &&
|
| + MatchPattern(event_name, "*")) {
|
| + return true;
|
| + }
|
| +
|
| + return false;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +TEST_F(TraceEventTestFixture, ArgsWhitelisting) {
|
| + TraceLog::GetInstance()->SetArgumentFilterPredicate(
|
| + base::Bind(&IsTraceEventArgsWhitelisted));
|
| +
|
| + TraceLog::GetInstance()->SetEnabled(
|
| + TraceConfig(kRecordAllCategoryFilter, "enable-argument-filter"),
|
| + TraceLog::RECORDING_MODE);
|
| +
|
| + TRACE_EVENT1("toplevel", "event1", "int_one", 1);
|
| + TRACE_EVENT1("whitewashed", "event2", "int_two", 1);
|
| + EndTraceAndFlush();
|
| +
|
| + const DictionaryValue* args_dict = NULL;
|
| + DictionaryValue* dict = NULL;
|
| + int int_value;
|
| +
|
| + dict = FindNamePhase("event1", "X");
|
| + ASSERT_TRUE(dict);
|
| + dict->GetDictionary("args", &args_dict);
|
| + ASSERT_TRUE(args_dict);
|
| + EXPECT_TRUE(args_dict->GetInteger("int_one", &int_value));
|
| + EXPECT_EQ(1, int_value);
|
| +
|
| + dict = FindNamePhase("event2", "X");
|
| + ASSERT_TRUE(dict);
|
| + dict->GetDictionary("args", &args_dict);
|
| + ASSERT_TRUE(args_dict);
|
| + EXPECT_FALSE(args_dict->GetInteger("int_two", &int_value));
|
| + EXPECT_TRUE(args_dict->GetInteger("stripped", &int_value));
|
| +}
|
| +
|
| class TraceEventCallbackTest : public TraceEventTestFixture {
|
| public:
|
| void SetUp() override {
|
| @@ -2250,10 +2235,10 @@ class TraceEventCallbackTest : public TraceEventTestFixture {
|
| std::vector<std::string> collected_events_categories_;
|
| std::vector<std::string> collected_events_names_;
|
| std::vector<unsigned char> collected_events_phases_;
|
| - std::vector<TimeTicks> collected_events_timestamps_;
|
| + std::vector<TraceTicks> collected_events_timestamps_;
|
|
|
| static TraceEventCallbackTest* s_instance;
|
| - static void Callback(TimeTicks timestamp,
|
| + static void Callback(TraceTicks timestamp,
|
| char phase,
|
| const unsigned char* category_group_enabled,
|
| const char* name,
|
| @@ -2276,7 +2261,7 @@ TraceEventCallbackTest* TraceEventCallbackTest::s_instance;
|
| TEST_F(TraceEventCallbackTest, TraceEventCallback) {
|
| TRACE_EVENT_INSTANT0("all", "before enable", TRACE_EVENT_SCOPE_THREAD);
|
| TraceLog::GetInstance()->SetEventCallbackEnabled(
|
| - CategoryFilter("*"), Callback);
|
| + TraceConfig(kRecordAllCategoryFilter, ""), Callback);
|
| TRACE_EVENT_INSTANT0("all", "event1", TRACE_EVENT_SCOPE_GLOBAL);
|
| TRACE_EVENT_INSTANT0("all", "event2", TRACE_EVENT_SCOPE_GLOBAL);
|
| {
|
| @@ -2304,15 +2289,13 @@ TEST_F(TraceEventCallbackTest, TraceEventCallback) {
|
| }
|
|
|
| TEST_F(TraceEventCallbackTest, TraceEventCallbackWhileFull) {
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""),
|
| + TraceLog::RECORDING_MODE);
|
| do {
|
| TRACE_EVENT_INSTANT0("all", "badger badger", TRACE_EVENT_SCOPE_GLOBAL);
|
| } while (!TraceLog::GetInstance()->BufferIsFull());
|
| - TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"),
|
| - Callback);
|
| + TraceLog::GetInstance()->SetEventCallbackEnabled(
|
| + TraceConfig(kRecordAllCategoryFilter, ""), Callback);
|
| TRACE_EVENT_INSTANT0("all", "a snake", TRACE_EVENT_SCOPE_GLOBAL);
|
| TraceLog::GetInstance()->SetEventCallbackDisabled();
|
| ASSERT_EQ(1u, collected_events_names_.size());
|
| @@ -2323,14 +2306,12 @@ TEST_F(TraceEventCallbackTest, TraceEventCallbackWhileFull) {
|
| TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording1) {
|
| TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
|
| TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
|
| - TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"),
|
| + TraceLog::GetInstance()->SetEventCallbackEnabled(TraceConfig("callback", ""),
|
| Callback);
|
| TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
|
| TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("recording"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig("recording", ""),
|
| + TraceLog::RECORDING_MODE);
|
| TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
|
| TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
|
| TraceLog::GetInstance()->SetEventCallbackDisabled();
|
| @@ -2348,14 +2329,12 @@ TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording1) {
|
| TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording2) {
|
| TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
|
| TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
|
| - TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"),
|
| + TraceLog::GetInstance()->SetEventCallbackEnabled(TraceConfig("callback", ""),
|
| Callback);
|
| TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
|
| TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("recording"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig("recording", ""),
|
| + TraceLog::RECORDING_MODE);
|
| TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
|
| TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
|
| EndTraceAndFlush();
|
| @@ -2373,13 +2352,11 @@ TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording2) {
|
| TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording3) {
|
| TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
|
| TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("recording"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig("recording", ""),
|
| + TraceLog::RECORDING_MODE);
|
| TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
|
| TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
|
| - TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"),
|
| + TraceLog::GetInstance()->SetEventCallbackEnabled(TraceConfig("callback", ""),
|
| Callback);
|
| TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
|
| TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
|
| @@ -2398,13 +2375,11 @@ TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording3) {
|
| TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording4) {
|
| TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
|
| TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
|
| - TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("recording"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceLog::GetInstance()->SetEnabled(TraceConfig("recording", ""),
|
| + TraceLog::RECORDING_MODE);
|
| TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
|
| TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
|
| - TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"),
|
| + TraceLog::GetInstance()->SetEventCallbackEnabled(TraceConfig("callback", ""),
|
| Callback);
|
| TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
|
| TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
|
| @@ -2420,14 +2395,12 @@ TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording4) {
|
| }
|
|
|
| TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecordingDuration) {
|
| - TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"),
|
| - Callback);
|
| + TraceLog::GetInstance()->SetEventCallbackEnabled(
|
| + TraceConfig(kRecordAllCategoryFilter, ""), Callback);
|
| {
|
| TRACE_EVENT0("callback", "duration1");
|
| TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + TraceConfig(kRecordAllCategoryFilter, ""), TraceLog::RECORDING_MODE);
|
| TRACE_EVENT0("callback", "duration2");
|
| EndTraceAndFlush();
|
| TRACE_EVENT0("callback", "duration3");
|
| @@ -2445,18 +2418,15 @@ TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecordingDuration) {
|
|
|
| TEST_F(TraceEventTestFixture, TraceBufferVectorReportFull) {
|
| TraceLog* trace_log = TraceLog::GetInstance();
|
| - trace_log->SetEnabled(CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions());
|
| + trace_log->SetEnabled(
|
| + TraceConfig(kRecordAllCategoryFilter, ""), TraceLog::RECORDING_MODE);
|
| trace_log->logged_events_.reset(
|
| trace_log->CreateTraceBufferVectorOfSize(100));
|
| do {
|
| TRACE_EVENT_BEGIN_WITH_ID_TID_AND_TIMESTAMP0(
|
| - "all", "with_timestamp", 0, 0,
|
| - TimeTicks::NowFromSystemTraceTime().ToInternalValue());
|
| + "all", "with_timestamp", 0, 0, TraceTicks::Now().ToInternalValue());
|
| TRACE_EVENT_END_WITH_ID_TID_AND_TIMESTAMP0(
|
| - "all", "with_timestamp", 0, 0,
|
| - TimeTicks::NowFromSystemTraceTime().ToInternalValue());
|
| + "all", "with_timestamp", 0, 0, TraceTicks::Now().ToInternalValue());
|
| } while (!trace_log->BufferIsFull());
|
|
|
| EndTraceAndFlush();
|
| @@ -2492,9 +2462,9 @@ TEST_F(TraceEventTestFixture, TraceBufferVectorReportFull) {
|
| }
|
|
|
| TEST_F(TraceEventTestFixture, TraceBufferRingBufferGetReturnChunk) {
|
| - TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions(RECORD_CONTINUOUSLY));
|
| + TraceLog::GetInstance()->SetEnabled(
|
| + TraceConfig(kRecordAllCategoryFilter, RECORD_CONTINUOUSLY),
|
| + TraceLog::RECORDING_MODE);
|
| TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer();
|
| size_t capacity = buffer->Capacity();
|
| size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize;
|
| @@ -2552,9 +2522,9 @@ TEST_F(TraceEventTestFixture, TraceBufferRingBufferGetReturnChunk) {
|
| }
|
|
|
| TEST_F(TraceEventTestFixture, TraceBufferRingBufferHalfIteration) {
|
| - TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions(RECORD_CONTINUOUSLY));
|
| + TraceLog::GetInstance()->SetEnabled(
|
| + TraceConfig(kRecordAllCategoryFilter, RECORD_CONTINUOUSLY),
|
| + TraceLog::RECORDING_MODE);
|
| TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer();
|
| size_t capacity = buffer->Capacity();
|
| size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize;
|
| @@ -2580,9 +2550,9 @@ TEST_F(TraceEventTestFixture, TraceBufferRingBufferHalfIteration) {
|
| }
|
|
|
| TEST_F(TraceEventTestFixture, TraceBufferRingBufferFullIteration) {
|
| - TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions(RECORD_CONTINUOUSLY));
|
| + TraceLog::GetInstance()->SetEnabled(
|
| + TraceConfig(kRecordAllCategoryFilter, RECORD_CONTINUOUSLY),
|
| + TraceLog::RECORDING_MODE);
|
| TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer();
|
| size_t capacity = buffer->Capacity();
|
| size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize;
|
| @@ -2607,113 +2577,14 @@ TEST_F(TraceEventTestFixture, TraceBufferRingBufferFullIteration) {
|
| }
|
|
|
| TEST_F(TraceEventTestFixture, TraceRecordAsMuchAsPossibleMode) {
|
| - TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions(RECORD_AS_MUCH_AS_POSSIBLE));
|
| + TraceLog::GetInstance()->SetEnabled(
|
| + TraceConfig(kRecordAllCategoryFilter, RECORD_AS_MUCH_AS_POSSIBLE),
|
| + TraceLog::RECORDING_MODE);
|
| TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer();
|
| EXPECT_EQ(512000000UL, buffer->Capacity());
|
| TraceLog::GetInstance()->SetDisabled();
|
| }
|
|
|
| -// Test the category filter.
|
| -TEST_F(TraceEventTestFixture, CategoryFilter) {
|
| - // Using the default filter.
|
| - CategoryFilter default_cf = CategoryFilter(
|
| - CategoryFilter::kDefaultCategoryFilterString);
|
| - std::string category_filter_str = default_cf.ToString();
|
| - EXPECT_STREQ("-*Debug,-*Test", category_filter_str.c_str());
|
| - EXPECT_TRUE(default_cf.IsCategoryGroupEnabled("not-excluded-category"));
|
| - EXPECT_FALSE(
|
| - default_cf.IsCategoryGroupEnabled("disabled-by-default-category"));
|
| - EXPECT_TRUE(default_cf.IsCategoryGroupEnabled("Category1,CategoryDebug"));
|
| - EXPECT_TRUE(default_cf.IsCategoryGroupEnabled("CategoryDebug,Category1"));
|
| - EXPECT_TRUE(default_cf.IsCategoryGroupEnabled("CategoryTest,Category2"));
|
| -
|
| - // Make sure that upon an empty string, we fall back to the default filter.
|
| - default_cf = CategoryFilter();
|
| - category_filter_str = default_cf.ToString();
|
| - EXPECT_STREQ("-*Debug,-*Test", category_filter_str.c_str());
|
| - EXPECT_TRUE(default_cf.IsCategoryGroupEnabled("not-excluded-category"));
|
| - EXPECT_TRUE(default_cf.IsCategoryGroupEnabled("Category1,CategoryDebug"));
|
| - EXPECT_TRUE(default_cf.IsCategoryGroupEnabled("CategoryDebug,Category1"));
|
| - EXPECT_TRUE(default_cf.IsCategoryGroupEnabled("CategoryTest,Category2"));
|
| -
|
| - // Using an arbitrary non-empty filter.
|
| - CategoryFilter cf("included,-excluded,inc_pattern*,-exc_pattern*");
|
| - category_filter_str = cf.ToString();
|
| - EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*",
|
| - category_filter_str.c_str());
|
| - EXPECT_TRUE(cf.IsCategoryGroupEnabled("included"));
|
| - EXPECT_TRUE(cf.IsCategoryGroupEnabled("inc_pattern_category"));
|
| - EXPECT_FALSE(cf.IsCategoryGroupEnabled("exc_pattern_category"));
|
| - EXPECT_FALSE(cf.IsCategoryGroupEnabled("excluded"));
|
| - EXPECT_FALSE(cf.IsCategoryGroupEnabled("not-excluded-nor-included"));
|
| - EXPECT_FALSE(cf.IsCategoryGroupEnabled("Category1,CategoryDebug"));
|
| - EXPECT_FALSE(cf.IsCategoryGroupEnabled("CategoryDebug,Category1"));
|
| - EXPECT_FALSE(cf.IsCategoryGroupEnabled("CategoryTest,Category2"));
|
| -
|
| - cf.Merge(default_cf);
|
| - category_filter_str = cf.ToString();
|
| - EXPECT_STREQ("-excluded,-exc_pattern*,-*Debug,-*Test",
|
| - category_filter_str.c_str());
|
| - cf.Clear();
|
| -
|
| - CategoryFilter reconstructed_cf(category_filter_str);
|
| - category_filter_str = reconstructed_cf.ToString();
|
| - EXPECT_STREQ("-excluded,-exc_pattern*,-*Debug,-*Test",
|
| - category_filter_str.c_str());
|
| -
|
| - // One included category.
|
| - CategoryFilter one_inc_cf("only_inc_cat");
|
| - category_filter_str = one_inc_cf.ToString();
|
| - EXPECT_STREQ("only_inc_cat", category_filter_str.c_str());
|
| -
|
| - // One excluded category.
|
| - CategoryFilter one_exc_cf("-only_exc_cat");
|
| - category_filter_str = one_exc_cf.ToString();
|
| - EXPECT_STREQ("-only_exc_cat", category_filter_str.c_str());
|
| -
|
| - // Enabling a disabled- category does not require all categories to be traced
|
| - // to be included.
|
| - CategoryFilter disabled_cat("disabled-by-default-cc,-excluded");
|
| - EXPECT_STREQ("disabled-by-default-cc,-excluded",
|
| - disabled_cat.ToString().c_str());
|
| - EXPECT_TRUE(disabled_cat.IsCategoryGroupEnabled("disabled-by-default-cc"));
|
| - EXPECT_TRUE(disabled_cat.IsCategoryGroupEnabled("some_other_group"));
|
| - EXPECT_FALSE(disabled_cat.IsCategoryGroupEnabled("excluded"));
|
| -
|
| - // Enabled a disabled- category and also including makes all categories to
|
| - // be traced require including.
|
| - CategoryFilter disabled_inc_cat("disabled-by-default-cc,included");
|
| - EXPECT_STREQ("included,disabled-by-default-cc",
|
| - disabled_inc_cat.ToString().c_str());
|
| - EXPECT_TRUE(
|
| - disabled_inc_cat.IsCategoryGroupEnabled("disabled-by-default-cc"));
|
| - EXPECT_TRUE(disabled_inc_cat.IsCategoryGroupEnabled("included"));
|
| - EXPECT_FALSE(disabled_inc_cat.IsCategoryGroupEnabled("other_included"));
|
| -
|
| - // Test that IsEmptyOrContainsLeadingOrTrailingWhitespace actually catches
|
| - // categories that are explicitly forbiden.
|
| - // This method is called in a DCHECK to assert that we don't have these types
|
| - // of strings as categories.
|
| - EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
|
| - " bad_category "));
|
| - EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
|
| - " bad_category"));
|
| - EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
|
| - "bad_category "));
|
| - EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
|
| - " bad_category"));
|
| - EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
|
| - "bad_category "));
|
| - EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
|
| - " bad_category "));
|
| - EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
|
| - ""));
|
| - EXPECT_FALSE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
|
| - "good_category"));
|
| -}
|
| -
|
| void BlockUntilStopped(WaitableEvent* task_start_event,
|
| WaitableEvent* task_stop_event) {
|
| task_start_event->Signal();
|
| @@ -2747,41 +2618,43 @@ TEST_F(TraceEventTestFixture, SetCurrentThreadBlocksMessageLoopBeforeTracing) {
|
| thread.Stop();
|
| }
|
|
|
| -TEST_F(TraceEventTestFixture, ConvertTraceOptionsToInternalOptions) {
|
| +TEST_F(TraceEventTestFixture, ConvertTraceConfigToInternalOptions) {
|
| TraceLog* trace_log = TraceLog::GetInstance();
|
| - TraceOptions options(RECORD_UNTIL_FULL);
|
| EXPECT_EQ(TraceLog::kInternalRecordUntilFull,
|
| - trace_log->GetInternalOptionsFromTraceOptions(options));
|
| + trace_log->GetInternalOptionsFromTraceConfig(
|
| + TraceConfig(kRecordAllCategoryFilter, RECORD_UNTIL_FULL)));
|
|
|
| - options.record_mode = RECORD_CONTINUOUSLY;
|
| EXPECT_EQ(TraceLog::kInternalRecordContinuously,
|
| - trace_log->GetInternalOptionsFromTraceOptions(options));
|
| + trace_log->GetInternalOptionsFromTraceConfig(
|
| + TraceConfig(kRecordAllCategoryFilter, RECORD_CONTINUOUSLY)));
|
|
|
| - options.record_mode = ECHO_TO_CONSOLE;
|
| EXPECT_EQ(TraceLog::kInternalEchoToConsole,
|
| - trace_log->GetInternalOptionsFromTraceOptions(options));
|
| -
|
| - options.enable_sampling = true;
|
| + trace_log->GetInternalOptionsFromTraceConfig(
|
| + TraceConfig(kRecordAllCategoryFilter, ECHO_TO_CONSOLE)));
|
|
|
| - options.record_mode = RECORD_UNTIL_FULL;
|
| EXPECT_EQ(
|
| TraceLog::kInternalRecordUntilFull | TraceLog::kInternalEnableSampling,
|
| - trace_log->GetInternalOptionsFromTraceOptions(options));
|
| + trace_log->GetInternalOptionsFromTraceConfig(
|
| + TraceConfig(kRecordAllCategoryFilter,
|
| + "record-until-full,enable-sampling")));
|
|
|
| - options.record_mode = RECORD_CONTINUOUSLY;
|
| EXPECT_EQ(
|
| TraceLog::kInternalRecordContinuously | TraceLog::kInternalEnableSampling,
|
| - trace_log->GetInternalOptionsFromTraceOptions(options));
|
| + trace_log->GetInternalOptionsFromTraceConfig(
|
| + TraceConfig(kRecordAllCategoryFilter,
|
| + "record-continuously,enable-sampling")));
|
|
|
| - options.record_mode = ECHO_TO_CONSOLE;
|
| EXPECT_EQ(
|
| TraceLog::kInternalEchoToConsole | TraceLog::kInternalEnableSampling,
|
| - trace_log->GetInternalOptionsFromTraceOptions(options));
|
| + trace_log->GetInternalOptionsFromTraceConfig(
|
| + TraceConfig(kRecordAllCategoryFilter,
|
| + "trace-to-console,enable-sampling")));
|
|
|
| - options.enable_systrace = true;
|
| EXPECT_EQ(
|
| TraceLog::kInternalEchoToConsole | TraceLog::kInternalEnableSampling,
|
| - trace_log->GetInternalOptionsFromTraceOptions(options));
|
| + trace_log->GetInternalOptionsFromTraceConfig(
|
| + TraceConfig("*",
|
| + "trace-to-console,enable-sampling,enable-systrace")));
|
| }
|
|
|
| void SetBlockingFlagAndBlockUntilStopped(WaitableEvent* task_start_event,
|
| @@ -2876,9 +2749,8 @@ TEST_F(TraceEventTestFixture, EchoToConsole) {
|
| logging::SetLogMessageHandler(MockLogMessageHandler);
|
|
|
| TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions(ECHO_TO_CONSOLE));
|
| + TraceConfig(kRecordAllCategoryFilter, ECHO_TO_CONSOLE),
|
| + TraceLog::RECORDING_MODE);
|
| TRACE_EVENT_BEGIN0("a", "begin_end");
|
| {
|
| TRACE_EVENT0("b", "duration");
|
| @@ -2913,9 +2785,8 @@ TEST_F(TraceEventTestFixture, EchoToConsoleTraceEventRecursion) {
|
| logging::SetLogMessageHandler(LogMessageHandlerWithTraceEvent);
|
|
|
| TraceLog::GetInstance()->SetEnabled(
|
| - CategoryFilter("*"),
|
| - TraceLog::RECORDING_MODE,
|
| - TraceOptions(ECHO_TO_CONSOLE));
|
| + TraceConfig(kRecordAllCategoryFilter, ECHO_TO_CONSOLE),
|
| + TraceLog::RECORDING_MODE);
|
| {
|
| // This should not cause deadlock or infinite recursion.
|
| TRACE_EVENT0("b", "duration");
|
| @@ -2928,7 +2799,7 @@ TEST_F(TraceEventTestFixture, EchoToConsoleTraceEventRecursion) {
|
| TEST_F(TraceEventTestFixture, TimeOffset) {
|
| BeginTrace();
|
| // Let TraceLog timer start from 0.
|
| - TimeDelta time_offset = TimeTicks::NowFromSystemTraceTime() - TimeTicks();
|
| + TimeDelta time_offset = TraceTicks::Now() - TraceTicks();
|
| TraceLog::GetInstance()->SetTimeOffset(time_offset);
|
|
|
| {
|
| @@ -2936,17 +2807,15 @@ TEST_F(TraceEventTestFixture, TimeOffset) {
|
| TRACE_EVENT0("all", "duration2");
|
| }
|
| TRACE_EVENT_BEGIN_WITH_ID_TID_AND_TIMESTAMP0(
|
| - "all", "with_timestamp", 0, 0,
|
| - TimeTicks::NowFromSystemTraceTime().ToInternalValue());
|
| + "all", "with_timestamp", 0, 0, TraceTicks::Now().ToInternalValue());
|
| TRACE_EVENT_END_WITH_ID_TID_AND_TIMESTAMP0(
|
| - "all", "with_timestamp", 0, 0,
|
| - TimeTicks::NowFromSystemTraceTime().ToInternalValue());
|
| + "all", "with_timestamp", 0, 0, TraceTicks::Now().ToInternalValue());
|
|
|
| EndTraceAndFlush();
|
| DropTracedMetadataRecords();
|
|
|
| double end_time = static_cast<double>(
|
| - (TimeTicks::NowFromSystemTraceTime() - time_offset).ToInternalValue());
|
| + (TraceTicks::Now() - time_offset).ToInternalValue());
|
| double last_timestamp = 0;
|
| for (size_t i = 0; i < trace_parsed_.GetSize(); ++i) {
|
| const DictionaryValue* item;
|
| @@ -2973,7 +2842,7 @@ TEST_F(TraceEventTestFixture, ConfigureSyntheticDelays) {
|
| }
|
|
|
| TEST_F(TraceEventTestFixture, BadSyntheticDelayConfigurations) {
|
| - const char* const configs[] = {
|
| + const char* const filters[] = {
|
| "",
|
| "DELAY(",
|
| "DELAY(;",
|
| @@ -2981,103 +2850,25 @@ TEST_F(TraceEventTestFixture, BadSyntheticDelayConfigurations) {
|
| "DELAY(test.Delay)",
|
| "DELAY(test.Delay;)"
|
| };
|
| - for (size_t i = 0; i < arraysize(configs); i++) {
|
| - BeginSpecificTrace(configs[i]);
|
| + for (size_t i = 0; i < arraysize(filters); i++) {
|
| + BeginSpecificTrace(filters[i]);
|
| EndTraceAndFlush();
|
| - CategoryFilter filter = TraceLog::GetInstance()->GetCurrentCategoryFilter();
|
| - EXPECT_EQ(0u, filter.GetSyntheticDelayValues().size());
|
| + TraceConfig trace_config = TraceLog::GetInstance()->GetCurrentTraceConfig();
|
| + EXPECT_EQ(0u, trace_config.GetSyntheticDelayValues().size());
|
| }
|
| }
|
|
|
| TEST_F(TraceEventTestFixture, SyntheticDelayConfigurationMerging) {
|
| - CategoryFilter filter1("DELAY(test.Delay1;16)");
|
| - CategoryFilter filter2("DELAY(test.Delay2;32)");
|
| - filter1.Merge(filter2);
|
| - EXPECT_EQ(2u, filter1.GetSyntheticDelayValues().size());
|
| + TraceConfig config1("DELAY(test.Delay1;16)", "");
|
| + TraceConfig config2("DELAY(test.Delay2;32)", "");
|
| + config1.Merge(config2);
|
| + EXPECT_EQ(2u, config1.GetSyntheticDelayValues().size());
|
| }
|
|
|
| TEST_F(TraceEventTestFixture, SyntheticDelayConfigurationToString) {
|
| - const char config[] = "DELAY(test.Delay;16;oneshot)";
|
| - CategoryFilter filter(config);
|
| - EXPECT_EQ(config, filter.ToString());
|
| -}
|
| -
|
| -TEST(TraceOptionsTest, TraceOptionsFromString) {
|
| - TraceOptions options;
|
| - EXPECT_TRUE(options.SetFromString("record-until-full"));
|
| - EXPECT_EQ(RECORD_UNTIL_FULL, options.record_mode);
|
| - EXPECT_FALSE(options.enable_sampling);
|
| - EXPECT_FALSE(options.enable_systrace);
|
| -
|
| - EXPECT_TRUE(options.SetFromString("record-continuously"));
|
| - EXPECT_EQ(RECORD_CONTINUOUSLY, options.record_mode);
|
| - EXPECT_FALSE(options.enable_sampling);
|
| - EXPECT_FALSE(options.enable_systrace);
|
| -
|
| - EXPECT_TRUE(options.SetFromString("trace-to-console"));
|
| - EXPECT_EQ(ECHO_TO_CONSOLE, options.record_mode);
|
| - EXPECT_FALSE(options.enable_sampling);
|
| - EXPECT_FALSE(options.enable_systrace);
|
| -
|
| - EXPECT_TRUE(options.SetFromString("record-as-much-as-possible"));
|
| - EXPECT_EQ(RECORD_AS_MUCH_AS_POSSIBLE, options.record_mode);
|
| - EXPECT_FALSE(options.enable_sampling);
|
| - EXPECT_FALSE(options.enable_systrace);
|
| -
|
| - EXPECT_TRUE(options.SetFromString("record-until-full, enable-sampling"));
|
| - EXPECT_EQ(RECORD_UNTIL_FULL, options.record_mode);
|
| - EXPECT_TRUE(options.enable_sampling);
|
| - EXPECT_FALSE(options.enable_systrace);
|
| -
|
| - EXPECT_TRUE(options.SetFromString("enable-systrace,record-continuously"));
|
| - EXPECT_EQ(RECORD_CONTINUOUSLY, options.record_mode);
|
| - EXPECT_FALSE(options.enable_sampling);
|
| - EXPECT_TRUE(options.enable_systrace);
|
| -
|
| - EXPECT_TRUE(options.SetFromString(
|
| - "enable-systrace, trace-to-console,enable-sampling"));
|
| - EXPECT_EQ(ECHO_TO_CONSOLE, options.record_mode);
|
| - EXPECT_TRUE(options.enable_sampling);
|
| - EXPECT_TRUE(options.enable_systrace);
|
| -
|
| - EXPECT_TRUE(options.SetFromString(
|
| - "record-continuously,record-until-full,trace-to-console"));
|
| - EXPECT_EQ(ECHO_TO_CONSOLE, options.record_mode);
|
| - EXPECT_FALSE(options.enable_systrace);
|
| - EXPECT_FALSE(options.enable_sampling);
|
| -
|
| - EXPECT_TRUE(options.SetFromString(""));
|
| - EXPECT_EQ(RECORD_UNTIL_FULL, options.record_mode);
|
| - EXPECT_FALSE(options.enable_systrace);
|
| - EXPECT_FALSE(options.enable_sampling);
|
| -
|
| - EXPECT_FALSE(options.SetFromString("foo-bar-baz"));
|
| -}
|
| -
|
| -TEST(TraceOptionsTest, TraceOptionsToString) {
|
| - // Test that we can intialize TraceOptions from a string got from
|
| - // TraceOptions.ToString() method to get a same TraceOptions.
|
| - TraceRecordMode modes[] = {RECORD_UNTIL_FULL,
|
| - RECORD_CONTINUOUSLY,
|
| - ECHO_TO_CONSOLE,
|
| - RECORD_AS_MUCH_AS_POSSIBLE};
|
| - bool enable_sampling_options[] = {true, false};
|
| - bool enable_systrace_options[] = {true, false};
|
| -
|
| - for (int i = 0; i < 4; ++i) {
|
| - for (int j = 0; j < 2; ++j) {
|
| - for (int k = 0; k < 2; ++k) {
|
| - TraceOptions original_option = TraceOptions(modes[i]);
|
| - original_option.enable_sampling = enable_sampling_options[j];
|
| - original_option.enable_systrace = enable_systrace_options[k];
|
| - TraceOptions new_options;
|
| - EXPECT_TRUE(new_options.SetFromString(original_option.ToString()));
|
| - EXPECT_EQ(original_option.record_mode, new_options.record_mode);
|
| - EXPECT_EQ(original_option.enable_sampling, new_options.enable_sampling);
|
| - EXPECT_EQ(original_option.enable_systrace, new_options.enable_systrace);
|
| - }
|
| - }
|
| - }
|
| + const char filter[] = "DELAY(test.Delay;16;oneshot)";
|
| + TraceConfig config(filter, "");
|
| + EXPECT_EQ(filter, config.ToCategoryFilterString());
|
| }
|
|
|
| } // namespace trace_event
|
|
|