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

Unified Diff: components/memory_pressure/direct_memory_pressure_calculator_linux_unittest.cc

Issue 2874553004: Remove memory_pressure component. (Closed)
Patch Set: 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
Index: components/memory_pressure/direct_memory_pressure_calculator_linux_unittest.cc
diff --git a/components/memory_pressure/direct_memory_pressure_calculator_linux_unittest.cc b/components/memory_pressure/direct_memory_pressure_calculator_linux_unittest.cc
deleted file mode 100644
index 591f973915e8c6b2e83c987ceca2b0f67923e381..0000000000000000000000000000000000000000
--- a/components/memory_pressure/direct_memory_pressure_calculator_linux_unittest.cc
+++ /dev/null
@@ -1,244 +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 "components/memory_pressure/direct_memory_pressure_calculator_linux.h"
-
-#include "base/process/process_metrics.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace memory_pressure {
-
-namespace {
-
-const int kKBperMB = 1024;
-const int kTotalMemoryInMB = 4096;
-
-} // namespace
-
-// This is out of the anonymous namespace space because it is a friend of
-// DirectMemoryPressureCalculator.
-class TestDirectMemoryPressureCalculator
- : public DirectMemoryPressureCalculator {
- public:
- TestDirectMemoryPressureCalculator()
- : DirectMemoryPressureCalculator(20, 10) {
- // The values passed to the MemoryPressureCalculator constructor are dummy
- // values that are immediately overwritten by InferTresholds.
-
- // Simulate 4GB of RAM.
- mem_info_.total = kTotalMemoryInMB * kKBperMB;
-
- // Run InferThresholds using the test fixture's GetSystemMemoryStatus.
- InferThresholds();
- }
-
- TestDirectMemoryPressureCalculator(int total_memory_mb,
- int moderate_threshold_mb,
- int critical_threshold_mb)
- : DirectMemoryPressureCalculator(moderate_threshold_mb,
- critical_threshold_mb) {
- mem_info_.total = total_memory_mb * kKBperMB;
- mem_info_.pgmajfault = 0;
- }
-
- void InitPageFaultMonitor() override {}
-
- // Sets up the memory status to reflect the provided absolute memory left.
- void SetMemoryFree(int phys_left_mb) {
- // |total| is set in the constructor and not modified.
-
- // Set the amount of free memory.
- mem_info_.free = phys_left_mb * kKBperMB;
- DCHECK_LT(mem_info_.free, mem_info_.total);
- }
-
- void SetNone() { SetMemoryFree(moderate_threshold_mb() + 1); }
- void SetModerate() { SetMemoryFree(moderate_threshold_mb() - 1); }
- void SetCritical() { SetMemoryFree(critical_threshold_mb() - 1); }
-
- double GetEwma() { return current_faults_per_second_; }
-
- // Set the next CPU time to be read.
- void SetCpuTime(double cpu_time) {
- user_cpu_time_ = base::TimeDelta::FromSecondsD(cpu_time);
- }
- // Set the next page faults value to be read.
- void SetPageFaults(uint64_t page_faults) {
- mem_info_.pgmajfault = page_faults;
- }
-
- void SetPageFaultMonitorState(double user_exec_time,
- uint64_t major_page_faults,
- double current_faults,
- double low_pass_half_life,
- double moderate_multiplier,
- double critical_multiplier) {
- last_user_exec_time_ = base::TimeDelta::FromSecondsD(user_exec_time);
- last_major_page_faults_ = major_page_faults;
- current_faults_per_second_ = current_faults;
- low_pass_half_life_seconds_ = low_pass_half_life;
- moderate_multiplier_ = moderate_multiplier;
- critical_multiplier_ = critical_multiplier;
- }
-
- private:
- bool GetSystemMemoryInfo(base::SystemMemoryInfoKB* mem_info) const override {
- // Simply copy the memory information set by the test fixture.
- *mem_info = mem_info_;
- return true;
- }
-
- base::TimeDelta GetUserCpuTimeSinceBoot() const override {
- return user_cpu_time_;
- }
-
- base::TimeDelta user_cpu_time_;
- base::SystemMemoryInfoKB mem_info_;
-};
-
-class DirectMemoryPressureCalculatorTest : public testing::Test {
- public:
- void CalculateCurrentPressureLevelTest(
- TestDirectMemoryPressureCalculator* calc) {
- int mod = calc->moderate_threshold_mb();
- calc->SetMemoryFree(mod + 1);
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE,
- calc->CalculateCurrentPressureLevel());
-
- calc->SetNone();
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE,
- calc->CalculateCurrentPressureLevel());
-
- calc->SetMemoryFree(mod);
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
- calc->CalculateCurrentPressureLevel());
-
- calc->SetMemoryFree(mod - 1);
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
- calc->CalculateCurrentPressureLevel());
-
- int crit = calc->critical_threshold_mb();
- calc->SetMemoryFree(crit + 1);
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
- calc->CalculateCurrentPressureLevel());
-
- calc->SetModerate();
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
- calc->CalculateCurrentPressureLevel());
-
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
- calc->CalculateCurrentPressureLevel());
-
- calc->SetMemoryFree(crit);
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL,
- calc->CalculateCurrentPressureLevel());
-
- calc->SetMemoryFree(crit - 1);
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL,
- calc->CalculateCurrentPressureLevel());
-
- calc->SetCritical();
- EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL,
- calc->CalculateCurrentPressureLevel());
- }
-};
-
-// Tests the fundamental direct calculation of memory pressure with automatic
-// small-memory thresholds.
-TEST_F(DirectMemoryPressureCalculatorTest,
- CalculateCurrentMemoryPressureLevel) {
- TestDirectMemoryPressureCalculator calc;
-
- static const int kModerateMb =
- (100 - DirectMemoryPressureCalculator::kDefaultModerateThresholdPc) *
- kTotalMemoryInMB / 100;
- static const int kCriticalMb =
- (100 - DirectMemoryPressureCalculator::kDefaultCriticalThresholdPc) *
- kTotalMemoryInMB / 100;
-
- EXPECT_EQ(kModerateMb, calc.moderate_threshold_mb());
- EXPECT_EQ(kCriticalMb, calc.critical_threshold_mb());
-
- ASSERT_NO_FATAL_FAILURE(CalculateCurrentPressureLevelTest(&calc));
-}
-
-// Tests the fundamental direct calculation of memory pressure with manually
-// specified threshold levels.
-TEST_F(DirectMemoryPressureCalculatorTest,
- CalculateCurrentMemoryPressureLevelCustom) {
- static const int kSystemMb = 512;
- static const int kModerateMb = 256;
- static const int kCriticalMb = 128;
-
- TestDirectMemoryPressureCalculator calc(kSystemMb, kModerateMb, kCriticalMb);
-
- EXPECT_EQ(kModerateMb, calc.moderate_threshold_mb());
- EXPECT_EQ(kCriticalMb, calc.critical_threshold_mb());
-
- ASSERT_NO_FATAL_FAILURE(CalculateCurrentPressureLevelTest(&calc));
-}
-
-// Double-check the math of the Ewma portion of the page fault monitor.
-TEST_F(DirectMemoryPressureCalculatorTest, Ewma) {
- double half_life = 100.0;
-
- double cpu_time = 0;
- uint64_t page_faults = 1;
-
- double ewma = 100.0;
-
- TestDirectMemoryPressureCalculator calc;
- calc.SetPageFaultMonitorState(cpu_time, page_faults, ewma, half_life, 0, 0);
- // Advance by one half-life. The ewma should be cut in half.
- calc.SetCpuTime(half_life);
- calc.SetPageFaults(page_faults);
- calc.CalculateCurrentPressureLevel();
- ewma /= 2;
- EXPECT_DOUBLE_EQ(ewma, calc.GetEwma());
-
- // We should get the same result if we advance by increments of 10 up to 100.
- ewma = 100.0;
- calc.SetPageFaultMonitorState(cpu_time, page_faults, ewma, half_life, 0, 0);
- static const int kIncrements = 10;
- for(int i = 1; i <= kIncrements; i++) {
- calc.SetCpuTime(i * half_life / kIncrements);
- calc.SetPageFaults(page_faults);
- calc.CalculateCurrentPressureLevel();
- }
- ewma /= 2;
- EXPECT_DOUBLE_EQ(ewma, calc.GetEwma());
-
- static const struct {
- uint64_t delta_time;
- uint64_t delta_faults;
- double expected_ewma;
- } kSamples[] = {
- // 0.5*0.0 + 0.5*10 = 5.0
- { 1, 10, 5.0 },
- // 0.5*5.0 + 0.5*10 = 7.5
- { 1, 10, 7.5 },
- // 0.25*7.5 + 0.75*(0/2) = 1.875
- { 2, 0, 1.875 },
- // 0.125*1.875 + 0.875*(420/3) = 122.734375
- { 3, 420, 122.734375 },
- // 0.5*122.734375 + 0.5*24 = 73.3671875
- { 1, 24, 73.3671875 },
- };
-
- cpu_time = 1;
- page_faults = 1;
- ewma = 0.0;
- half_life = 1.0;
- calc.SetPageFaultMonitorState(cpu_time, page_faults, ewma, half_life, 0, 0);
- for (size_t i = 0 ; i < arraysize(kSamples); i++) {
- cpu_time += kSamples[i].delta_time;
- page_faults += kSamples[i].delta_faults;
- calc.SetCpuTime(cpu_time);
- calc.SetPageFaults(page_faults);
- calc.CalculateCurrentPressureLevel();
- EXPECT_DOUBLE_EQ(kSamples[i].expected_ewma, calc.GetEwma());
- }
-}
-
-} // namespace memory_pressure

Powered by Google App Engine
This is Rietveld 408576698