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

Unified Diff: base/win/memory_pressure_monitor_unittest.cc

Issue 1149223002: Avoid basename conflict from memory_pressure_monitor.cc (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: includes Created 5 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 | « base/win/memory_pressure_monitor.cc ('k') | chromeos/chromeos_switches.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/win/memory_pressure_monitor_unittest.cc
diff --git a/base/win/memory_pressure_monitor_unittest.cc b/base/win/memory_pressure_monitor_unittest.cc
deleted file mode 100644
index 40a25a79dd8170ea9a86292d0ececeac04b410d6..0000000000000000000000000000000000000000
--- a/base/win/memory_pressure_monitor_unittest.cc
+++ /dev/null
@@ -1,298 +0,0 @@
-// Copyright 2015 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 "base/win/memory_pressure_monitor.h"
-
-#include "base/basictypes.h"
-#include "base/memory/memory_pressure_listener.h"
-#include "base/message_loop/message_loop.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace base {
-namespace win {
-
-namespace {
-
-struct PressureSettings {
- int phys_left_mb;
- MemoryPressureListener::MemoryPressureLevel level;
-};
-
-} // namespace
-
-// This is outside of the anonymous namespace so that it can be seen as a friend
-// to the monitor class.
-class TestMemoryPressureMonitor : public MemoryPressureMonitor {
- public:
- using MemoryPressureMonitor::CalculateCurrentPressureLevel;
- using MemoryPressureMonitor::CheckMemoryPressure;
-
- static const DWORDLONG kMBBytes = 1024 * 1024;
-
- explicit TestMemoryPressureMonitor(bool large_memory)
- : mem_status_() {
- // Generate a plausible amount of memory.
- mem_status_.ullTotalPhys =
- static_cast<DWORDLONG>(GenerateTotalMemoryMb(large_memory)) * kMBBytes;
-
- // Rerun InferThresholds using the test fixture's GetSystemMemoryStatus.
- InferThresholds();
- // Stop the timer.
- StopObserving();
- }
-
- TestMemoryPressureMonitor(int system_memory_mb,
- int moderate_threshold_mb,
- int critical_threshold_mb)
- : MemoryPressureMonitor(moderate_threshold_mb, critical_threshold_mb),
- mem_status_() {
- // Set the amount of system memory.
- mem_status_.ullTotalPhys = static_cast<DWORDLONG>(
- system_memory_mb * kMBBytes);
-
- // Stop the timer.
- StopObserving();
- }
-
- virtual ~TestMemoryPressureMonitor() {}
-
- MOCK_METHOD1(OnMemoryPressure,
- void(MemoryPressureListener::MemoryPressureLevel level));
-
- // Generates an amount of total memory that is consistent with the requested
- // memory model.
- int GenerateTotalMemoryMb(bool large_memory) {
- int total_mb = 64;
- while (total_mb < MemoryPressureMonitor::kLargeMemoryThresholdMb)
- total_mb *= 2;
- if (large_memory)
- return total_mb * 2;
- return total_mb / 2;
- }
-
- // Sets up the memory status to reflect the provided absolute memory left.
- void SetMemoryFree(int phys_left_mb) {
- // ullTotalPhys is set in the constructor and not modified.
-
- // Set the amount of available memory.
- mem_status_.ullAvailPhys =
- static_cast<DWORDLONG>(phys_left_mb) * kMBBytes;
- DCHECK_LT(mem_status_.ullAvailPhys, mem_status_.ullTotalPhys);
-
- // These fields are unused.
- mem_status_.dwMemoryLoad = 0;
- mem_status_.ullTotalPageFile = 0;
- mem_status_.ullAvailPageFile = 0;
- mem_status_.ullTotalVirtual = 0;
- mem_status_.ullAvailVirtual = 0;
- }
-
- void SetNone() {
- SetMemoryFree(moderate_threshold_mb() + 1);
- }
-
- void SetModerate() {
- SetMemoryFree(moderate_threshold_mb() - 1);
- }
-
- void SetCritical() {
- SetMemoryFree(critical_threshold_mb() - 1);
- }
-
- private:
- bool GetSystemMemoryStatus(MEMORYSTATUSEX* mem_status) override {
- // Simply copy the memory status set by the test fixture.
- *mem_status = mem_status_;
- return true;
- }
-
- MEMORYSTATUSEX mem_status_;
-
- DISALLOW_COPY_AND_ASSIGN(TestMemoryPressureMonitor);
-};
-
-class WinMemoryPressureMonitorTest : public testing::Test {
- protected:
- void CalculateCurrentMemoryPressureLevelTest(
- TestMemoryPressureMonitor* monitor) {
-
- int mod = monitor->moderate_threshold_mb();
- monitor->SetMemoryFree(mod + 1);
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE,
- monitor->CalculateCurrentPressureLevel());
-
- monitor->SetMemoryFree(mod);
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
- monitor->CalculateCurrentPressureLevel());
-
- monitor->SetMemoryFree(mod - 1);
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
- monitor->CalculateCurrentPressureLevel());
-
- int crit = monitor->critical_threshold_mb();
- monitor->SetMemoryFree(crit + 1);
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
- monitor->CalculateCurrentPressureLevel());
-
- monitor->SetMemoryFree(crit);
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL,
- monitor->CalculateCurrentPressureLevel());
-
- monitor->SetMemoryFree(crit - 1);
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL,
- monitor->CalculateCurrentPressureLevel());
- }
-
- base::MessageLoopForUI message_loop_;
-};
-
-// Tests the fundamental direct calculation of memory pressure with automatic
-// small-memory thresholds.
-TEST_F(WinMemoryPressureMonitorTest, CalculateCurrentMemoryPressureLevelSmall) {
- static const int kModerateMb =
- MemoryPressureMonitor::kSmallMemoryDefaultModerateThresholdMb;
- static const int kCriticalMb =
- MemoryPressureMonitor::kSmallMemoryDefaultCriticalThresholdMb;
-
- TestMemoryPressureMonitor monitor(false); // Small-memory model.
-
- EXPECT_EQ(kModerateMb, monitor.moderate_threshold_mb());
- EXPECT_EQ(kCriticalMb, monitor.critical_threshold_mb());
-
- ASSERT_NO_FATAL_FAILURE(CalculateCurrentMemoryPressureLevelTest(&monitor));
-}
-
-// Tests the fundamental direct calculation of memory pressure with automatic
-// large-memory thresholds.
-TEST_F(WinMemoryPressureMonitorTest, CalculateCurrentMemoryPressureLevelLarge) {
- static const int kModerateMb =
- MemoryPressureMonitor::kLargeMemoryDefaultModerateThresholdMb;
- static const int kCriticalMb =
- MemoryPressureMonitor::kLargeMemoryDefaultCriticalThresholdMb;
-
- TestMemoryPressureMonitor monitor(true); // Large-memory model.
-
- EXPECT_EQ(kModerateMb, monitor.moderate_threshold_mb());
- EXPECT_EQ(kCriticalMb, monitor.critical_threshold_mb());
-
- ASSERT_NO_FATAL_FAILURE(CalculateCurrentMemoryPressureLevelTest(&monitor));
-}
-
-// Tests the fundamental direct calculation of memory pressure with manually
-// specified threshold levels.
-TEST_F(WinMemoryPressureMonitorTest,
- CalculateCurrentMemoryPressureLevelCustom) {
- static const int kSystemMb = 512;
- static const int kModerateMb = 256;
- static const int kCriticalMb = 128;
-
- TestMemoryPressureMonitor monitor(kSystemMb, kModerateMb, kCriticalMb);
-
- EXPECT_EQ(kModerateMb, monitor.moderate_threshold_mb());
- EXPECT_EQ(kCriticalMb, monitor.critical_threshold_mb());
-
- ASSERT_NO_FATAL_FAILURE(CalculateCurrentMemoryPressureLevelTest(&monitor));
-}
-
-// This test tests the various transition states from memory pressure, looking
-// for the correct behavior on event reposting as well as state updates.
-TEST_F(WinMemoryPressureMonitorTest, CheckMemoryPressure) {
- // Large-memory.
- testing::StrictMock<TestMemoryPressureMonitor> monitor(true);
- MemoryPressureListener listener(
- base::Bind(&TestMemoryPressureMonitor::OnMemoryPressure,
- base::Unretained(&monitor)));
-
- // Checking the memory pressure at 0% load should not produce any
- // events.
- monitor.SetNone();
- monitor.CheckMemoryPressure();
- message_loop_.RunUntilIdle();
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE,
- monitor.GetCurrentPressureLevel());
-
- // Setting the memory level to 80% should produce a moderate pressure level.
- EXPECT_CALL(monitor,
- OnMemoryPressure(MemoryPressureListener::
- MEMORY_PRESSURE_LEVEL_MODERATE));
- monitor.SetModerate();
- monitor.CheckMemoryPressure();
- message_loop_.RunUntilIdle();
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
- monitor.GetCurrentPressureLevel());
- testing::Mock::VerifyAndClearExpectations(&monitor);
-
- // Check that the event gets reposted after a while.
- for (int i = 0; i < monitor.kModeratePressureCooldownCycles; ++i) {
- if (i + 1 == monitor.kModeratePressureCooldownCycles) {
- EXPECT_CALL(monitor,
- OnMemoryPressure(MemoryPressureListener::
- MEMORY_PRESSURE_LEVEL_MODERATE));
- }
- monitor.CheckMemoryPressure();
- message_loop_.RunUntilIdle();
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
- monitor.GetCurrentPressureLevel());
- testing::Mock::VerifyAndClearExpectations(&monitor);
- }
-
- // Setting the memory usage to 99% should produce critical levels.
- EXPECT_CALL(monitor,
- OnMemoryPressure(MemoryPressureListener::
- MEMORY_PRESSURE_LEVEL_CRITICAL));
- monitor.SetCritical();
- monitor.CheckMemoryPressure();
- message_loop_.RunUntilIdle();
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL,
- monitor.GetCurrentPressureLevel());
- testing::Mock::VerifyAndClearExpectations(&monitor);
-
- // Calling it again should immediately produce a second call.
- EXPECT_CALL(monitor,
- OnMemoryPressure(MemoryPressureListener::
- MEMORY_PRESSURE_LEVEL_CRITICAL));
- monitor.CheckMemoryPressure();
- message_loop_.RunUntilIdle();
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL,
- monitor.GetCurrentPressureLevel());
- testing::Mock::VerifyAndClearExpectations(&monitor);
-
- // When lowering the pressure again there should be a notification and the
- // pressure should go back to moderate.
- EXPECT_CALL(monitor,
- OnMemoryPressure(MemoryPressureListener::
- MEMORY_PRESSURE_LEVEL_MODERATE));
- monitor.SetModerate();
- monitor.CheckMemoryPressure();
- message_loop_.RunUntilIdle();
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
- monitor.GetCurrentPressureLevel());
- testing::Mock::VerifyAndClearExpectations(&monitor);
-
- // Check that the event gets reposted after a while.
- for (int i = 0; i < monitor.kModeratePressureCooldownCycles; ++i) {
- if (i + 1 == monitor.kModeratePressureCooldownCycles) {
- EXPECT_CALL(monitor,
- OnMemoryPressure(MemoryPressureListener::
- MEMORY_PRESSURE_LEVEL_MODERATE));
- }
- monitor.CheckMemoryPressure();
- message_loop_.RunUntilIdle();
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
- monitor.GetCurrentPressureLevel());
- testing::Mock::VerifyAndClearExpectations(&monitor);
- }
-
- // Going down to no pressure should not produce an notification.
- monitor.SetNone();
- monitor.CheckMemoryPressure();
- message_loop_.RunUntilIdle();
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE,
- monitor.GetCurrentPressureLevel());
- testing::Mock::VerifyAndClearExpectations(&monitor);
-}
-
-} // namespace win
-} // namespace base
« no previous file with comments | « base/win/memory_pressure_monitor.cc ('k') | chromeos/chromeos_switches.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698