| Index: blimp/client/app/blimp_discardable_memory_allocator_unittest.cc
|
| diff --git a/blimp/client/app/blimp_discardable_memory_allocator_unittest.cc b/blimp/client/app/blimp_discardable_memory_allocator_unittest.cc
|
| deleted file mode 100644
|
| index fd07e7506044b3bf8e3276532945afd2986eec62..0000000000000000000000000000000000000000
|
| --- a/blimp/client/app/blimp_discardable_memory_allocator_unittest.cc
|
| +++ /dev/null
|
| @@ -1,116 +0,0 @@
|
| -// Copyright 2016 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 "blimp/client/app/blimp_discardable_memory_allocator.h"
|
| -
|
| -#include <stddef.h>
|
| -
|
| -#include "base/memory/discardable_memory.h"
|
| -#include "base/memory/ptr_util.h"
|
| -#include "base/test/gtest_util.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace blimp {
|
| -namespace client {
|
| -namespace {
|
| -
|
| -const size_t kOneKilobyte = 1024;
|
| -const size_t kAlmostOneMegabyte = 1023 * kOneKilobyte;
|
| -const size_t kOneMegabyte = 1024 * kOneKilobyte;
|
| -
|
| -TEST(BlimpDiscardableMemoryAllocator, Basic) {
|
| - BlimpDiscardableMemoryAllocator allocator(kOneMegabyte);
|
| - std::unique_ptr<base::DiscardableMemory> chunk;
|
| - // Make sure the chunk is locked when allocated. In debug mode, we will
|
| - // dcheck.
|
| - chunk = allocator.AllocateLockedDiscardableMemory(kOneKilobyte);
|
| - chunk->Unlock();
|
| -
|
| - // Make sure we can lock a chunk.
|
| - EXPECT_TRUE(chunk->Lock());
|
| - chunk->Unlock();
|
| -}
|
| -
|
| -TEST(BlimpDiscardableMemoryAllocator, DiscardChunks) {
|
| - BlimpDiscardableMemoryAllocator allocator(kOneMegabyte);
|
| -
|
| - std::unique_ptr<base::DiscardableMemory> chunk_to_remove =
|
| - allocator.AllocateLockedDiscardableMemory(kAlmostOneMegabyte);
|
| - chunk_to_remove->Unlock();
|
| -
|
| - // Allocating a second chunk should deallocate the first one due to memory
|
| - // pressure, since we only have one megabyte available.
|
| - std::unique_ptr<base::DiscardableMemory> chunk_to_keep =
|
| - allocator.AllocateLockedDiscardableMemory(kAlmostOneMegabyte);
|
| -
|
| - // Fail to get a lock because allocating the second chunk removed the first.
|
| - EXPECT_FALSE(chunk_to_remove->Lock());
|
| -
|
| - chunk_to_keep->Unlock();
|
| -}
|
| -
|
| -TEST(BlimpDiscardableMemoyAllocator, DiscardChunksOnUnlock) {
|
| - BlimpDiscardableMemoryAllocator allocator(kOneMegabyte);
|
| -
|
| - std::unique_ptr<base::DiscardableMemory> chunk_to_remove =
|
| - allocator.AllocateLockedDiscardableMemory(kAlmostOneMegabyte);
|
| - std::unique_ptr<base::DiscardableMemory> chunk_to_keep =
|
| - allocator.AllocateLockedDiscardableMemory(kAlmostOneMegabyte);
|
| -
|
| - // We should have both the allocated chunks.
|
| - EXPECT_NE(nullptr, chunk_to_remove->data());
|
| - EXPECT_NE(nullptr, chunk_to_keep->data());
|
| -
|
| - // Unlocking the first chunk should deallocate it due to memory pressure.
|
| - chunk_to_remove->Unlock();
|
| - EXPECT_FALSE(chunk_to_remove->Lock());
|
| -
|
| - chunk_to_keep->Unlock();
|
| -}
|
| -
|
| -TEST(BlimpDiscardableMemoryAllocator, DontDiscardLiveChunks) {
|
| - BlimpDiscardableMemoryAllocator allocator(kOneMegabyte);
|
| -
|
| - std::unique_ptr<base::DiscardableMemory> chunk_one =
|
| - allocator.AllocateLockedDiscardableMemory(kAlmostOneMegabyte);
|
| - std::unique_ptr<base::DiscardableMemory> chunk_two =
|
| - allocator.AllocateLockedDiscardableMemory(kAlmostOneMegabyte);
|
| - std::unique_ptr<base::DiscardableMemory> chunk_three =
|
| - allocator.AllocateLockedDiscardableMemory(kAlmostOneMegabyte);
|
| -
|
| - // These accesses will fail if the underlying weak ptr has been deallocated.
|
| - EXPECT_NE(nullptr, chunk_one->data());
|
| - EXPECT_NE(nullptr, chunk_two->data());
|
| - EXPECT_NE(nullptr, chunk_three->data());
|
| -
|
| - chunk_one->Unlock();
|
| - chunk_two->Unlock();
|
| - chunk_three->Unlock();
|
| -}
|
| -
|
| -#if DCHECK_IS_ON()
|
| -TEST(BlimpDiscardableMemoryAllocator, DiscardWhileUnlockedLive) {
|
| - std::unique_ptr<BlimpDiscardableMemoryAllocator> allocator =
|
| - base::MakeUnique<BlimpDiscardableMemoryAllocator>();
|
| -
|
| - std::unique_ptr<base::DiscardableMemory> chunk_one =
|
| - allocator->AllocateLockedDiscardableMemory(kAlmostOneMegabyte);
|
| -
|
| - // These accesses will fail if the underlying weak ptr has been deallocated.
|
| - EXPECT_NE(nullptr, chunk_one->data());
|
| -
|
| - chunk_one->Unlock();
|
| -
|
| - allocator.reset();
|
| -
|
| - EXPECT_DCHECK_DEATH(chunk_one.reset());
|
| -
|
| - // Leak the DiscardableMemory instance, to avoid triggering the DCHECK.
|
| - chunk_one.release();
|
| -}
|
| -#endif // DCHECK_IS_ON()
|
| -
|
| -} // namespace
|
| -} // namespace client
|
| -} // namespace blimp
|
|
|