| Index: base/tracked_objects_unittest.cc
|
| diff --git a/base/tracked_objects_unittest.cc b/base/tracked_objects_unittest.cc
|
| index 837a449ccaf06427317f38ed014266793f948872..6014b00f7c01b2a8287104b5f68b1650a9a9d3b8 100644
|
| --- a/base/tracked_objects_unittest.cc
|
| +++ b/base/tracked_objects_unittest.cc
|
| @@ -6,11 +6,18 @@
|
|
|
| #include "base/tracked_objects.h"
|
|
|
| -#include "base/json/json_writer.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/time.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| +namespace {
|
| +
|
| +std::string GetProcessIdString() {
|
| + return base::IntToString(base::GetCurrentProcId());
|
| +}
|
| +
|
| +} // anonymous namespace
|
| +
|
| namespace tracked_objects {
|
|
|
| class TrackedObjectsTest : public testing::Test {
|
| @@ -170,7 +177,11 @@ TEST_F(TrackedObjectsTest, ParentChildTest) {
|
| EXPECT_EQ(parent_child_set.begin()->first,
|
| parent_child_set.begin()->second);
|
|
|
| - scoped_ptr<base::Value> value(ThreadData::ToValue(false));
|
| + SerializedProcessData process_data;
|
| + ThreadData::ToSerializedProcessData(false, &process_data);
|
| + scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue);
|
| + process_data.ToValue(value.get());
|
| +
|
| std::string json;
|
| base::JSONWriter::Write(value.get(), &json);
|
| std::string birth_only_result = "{"
|
| @@ -245,7 +256,8 @@ TEST_F(TrackedObjectsTest, DeathDataTest) {
|
| EXPECT_EQ(data->queue_duration_sample(), queue_ms);
|
| EXPECT_EQ(data->count(), 2);
|
|
|
| - scoped_ptr<base::DictionaryValue> dictionary(data->ToValue());
|
| + scoped_ptr<base::DictionaryValue> dictionary(new base::DictionaryValue);
|
| + SerializedDeathData(*data).ToValue(dictionary.get());
|
| int integer;
|
| EXPECT_TRUE(dictionary->GetInteger("run_ms", &integer));
|
| EXPECT_EQ(integer, 2 * run_ms);
|
| @@ -258,7 +270,8 @@ TEST_F(TrackedObjectsTest, DeathDataTest) {
|
| EXPECT_TRUE(dictionary->GetInteger("count", &integer));
|
| EXPECT_EQ(integer, 2);
|
|
|
| - scoped_ptr<base::Value> value(data->ToValue());
|
| + scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue);
|
| + SerializedDeathData(*data).ToValue(value.get());
|
| std::string json;
|
| base::JSONWriter::Write(value.get(), &json);
|
| std::string birth_only_result = "{"
|
| @@ -287,16 +300,21 @@ TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToValueWorkerThread) {
|
| // We should now see a NULL birth record.
|
| EXPECT_EQ(birth, reinterpret_cast<Births*>(NULL));
|
|
|
| - scoped_ptr<base::Value> value(ThreadData::ToValue(false));
|
| + SerializedProcessData process_data;
|
| + ThreadData::ToSerializedProcessData(false, &process_data);
|
| + scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue);
|
| + process_data.ToValue(value.get());
|
| +
|
| std::string json;
|
| base::JSONWriter::Write(value.get(), &json);
|
| std::string birth_only_result = "{"
|
| "\"descendants\":["
|
| "],"
|
| "\"list\":["
|
| - "]"
|
| + "],"
|
| + "\"process_id\":" + GetProcessIdString() +
|
| "}";
|
| - EXPECT_EQ(json, birth_only_result);
|
| + EXPECT_EQ(birth_only_result, json);
|
| }
|
|
|
| TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToValueMainThread) {
|
| @@ -315,16 +333,21 @@ TEST_F(TrackedObjectsTest, DeactivatedBirthOnlyToValueMainThread) {
|
| // We expect to not get a birth record.
|
| EXPECT_EQ(birth, reinterpret_cast<Births*>(NULL));
|
|
|
| - scoped_ptr<base::Value> value(ThreadData::ToValue(false));
|
| + SerializedProcessData process_data;
|
| + ThreadData::ToSerializedProcessData(false, &process_data);
|
| + scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue);
|
| + process_data.ToValue(value.get());
|
| +
|
| std::string json;
|
| base::JSONWriter::Write(value.get(), &json);
|
| std::string birth_only_result = "{"
|
| "\"descendants\":["
|
| "],"
|
| "\"list\":["
|
| - "]"
|
| + "],"
|
| + "\"process_id\":" + GetProcessIdString() +
|
| "}";
|
| - EXPECT_EQ(json, birth_only_result);
|
| + EXPECT_EQ(birth_only_result, json);
|
| }
|
|
|
| TEST_F(TrackedObjectsTest, BirthOnlyToValueWorkerThread) {
|
| @@ -340,7 +363,11 @@ TEST_F(TrackedObjectsTest, BirthOnlyToValueWorkerThread) {
|
| Births* birth = ThreadData::TallyABirthIfActive(location);
|
| EXPECT_NE(birth, reinterpret_cast<Births*>(NULL));
|
|
|
| - scoped_ptr<base::Value> value(ThreadData::ToValue(false));
|
| + SerializedProcessData process_data;
|
| + ThreadData::ToSerializedProcessData(false, &process_data);
|
| + scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue);
|
| + process_data.ToValue(value.get());
|
| +
|
| std::string json;
|
| base::JSONWriter::Write(value.get(), &json);
|
| std::string birth_only_result = "{"
|
| @@ -365,9 +392,10 @@ TEST_F(TrackedObjectsTest, BirthOnlyToValueWorkerThread) {
|
| "\"line_number\":173"
|
| "}"
|
| "}"
|
| - "]"
|
| + "],"
|
| + "\"process_id\":" + GetProcessIdString() +
|
| "}";
|
| - EXPECT_EQ(json, birth_only_result);
|
| + EXPECT_EQ(birth_only_result, json);
|
| }
|
|
|
| TEST_F(TrackedObjectsTest, BirthOnlyToValueMainThread) {
|
| @@ -385,7 +413,11 @@ TEST_F(TrackedObjectsTest, BirthOnlyToValueMainThread) {
|
| Births* birth = ThreadData::TallyABirthIfActive(location);
|
| EXPECT_NE(birth, reinterpret_cast<Births*>(NULL));
|
|
|
| - scoped_ptr<base::Value> value(ThreadData::ToValue(false));
|
| + SerializedProcessData process_data;
|
| + ThreadData::ToSerializedProcessData(false, &process_data);
|
| + scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue);
|
| + process_data.ToValue(value.get());
|
| +
|
| std::string json;
|
| base::JSONWriter::Write(value.get(), &json);
|
| std::string birth_only_result = "{"
|
| @@ -410,9 +442,10 @@ TEST_F(TrackedObjectsTest, BirthOnlyToValueMainThread) {
|
| "\"line_number\":173"
|
| "}"
|
| "}"
|
| - "]"
|
| + "],"
|
| + "\"process_id\":" + GetProcessIdString() +
|
| "}";
|
| - EXPECT_EQ(json, birth_only_result);
|
| + EXPECT_EQ(birth_only_result, json);
|
| }
|
|
|
| TEST_F(TrackedObjectsTest, LifeCycleToValueMainThread) {
|
| @@ -443,7 +476,11 @@ TEST_F(TrackedObjectsTest, LifeCycleToValueMainThread) {
|
| ThreadData::TallyRunOnNamedThreadIfTracking(pending_task,
|
| kStartOfRun, kEndOfRun);
|
|
|
| - scoped_ptr<base::Value> value(ThreadData::ToValue(false));
|
| + SerializedProcessData process_data;
|
| + ThreadData::ToSerializedProcessData(false, &process_data);
|
| + scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue);
|
| + process_data.ToValue(value.get());
|
| +
|
| std::string json;
|
| base::JSONWriter::Write(value.get(), &json);
|
| std::string one_line_result = "{"
|
| @@ -468,7 +505,8 @@ TEST_F(TrackedObjectsTest, LifeCycleToValueMainThread) {
|
| "\"line_number\":236"
|
| "}"
|
| "}"
|
| - "]"
|
| + "],"
|
| + "\"process_id\":" + GetProcessIdString() +
|
| "}";
|
| EXPECT_EQ(one_line_result, json);
|
| }
|
| @@ -509,7 +547,11 @@ TEST_F(TrackedObjectsTest, LifeCycleMidDeactivatedToValueMainThread) {
|
| ThreadData::TallyRunOnNamedThreadIfTracking(pending_task,
|
| kStartOfRun, kEndOfRun);
|
|
|
| - scoped_ptr<base::Value> value(ThreadData::ToValue(false));
|
| + SerializedProcessData process_data;
|
| + ThreadData::ToSerializedProcessData(false, &process_data);
|
| + scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue);
|
| + process_data.ToValue(value.get());
|
| +
|
| std::string json;
|
| base::JSONWriter::Write(value.get(), &json);
|
| std::string one_line_result = "{"
|
| @@ -534,7 +576,8 @@ TEST_F(TrackedObjectsTest, LifeCycleMidDeactivatedToValueMainThread) {
|
| "\"line_number\":236"
|
| "}"
|
| "}"
|
| - "]"
|
| + "],"
|
| + "\"process_id\":" + GetProcessIdString() +
|
| "}";
|
| EXPECT_EQ(one_line_result, json);
|
| }
|
| @@ -568,14 +611,19 @@ TEST_F(TrackedObjectsTest, LifeCyclePreDeactivatedToValueMainThread) {
|
| ThreadData::TallyRunOnNamedThreadIfTracking(pending_task,
|
| kStartOfRun, kEndOfRun);
|
|
|
| - scoped_ptr<base::Value> value(ThreadData::ToValue(false));
|
| + SerializedProcessData process_data;
|
| + ThreadData::ToSerializedProcessData(false, &process_data);
|
| + scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue);
|
| + process_data.ToValue(value.get());
|
| +
|
| std::string json;
|
| base::JSONWriter::Write(value.get(), &json);
|
| std::string one_line_result = "{"
|
| "\"descendants\":["
|
| "],"
|
| "\"list\":["
|
| - "]"
|
| + "],"
|
| + "\"process_id\":" + GetProcessIdString() +
|
| "}";
|
| EXPECT_EQ(one_line_result, json);
|
| }
|
| @@ -604,7 +652,11 @@ TEST_F(TrackedObjectsTest, LifeCycleToValueWorkerThread) {
|
| kStartOfRun, kEndOfRun);
|
|
|
| // Call for the ToValue, but tell it to not the maxes after scanning.
|
| - scoped_ptr<base::Value> value(ThreadData::ToValue(false));
|
| + SerializedProcessData process_data;
|
| + ThreadData::ToSerializedProcessData(false, &process_data);
|
| + scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue);
|
| + process_data.ToValue(value.get());
|
| +
|
| std::string json;
|
| base::JSONWriter::Write(value.get(), &json);
|
| std::string one_line_result = "{"
|
| @@ -629,22 +681,31 @@ TEST_F(TrackedObjectsTest, LifeCycleToValueWorkerThread) {
|
| "\"line_number\":236"
|
| "}"
|
| "}"
|
| - "]"
|
| + "],"
|
| + "\"process_id\":" + GetProcessIdString() +
|
| "}";
|
| EXPECT_EQ(one_line_result, json);
|
|
|
| // Call for the ToValue, but tell it to reset the maxes after scanning.
|
| // We'll still get the same values, but the data will be reset (which we'll
|
| // see in a moment).
|
| - value.reset(ThreadData::ToValue(true));
|
| - base::JSONWriter::Write(value.get(), &json);
|
| + SerializedProcessData process_data_pre_reset;
|
| + ThreadData::ToSerializedProcessData(true, &process_data_pre_reset);
|
| + value.reset(new base::DictionaryValue);
|
| + process_data_pre_reset.ToValue(value.get());
|
| +
|
| + base::JSONWriter::Write(value.get(), false, &json);
|
| // Result should be unchanged.
|
| EXPECT_EQ(one_line_result, json);
|
|
|
| // Call for the ToValue, and now we'll see the result of the last translation,
|
| // as the max will have been pushed back to zero.
|
| - value.reset(ThreadData::ToValue(false));
|
| - base::JSONWriter::Write(value.get(), &json);
|
| + SerializedProcessData process_data_post_reset;
|
| + ThreadData::ToSerializedProcessData(true, &process_data_post_reset);
|
| + value.reset(new base::DictionaryValue);
|
| + process_data_post_reset.ToValue(value.get());
|
| +
|
| + base::JSONWriter::Write(value.get(), false, &json);
|
| std::string one_line_result_with_zeros = "{"
|
| "\"descendants\":["
|
| "],"
|
| @@ -667,7 +728,8 @@ TEST_F(TrackedObjectsTest, LifeCycleToValueWorkerThread) {
|
| "\"line_number\":236"
|
| "}"
|
| "}"
|
| - "]"
|
| + "],"
|
| + "\"process_id\":" + GetProcessIdString() +
|
| "}";
|
| EXPECT_EQ(one_line_result_with_zeros, json);
|
| }
|
| @@ -708,7 +770,11 @@ TEST_F(TrackedObjectsTest, TwoLives) {
|
| ThreadData::TallyRunOnNamedThreadIfTracking(pending_task2,
|
| kStartOfRun, kEndOfRun);
|
|
|
| - scoped_ptr<base::Value> value(ThreadData::ToValue(false));
|
| + SerializedProcessData process_data;
|
| + ThreadData::ToSerializedProcessData(false, &process_data);
|
| + scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue);
|
| + process_data.ToValue(value.get());
|
| +
|
| std::string json;
|
| base::JSONWriter::Write(value.get(), &json);
|
| std::string one_line_result = "{"
|
| @@ -733,7 +799,8 @@ TEST_F(TrackedObjectsTest, TwoLives) {
|
| "\"line_number\":222"
|
| "}"
|
| "}"
|
| - "]"
|
| + "],"
|
| + "\"process_id\":" + GetProcessIdString() +
|
| "}";
|
| EXPECT_EQ(one_line_result, json);
|
| }
|
| @@ -770,7 +837,11 @@ TEST_F(TrackedObjectsTest, DifferentLives) {
|
| base::TrackingInfo pending_task2(second_location, kDelayedStartTime);
|
| pending_task2.time_posted = kTimePosted; // Overwrite implied Now().
|
|
|
| - scoped_ptr<base::Value> value(ThreadData::ToValue(false));
|
| + SerializedProcessData process_data;
|
| + ThreadData::ToSerializedProcessData(false, &process_data);
|
| + scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue);
|
| + process_data.ToValue(value.get());
|
| +
|
| std::string json;
|
| base::JSONWriter::Write(value.get(), &json);
|
| std::string one_line_result = "{"
|
| @@ -813,7 +884,8 @@ TEST_F(TrackedObjectsTest, DifferentLives) {
|
| "\"line_number\":999"
|
| "}"
|
| "}"
|
| - "]"
|
| + "],"
|
| + "\"process_id\":" + GetProcessIdString() +
|
| "}";
|
| EXPECT_EQ(one_line_result, json);
|
| }
|
|
|