| 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);
 | 
| +}
 | 
| 
 |