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

Unified Diff: apps/benchmark/event_unittest.cc

Issue 1316163003: Support duration events in `benchmark.mojo`. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 3 months 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 | « apps/benchmark/event.cc ('k') | apps/benchmark/measurements.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: apps/benchmark/event_unittest.cc
diff --git a/apps/benchmark/event_unittest.cc b/apps/benchmark/event_unittest.cc
index 615bc676d45741de7f6f5b6e0b14ddde1e00eea8..243060c3854a06db2f9210452f9e4367c5edf120 100644
--- a/apps/benchmark/event_unittest.cc
+++ b/apps/benchmark/event_unittest.cc
@@ -4,8 +4,10 @@
#include "apps/benchmark/event.h"
+#include <string>
#include <vector>
+#include "base/strings/string_util.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace benchmark {
@@ -43,38 +45,108 @@ TEST(GetEventsTest, Typical) {
ASSERT_TRUE(GetEvents(trace_json, &events));
ASSERT_EQ(2u, events.size());
+ EXPECT_EQ(EventType::COMPLETE, events[0].type);
EXPECT_EQ("MessageLoop::RunTask", events[0].name);
- EXPECT_EQ("toplevel", events[0].category);
+ EXPECT_EQ("toplevel", events[0].categories);
EXPECT_EQ(base::TimeTicks::FromInternalValue(1988539886444),
events[0].timestamp);
EXPECT_EQ(base::TimeDelta::FromInternalValue(647), events[0].duration);
+ EXPECT_EQ(EventType::COMPLETE, events[1].type);
EXPECT_EQ("GLES2::WaitForCmd", events[1].name);
- EXPECT_EQ("gpu", events[1].category);
+ EXPECT_EQ("gpu", events[1].categories);
EXPECT_EQ(base::TimeTicks::FromInternalValue(1988975370433),
events[1].timestamp);
EXPECT_EQ(base::TimeDelta::FromInternalValue(7288), events[1].duration);
}
-TEST(GetEventsTest, NoDuration) {
+TEST(GetEventsTest, InstantEvent) {
std::string event =
- "{\"pid\":8238,\"tid\":8238,\"ts\":1988978463403,\"ph\":\"X\","
- "\"cat\":\"toplevel\",\"name\":\"MessageLoop::RunTask\",\"args\":"
- "{\"src_file\":\"../../mojo/message_pump/handle_watcher.cc\","
- "\"src_func\":\"RemoveAndNotify\"},\"tdur\":0,\"tts\":22812}";
+ "{\"pid\":19309,\"tid\":8,\"ts\":2949822399148,\"ph\":\"I\","
+ "\"cat\":\"cc\",\"name\":\"Scheduler::BeginRetroFrames all expired\","
+ "\"args\":{},\"tts\":375966,\"s\":\"t\"}";
std::string trace_json = "[" + event + "]";
std::vector<Event> events;
ASSERT_TRUE(GetEvents(trace_json, &events));
ASSERT_EQ(1u, events.size());
- EXPECT_EQ("MessageLoop::RunTask", events[0].name);
- EXPECT_EQ("toplevel", events[0].category);
- EXPECT_EQ(base::TimeTicks::FromInternalValue(1988978463403),
+ EXPECT_EQ(EventType::INSTANT, events[0].type);
+ EXPECT_EQ("Scheduler::BeginRetroFrames all expired", events[0].name);
+ EXPECT_EQ("cc", events[0].categories);
+ EXPECT_EQ(base::TimeTicks::FromInternalValue(2949822399148),
events[0].timestamp);
EXPECT_EQ(base::TimeDelta::FromInternalValue(0), events[0].duration);
}
+TEST(GetEventsTest, DurationEventsSameThread) {
+ std::vector<std::string> event_specs(6);
+ event_specs[0] =
+ "{\"tid\":1,\"ts\":1,\"ph\":\"B\",\"cat\":\"cc\",\"name\":\"Outer event\"}";
+ event_specs[1] =
+ "{\"tid\":1,\"ts\":2,\"ph\":\"B\",\"cat\":\"cc\",\"name\":\"Inner event\"}";
+ event_specs[2] =
+ "{\"tid\":1,\"ts\":3,\"ph\":\"E\"}";
+ event_specs[3] =
+ "{\"tid\":1,\"ts\":4,\"ph\":\"E\"}";
+ event_specs[4] =
+ "{\"tid\":1,\"ts\":5,\"ph\":\"B\",\"cat\":\"cc\",\"name\":\"Next event\"}";
+ event_specs[5] =
+ "{\"tid\":1,\"ts\":6,\"ph\":\"E\"}";
+
+ std::string trace_json = "[" + JoinString(event_specs, ',') + "]";
+ std::vector<Event> events;
+ ASSERT_TRUE(GetEvents(trace_json, &events));
+ ASSERT_EQ(3u, events.size());
+
+ EXPECT_EQ(EventType::COMPLETE, events[0].type);
+ EXPECT_EQ("Outer event", events[0].name);
+ EXPECT_EQ("cc", events[0].categories);
+ EXPECT_EQ(base::TimeTicks::FromInternalValue(1), events[0].timestamp);
+ EXPECT_EQ(base::TimeDelta::FromInternalValue(3), events[0].duration);
+
+ EXPECT_EQ(EventType::COMPLETE, events[1].type);
+ EXPECT_EQ("Inner event", events[1].name);
+ EXPECT_EQ("cc", events[1].categories);
+ EXPECT_EQ(base::TimeTicks::FromInternalValue(2), events[1].timestamp);
+ EXPECT_EQ(base::TimeDelta::FromInternalValue(1), events[1].duration);
+
+ EXPECT_EQ(EventType::COMPLETE, events[2].type);
+ EXPECT_EQ("Next event", events[2].name);
+ EXPECT_EQ("cc", events[2].categories);
+ EXPECT_EQ(base::TimeTicks::FromInternalValue(5), events[2].timestamp);
+ EXPECT_EQ(base::TimeDelta::FromInternalValue(1), events[2].duration);
+}
+
+TEST(GetEventsTest, DurationEventsTwoThreads) {
+ std::vector<std::string> event_specs(4);
+ event_specs[0] =
+ "{\"tid\":1,\"ts\":1,\"ph\":\"B\",\"cat\":\"cc\",\"name\":\"t1 event\"}";
+ event_specs[1] =
+ "{\"tid\":2,\"ts\":2,\"ph\":\"B\",\"cat\":\"cc\",\"name\":\"t2 event\"}";
+ event_specs[2] =
+ "{\"tid\":1,\"ts\":3,\"ph\":\"E\"}";
+ event_specs[3] =
+ "{\"tid\":2,\"ts\":4,\"ph\":\"E\"}";
+
+ std::string trace_json = "[" + JoinString(event_specs, ',') + "]";
+ std::vector<Event> events;
+ ASSERT_TRUE(GetEvents(trace_json, &events));
+ ASSERT_EQ(2u, events.size());
+
+ EXPECT_EQ(EventType::COMPLETE, events[0].type);
+ EXPECT_EQ("t1 event", events[0].name);
+ EXPECT_EQ("cc", events[0].categories);
+ EXPECT_EQ(base::TimeTicks::FromInternalValue(1), events[0].timestamp);
+ EXPECT_EQ(base::TimeDelta::FromInternalValue(2), events[0].duration);
+
+ EXPECT_EQ(EventType::COMPLETE, events[1].type);
+ EXPECT_EQ("t2 event", events[1].name);
+ EXPECT_EQ("cc", events[1].categories);
+ EXPECT_EQ(base::TimeTicks::FromInternalValue(2), events[1].timestamp);
+ EXPECT_EQ(base::TimeDelta::FromInternalValue(2), events[1].duration);
+}
+
} // namespace
} // namespace benchmark
« no previous file with comments | « apps/benchmark/event.cc ('k') | apps/benchmark/measurements.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698