diff options
Diffstat (limited to 'base/process/process_metrics_unittest.cc')
-rw-r--r-- | base/process/process_metrics_unittest.cc | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/base/process/process_metrics_unittest.cc b/base/process/process_metrics_unittest.cc index 21ad8ceea9..288cde9fc6 100644 --- a/base/process/process_metrics_unittest.cc +++ b/base/process/process_metrics_unittest.cc @@ -24,6 +24,10 @@ #include "testing/gtest/include/gtest/gtest.h" #include "testing/multiprocess_func_list.h" +#if defined(OS_MACOSX) +#include <sys/mman.h> +#endif + namespace base { namespace debug { @@ -53,6 +57,42 @@ class SystemMetricsTest : public testing::Test { ///////////////////////////////////////////////////////////////////////////// +#if defined(OS_MACOSX) && !defined(OS_IOS) && !defined(ADDRESS_SANITIZER) +TEST_F(SystemMetricsTest, LockedBytes) { + ProcessHandle handle = GetCurrentProcessHandle(); + std::unique_ptr<ProcessMetrics> metrics( + ProcessMetrics::CreateProcessMetrics(handle, nullptr)); + + size_t initial_locked_bytes; + bool result = + metrics->GetMemoryBytes(nullptr, nullptr, nullptr, &initial_locked_bytes); + ASSERT_TRUE(result); + + size_t size = 8 * 1024 * 1024; + std::unique_ptr<char[]> memory(new char[size]); + int r = mlock(memory.get(), size); + ASSERT_EQ(0, r); + + size_t new_locked_bytes; + result = + metrics->GetMemoryBytes(nullptr, nullptr, nullptr, &new_locked_bytes); + ASSERT_TRUE(result); + + // There should be around |size| more locked bytes, but multi-threading might + // cause noise. + EXPECT_LT(initial_locked_bytes + size / 2, new_locked_bytes); + EXPECT_GT(initial_locked_bytes + size * 1.5, new_locked_bytes); + + r = munlock(memory.get(), size); + ASSERT_EQ(0, r); + + result = + metrics->GetMemoryBytes(nullptr, nullptr, nullptr, &new_locked_bytes); + ASSERT_TRUE(result); + EXPECT_EQ(initial_locked_bytes, new_locked_bytes); +} +#endif // defined(OS_MACOSX) && !defined(OS_IOS) && !defined(ADDRESS_SANITIZER) + #if defined(OS_LINUX) || defined(OS_ANDROID) TEST_F(SystemMetricsTest, IsValidDiskName) { std::string invalid_input1 = ""; |