| 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
 | 
| 
 |