Index: athena/resource_manager/memory_pressure_notifier_unittest.cc |
diff --git a/athena/resource_manager/memory_pressure_notifier_unittest.cc b/athena/resource_manager/memory_pressure_notifier_unittest.cc |
deleted file mode 100644 |
index a2b39d1f992d1a0f8ad2cdc1ce743c1bfebef34d..0000000000000000000000000000000000000000 |
--- a/athena/resource_manager/memory_pressure_notifier_unittest.cc |
+++ /dev/null |
@@ -1,222 +0,0 @@ |
-/// Copyright 2014 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 "athena/resource_manager/memory_pressure_notifier.h" |
-#include "athena/resource_manager/public/resource_manager_delegate.h" |
-#include "athena/test/base/athena_test_base.h" |
- |
-namespace athena { |
-namespace test { |
- |
-namespace { |
- |
-// Our OS delegate abstraction class to override the memory fill level. |
-class TestResourceManagerDelegate : public ResourceManagerDelegate { |
- public: |
- TestResourceManagerDelegate() : memory_fill_level_percent_(0) {} |
- ~TestResourceManagerDelegate() override {} |
- |
- virtual int GetUsedMemoryInPercent() override { |
- timer_called_++; |
- return memory_fill_level_percent_; |
- } |
- |
- virtual int MemoryPressureIntervalInMS() override { |
- return 5; |
- } |
- |
- void set_memory_fill_level_percent(int memory_fill_level_percent) { |
- memory_fill_level_percent_ = memory_fill_level_percent; |
- } |
- |
- // Returns the number of timer calls to the GetMemoryInPercent() calls. |
- int timer_called() { return timer_called_; } |
- |
- private: |
- // The to be returned memory fill level value in percent. |
- int memory_fill_level_percent_; |
- |
- // How often was the timer calling the GetUsedMemoryInPercent() function. |
- int timer_called_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TestResourceManagerDelegate); |
-}; |
- |
-// Our memory pressure observer class. |
-class TestMemoryPressureObserver : public MemoryPressureObserver { |
- public: |
- TestMemoryPressureObserver(ResourceManagerDelegate* delegate) |
- : delegate_(delegate), |
- number_of_calls_(0), |
- pressure_(ResourceManager::MEMORY_PRESSURE_UNKNOWN) {} |
- ~TestMemoryPressureObserver() override {} |
- |
- // The observer. |
- virtual void OnMemoryPressure( |
- ResourceManager::MemoryPressure pressure) override { |
- number_of_calls_++; |
- pressure_ = pressure; |
- } |
- |
- virtual ResourceManagerDelegate* GetDelegate() override { |
- return delegate_.get(); |
- } |
- |
- int number_of_calls() { return number_of_calls_; } |
- ResourceManager::MemoryPressure pressure() { return pressure_; } |
- |
- private: |
- scoped_ptr<ResourceManagerDelegate> delegate_; |
- |
- // Number of calls received. |
- int number_of_calls_; |
- |
- // Last posted memory pressure. |
- ResourceManager::MemoryPressure pressure_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TestMemoryPressureObserver); |
-}; |
- |
-} // namespace |
- |
-// Our testing base. |
-class MemoryPressureTest : public AthenaTestBase { |
- public: |
- MemoryPressureTest() : test_resource_manager_delegate_(nullptr) {} |
- ~MemoryPressureTest() override {} |
- |
- // AthenaTestBase: |
- virtual void SetUp() override { |
- AthenaTestBase::SetUp(); |
- // Create and install our TestAppContentDelegate with instrumentation. |
- test_resource_manager_delegate_ = |
- new TestResourceManagerDelegate(); |
- test_memory_pressure_observer_.reset(new TestMemoryPressureObserver( |
- test_resource_manager_delegate_)); |
- memory_pressure_notifier_.reset( |
- new MemoryPressureNotifier(test_memory_pressure_observer_.get())); |
- } |
- |
- virtual void TearDown() override { |
- memory_pressure_notifier_.reset(); |
- RunAllPendingInMessageLoop(); |
- test_memory_pressure_observer_.reset(); |
- AthenaTestBase::TearDown(); |
- } |
- |
- protected: |
- TestResourceManagerDelegate* test_resource_manager_delegate() { |
- return test_resource_manager_delegate_; |
- } |
- |
- TestMemoryPressureObserver* test_memory_pressure_observer() { |
- return test_memory_pressure_observer_.get(); |
- } |
- |
- // Waits until a timer interrupt occurs. Returns false if no timer is |
- // registered. |
- bool WaitForTimer() { |
- int first_counter = test_resource_manager_delegate()->timer_called(); |
- // Wait up to 500ms for any poll on our memory status function from the |
- // MemoryPressureNotifier. |
- for (int i = 0; i < 500; ++i) { |
- if (test_resource_manager_delegate()->timer_called() != first_counter) |
- return true; |
- usleep(1); |
- RunAllPendingInMessageLoop(); |
- } |
- return false; |
- } |
- |
- private: |
- // Not owned: the resource manager delegate. |
- TestResourceManagerDelegate* test_resource_manager_delegate_; |
- scoped_ptr<TestMemoryPressureObserver> test_memory_pressure_observer_; |
- scoped_ptr<MemoryPressureNotifier> memory_pressure_notifier_; |
- DISALLOW_COPY_AND_ASSIGN(MemoryPressureTest); |
-}; |
- |
-// Only creates and destroys it to see that the system gets properly shut down. |
-TEST_F(MemoryPressureTest, SimpleTest) { |
-} |
- |
-// Test that we get only a single call while the memory pressure is low. |
-TEST_F(MemoryPressureTest, OneEventOnLowPressure) { |
- ASSERT_TRUE(WaitForTimer()); |
- // No call should have happened at this time to the |
- EXPECT_FALSE(test_memory_pressure_observer()->number_of_calls()); |
- // Set to something below 50% and check that we still get no call. |
- test_resource_manager_delegate()->set_memory_fill_level_percent(49); |
- ASSERT_TRUE(WaitForTimer()); |
- EXPECT_EQ(1, test_memory_pressure_observer()->number_of_calls()); |
- EXPECT_EQ(ResourceManager::MEMORY_PRESSURE_LOW, |
- test_memory_pressure_observer()->pressure()); |
- ASSERT_TRUE(WaitForTimer()); |
- EXPECT_EQ(1, test_memory_pressure_observer()->number_of_calls()); |
- EXPECT_EQ(ResourceManager::MEMORY_PRESSURE_LOW, |
- test_memory_pressure_observer()->pressure()); |
-} |
- |
-// Test that we get a |MEMORY_PRESSURE_UNKNOWN| if it cannot be determined. |
-TEST_F(MemoryPressureTest, TestNoCallsOnMemoryPressureUnknown) { |
- test_resource_manager_delegate()->set_memory_fill_level_percent(0); |
- ASSERT_TRUE(WaitForTimer()); |
- // We shouldn't have gotten a single call. |
- EXPECT_FALSE(test_memory_pressure_observer()->number_of_calls()); |
- // And the memory pressure should be unknown. |
- EXPECT_EQ(ResourceManager::MEMORY_PRESSURE_UNKNOWN, |
- test_memory_pressure_observer()->pressure()); |
-} |
- |
-// Test that we get a change to MODERATE if the memory pressure is at 60%. |
-TEST_F(MemoryPressureTest, TestModeratePressure) { |
- test_resource_manager_delegate()->set_memory_fill_level_percent(60); |
- ASSERT_TRUE(WaitForTimer()); |
- // At least one call should have happened. |
- int calls = test_memory_pressure_observer()->number_of_calls(); |
- EXPECT_TRUE(calls); |
- EXPECT_EQ(ResourceManager::MEMORY_PRESSURE_MODERATE, |
- test_memory_pressure_observer()->pressure()); |
- // Even if the value does not change, we should get more calls. |
- ASSERT_TRUE(WaitForTimer()); |
- EXPECT_LT(calls, test_memory_pressure_observer()->number_of_calls()); |
- EXPECT_EQ(ResourceManager::MEMORY_PRESSURE_MODERATE, |
- test_memory_pressure_observer()->pressure()); |
-} |
- |
-// Test that increasing and decreasing the memory pressure does the right thing. |
-TEST_F(MemoryPressureTest, TestPressureUpAndDown) { |
- test_resource_manager_delegate()->set_memory_fill_level_percent(60); |
- ASSERT_TRUE(WaitForTimer()); |
- // At least one call should have happened. |
- int calls1 = test_memory_pressure_observer()->number_of_calls(); |
- EXPECT_TRUE(calls1); |
- EXPECT_EQ(ResourceManager::MEMORY_PRESSURE_MODERATE, |
- test_memory_pressure_observer()->pressure()); |
- |
- // Check to the next level. |
- test_resource_manager_delegate()->set_memory_fill_level_percent(80); |
- ASSERT_TRUE(WaitForTimer()); |
- int calls2 = test_memory_pressure_observer()->number_of_calls(); |
- EXPECT_LT(calls1, calls2); |
- EXPECT_EQ(ResourceManager::MEMORY_PRESSURE_HIGH, |
- test_memory_pressure_observer()->pressure()); |
- |
- // Check to no pressure again. |
- test_resource_manager_delegate()->set_memory_fill_level_percent(20); |
- ASSERT_TRUE(WaitForTimer()); |
- int calls3 = test_memory_pressure_observer()->number_of_calls(); |
- EXPECT_LT(calls2, calls3); |
- EXPECT_EQ(ResourceManager::MEMORY_PRESSURE_LOW, |
- test_memory_pressure_observer()->pressure()); |
- |
- // Even if the value does not change, we should not get any more calls. |
- ASSERT_TRUE(WaitForTimer()); |
- EXPECT_EQ(calls3, test_memory_pressure_observer()->number_of_calls()); |
- EXPECT_EQ(ResourceManager::MEMORY_PRESSURE_LOW, |
- test_memory_pressure_observer()->pressure()); |
-} |
- |
-} // namespace test |
-} // namespace athena |