Index: base/debug/trace_event_unittest.cc |
diff --git a/base/debug/trace_event_unittest.cc b/base/debug/trace_event_unittest.cc |
index c42cc5dccf80ebf6ba2d0712a7ac85bae183a863..15e11a70f4829a10ded2606e6f52d1fe1e5e0e92 100644 |
--- a/base/debug/trace_event_unittest.cc |
+++ b/base/debug/trace_event_unittest.cc |
@@ -4,6 +4,8 @@ |
#include "base/debug/trace_event_unittest.h" |
+#include <cstdlib> |
+ |
#include "base/bind.h" |
#include "base/command_line.h" |
#include "base/debug/trace_event.h" |
@@ -39,6 +41,10 @@ struct JsonKeyValue { |
CompareOp op; |
}; |
+static int kThreadId = 42; |
+static int kAsyncId = 5; |
+static const char kAsyncIdStr[] = "5"; |
+ |
class TraceEventTestFixture : public testing::Test { |
public: |
// This fixture does not use SetUp() because the fixture must be manually set |
@@ -337,10 +343,10 @@ void TraceWithAllMacroVariants(WaitableEvent* task_complete_event) { |
"name1", "value1", |
"name2", "value2"); |
- TRACE_EVENT_ASYNC_BEGIN0("all", "TRACE_EVENT_ASYNC_BEGIN0 call", 5); |
- TRACE_EVENT_ASYNC_BEGIN1("all", "TRACE_EVENT_ASYNC_BEGIN1 call", 5, |
+ TRACE_EVENT_ASYNC_BEGIN0("all", "TRACE_EVENT_ASYNC_BEGIN0 call", kAsyncId); |
+ TRACE_EVENT_ASYNC_BEGIN1("all", "TRACE_EVENT_ASYNC_BEGIN1 call", kAsyncId, |
"name1", "value1"); |
- TRACE_EVENT_ASYNC_BEGIN2("all", "TRACE_EVENT_ASYNC_BEGIN2 call", 5, |
+ TRACE_EVENT_ASYNC_BEGIN2("all", "TRACE_EVENT_ASYNC_BEGIN2 call", kAsyncId, |
"name1", "value1", |
"name2", "value2"); |
@@ -349,19 +355,19 @@ void TraceWithAllMacroVariants(WaitableEvent* task_complete_event) { |
TRACE_EVENT_ASYNC_STEP1("all", "TRACE_EVENT_ASYNC_STEP1 call", |
5, "step2", "name1", "value1"); |
- TRACE_EVENT_ASYNC_END0("all", "TRACE_EVENT_ASYNC_END0 call", 5); |
- TRACE_EVENT_ASYNC_END1("all", "TRACE_EVENT_ASYNC_END1 call", 5, |
+ TRACE_EVENT_ASYNC_END0("all", "TRACE_EVENT_ASYNC_END0 call", kAsyncId); |
+ TRACE_EVENT_ASYNC_END1("all", "TRACE_EVENT_ASYNC_END1 call", kAsyncId, |
"name1", "value1"); |
- TRACE_EVENT_ASYNC_END2("all", "TRACE_EVENT_ASYNC_END2 call", 5, |
+ TRACE_EVENT_ASYNC_END2("all", "TRACE_EVENT_ASYNC_END2 call", kAsyncId, |
"name1", "value1", |
"name2", "value2"); |
- TRACE_EVENT_BEGIN_ETW("TRACE_EVENT_BEGIN_ETW0 call", 5, NULL); |
- TRACE_EVENT_BEGIN_ETW("TRACE_EVENT_BEGIN_ETW1 call", 5, "value"); |
- TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW0 call", 5, NULL); |
- TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW1 call", 5, "value"); |
- TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW0 call", 5, NULL); |
- TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW1 call", 5, "value"); |
+ TRACE_EVENT_BEGIN_ETW("TRACE_EVENT_BEGIN_ETW0 call", kAsyncId, NULL); |
+ TRACE_EVENT_BEGIN_ETW("TRACE_EVENT_BEGIN_ETW1 call", kAsyncId, "value"); |
+ TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW0 call", kAsyncId, NULL); |
+ TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW1 call", kAsyncId, "value"); |
+ TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW0 call", kAsyncId, NULL); |
+ TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW1 call", kAsyncId, "value"); |
TRACE_COUNTER1("all", "TRACE_COUNTER1 call", 31415); |
TRACE_COUNTER2("all", "TRACE_COUNTER2 call", |
@@ -371,6 +377,21 @@ void TraceWithAllMacroVariants(WaitableEvent* task_complete_event) { |
TRACE_COUNTER_ID1("all", "TRACE_COUNTER_ID1 call", 0x319009, 31415); |
TRACE_COUNTER_ID2("all", "TRACE_COUNTER_ID2 call", 0x319009, |
"a", 30000, "b", 1415); |
+ |
+ TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP0("all", |
+ "TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP0 call", |
+ kAsyncId, kThreadId, 12345); |
+ TRACE_EVENT_COPY_END_WITH_ID_TID_AND_TIMESTAMP0("all", |
+ "TRACE_EVENT_COPY_END_WITH_ID_TID_AND_TIMESTAMP0 call", |
+ kAsyncId, kThreadId, 23456); |
+ |
+ TRACE_EVENT_BEGIN_WITH_ID_TID_AND_TIMESTAMP0("all", |
+ "TRACE_EVENT_BEGIN_WITH_ID_TID_AND_TIMESTAMP0 call", |
+ kAsyncId + 1, kThreadId, 34567); |
+ TRACE_EVENT_END_WITH_ID_TID_AND_TIMESTAMP0("all", |
+ "TRACE_EVENT_END_WITH_ID_TID_AND_TIMESTAMP0 call", |
+ kAsyncId + 1, kThreadId, 45678); |
+ |
} // Scope close causes TRACE_EVENT0 etc to send their END events. |
if (task_complete_event) |
@@ -451,15 +472,15 @@ void ValidateAllTraceMacrosCreatedData(const ListValue& trace_parsed) { |
EXPECT_FIND_("TRACE_EVENT_ASYNC_BEGIN0 call"); |
EXPECT_SUB_FIND_("id"); |
- EXPECT_SUB_FIND_("5"); |
+ EXPECT_SUB_FIND_(kAsyncIdStr); |
EXPECT_FIND_("TRACE_EVENT_ASYNC_BEGIN1 call"); |
EXPECT_SUB_FIND_("id"); |
- EXPECT_SUB_FIND_("5"); |
+ EXPECT_SUB_FIND_(kAsyncIdStr); |
EXPECT_SUB_FIND_("name1"); |
EXPECT_SUB_FIND_("value1"); |
EXPECT_FIND_("TRACE_EVENT_ASYNC_BEGIN2 call"); |
EXPECT_SUB_FIND_("id"); |
- EXPECT_SUB_FIND_("5"); |
+ EXPECT_SUB_FIND_(kAsyncIdStr); |
EXPECT_SUB_FIND_("name1"); |
EXPECT_SUB_FIND_("value1"); |
EXPECT_SUB_FIND_("name2"); |
@@ -467,26 +488,26 @@ void ValidateAllTraceMacrosCreatedData(const ListValue& trace_parsed) { |
EXPECT_FIND_("TRACE_EVENT_ASYNC_STEP0 call"); |
EXPECT_SUB_FIND_("id"); |
- EXPECT_SUB_FIND_("5"); |
+ EXPECT_SUB_FIND_(kAsyncIdStr); |
EXPECT_SUB_FIND_("step1"); |
EXPECT_FIND_("TRACE_EVENT_ASYNC_STEP1 call"); |
EXPECT_SUB_FIND_("id"); |
- EXPECT_SUB_FIND_("5"); |
+ EXPECT_SUB_FIND_(kAsyncIdStr); |
EXPECT_SUB_FIND_("step2"); |
EXPECT_SUB_FIND_("name1"); |
EXPECT_SUB_FIND_("value1"); |
EXPECT_FIND_("TRACE_EVENT_ASYNC_END0 call"); |
EXPECT_SUB_FIND_("id"); |
- EXPECT_SUB_FIND_("5"); |
+ EXPECT_SUB_FIND_(kAsyncIdStr); |
EXPECT_FIND_("TRACE_EVENT_ASYNC_END1 call"); |
EXPECT_SUB_FIND_("id"); |
- EXPECT_SUB_FIND_("5"); |
+ EXPECT_SUB_FIND_(kAsyncIdStr); |
EXPECT_SUB_FIND_("name1"); |
EXPECT_SUB_FIND_("value1"); |
EXPECT_FIND_("TRACE_EVENT_ASYNC_END2 call"); |
EXPECT_SUB_FIND_("id"); |
- EXPECT_SUB_FIND_("5"); |
+ EXPECT_SUB_FIND_(kAsyncIdStr); |
EXPECT_SUB_FIND_("name1"); |
EXPECT_SUB_FIND_("value1"); |
EXPECT_SUB_FIND_("name2"); |
@@ -494,32 +515,32 @@ void ValidateAllTraceMacrosCreatedData(const ListValue& trace_parsed) { |
EXPECT_FIND_("TRACE_EVENT_BEGIN_ETW0 call"); |
EXPECT_SUB_FIND_("id"); |
- EXPECT_SUB_FIND_("5"); |
+ EXPECT_SUB_FIND_(kAsyncIdStr); |
EXPECT_SUB_FIND_("extra"); |
EXPECT_SUB_FIND_("NULL"); |
EXPECT_FIND_("TRACE_EVENT_BEGIN_ETW1 call"); |
EXPECT_SUB_FIND_("id"); |
- EXPECT_SUB_FIND_("5"); |
+ EXPECT_SUB_FIND_(kAsyncIdStr); |
EXPECT_SUB_FIND_("extra"); |
EXPECT_SUB_FIND_("value"); |
EXPECT_FIND_("TRACE_EVENT_END_ETW0 call"); |
EXPECT_SUB_FIND_("id"); |
- EXPECT_SUB_FIND_("5"); |
+ EXPECT_SUB_FIND_(kAsyncIdStr); |
EXPECT_SUB_FIND_("extra"); |
EXPECT_SUB_FIND_("NULL"); |
EXPECT_FIND_("TRACE_EVENT_END_ETW1 call"); |
EXPECT_SUB_FIND_("id"); |
- EXPECT_SUB_FIND_("5"); |
+ EXPECT_SUB_FIND_(kAsyncIdStr); |
EXPECT_SUB_FIND_("extra"); |
EXPECT_SUB_FIND_("value"); |
EXPECT_FIND_("TRACE_EVENT_INSTANT_ETW0 call"); |
EXPECT_SUB_FIND_("id"); |
- EXPECT_SUB_FIND_("5"); |
+ EXPECT_SUB_FIND_(kAsyncIdStr); |
EXPECT_SUB_FIND_("extra"); |
EXPECT_SUB_FIND_("NULL"); |
EXPECT_FIND_("TRACE_EVENT_INSTANT_ETW1 call"); |
EXPECT_SUB_FIND_("id"); |
- EXPECT_SUB_FIND_("5"); |
+ EXPECT_SUB_FIND_(kAsyncIdStr); |
EXPECT_SUB_FIND_("extra"); |
EXPECT_SUB_FIND_("value"); |
@@ -580,6 +601,54 @@ void ValidateAllTraceMacrosCreatedData(const ListValue& trace_parsed) { |
EXPECT_TRUE((item && item->GetInteger("args.b", &value))); |
EXPECT_EQ(1415, value); |
} |
+ |
+ EXPECT_FIND_("TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP0 call"); |
+ { |
+ int val; |
+ EXPECT_TRUE((item && item->GetInteger("ts", &val))); |
+ EXPECT_EQ(12345, val); |
+ EXPECT_TRUE((item && item->GetInteger("tid", &val))); |
+ EXPECT_EQ(kThreadId, val); |
+ std::string id; |
+ EXPECT_TRUE((item && item->GetString("id", &id))); |
+ EXPECT_EQ(kAsyncId, atoi(id.c_str())); |
+ } |
+ |
+ EXPECT_FIND_("TRACE_EVENT_COPY_END_WITH_ID_TID_AND_TIMESTAMP0 call"); |
+ { |
+ int val; |
+ EXPECT_TRUE((item && item->GetInteger("ts", &val))); |
+ EXPECT_EQ(23456, val); |
+ EXPECT_TRUE((item && item->GetInteger("tid", &val))); |
+ EXPECT_EQ(kThreadId, val); |
+ std::string id; |
+ EXPECT_TRUE((item && item->GetString("id", &id))); |
+ EXPECT_EQ(kAsyncId, atoi(id.c_str())); |
+ } |
+ |
+ EXPECT_FIND_("TRACE_EVENT_BEGIN_WITH_ID_TID_AND_TIMESTAMP0 call"); |
+ { |
+ int val; |
+ EXPECT_TRUE((item && item->GetInteger("ts", &val))); |
+ EXPECT_EQ(34567, val); |
+ EXPECT_TRUE((item && item->GetInteger("tid", &val))); |
+ EXPECT_EQ(kThreadId, val); |
+ std::string id; |
+ EXPECT_TRUE((item && item->GetString("id", &id))); |
+ EXPECT_EQ(kAsyncId + 1, atoi(id.c_str())); |
+ } |
+ |
+ EXPECT_FIND_("TRACE_EVENT_END_WITH_ID_TID_AND_TIMESTAMP0 call"); |
+ { |
+ int val; |
+ EXPECT_TRUE((item && item->GetInteger("ts", &val))); |
+ EXPECT_EQ(45678, val); |
+ EXPECT_TRUE((item && item->GetInteger("tid", &val))); |
+ EXPECT_EQ(kThreadId, val); |
+ std::string id; |
+ EXPECT_TRUE((item && item->GetString("id", &id))); |
+ EXPECT_EQ(kAsyncId + 1, atoi(id.c_str())); |
+ } |
} |
void TraceManyInstantEvents(int thread_id, int num_events, |