| Index: base/debug/activity_analyzer_unittest.cc
|
| diff --git a/base/debug/activity_analyzer_unittest.cc b/base/debug/activity_analyzer_unittest.cc
|
| index ee614eaeb9a12d83864e25961cc37db108085629..10b70aa989656ec886665325d282a46ecedee006 100644
|
| --- a/base/debug/activity_analyzer_unittest.cc
|
| +++ b/base/debug/activity_analyzer_unittest.cc
|
| @@ -139,18 +139,22 @@ class SimpleActivityThread : public SimpleThread {
|
|
|
| TEST_F(ActivityAnalyzerTest, GlobalAnalyzerConstruction) {
|
| GlobalActivityTracker::CreateWithLocalMemory(kMemorySize, 0, "", 3);
|
| + GlobalActivityTracker::Get()->process_data().SetString("foo", "bar");
|
|
|
| PersistentMemoryAllocator* allocator =
|
| GlobalActivityTracker::Get()->allocator();
|
| GlobalActivityAnalyzer analyzer(MakeUnique<PersistentMemoryAllocator>(
|
| const_cast<void*>(allocator->data()), allocator->size(), 0, 0, "", true));
|
|
|
| - // The only thread at thois point is the test thread.
|
| - ThreadActivityAnalyzer* ta1 = analyzer.GetFirstAnalyzer();
|
| + // The only thread at this point is the test thread of this process.
|
| + const int64_t pid = analyzer.GetFirstProcess();
|
| + ASSERT_NE(0, pid);
|
| + ThreadActivityAnalyzer* ta1 = analyzer.GetFirstAnalyzer(pid);
|
| ASSERT_TRUE(ta1);
|
| - EXPECT_FALSE(analyzer.GetNextAnalyzer());
|
| + EXPECT_FALSE(analyzer.GetNextAnalyzer(pid));
|
| ThreadActivityAnalyzer::ThreadKey tk1 = ta1->GetThreadKey();
|
| EXPECT_EQ(ta1, analyzer.GetAnalyzerForThread(tk1));
|
| + EXPECT_EQ(0, analyzer.GetNextProcess());
|
|
|
| // Create a second thread that will do something.
|
| SimpleActivityThread t2("t2", nullptr, Activity::ACT_TASK,
|
| @@ -158,28 +162,38 @@ TEST_F(ActivityAnalyzerTest, GlobalAnalyzerConstruction) {
|
| t2.Start();
|
| t2.WaitReady();
|
|
|
| - // Now there should be two.
|
| - EXPECT_TRUE(analyzer.GetFirstAnalyzer());
|
| - EXPECT_TRUE(analyzer.GetNextAnalyzer());
|
| - EXPECT_FALSE(analyzer.GetNextAnalyzer());
|
| + // Now there should be two. Calling GetFirstProcess invalidates any
|
| + // previously returned analyzer pointers.
|
| + ASSERT_EQ(pid, analyzer.GetFirstProcess());
|
| + EXPECT_TRUE(analyzer.GetFirstAnalyzer(pid));
|
| + EXPECT_TRUE(analyzer.GetNextAnalyzer(pid));
|
| + EXPECT_FALSE(analyzer.GetNextAnalyzer(pid));
|
| + EXPECT_EQ(0, analyzer.GetNextProcess());
|
|
|
| // Let thread exit.
|
| t2.Exit();
|
| t2.Join();
|
|
|
| - // Now there should be only one again. Calling GetFirstAnalyzer invalidates
|
| - // any previously returned analyzer pointers.
|
| - ThreadActivityAnalyzer* ta2 = analyzer.GetFirstAnalyzer();
|
| + // Now there should be only one again.
|
| + ASSERT_EQ(pid, analyzer.GetFirstProcess());
|
| + ThreadActivityAnalyzer* ta2 = analyzer.GetFirstAnalyzer(pid);
|
| ASSERT_TRUE(ta2);
|
| - EXPECT_FALSE(analyzer.GetNextAnalyzer());
|
| + EXPECT_FALSE(analyzer.GetNextAnalyzer(pid));
|
| ThreadActivityAnalyzer::ThreadKey tk2 = ta2->GetThreadKey();
|
| EXPECT_EQ(ta2, analyzer.GetAnalyzerForThread(tk2));
|
| EXPECT_EQ(tk1, tk2);
|
| + EXPECT_EQ(0, analyzer.GetNextProcess());
|
| +
|
| + // Verify that there is process data.
|
| + const ActivityUserData::Snapshot& data_snapshot =
|
| + analyzer.GetProcessDataSnapshot(pid);
|
| + ASSERT_LE(1U, data_snapshot.size());
|
| + EXPECT_EQ("bar", data_snapshot.at("foo").GetString());
|
| }
|
|
|
| TEST_F(ActivityAnalyzerTest, UserDataSnapshotTest) {
|
| GlobalActivityTracker::CreateWithLocalMemory(kMemorySize, 0, "", 3);
|
| - ThreadActivityAnalyzer::Snapshot snapshot;
|
| + ThreadActivityAnalyzer::Snapshot tracker_snapshot;
|
|
|
| const char string1a[] = "string1a";
|
| const char string1b[] = "string1b";
|
| @@ -218,16 +232,16 @@ TEST_F(ActivityAnalyzerTest, UserDataSnapshotTest) {
|
| user_data2.SetReference("ref2", string2a, sizeof(string2a));
|
| user_data2.SetStringReference("sref2", string2b);
|
|
|
| - ASSERT_TRUE(tracker->CreateSnapshot(&snapshot));
|
| - ASSERT_EQ(2U, snapshot.activity_stack.size());
|
| + ASSERT_TRUE(tracker->CreateSnapshot(&tracker_snapshot));
|
| + ASSERT_EQ(2U, tracker_snapshot.activity_stack.size());
|
|
|
| ThreadActivityAnalyzer analyzer(*tracker);
|
| analyzer.AddGlobalInformation(&global_analyzer);
|
| - const ThreadActivityAnalyzer::Snapshot& snapshot =
|
| + const ThreadActivityAnalyzer::Snapshot& analyzer_snapshot =
|
| analyzer.activity_snapshot();
|
| - ASSERT_EQ(2U, snapshot.user_data_stack.size());
|
| + ASSERT_EQ(2U, analyzer_snapshot.user_data_stack.size());
|
| const ActivityUserData::Snapshot& user_data =
|
| - snapshot.user_data_stack.at(1);
|
| + analyzer_snapshot.user_data_stack.at(1);
|
| EXPECT_EQ(8U, user_data.size());
|
| ASSERT_TRUE(ContainsKey(user_data, "raw2"));
|
| EXPECT_EQ("foo2", user_data.at("raw2").Get().as_string());
|
| @@ -250,16 +264,16 @@ TEST_F(ActivityAnalyzerTest, UserDataSnapshotTest) {
|
| user_data.at("sref2").GetStringReference().size());
|
| }
|
|
|
| - ASSERT_TRUE(tracker->CreateSnapshot(&snapshot));
|
| - ASSERT_EQ(1U, snapshot.activity_stack.size());
|
| + ASSERT_TRUE(tracker->CreateSnapshot(&tracker_snapshot));
|
| + ASSERT_EQ(1U, tracker_snapshot.activity_stack.size());
|
|
|
| ThreadActivityAnalyzer analyzer(*tracker);
|
| analyzer.AddGlobalInformation(&global_analyzer);
|
| - const ThreadActivityAnalyzer::Snapshot& snapshot =
|
| + const ThreadActivityAnalyzer::Snapshot& analyzer_snapshot =
|
| analyzer.activity_snapshot();
|
| - ASSERT_EQ(1U, snapshot.user_data_stack.size());
|
| + ASSERT_EQ(1U, analyzer_snapshot.user_data_stack.size());
|
| const ActivityUserData::Snapshot& user_data =
|
| - snapshot.user_data_stack.at(0);
|
| + analyzer_snapshot.user_data_stack.at(0);
|
| EXPECT_EQ(8U, user_data.size());
|
| EXPECT_EQ("foo1", user_data.at("raw1").Get().as_string());
|
| EXPECT_EQ("bar1", user_data.at("string1").GetString().as_string());
|
| @@ -274,8 +288,8 @@ TEST_F(ActivityAnalyzerTest, UserDataSnapshotTest) {
|
| user_data.at("sref1").GetStringReference().size());
|
| }
|
|
|
| - ASSERT_TRUE(tracker->CreateSnapshot(&snapshot));
|
| - ASSERT_EQ(0U, snapshot.activity_stack.size());
|
| + ASSERT_TRUE(tracker->CreateSnapshot(&tracker_snapshot));
|
| + ASSERT_EQ(0U, tracker_snapshot.activity_stack.size());
|
| }
|
|
|
| TEST_F(ActivityAnalyzerTest, GlobalUserDataTest) {
|
| @@ -299,8 +313,8 @@ TEST_F(ActivityAnalyzerTest, GlobalUserDataTest) {
|
| global_data.SetReference("ref", string1, sizeof(string1));
|
| global_data.SetStringReference("sref", string2);
|
|
|
| - ActivityUserData::Snapshot snapshot =
|
| - global_analyzer.GetGlobalUserDataSnapshot();
|
| + const ActivityUserData::Snapshot& snapshot =
|
| + global_analyzer.GetGlobalDataSnapshot();
|
| ASSERT_TRUE(ContainsKey(snapshot, "raw"));
|
| EXPECT_EQ("foo", snapshot.at("raw").Get().as_string());
|
| ASSERT_TRUE(ContainsKey(snapshot, "string"));
|
|
|