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

Unified Diff: services/resource_coordinator/memory/coordinator/process_map_unittest.cc

Issue 2891113003: memory instrumentation service: minor cleanups (Closed)
Patch Set: remove dcheck Created 3 years, 7 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
« no previous file with comments | « services/resource_coordinator/memory/coordinator/process_map.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/resource_coordinator/memory/coordinator/process_map_unittest.cc
diff --git a/services/resource_coordinator/memory/coordinator/process_map_unittest.cc b/services/resource_coordinator/memory/coordinator/process_map_unittest.cc
index 087a525373cdce2207bc2730ec40b9d5f3b4eb20..69b921236e7e70f449ecf913d0cf5f6deb9a96b8 100644
--- a/services/resource_coordinator/memory/coordinator/process_map_unittest.cc
+++ b/services/resource_coordinator/memory/coordinator/process_map_unittest.cc
@@ -4,6 +4,7 @@
#include <utility>
+#include "base/strings/stringprintf.h"
#include "services/resource_coordinator/memory/coordinator/process_map.h"
#include "services/service_manager/public/cpp/identity.h"
#include "services/service_manager/public/interfaces/service_manager.mojom.h"
@@ -15,50 +16,58 @@ using RunningServiceInfoPtr = service_manager::mojom::RunningServiceInfoPtr;
using ServiceManagerListenerRequest =
service_manager::mojom::ServiceManagerListenerRequest;
-class ProcessMapTest : public testing::Test {
- public:
- ProcessMapTest() : process_map_(nullptr) {}
-
- protected:
- ProcessMap process_map_;
-};
+RunningServiceInfoPtr MakeTestServiceInfo(
+ const service_manager::Identity& identity,
+ uint32_t pid) {
+ RunningServiceInfoPtr info(service_manager::mojom::RunningServiceInfo::New());
+ info->identity = identity;
+ info->pid = pid;
+ return info;
+}
-TEST_F(ProcessMapTest, TypicalCase) {
+TEST(ProcessMapTest, TypicalCase) {
+ ProcessMap process_map(nullptr);
service_manager::Identity id1("id1");
- EXPECT_EQ(base::kNullProcessId, process_map_.GetProcessId(id1));
- process_map_.OnInit(std::vector<RunningServiceInfoPtr>());
- EXPECT_EQ(base::kNullProcessId, process_map_.GetProcessId(id1));
+ EXPECT_EQ(base::kNullProcessId, process_map.GetProcessId(id1));
+ process_map.OnInit(std::vector<RunningServiceInfoPtr>());
+ EXPECT_EQ(base::kNullProcessId, process_map.GetProcessId(id1));
- RunningServiceInfoPtr info(service_manager::mojom::RunningServiceInfo::New());
- info->identity = id1;
- info->pid = 1;
- process_map_.OnServiceCreated(info.Clone());
- EXPECT_EQ(static_cast<base::ProcessId>(1), process_map_.GetProcessId(id1));
+ // In some platforms The OnServiceCreated() reports a null pid, and the real
+ // pid comes only in the OnServiceStarted() callback.
+ process_map.OnServiceCreated(MakeTestServiceInfo(id1, 0 /* pid */));
+ process_map.OnServiceCreated(MakeTestServiceInfo(id1, 1 /* pid */));
+ EXPECT_EQ(static_cast<base::ProcessId>(1), process_map.GetProcessId(id1));
- // Adding a separate service with a different identity should have no effect.
- info->identity = service_manager::Identity("id2");
- info->pid = 2;
- process_map_.OnServiceCreated(info.Clone());
- EXPECT_EQ(static_cast<base::ProcessId>(1), process_map_.GetProcessId(id1));
+ // Adding a separate service with a different identity should have no effect
+ // on the first identity registered.
+ service_manager::Identity id2("id2");
+ process_map.OnServiceCreated(MakeTestServiceInfo(id2, 2 /* pid */));
+ EXPECT_EQ(static_cast<base::ProcessId>(1), process_map.GetProcessId(id1));
+ EXPECT_EQ(static_cast<base::ProcessId>(2), process_map.GetProcessId(id2));
// Once the service is stopped, searching for its id should return a null pid.
- process_map_.OnServiceStopped(id1);
- EXPECT_EQ(base::kNullProcessId, process_map_.GetProcessId(id1));
+ process_map.OnServiceStopped(id1);
+ EXPECT_EQ(base::kNullProcessId, process_map.GetProcessId(id1));
+ EXPECT_EQ(static_cast<base::ProcessId>(2), process_map.GetProcessId(id2));
}
-TEST_F(ProcessMapTest, PresentInInit) {
- service_manager::Identity id1("id1");
- RunningServiceInfoPtr info(service_manager::mojom::RunningServiceInfo::New());
- info->identity = id1;
- info->pid = 1;
-
- std::vector<RunningServiceInfoPtr> v;
- v.push_back(std::move(info));
- process_map_.OnInit(std::move(v));
- EXPECT_EQ(static_cast<base::ProcessId>(1), process_map_.GetProcessId(id1));
+TEST(ProcessMapTest, PresentInInit) {
+ // Add a dummy entry so that the actual |ids| indexes are 1-based.
+ std::vector<service_manager::Identity> ids{service_manager::Identity()};
+ std::vector<RunningServiceInfoPtr> instances;
+ ProcessMap process_map(nullptr);
+ for (uint32_t i = 1; i <= 3; i++) {
+ ids.push_back(service_manager::Identity(base::StringPrintf("id%d", i)));
+ instances.push_back(MakeTestServiceInfo(ids.back(), i /* pid */));
+ }
+ process_map.OnInit(std::move(instances));
+ EXPECT_EQ(static_cast<base::ProcessId>(1), process_map.GetProcessId(ids[1]));
+ EXPECT_EQ(static_cast<base::ProcessId>(2), process_map.GetProcessId(ids[2]));
+ EXPECT_EQ(static_cast<base::ProcessId>(3), process_map.GetProcessId(ids[3]));
- process_map_.OnServiceStopped(id1);
- EXPECT_EQ(base::kNullProcessId, process_map_.GetProcessId(id1));
+ process_map.OnServiceStopped(ids[1]);
+ EXPECT_EQ(base::kNullProcessId, process_map.GetProcessId(ids[1]));
+ EXPECT_EQ(static_cast<base::ProcessId>(3), process_map.GetProcessId(ids[3]));
}
} // namespace memory_instrumentation
« no previous file with comments | « services/resource_coordinator/memory/coordinator/process_map.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698