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

Side by Side Diff: base/memory/discardable_memory_unittest.cc

Issue 17106004: Add discardable memory emulation for non-android/mac platforms (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix MemoryAfterUnlock test Created 7 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/memory/discardable_memory.h" 5 #include "base/memory/discardable_memory.h"
6 #include "testing/gtest/include/gtest/gtest.h" 6 #include "testing/gtest/include/gtest/gtest.h"
7 7
8 namespace base { 8 namespace base {
9 9
10 #if defined(OS_ANDROID) || defined(OS_MACOSX)
11 const size_t kSize = 1024; 10 const size_t kSize = 1024;
12 11
12 TEST(DiscardableMemoryTest, SupportedNatively) {
13 #if defined(DISCARDABLE_MEMORY_ALWAYS_SUPPORTED_NATIVELY)
14 ASSERT_TRUE(DiscardableMemory::SupportedNatively());
15 #else
16 // If we ever have a platform that decides at runtime if it can support
17 // discardable memory natively, then we'll have to add a 'never supported
18 // natively' define for this case. At present, if it's not always supported
19 // natively, it's never supported.
20 ASSERT_FALSE(DiscardableMemory::SupportedNatively());
21 #endif
22 }
23
13 // Test Lock() and Unlock() functionalities. 24 // Test Lock() and Unlock() functionalities.
14 TEST(DiscardableMemoryTest, LockAndUnLock) { 25 TEST(DiscardableMemoryTest, LockAndUnLock) {
15 ASSERT_TRUE(DiscardableMemory::Supported());
16
17 const scoped_ptr<DiscardableMemory> memory( 26 const scoped_ptr<DiscardableMemory> memory(
18 DiscardableMemory::CreateLockedMemory(kSize)); 27 DiscardableMemory::CreateLockedMemory(kSize));
19 ASSERT_TRUE(memory); 28 ASSERT_TRUE(memory);
20 void* addr = memory->Memory(); 29 void* addr = memory->Memory();
21 ASSERT_NE(static_cast<void*>(NULL), addr); 30 ASSERT_NE(static_cast<void*>(NULL), addr);
22 31
23 memory->Unlock(); 32 memory->Unlock();
24 // The system should have no reason to purge discardable blocks in this brief 33 // The system should have no reason to purge discardable blocks in this brief
25 // interval, though technically speaking this might flake. 34 // interval, though technically speaking this might flake.
26 EXPECT_EQ(DISCARDABLE_MEMORY_SUCCESS, memory->Lock()); 35 EXPECT_EQ(DISCARDABLE_MEMORY_SUCCESS, memory->Lock());
27 addr = memory->Memory(); 36 addr = memory->Memory();
28 ASSERT_NE(static_cast<void*>(NULL), addr); 37 ASSERT_NE(static_cast<void*>(NULL), addr);
29 38
30 memory->Unlock(); 39 memory->Unlock();
31 } 40 }
32 41
33 // Test delete a discardable memory while it is locked. 42 // Test delete a discardable memory while it is locked.
34 TEST(DiscardableMemoryTest, DeleteWhileLocked) { 43 TEST(DiscardableMemoryTest, DeleteWhileLocked) {
35 ASSERT_TRUE(DiscardableMemory::Supported());
36
37 const scoped_ptr<DiscardableMemory> memory( 44 const scoped_ptr<DiscardableMemory> memory(
38 DiscardableMemory::CreateLockedMemory(kSize)); 45 DiscardableMemory::CreateLockedMemory(kSize));
39 ASSERT_TRUE(memory); 46 ASSERT_TRUE(memory);
40 } 47 }
41 48
42 #if defined(OS_MACOSX) 49 #if !defined(OS_ANDROID)
43 // Test forced purging. 50 // Test forced purging.
44 TEST(DiscardableMemoryTest, Purge) { 51 TEST(DiscardableMemoryTest, Purge) {
45 ASSERT_TRUE(DiscardableMemory::Supported());
46 ASSERT_TRUE(DiscardableMemory::PurgeForTestingSupported()); 52 ASSERT_TRUE(DiscardableMemory::PurgeForTestingSupported());
47 53
48 const scoped_ptr<DiscardableMemory> memory( 54 const scoped_ptr<DiscardableMemory> memory(
49 DiscardableMemory::CreateLockedMemory(kSize)); 55 DiscardableMemory::CreateLockedMemory(kSize));
50 ASSERT_TRUE(memory); 56 ASSERT_TRUE(memory);
51 memory->Unlock(); 57 memory->Unlock();
52 58
53 DiscardableMemory::PurgeForTesting(); 59 DiscardableMemory::PurgeForTesting();
54 EXPECT_EQ(DISCARDABLE_MEMORY_PURGED, memory->Lock()); 60 EXPECT_EQ(DISCARDABLE_MEMORY_PURGED, memory->Lock());
55 } 61 }
56 #endif // OS_MACOSX 62 #endif // !OS_ANDROID
57 63
58 #if !defined(NDEBUG) && !defined(OS_ANDROID) 64 #if !defined(NDEBUG) && !defined(OS_ANDROID)
59 // Death tests are not supported with Android APKs. 65 // Death tests are not supported with Android APKs.
60 TEST(DiscardableMemoryTest, UnlockedMemoryAccessCrashesInDebugMode) { 66 TEST(DiscardableMemoryTest, UnlockedMemoryAccessCrashesInDebugMode) {
61 const scoped_ptr<DiscardableMemory> memory( 67 const scoped_ptr<DiscardableMemory> memory(
62 DiscardableMemory::CreateLockedMemory(kSize)); 68 DiscardableMemory::CreateLockedMemory(kSize));
63 ASSERT_TRUE(memory); 69 ASSERT_TRUE(memory);
64 memory->Unlock(); 70 memory->Unlock();
65 ASSERT_DEATH_IF_SUPPORTED( 71 ASSERT_DEATH_IF_SUPPORTED(
66 { *static_cast<int*>(memory->Memory()) = 0xdeadbeef; }, ".*"); 72 { *static_cast<int*>(memory->Memory()) = 0xdeadbeef; }, ".*");
67 } 73 }
68 #endif 74 #endif
69 75
70 #endif // OS_*
71
72 } 76 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698