Index: base/tracked_objects_unittest.cc |
=================================================================== |
--- base/tracked_objects_unittest.cc (revision 107960) |
+++ base/tracked_objects_unittest.cc (working copy) |
@@ -15,18 +15,15 @@ |
class TrackedObjectsTest : public testing::Test { |
public: |
- TrackedObjectsTest() { |
- ThreadData::ShutdownSingleThreadedCleanup(); |
- } |
+ ~TrackedObjectsTest() { |
+ ThreadData::ShutdownSingleThreadedCleanup(); |
+ } |
- ~TrackedObjectsTest() { |
- ThreadData::ShutdownSingleThreadedCleanup(); |
- } |
}; |
TEST_F(TrackedObjectsTest, MinimalStartupShutdown) { |
// Minimal test doesn't even create any tasks. |
- if (!ThreadData::InitializeAndSetTrackingStatus(true)) |
+ if (!ThreadData::StartTracking(true)) |
return; |
EXPECT_FALSE(ThreadData::first()); // No activity even on this thread. |
@@ -44,7 +41,7 @@ |
ThreadData::ShutdownSingleThreadedCleanup(); |
// Do it again, just to be sure we reset state completely. |
- ThreadData::InitializeAndSetTrackingStatus(true); |
+ ThreadData::StartTracking(true); |
EXPECT_FALSE(ThreadData::first()); // No activity even on this thread. |
data = ThreadData::Get(); |
EXPECT_TRUE(ThreadData::first()); // Now class was constructed. |
@@ -60,7 +57,7 @@ |
} |
TEST_F(TrackedObjectsTest, TinyStartupShutdown) { |
- if (!ThreadData::InitializeAndSetTrackingStatus(true)) |
+ if (!ThreadData::StartTracking(true)) |
return; |
// Instigate tracking on a single tracked object, on our thread. |
@@ -80,14 +77,14 @@ |
EXPECT_EQ(0u, death_map.size()); // No deaths. |
- // Now instigate another birth, and a first death at the same location. |
- // TrackingInfo will call TallyABirth() during construction. |
- base::TimeTicks kBogusStartTime; |
- base::TrackingInfo pending_task(location, kBogusStartTime); |
- TrackedTime kBogusStartRunTime; |
- TrackedTime kBogusEndRunTime; |
- ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, kBogusStartRunTime, |
- kBogusEndRunTime); |
+ // Now instigate a birth, and a death. |
+ const Births* second_birth = ThreadData::TallyABirthIfActive(location); |
+ ThreadData::TallyADeathIfActive( |
+ second_birth, |
+ base::TimeTicks(), /* Bogus post_time. */ |
+ base::TimeTicks(), /* Bogus delayed_start_time. */ |
+ base::TimeTicks(), /* Bogus start_run_time. */ |
+ base::TimeTicks() /* Bogus end_run_time */ ); |
birth_map.clear(); |
data->SnapshotBirthMap(&birth_map); |
@@ -103,13 +100,13 @@ |
} |
TEST_F(TrackedObjectsTest, DeathDataTest) { |
- if (!ThreadData::InitializeAndSetTrackingStatus(true)) |
+ if (!ThreadData::StartTracking(true)) |
return; |
scoped_ptr<DeathData> data(new DeathData()); |
ASSERT_NE(data, reinterpret_cast<DeathData*>(NULL)); |
- EXPECT_EQ(data->run_duration(), Duration()); |
- EXPECT_EQ(data->queue_duration(), Duration()); |
+ EXPECT_EQ(data->run_duration(), base::TimeDelta()); |
+ EXPECT_EQ(data->queue_duration(), base::TimeDelta()); |
EXPECT_EQ(data->AverageMsRunDuration(), 0); |
EXPECT_EQ(data->AverageMsQueueDuration(), 0); |
EXPECT_EQ(data->count(), 0); |
@@ -117,8 +114,8 @@ |
int run_ms = 42; |
int queue_ms = 8; |
- Duration run_duration = Duration().FromMilliseconds(run_ms); |
- Duration queue_duration = Duration().FromMilliseconds(queue_ms); |
+ base::TimeDelta run_duration = base::TimeDelta().FromMilliseconds(run_ms); |
+ base::TimeDelta queue_duration = base::TimeDelta().FromMilliseconds(queue_ms); |
data->RecordDeath(queue_duration, run_duration); |
EXPECT_EQ(data->run_duration(), run_duration); |
EXPECT_EQ(data->queue_duration(), queue_duration); |
@@ -154,69 +151,20 @@ |
EXPECT_EQ(json, birth_only_result); |
} |
-TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToValueWorkerThread) { |
- // Transition to Deactivated state before doing anything. |
- if (!ThreadData::InitializeAndSetTrackingStatus(false)) |
- return; |
- // We don't initialize system with a thread name, so we're viewed as a worker |
- // thread. |
- const int kFakeLineNumber = 173; |
- const char* kFile = "FixedFileName"; |
- const char* kFunction = "BirthOnlyToValueWorkerThread"; |
- Location location(kFunction, kFile, kFakeLineNumber, NULL); |
- Births* birth = ThreadData::TallyABirthIfActive(location); |
- // We should now see a NULL birth record. |
- EXPECT_EQ(birth, reinterpret_cast<Births*>(NULL)); |
- |
- scoped_ptr<base::Value> value(ThreadData::ToValue()); |
- std::string json; |
- base::JSONWriter::Write(value.get(), false, &json); |
- std::string birth_only_result = "{" |
- "\"list\":[" |
- "]" |
- "}"; |
- EXPECT_EQ(json, birth_only_result); |
-} |
- |
-TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToValueMainThread) { |
- // Start in the deactivated state. |
- if (!ThreadData::InitializeAndSetTrackingStatus(false)) |
- return; |
- |
- // Use a well named thread. |
- ThreadData::InitializeThreadContext("SomeMainThreadName"); |
- const int kFakeLineNumber = 173; |
- const char* kFile = "FixedFileName"; |
- const char* kFunction = "BirthOnlyToValueMainThread"; |
- Location location(kFunction, kFile, kFakeLineNumber, NULL); |
- // Do not delete birth. We don't own it. |
- Births* birth = ThreadData::TallyABirthIfActive(location); |
- // We expect to not get a birth record. |
- EXPECT_EQ(birth, reinterpret_cast<Births*>(NULL)); |
- |
- scoped_ptr<base::Value> value(ThreadData::ToValue()); |
- std::string json; |
- base::JSONWriter::Write(value.get(), false, &json); |
- std::string birth_only_result = "{" |
- "\"list\":[" |
- "]" |
- "}"; |
- EXPECT_EQ(json, birth_only_result); |
-} |
- |
TEST_F(TrackedObjectsTest, BirthOnlyToValueWorkerThread) { |
- if (!ThreadData::InitializeAndSetTrackingStatus(true)) |
+ if (!ThreadData::StartTracking(true)) |
return; |
// We don't initialize system with a thread name, so we're viewed as a worker |
// thread. |
- const int kFakeLineNumber = 173; |
+ int fake_line_number = 173; |
const char* kFile = "FixedFileName"; |
const char* kFunction = "BirthOnlyToValueWorkerThread"; |
- Location location(kFunction, kFile, kFakeLineNumber, NULL); |
+ Location location(kFunction, kFile, fake_line_number, NULL); |
Births* birth = ThreadData::TallyABirthIfActive(location); |
EXPECT_NE(birth, reinterpret_cast<Births*>(NULL)); |
- scoped_ptr<base::Value> value(ThreadData::ToValue()); |
+ int process_type = 3; |
+ scoped_ptr<base::Value> value(ThreadData::ToValue(process_type)); |
std::string json; |
base::JSONWriter::Write(value.get(), false, &json); |
std::string birth_only_result = "{" |
@@ -235,26 +183,28 @@ |
"\"line_number\":173" |
"}" |
"}" |
- "]" |
+ "]," |
+ "\"process\":3" |
"}"; |
EXPECT_EQ(json, birth_only_result); |
} |
TEST_F(TrackedObjectsTest, BirthOnlyToValueMainThread) { |
- if (!ThreadData::InitializeAndSetTrackingStatus(true)) |
+ if (!ThreadData::StartTracking(true)) |
return; |
// Use a well named thread. |
ThreadData::InitializeThreadContext("SomeMainThreadName"); |
- const int kFakeLineNumber = 173; |
+ int fake_line_number = 173; |
const char* kFile = "FixedFileName"; |
const char* kFunction = "BirthOnlyToValueMainThread"; |
- Location location(kFunction, kFile, kFakeLineNumber, NULL); |
+ Location location(kFunction, kFile, fake_line_number, NULL); |
// Do not delete birth. We don't own it. |
Births* birth = ThreadData::TallyABirthIfActive(location); |
EXPECT_NE(birth, reinterpret_cast<Births*>(NULL)); |
- scoped_ptr<base::Value> value(ThreadData::ToValue()); |
+ int process_type = 34; |
+ scoped_ptr<base::Value> value(ThreadData::ToValue(process_type)); |
std::string json; |
base::JSONWriter::Write(value.get(), false, &json); |
std::string birth_only_result = "{" |
@@ -273,39 +223,40 @@ |
"\"line_number\":173" |
"}" |
"}" |
- "]" |
+ "]," |
+ "\"process\":34" |
"}"; |
EXPECT_EQ(json, birth_only_result); |
} |
TEST_F(TrackedObjectsTest, LifeCycleToValueMainThread) { |
- if (!ThreadData::InitializeAndSetTrackingStatus(true)) |
+ if (!ThreadData::StartTracking(true)) |
return; |
// Use a well named thread. |
ThreadData::InitializeThreadContext("SomeMainThreadName"); |
- const int kFakeLineNumber = 236; |
+ int fake_line_number = 236; |
const char* kFile = "FixedFileName"; |
const char* kFunction = "LifeCycleToValueMainThread"; |
- Location location(kFunction, kFile, kFakeLineNumber, NULL); |
+ Location location(kFunction, kFile, fake_line_number, NULL); |
// Do not delete birth. We don't own it. |
Births* birth = ThreadData::TallyABirthIfActive(location); |
EXPECT_NE(birth, reinterpret_cast<Births*>(NULL)); |
- const base::TimeTicks kTimePosted = base::TimeTicks() |
- + base::TimeDelta::FromMilliseconds(1); |
- const base::TimeTicks kDelayedStartTime = base::TimeTicks(); |
- // TrackingInfo will call TallyABirth() during construction. |
- base::TrackingInfo pending_task(location, kDelayedStartTime); |
- pending_task.time_posted = kTimePosted; // Overwrite implied Now(). |
+ // TimeTicks initializers ar ein microseconds. Durations are calculated in |
+ // milliseconds, so we need to use 1000x. |
+ const base::TimeTicks time_posted = base::TimeTicks() + |
+ base::TimeDelta::FromMilliseconds(1); |
+ const base::TimeTicks delayed_start_time = base::TimeTicks(); |
+ const base::TimeTicks start_of_run = base::TimeTicks() + |
+ base::TimeDelta::FromMilliseconds(5); |
+ const base::TimeTicks end_of_run = base::TimeTicks() + |
+ base::TimeDelta::FromMilliseconds(7); |
+ ThreadData::TallyADeathIfActive(birth, time_posted, delayed_start_time, |
+ start_of_run, end_of_run); |
- const TrackedTime kStartOfRun = TrackedTime() + |
- Duration::FromMilliseconds(5); |
- const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7); |
- ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, |
- kStartOfRun, kEndOfRun); |
- |
- scoped_ptr<base::Value> value(ThreadData::ToValue()); |
+ int process_type = 7; |
+ scoped_ptr<base::Value> value(ThreadData::ToValue(process_type)); |
std::string json; |
base::JSONWriter::Write(value.get(), false, &json); |
std::string one_line_result = "{" |
@@ -324,190 +275,44 @@ |
"\"line_number\":236" |
"}" |
"}" |
- "]" |
+ "]," |
+ "\"process\":7" |
"}"; |
- EXPECT_EQ(one_line_result, json); |
+ EXPECT_EQ(json, one_line_result); |
} |
-// We will deactivate tracking after the birth, and before the death, and |
-// demonstrate that the lifecycle is completely tallied. This ensures that |
-// our tallied births are matched by tallied deaths (except for when the |
-// task is still running, or is queued). |
-TEST_F(TrackedObjectsTest, LifeCycleMidDeactivatedToValueMainThread) { |
- if (!ThreadData::InitializeAndSetTrackingStatus(true)) |
- return; |
- |
- // Use a well named thread. |
- ThreadData::InitializeThreadContext("SomeMainThreadName"); |
- const int kFakeLineNumber = 236; |
- const char* kFile = "FixedFileName"; |
- const char* kFunction = "LifeCycleToValueMainThread"; |
- Location location(kFunction, kFile, kFakeLineNumber, NULL); |
- // Do not delete birth. We don't own it. |
- Births* birth = ThreadData::TallyABirthIfActive(location); |
- EXPECT_NE(birth, reinterpret_cast<Births*>(NULL)); |
- |
- const base::TimeTicks kTimePosted = base::TimeTicks() |
- + base::TimeDelta::FromMilliseconds(1); |
- const base::TimeTicks kDelayedStartTime = base::TimeTicks(); |
- // TrackingInfo will call TallyABirth() during construction. |
- base::TrackingInfo pending_task(location, kDelayedStartTime); |
- pending_task.time_posted = kTimePosted; // Overwrite implied Now(). |
- |
- // Turn off tracking now that we have births. |
- EXPECT_TRUE(ThreadData::InitializeAndSetTrackingStatus(false)); |
- |
- const TrackedTime kStartOfRun = TrackedTime() + |
- Duration::FromMilliseconds(5); |
- const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7); |
- ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, |
- kStartOfRun, kEndOfRun); |
- |
- scoped_ptr<base::Value> value(ThreadData::ToValue()); |
- std::string json; |
- base::JSONWriter::Write(value.get(), false, &json); |
- std::string one_line_result = "{" |
- "\"list\":[" |
- "{" |
- "\"birth_thread\":\"SomeMainThreadName\"," |
- "\"death_data\":{" |
- "\"count\":1," |
- "\"queue_ms\":4," |
- "\"run_ms\":2" |
- "}," |
- "\"death_thread\":\"SomeMainThreadName\"," |
- "\"location\":{" |
- "\"file_name\":\"FixedFileName\"," |
- "\"function_name\":\"LifeCycleToValueMainThread\"," |
- "\"line_number\":236" |
- "}" |
- "}" |
- "]" |
- "}"; |
- EXPECT_EQ(one_line_result, json); |
-} |
- |
-// We will deactivate tracking before starting a life cycle, and neither |
-// the birth nor the death will be recorded. |
-TEST_F(TrackedObjectsTest, LifeCyclePreDeactivatedToValueMainThread) { |
- if (!ThreadData::InitializeAndSetTrackingStatus(false)) |
- return; |
- |
- // Use a well named thread. |
- ThreadData::InitializeThreadContext("SomeMainThreadName"); |
- const int kFakeLineNumber = 236; |
- const char* kFile = "FixedFileName"; |
- const char* kFunction = "LifeCycleToValueMainThread"; |
- Location location(kFunction, kFile, kFakeLineNumber, NULL); |
- // Do not delete birth. We don't own it. |
- Births* birth = ThreadData::TallyABirthIfActive(location); |
- EXPECT_EQ(birth, reinterpret_cast<Births*>(NULL)); |
- |
- const base::TimeTicks kTimePosted = base::TimeTicks() |
- + base::TimeDelta::FromMilliseconds(1); |
- const base::TimeTicks kDelayedStartTime = base::TimeTicks(); |
- // TrackingInfo will call TallyABirth() during construction. |
- base::TrackingInfo pending_task(location, kDelayedStartTime); |
- pending_task.time_posted = kTimePosted; // Overwrite implied Now(). |
- |
- const TrackedTime kStartOfRun = TrackedTime() + |
- Duration::FromMilliseconds(5); |
- const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7); |
- ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, |
- kStartOfRun, kEndOfRun); |
- |
- scoped_ptr<base::Value> value(ThreadData::ToValue()); |
- std::string json; |
- base::JSONWriter::Write(value.get(), false, &json); |
- std::string one_line_result = "{" |
- "\"list\":[" |
- "]" |
- "}"; |
- EXPECT_EQ(one_line_result, json); |
-} |
- |
-TEST_F(TrackedObjectsTest, LifeCycleToValueWorkerThread) { |
- if (!ThreadData::InitializeAndSetTrackingStatus(true)) |
- return; |
- |
- // Don't initialize thread, so that we appear as a worker thread. |
- // ThreadData::InitializeThreadContext("SomeMainThreadName"); |
- |
- const int kFakeLineNumber = 236; |
- const char* kFile = "FixedFileName"; |
- const char* kFunction = "LifeCycleToValueWorkerThread"; |
- Location location(kFunction, kFile, kFakeLineNumber, NULL); |
- // Do not delete birth. We don't own it. |
- Births* birth = ThreadData::TallyABirthIfActive(location); |
- EXPECT_NE(birth, reinterpret_cast<Births*>(NULL)); |
- |
- const TrackedTime kTimePosted = TrackedTime() + Duration::FromMilliseconds(1); |
- const TrackedTime kStartOfRun = TrackedTime() + |
- Duration::FromMilliseconds(5); |
- const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7); |
- ThreadData::TallyRunOnWorkerThreadIfTracking(birth, kTimePosted, |
- kStartOfRun, kEndOfRun); |
- |
- scoped_ptr<base::Value> value(ThreadData::ToValue()); |
- std::string json; |
- base::JSONWriter::Write(value.get(), false, &json); |
- std::string one_line_result = "{" |
- "\"list\":[" |
- "{" |
- "\"birth_thread\":\"WorkerThread-1\"," |
- "\"death_data\":{" |
- "\"count\":1," |
- "\"queue_ms\":4," |
- "\"run_ms\":2" |
- "}," |
- "\"death_thread\":\"WorkerThread-1\"," |
- "\"location\":{" |
- "\"file_name\":\"FixedFileName\"," |
- "\"function_name\":\"LifeCycleToValueWorkerThread\"," |
- "\"line_number\":236" |
- "}" |
- "}" |
- "]" |
- "}"; |
- EXPECT_EQ(one_line_result, json); |
-} |
- |
TEST_F(TrackedObjectsTest, TwoLives) { |
- if (!ThreadData::InitializeAndSetTrackingStatus(true)) |
+ if (!ThreadData::StartTracking(true)) |
return; |
// Use a well named thread. |
ThreadData::InitializeThreadContext("SomeFileThreadName"); |
- const int kFakeLineNumber = 222; |
+ int fake_line_number = 222; |
const char* kFile = "AnotherFileName"; |
const char* kFunction = "TwoLives"; |
- Location location(kFunction, kFile, kFakeLineNumber, NULL); |
+ Location location(kFunction, kFile, fake_line_number, NULL); |
// Do not delete birth. We don't own it. |
Births* birth = ThreadData::TallyABirthIfActive(location); |
EXPECT_NE(birth, reinterpret_cast<Births*>(NULL)); |
+ // TimeTicks initializers ar ein microseconds. Durations are calculated in |
+ // milliseconds, so we need to use 1000x. |
+ const base::TimeTicks time_posted = base::TimeTicks() + |
+ base::TimeDelta::FromMilliseconds(1); |
+ const base::TimeTicks delayed_start_time = base::TimeTicks(); |
+ const base::TimeTicks start_of_run = base::TimeTicks() + |
+ base::TimeDelta::FromMilliseconds(5); |
+ const base::TimeTicks end_of_run = base::TimeTicks() + |
+ base::TimeDelta::FromMilliseconds(7); |
+ ThreadData::TallyADeathIfActive(birth, time_posted, delayed_start_time, |
+ start_of_run, end_of_run); |
- const base::TimeTicks kTimePosted = base::TimeTicks() |
- + base::TimeDelta::FromMilliseconds(1); |
- const base::TimeTicks kDelayedStartTime = base::TimeTicks(); |
- // TrackingInfo will call TallyABirth() during construction. |
- base::TrackingInfo pending_task(location, kDelayedStartTime); |
- pending_task.time_posted = kTimePosted; // Overwrite implied Now(). |
+ birth = ThreadData::TallyABirthIfActive(location); |
+ ThreadData::TallyADeathIfActive(birth, time_posted, delayed_start_time, |
+ start_of_run, end_of_run); |
- const TrackedTime kStartOfRun = TrackedTime() + |
- Duration::FromMilliseconds(5); |
- const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7); |
- ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, |
- kStartOfRun, kEndOfRun); |
- |
- // TrackingInfo will call TallyABirth() during construction. |
- base::TrackingInfo pending_task2(location, kDelayedStartTime); |
- pending_task2.time_posted = kTimePosted; // Overwrite implied Now(). |
- |
- ThreadData::TallyRunOnNamedThreadIfTracking(pending_task2, |
- kStartOfRun, kEndOfRun); |
- |
- scoped_ptr<base::Value> value(ThreadData::ToValue()); |
+ int process_type = 7; |
+ scoped_ptr<base::Value> value(ThreadData::ToValue(process_type)); |
std::string json; |
base::JSONWriter::Write(value.get(), false, &json); |
std::string one_line_result = "{" |
@@ -526,43 +331,44 @@ |
"\"line_number\":222" |
"}" |
"}" |
- "]" |
+ "]," |
+ "\"process\":7" |
"}"; |
- EXPECT_EQ(one_line_result, json); |
+ EXPECT_EQ(json, one_line_result); |
} |
TEST_F(TrackedObjectsTest, DifferentLives) { |
- if (!ThreadData::InitializeAndSetTrackingStatus(true)) |
+ if (!ThreadData::StartTracking(true)) |
return; |
// Use a well named thread. |
ThreadData::InitializeThreadContext("SomeFileThreadName"); |
- const int kFakeLineNumber = 567; |
+ int fake_line_number = 567; |
const char* kFile = "AnotherFileName"; |
const char* kFunction = "DifferentLives"; |
- Location location(kFunction, kFile, kFakeLineNumber, NULL); |
+ Location location(kFunction, kFile, fake_line_number, NULL); |
+ // Do not delete birth. We don't own it. |
+ Births* birth = ThreadData::TallyABirthIfActive(location); |
+ EXPECT_NE(birth, reinterpret_cast<Births*>(NULL)); |
- const base::TimeTicks kTimePosted = base::TimeTicks() |
- + base::TimeDelta::FromMilliseconds(1); |
- const base::TimeTicks kDelayedStartTime = base::TimeTicks(); |
- // TrackingInfo will call TallyABirth() during construction. |
- base::TrackingInfo pending_task(location, kDelayedStartTime); |
- pending_task.time_posted = kTimePosted; // Overwrite implied Now(). |
+ // TimeTicks initializers ar ein microseconds. Durations are calculated in |
+ // milliseconds, so we need to use 1000x. |
+ const base::TimeTicks time_posted = base::TimeTicks() + |
+ base::TimeDelta::FromMilliseconds(1); |
+ const base::TimeTicks delayed_start_time = base::TimeTicks(); |
+ const base::TimeTicks start_of_run = base::TimeTicks() + |
+ base::TimeDelta::FromMilliseconds(5); |
+ const base::TimeTicks end_of_run = base::TimeTicks() + |
+ base::TimeDelta::FromMilliseconds(7); |
+ ThreadData::TallyADeathIfActive(birth, time_posted, delayed_start_time, |
+ start_of_run, end_of_run); |
- const TrackedTime kStartOfRun = TrackedTime() + |
- Duration::FromMilliseconds(5); |
- const TrackedTime kEndOfRun = TrackedTime() + Duration::FromMilliseconds(7); |
- ThreadData::TallyRunOnNamedThreadIfTracking(pending_task, |
- kStartOfRun, kEndOfRun); |
+ int second_fake_line_number = 999; |
+ Location second_location(kFunction, kFile, second_fake_line_number, NULL); |
+ birth = ThreadData::TallyABirthIfActive(second_location); |
- const int kSecondFakeLineNumber = 999; |
- Location second_location(kFunction, kFile, kSecondFakeLineNumber, NULL); |
- |
- // TrackingInfo will call TallyABirth() during construction. |
- base::TrackingInfo pending_task2(second_location, kDelayedStartTime); |
- pending_task2.time_posted = kTimePosted; // Overwrite implied Now(). |
- |
- scoped_ptr<base::Value> value(ThreadData::ToValue()); |
+ int process_type = 2; |
+ scoped_ptr<base::Value> value(ThreadData::ToValue(process_type)); |
std::string json; |
base::JSONWriter::Write(value.get(), false, &json); |
std::string one_line_result = "{" |
@@ -595,9 +401,10 @@ |
"\"line_number\":999" |
"}" |
"}" |
- "]" |
+ "]," |
+ "\"process\":2" |
"}"; |
- EXPECT_EQ(one_line_result, json); |
+ EXPECT_EQ(json, one_line_result); |
} |
} // namespace tracked_objects |