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

Unified Diff: base/debug/activity_analyzer_unittest.cc

Issue 2754483002: Add analyzer support for multiple processes. (Closed)
Patch Set: rebased Created 3 years, 9 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
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"));

Powered by Google App Engine
This is Rietveld 408576698