Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(205)

Unified Diff: base/test/trace_event_analyzer_unittest.cc

Issue 8900001: Add searching features to new TraceEventVector class for tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: const ref params Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/test/trace_event_analyzer.cc ('k') | chrome/test/gpu/gpu_feature_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 96f804534f817f8640d261f8f2bca4859697bb40..602f139880332e92264932ef9013554fa7b0d2c1 100644
--- a/base/test/trace_event_analyzer_unittest.cc
+++ b/base/test/trace_event_analyzer_unittest.cc
@@ -65,7 +65,7 @@ TEST_F(TraceEventAnalyzerTest, NoEvents) {
ASSERT_TRUE(analyzer.get());
// Search for all events and verify that nothing is returned.
- TraceAnalyzer::TraceEventVector found;
+ TraceEventVector found;
analyzer->FindEvents(Query::Bool(true), &found);
EXPECT_EQ(0u, found.size());
}
@@ -221,7 +221,7 @@ TEST_F(TraceEventAnalyzerTest, BooleanOperators) {
analyzer(TraceAnalyzer::Create(output_.json_output));
ASSERT_TRUE(!!analyzer.get());
- TraceAnalyzer::TraceEventVector found;
+ TraceEventVector found;
// ==
@@ -308,7 +308,7 @@ TEST_F(TraceEventAnalyzerTest, ArithmeticOperators) {
analyzer(TraceAnalyzer::Create(output_.json_output));
ASSERT_TRUE(analyzer.get());
- TraceAnalyzer::TraceEventVector found;
+ TraceEventVector found;
// Verify that arithmetic operators function:
@@ -364,7 +364,7 @@ TEST_F(TraceEventAnalyzerTest, StringPattern) {
analyzer(TraceAnalyzer::Create(output_.json_output));
ASSERT_TRUE(analyzer.get());
- TraceAnalyzer::TraceEventVector found;
+ TraceEventVector found;
analyzer->FindEvents(Query(EVENT_NAME) == Query::Pattern("name?"), &found);
ASSERT_EQ(2u, found.size());
@@ -410,7 +410,7 @@ TEST_F(TraceEventAnalyzerTest, Duration) {
ASSERT_TRUE(analyzer.get());
analyzer->AssociateBeginEndEvents();
- TraceAnalyzer::TraceEventVector found;
+ TraceEventVector found;
analyzer->FindEvents(Query::MatchBeginWithEnd() &&
Query(EVENT_DURATION) > Query::Int(duration_cutoff_us) &&
(Query(EVENT_CATEGORY) == Query::String("cat1") ||
@@ -440,12 +440,41 @@ TEST_F(TraceEventAnalyzerTest, BeginEndAssocations) {
ASSERT_TRUE(analyzer.get());
analyzer->AssociateBeginEndEvents();
- TraceAnalyzer::TraceEventVector found;
+ TraceEventVector found;
analyzer->FindEvents(Query::MatchBeginWithEnd(), &found);
ASSERT_EQ(1u, found.size());
EXPECT_STREQ("name2", found[0]->name.c_str());
}
+// Test MergeAssociatedEventArgs
+TEST_F(TraceEventAnalyzerTest, MergeAssociatedEventArgs) {
+ using namespace trace_analyzer;
+ ManualSetUp();
+
+ const char* arg_string = "arg_string";
+ BeginTracing();
+ {
+ TRACE_EVENT1("cat1", "name1", "arg", arg_string);
+ }
+ EndTracing();
+
+ scoped_ptr<TraceAnalyzer>
+ analyzer(TraceAnalyzer::Create(output_.json_output));
+ ASSERT_TRUE(analyzer.get());
+ analyzer->AssociateBeginEndEvents();
+
+ TraceEventVector found;
+ analyzer->FindEvents(Query(EVENT_NAME) == Query::String("name1") &&
+ Query(EVENT_PHASE) == Query::Phase(TRACE_EVENT_PHASE_END), &found);
+ ASSERT_EQ(1u, found.size());
+ std::string arg_actual;
+ EXPECT_FALSE(found[0]->GetArgAsString("arg", &arg_actual));
+
+ analyzer->MergeAssociatedEventArgs();
+ EXPECT_TRUE(found[0]->GetArgAsString("arg", &arg_actual));
+ EXPECT_STREQ(arg_string, arg_actual.c_str());
+}
+
// Test AssociateStartFinishEvents
TEST_F(TraceEventAnalyzerTest, StartFinishAssocations) {
using namespace trace_analyzer;
@@ -469,7 +498,7 @@ TEST_F(TraceEventAnalyzerTest, StartFinishAssocations) {
ASSERT_TRUE(analyzer.get());
analyzer->AssociateStartFinishEvents();
- TraceAnalyzer::TraceEventVector found;
+ TraceEventVector found;
analyzer->FindEvents(Query::MatchStartWithFinish(), &found);
ASSERT_EQ(2u, found.size());
EXPECT_STRCASEEQ("B", found[0]->id.c_str());
@@ -504,7 +533,7 @@ TEST_F(TraceEventAnalyzerTest, CustomAssociations) {
Query match(Query(EVENT_ARG, "id") == Query(OTHER_ARG, "id"));
analyzer->AssociateEvents(begin, end, match);
- TraceAnalyzer::TraceEventVector found;
+ TraceEventVector found;
// cat1 has no other_event.
analyzer->FindEvents(Query(EVENT_CATEGORY) == Query::String("cat1") &&
@@ -570,12 +599,12 @@ TEST_F(TraceEventAnalyzerTest, RateStats) {
std::vector<TraceEvent> events;
events.reserve(100);
- TraceAnalyzer::TraceEventVector event_ptrs;
+ TraceEventVector event_ptrs;
TraceEvent event;
event.timestamp = 0.0;
double little_delta = 1.0;
double big_delta = 10.0;
- TraceAnalyzer::Stats stats;
+ RateStats stats;
for (int i = 0; i < 10; ++i) {
event.timestamp += little_delta;
@@ -583,7 +612,7 @@ TEST_F(TraceEventAnalyzerTest, RateStats) {
event_ptrs.push_back(&events.back());
}
- ASSERT_TRUE(TraceAnalyzer::GetRateStats(event_ptrs, &stats));
+ ASSERT_TRUE(GetRateStats(event_ptrs, &stats));
EXPECT_EQ(little_delta, stats.mean_us);
EXPECT_EQ(little_delta, stats.min_us);
EXPECT_EQ(little_delta, stats.max_us);
@@ -593,18 +622,138 @@ TEST_F(TraceEventAnalyzerTest, RateStats) {
events.push_back(event);
event_ptrs.push_back(&events.back());
- ASSERT_TRUE(TraceAnalyzer::GetRateStats(event_ptrs, &stats));
+ ASSERT_TRUE(GetRateStats(event_ptrs, &stats));
EXPECT_LT(little_delta, stats.mean_us);
EXPECT_EQ(little_delta, stats.min_us);
EXPECT_EQ(big_delta, stats.max_us);
EXPECT_LT(0.0, stats.standard_deviation_us);
- TraceAnalyzer::TraceEventVector few_event_ptrs;
+ TraceEventVector few_event_ptrs;
few_event_ptrs.push_back(&event);
few_event_ptrs.push_back(&event);
- ASSERT_FALSE(TraceAnalyzer::GetRateStats(few_event_ptrs, &stats));
+ ASSERT_FALSE(GetRateStats(few_event_ptrs, &stats));
few_event_ptrs.push_back(&event);
- ASSERT_TRUE(TraceAnalyzer::GetRateStats(few_event_ptrs, &stats));
+ ASSERT_TRUE(GetRateStats(few_event_ptrs, &stats));
+}
+
+// Test FindFirstOf and FindLastOf.
+TEST_F(TraceEventAnalyzerTest, FindOf) {
+ using namespace trace_analyzer;
+
+ size_t num_events = 100;
+ size_t index = 0;
+ TraceEventVector event_ptrs;
+ EXPECT_FALSE(FindFirstOf(event_ptrs, Query::Bool(true), 0, &index));
+ EXPECT_FALSE(FindFirstOf(event_ptrs, Query::Bool(true), 10, &index));
+ EXPECT_FALSE(FindLastOf(event_ptrs, Query::Bool(true), 0, &index));
+ EXPECT_FALSE(FindLastOf(event_ptrs, Query::Bool(true), 10, &index));
+
+ std::vector<TraceEvent> events;
+ events.resize(num_events);
+ for (size_t i = 0; i < events.size(); ++i)
+ event_ptrs.push_back(&events[i]);
+ size_t bam_index = num_events/2;
+ events[bam_index].name = "bam";
+ Query query_bam = Query(EVENT_NAME) == Query::String(events[bam_index].name);
+
+ // FindFirstOf
+ EXPECT_FALSE(FindFirstOf(event_ptrs, Query::Bool(false), 0, &index));
+ EXPECT_TRUE(FindFirstOf(event_ptrs, Query::Bool(true), 0, &index));
+ EXPECT_EQ(0u, index);
+ EXPECT_TRUE(FindFirstOf(event_ptrs, Query::Bool(true), 5, &index));
+ EXPECT_EQ(5u, index);
+
+ EXPECT_FALSE(FindFirstOf(event_ptrs, query_bam, bam_index + 1, &index));
+ EXPECT_TRUE(FindFirstOf(event_ptrs, query_bam, 0, &index));
+ EXPECT_EQ(bam_index, index);
+ EXPECT_TRUE(FindFirstOf(event_ptrs, query_bam, bam_index, &index));
+ EXPECT_EQ(bam_index, index);
+
+ // FindLastOf
+ EXPECT_FALSE(FindLastOf(event_ptrs, Query::Bool(false), 1000, &index));
+ EXPECT_TRUE(FindLastOf(event_ptrs, Query::Bool(true), 1000, &index));
+ EXPECT_EQ(num_events - 1, index);
+ EXPECT_TRUE(FindLastOf(event_ptrs, Query::Bool(true), num_events - 5,
+ &index));
+ EXPECT_EQ(num_events - 5, index);
+
+ EXPECT_FALSE(FindLastOf(event_ptrs, query_bam, bam_index - 1, &index));
+ EXPECT_TRUE(FindLastOf(event_ptrs, query_bam, num_events, &index));
+ EXPECT_EQ(bam_index, index);
+ EXPECT_TRUE(FindLastOf(event_ptrs, query_bam, bam_index, &index));
+ EXPECT_EQ(bam_index, index);
+}
+
+// Test FindClosest.
+TEST_F(TraceEventAnalyzerTest, FindClosest) {
+ using namespace trace_analyzer;
+
+ size_t index_1 = 0;
+ size_t index_2 = 0;
+ TraceEventVector event_ptrs;
+ EXPECT_FALSE(FindClosest(event_ptrs, Query::Bool(true), 0,
+ &index_1, &index_2));
+
+ size_t num_events = 5;
+ std::vector<TraceEvent> events;
+ events.resize(num_events);
+ for (size_t i = 0; i < events.size(); ++i) {
+ // timestamps go up exponentially so the lower index is always closer in
+ // time than the higher index.
+ events[i].timestamp = static_cast<double>(i) * static_cast<double>(i);
+ event_ptrs.push_back(&events[i]);
+ }
+ events[0].name = "one";
+ events[2].name = "two";
+ events[4].name = "three";
+ Query query_named = Query(EVENT_NAME) != Query::String("");
+ Query query_one = Query(EVENT_NAME) == Query::String("one");
+
+ // Only one event matches query_one, so two closest can't be found.
+ EXPECT_FALSE(FindClosest(event_ptrs, query_one, 0, &index_1, &index_2));
+
+ EXPECT_TRUE(FindClosest(event_ptrs, query_one, 3, &index_1, NULL));
+ EXPECT_EQ(0u, index_1);
+
+ EXPECT_TRUE(FindClosest(event_ptrs, query_named, 1, &index_1, &index_2));
+ EXPECT_EQ(0u, index_1);
+ EXPECT_EQ(2u, index_2);
+
+ EXPECT_TRUE(FindClosest(event_ptrs, query_named, 4, &index_1, &index_2));
+ EXPECT_EQ(4u, index_1);
+ EXPECT_EQ(2u, index_2);
+
+ EXPECT_TRUE(FindClosest(event_ptrs, query_named, 3, &index_1, &index_2));
+ EXPECT_EQ(2u, index_1);
+ EXPECT_EQ(0u, index_2);
+}
+
+// Test CountMatches.
+TEST_F(TraceEventAnalyzerTest, CountMatches) {
+ using namespace trace_analyzer;
+
+ TraceEventVector event_ptrs;
+ EXPECT_EQ(0u, CountMatches(event_ptrs, Query::Bool(true), 0, 10));
+
+ size_t num_events = 5;
+ size_t num_named = 3;
+ std::vector<TraceEvent> events;
+ events.resize(num_events);
+ for (size_t i = 0; i < events.size(); ++i)
+ event_ptrs.push_back(&events[i]);
+ events[0].name = "one";
+ events[2].name = "two";
+ events[4].name = "three";
+ Query query_named = Query(EVENT_NAME) != Query::String("");
+ Query query_one = Query(EVENT_NAME) == Query::String("one");
+
+ EXPECT_EQ(0u, CountMatches(event_ptrs, Query::Bool(false)));
+ EXPECT_EQ(num_events, CountMatches(event_ptrs, Query::Bool(true)));
+ EXPECT_EQ(num_events - 1, CountMatches(event_ptrs, Query::Bool(true),
+ 1, num_events));
+ EXPECT_EQ(1u, CountMatches(event_ptrs, query_one));
+ EXPECT_EQ(num_events - 1, CountMatches(event_ptrs, !query_one));
+ EXPECT_EQ(num_named, CountMatches(event_ptrs, query_named));
}
« no previous file with comments | « base/test/trace_event_analyzer.cc ('k') | chrome/test/gpu/gpu_feature_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698