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

Unified Diff: chrome/browser/process_info_snapshot_mac_unittest.cc

Issue 173261: (Mac) Implement about:memory. (Closed)
Patch Set: Fixed per jrg's (re)review. Created 11 years, 2 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 | « chrome/browser/process_info_snapshot_mac.cc ('k') | chrome/browser/resources/about_memory_mac.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/process_info_snapshot_mac_unittest.cc
diff --git a/chrome/browser/process_info_snapshot_mac_unittest.cc b/chrome/browser/process_info_snapshot_mac_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..a8be113431cb5a249717b98873719b2d2352462d
--- /dev/null
+++ b/chrome/browser/process_info_snapshot_mac_unittest.cc
@@ -0,0 +1,85 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/process_info_snapshot.h"
+
+#include <sys/types.h> // For |uid_t| (and |pid_t|).
+#include <unistd.h> // For |getpid()|, |getuid()|, etc.
+
+#include <vector>
+
+#include "testing/gtest/include/gtest/gtest.h"
+
+typedef testing::Test ProcessInfoSnapshotMacTest;
+
+TEST_F(ProcessInfoSnapshotMacTest, FindPidOneTest) {
+ // Sample process with PID 1, which should exist and presumably belong to
+ // root.
+ std::vector<base::ProcessId> pid_list;
+ pid_list.push_back(1);
+ ProcessInfoSnapshot snapshot;
+ ASSERT_TRUE(snapshot.Sample(pid_list));
+
+ ProcessInfoSnapshot::ProcInfoEntry proc_info;
+ ASSERT_TRUE(snapshot.GetProcInfo(1, &proc_info));
+ EXPECT_EQ(1, static_cast<int64>(proc_info.pid));
+ EXPECT_EQ(0, static_cast<int64>(proc_info.ppid));
+ EXPECT_EQ(0, static_cast<int64>(proc_info.uid));
+ EXPECT_EQ(0, static_cast<int64>(proc_info.euid));
+ EXPECT_GE(proc_info.rss, 0u);
+ EXPECT_GT(proc_info.vsize, 0u);
+
+ // Try out the |Get...OfPID()|, but don't examine the results, since they
+ // depend on how we map |ProcInfoEntry| to |...KBytes|.
+ base::CommittedKBytes usage;
+ EXPECT_TRUE(snapshot.GetCommittedKBytesOfPID(1, &usage));
+ base::WorkingSetKBytes ws_usage;
+ EXPECT_TRUE(snapshot.GetWorkingSetKBytesOfPID(1, &ws_usage));
+
+ // Make sure it hasn't picked up some other PID (say, 2).
+ EXPECT_FALSE(snapshot.GetProcInfo(2, &proc_info));
+
+ // Make sure PID 2 still isn't there (in case I mess up my use of std::map).
+ EXPECT_FALSE(snapshot.GetProcInfo(2, &proc_info));
+
+ // Test |Reset()|.
+ snapshot.Reset();
+ EXPECT_FALSE(snapshot.GetProcInfo(1, &proc_info));
+}
+
+TEST_F(ProcessInfoSnapshotMacTest, FindPidSelfTest) {
+ // Sample this process and its parent.
+ base::ProcessId pid = static_cast<base::ProcessId>(getpid());
+ base::ProcessId ppid = static_cast<base::ProcessId>(getppid());
+ uid_t uid = getuid();
+ uid_t euid = geteuid();
+ EXPECT_NE(static_cast<int64>(ppid), 0);
+
+ std::vector<base::ProcessId> pid_list;
+ pid_list.push_back(pid);
+ pid_list.push_back(ppid);
+ ProcessInfoSnapshot snapshot;
+ ASSERT_TRUE(snapshot.Sample(pid_list));
+
+ // Find our process.
+ ProcessInfoSnapshot::ProcInfoEntry proc_info;
+ ASSERT_TRUE(snapshot.GetProcInfo(pid, &proc_info));
+ EXPECT_EQ(pid, proc_info.pid);
+ EXPECT_EQ(ppid, proc_info.ppid);
+ EXPECT_EQ(uid, proc_info.uid);
+ EXPECT_EQ(euid, proc_info.euid);
+ EXPECT_GE(proc_info.rss, 100u); // Sanity check: we're running, so we
+ // should occupy at least 100 kilobytes.
+ EXPECT_GE(proc_info.vsize, 1024u); // Sanity check: our |vsize| is presumably
+ // at least a megabyte.
+
+ // Find our parent.
+ ASSERT_TRUE(snapshot.GetProcInfo(ppid, &proc_info));
+ EXPECT_EQ(ppid, proc_info.pid);
+ EXPECT_NE(static_cast<int64>(proc_info.ppid), 0);
+ EXPECT_EQ(uid, proc_info.uid); // This (and the following) should be true
+ EXPECT_EQ(euid, proc_info.euid); // under reasonable circumstances.
+ EXPECT_GE(proc_info.rss, 0u);
+ EXPECT_GT(proc_info.vsize, 0u);
+}
« no previous file with comments | « chrome/browser/process_info_snapshot_mac.cc ('k') | chrome/browser/resources/about_memory_mac.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698