Index: base/test/trace_event_analyzer_unittest.cc |
diff --git a/base/test/trace_event_analyzer_unittest.cc b/base/test/trace_event_analyzer_unittest.cc |
index 583785083adf583759bc4e209de32e6b556de713..3a0e6bb9f6963c03a8b010dd356637c4f48b2c83 100644 |
--- a/base/test/trace_event_analyzer_unittest.cc |
+++ b/base/test/trace_event_analyzer_unittest.cc |
@@ -111,6 +111,7 @@ TEST_F(TraceEventAnalyzerTest, QueryEventMember) { |
event.phase = TRACE_EVENT_PHASE_BEGIN; |
event.category = "category"; |
event.name = "name"; |
+ event.id = "1"; |
event.arg_numbers["num"] = 7.0; |
event.arg_strings["str"] = "the string"; |
@@ -122,6 +123,7 @@ TEST_F(TraceEventAnalyzerTest, QueryEventMember) { |
other.phase = TRACE_EVENT_PHASE_END; |
other.category = "category2"; |
other.name = "name2"; |
+ other.id = "2"; |
other.arg_numbers["num2"] = 8.0; |
other.arg_strings["str2"] = "the string 2"; |
@@ -137,6 +139,7 @@ TEST_F(TraceEventAnalyzerTest, QueryEventMember) { |
Query event_category = |
(Query(EVENT_CATEGORY) == Query::String(event.category)); |
Query event_name = (Query(EVENT_NAME) == Query::String(event.name)); |
+ Query event_id = (Query(EVENT_ID) == Query::String(event.id)); |
Query event_has_arg1 = Query(EVENT_HAS_NUMBER_ARG, "num"); |
Query event_has_arg2 = Query(EVENT_HAS_STRING_ARG, "str"); |
Query event_arg1 = |
@@ -151,6 +154,7 @@ TEST_F(TraceEventAnalyzerTest, QueryEventMember) { |
Query other_category = |
(Query(OTHER_CATEGORY) == Query::String(other.category)); |
Query other_name = (Query(OTHER_NAME) == Query::String(other.name)); |
+ Query other_id = (Query(OTHER_ID) == Query::String(other.id)); |
Query other_has_arg1 = Query(OTHER_HAS_NUMBER_ARG, "num2"); |
Query other_has_arg2 = Query(OTHER_HAS_STRING_ARG, "str2"); |
Query other_arg1 = |
@@ -165,6 +169,7 @@ TEST_F(TraceEventAnalyzerTest, QueryEventMember) { |
EXPECT_TRUE(event_phase.Evaluate(event)); |
EXPECT_TRUE(event_category.Evaluate(event)); |
EXPECT_TRUE(event_name.Evaluate(event)); |
+ EXPECT_TRUE(event_id.Evaluate(event)); |
EXPECT_TRUE(event_has_arg1.Evaluate(event)); |
EXPECT_TRUE(event_has_arg2.Evaluate(event)); |
EXPECT_TRUE(event_arg1.Evaluate(event)); |
@@ -176,6 +181,7 @@ TEST_F(TraceEventAnalyzerTest, QueryEventMember) { |
EXPECT_TRUE(other_phase.Evaluate(event)); |
EXPECT_TRUE(other_category.Evaluate(event)); |
EXPECT_TRUE(other_name.Evaluate(event)); |
+ EXPECT_TRUE(other_id.Evaluate(event)); |
EXPECT_TRUE(other_has_arg1.Evaluate(event)); |
EXPECT_TRUE(other_has_arg2.Evaluate(event)); |
EXPECT_TRUE(other_arg1.Evaluate(event)); |
@@ -190,6 +196,7 @@ TEST_F(TraceEventAnalyzerTest, QueryEventMember) { |
EXPECT_FALSE(event_phase.Evaluate(other)); |
EXPECT_FALSE(event_category.Evaluate(other)); |
EXPECT_FALSE(event_name.Evaluate(other)); |
+ EXPECT_FALSE(event_id.Evaluate(other)); |
EXPECT_FALSE(event_has_arg1.Evaluate(other)); |
EXPECT_FALSE(event_has_arg2.Evaluate(other)); |
EXPECT_FALSE(event_arg1.Evaluate(other)); |
@@ -414,7 +421,7 @@ TEST_F(TraceEventAnalyzerTest, Duration) { |
EXPECT_STREQ("name3", found[1]->name.c_str()); |
} |
-// Test that arithmetic operators work. |
+// Test AssociateBeginEndEvents |
TEST_F(TraceEventAnalyzerTest, BeginEndAssocations) { |
using namespace trace_analyzer; |
ManualSetUp(); |
@@ -439,6 +446,36 @@ TEST_F(TraceEventAnalyzerTest, BeginEndAssocations) { |
EXPECT_STREQ("name2", found[0]->name.c_str()); |
} |
+// Test AssociateStartFinishEvents |
+TEST_F(TraceEventAnalyzerTest, StartFinishAssocations) { |
+ using namespace trace_analyzer; |
+ ManualSetUp(); |
+ |
+ BeginTracing(); |
+ { |
+ TRACE_EVENT_FINISH0("cat1", "name1", 0xA); // does not match / out of order |
+ TRACE_EVENT_START0("cat1", "name1", 0xB); |
+ TRACE_EVENT_START0("cat1", "name1", 0xC); |
+ TRACE_EVENT_INSTANT0("cat1", "name1"); // noise |
+ TRACE_EVENT0("cat1", "name1"); // noise |
+ TRACE_EVENT_FINISH0("cat1", "name1", 0xB); |
+ TRACE_EVENT_FINISH0("cat1", "name1", 0xC); |
+ TRACE_EVENT_START0("cat1", "name1", 0xA); // does not match / out of order |
+ } |
+ EndTracing(); |
+ |
+ scoped_ptr<TraceAnalyzer> |
+ analyzer(TraceAnalyzer::Create(output_.json_output)); |
+ ASSERT_TRUE(analyzer.get()); |
+ analyzer->AssociateStartFinishEvents(); |
+ |
+ TraceAnalyzer::TraceEventVector found; |
+ analyzer->FindEvents(Query::MatchStartWithFinish(), &found); |
+ ASSERT_EQ(2u, found.size()); |
+ EXPECT_STRCASEEQ("B", found[0]->id.c_str()); |
+ EXPECT_STRCASEEQ("C", found[1]->id.c_str()); |
+} |
+ |
// Test that the TraceAnalyzer custom associations work. |
TEST_F(TraceEventAnalyzerTest, CustomAssociations) { |
using namespace trace_analyzer; |