Index: base/debug/trace_event_unittest.cc |
diff --git a/base/debug/trace_event_unittest.cc b/base/debug/trace_event_unittest.cc |
index fc248e11c3526c32d04d3219b8ebba6fea65a456..028e95b37fb1742410bba1958e601f127e021ec7 100644 |
--- a/base/debug/trace_event_unittest.cc |
+++ b/base/debug/trace_event_unittest.cc |
@@ -45,6 +45,10 @@ class TraceEventTestFixture : public testing::Test { |
scoped_refptr<TraceLog::RefCountedString> events_str); |
bool FindMatchingTraceEntry(const JsonKeyValue* key_values); |
bool FindNamePhase(const char* name, const char* phase); |
+ bool FindNamePhaseKeyValue(const char* name, |
+ const char* phase, |
+ const char* key, |
+ const char* value); |
bool FindMatchingValue(const char* key, |
const char* value); |
bool FindNonMatchingValue(const char* key, |
@@ -176,6 +180,19 @@ bool TraceEventTestFixture::FindNamePhase(const char* name, const char* phase) { |
return FindMatchingTraceEntry(key_values); |
} |
+bool TraceEventTestFixture::FindNamePhaseKeyValue(const char* name, |
+ const char* phase, |
+ const char* key, |
+ const char* value) { |
+ JsonKeyValue key_values[] = { |
+ {"name", name, IS_EQUAL}, |
+ {"ph", phase, IS_EQUAL}, |
+ {key, value, IS_EQUAL}, |
+ {0, 0, IS_EQUAL} |
+ }; |
+ return FindMatchingTraceEntry(key_values); |
+} |
+ |
bool TraceEventTestFixture::FindMatchingValue(const char* key, |
const char* value) { |
JsonKeyValue key_values[] = { |
@@ -262,10 +279,10 @@ std::vector<DictionaryValue*> FindTraceEntries( |
void TraceWithAllMacroVariants(WaitableEvent* task_complete_event) { |
{ |
- TRACE_EVENT_BEGIN_ETW("TRACE_EVENT_BEGIN_ETW call", 1122, "extrastring1"); |
- TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW call", 3344, "extrastring2"); |
+ TRACE_EVENT_BEGIN_ETW("TRACE_EVENT_BEGIN_ETW call", 0x1122, "extrastring1"); |
+ TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW call", 0x3344, "extrastring2"); |
TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW call", |
- 5566, "extrastring3"); |
+ 0x5566, "extrastring3"); |
TRACE_EVENT0("all", "TRACE_EVENT0 call"); |
TRACE_EVENT1("all", "TRACE_EVENT1 call", "name1", "value1"); |
@@ -310,9 +327,9 @@ void ValidateAllTraceMacrosCreatedData(const ListValue& trace_parsed) { |
EXPECT_FIND_("all"); |
EXPECT_FIND_("TRACE_EVENT_BEGIN_ETW call"); |
{ |
- int int_val = 0; |
- EXPECT_TRUE(item && item->GetInteger("args.id", &int_val)); |
- EXPECT_EQ(1122, int_val); |
+ std::string str_val; |
+ EXPECT_TRUE(item && item->GetString("args.id", &str_val)); |
+ EXPECT_STREQ("1122", str_val.c_str()); |
} |
EXPECT_SUB_FIND_("extrastring1"); |
EXPECT_FIND_("TRACE_EVENT_END_ETW call"); |
@@ -633,6 +650,33 @@ TEST_F(TraceEventTestFixture, DataCapturedThreshold) { |
EXPECT_NOT_FIND_BE_("4thresholdlong2"); |
} |
+// Test Start/Finish events |
+TEST_F(TraceEventTestFixture, StartFinishEvents) { |
+ ManualTestSetUp(); |
+ TraceLog::GetInstance()->SetEnabled(true); |
+ |
+ unsigned long long id = 0xfeedbeeffeedbeefull; |
+ TRACE_EVENT_START0( "cat", "name1", id); |
+ TRACE_EVENT_FINISH0("cat", "name1", id); |
+ TRACE_EVENT_BEGIN0( "cat", "name2"); |
+ TRACE_EVENT_START0( "cat", "name3", 0); |
+ |
+ TraceLog::GetInstance()->SetEnabled(false); |
+ |
+ EXPECT_TRUE(FindNamePhase("name1", "S")); |
+ EXPECT_TRUE(FindNamePhase("name1", "F")); |
+ |
+ std::string id_str; |
+ StringAppendF(&id_str, "%llx", id); |
+ |
+ EXPECT_TRUE(FindNamePhaseKeyValue("name1", "S", "ext", id_str.c_str())); |
+ EXPECT_TRUE(FindNamePhaseKeyValue("name1", "F", "ext", id_str.c_str())); |
+ |
+ // ext parameter should not be present when zero: |
+ EXPECT_FALSE(FindNamePhaseKeyValue("name2", "B", "ext", "0")); |
+ EXPECT_FALSE(FindNamePhaseKeyValue("name3", "S", "ext", "0")); |
+} |
+ |
// Test that static strings are not copied. |
TEST_F(TraceEventTestFixture, StaticStringVsString) { |
ManualTestSetUp(); |