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

Side by Side Diff: content/common/host_discardable_shared_memory_manager_unittest.cc

Issue 1009203004: content: Add DeletedDiscardableSharedMemory IPC. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 9 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 unified diff | Download patch
« no previous file with comments | « content/common/host_discardable_shared_memory_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/common/host_discardable_shared_memory_manager.h" 5 #include "content/common/host_discardable_shared_memory_manager.h"
6 #include "testing/gtest/include/gtest/gtest.h" 6 #include "testing/gtest/include/gtest/gtest.h"
7 7
8 namespace content { 8 namespace content {
9 namespace { 9 namespace {
10 10
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 scoped_ptr<TestHostDiscardableSharedMemoryManager> manager_; 60 scoped_ptr<TestHostDiscardableSharedMemoryManager> manager_;
61 }; 61 };
62 62
63 TEST_F(HostDiscardableSharedMemoryManagerTest, AllocateForChild) { 63 TEST_F(HostDiscardableSharedMemoryManagerTest, AllocateForChild) {
64 const int kDataSize = 1024; 64 const int kDataSize = 1024;
65 uint8 data[kDataSize]; 65 uint8 data[kDataSize];
66 memset(data, 0x80, kDataSize); 66 memset(data, 0x80, kDataSize);
67 67
68 base::SharedMemoryHandle shared_handle; 68 base::SharedMemoryHandle shared_handle;
69 manager_->AllocateLockedDiscardableSharedMemoryForChild( 69 manager_->AllocateLockedDiscardableSharedMemoryForChild(
70 base::GetCurrentProcessHandle(), kDataSize, &shared_handle); 70 base::GetCurrentProcessHandle(), kDataSize, 0, &shared_handle);
71 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle)); 71 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle));
72 72
73 TestDiscardableSharedMemory memory(shared_handle); 73 TestDiscardableSharedMemory memory(shared_handle);
74 bool rv = memory.Map(kDataSize); 74 bool rv = memory.Map(kDataSize);
75 ASSERT_TRUE(rv); 75 ASSERT_TRUE(rv);
76 76
77 memcpy(memory.memory(), data, kDataSize); 77 memcpy(memory.memory(), data, kDataSize);
78 memory.SetNow(base::Time::FromDoubleT(1)); 78 memory.SetNow(base::Time::FromDoubleT(1));
79 memory.Unlock(0, 0); 79 memory.Unlock(0, 0);
80 80
81 ASSERT_EQ(base::DiscardableSharedMemory::SUCCESS, memory.Lock(0, 0)); 81 ASSERT_EQ(base::DiscardableSharedMemory::SUCCESS, memory.Lock(0, 0));
82 EXPECT_EQ(memcmp(data, memory.memory(), kDataSize), 0); 82 EXPECT_EQ(memcmp(data, memory.memory(), kDataSize), 0);
83 memory.Unlock(0, 0); 83 memory.Unlock(0, 0);
84 } 84 }
85 85
86 TEST_F(HostDiscardableSharedMemoryManagerTest, Purge) { 86 TEST_F(HostDiscardableSharedMemoryManagerTest, Purge) {
87 const int kDataSize = 1024; 87 const int kDataSize = 1024;
88 88
89 base::SharedMemoryHandle shared_handle1; 89 base::SharedMemoryHandle shared_handle1;
90 manager_->AllocateLockedDiscardableSharedMemoryForChild( 90 manager_->AllocateLockedDiscardableSharedMemoryForChild(
91 base::GetCurrentProcessHandle(), kDataSize, &shared_handle1); 91 base::GetCurrentProcessHandle(), kDataSize, 1, &shared_handle1);
92 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle1)); 92 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle1));
93 93
94 TestDiscardableSharedMemory memory1(shared_handle1); 94 TestDiscardableSharedMemory memory1(shared_handle1);
95 bool rv = memory1.Map(kDataSize); 95 bool rv = memory1.Map(kDataSize);
96 ASSERT_TRUE(rv); 96 ASSERT_TRUE(rv);
97 97
98 base::SharedMemoryHandle shared_handle2; 98 base::SharedMemoryHandle shared_handle2;
99 manager_->AllocateLockedDiscardableSharedMemoryForChild( 99 manager_->AllocateLockedDiscardableSharedMemoryForChild(
100 base::GetCurrentProcessHandle(), kDataSize, &shared_handle2); 100 base::GetCurrentProcessHandle(), kDataSize, 2, &shared_handle2);
101 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle2)); 101 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle2));
102 102
103 TestDiscardableSharedMemory memory2(shared_handle2); 103 TestDiscardableSharedMemory memory2(shared_handle2);
104 rv = memory2.Map(kDataSize); 104 rv = memory2.Map(kDataSize);
105 ASSERT_TRUE(rv); 105 ASSERT_TRUE(rv);
106 106
107 // Enough memory for both allocations. 107 // Enough memory for both allocations.
108 manager_->SetNow(base::Time::FromDoubleT(1)); 108 manager_->SetNow(base::Time::FromDoubleT(1));
109 manager_->SetMemoryLimit(memory1.mapped_size() + memory2.mapped_size()); 109 manager_->SetMemoryLimit(memory1.mapped_size() + memory2.mapped_size());
110 110
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 EXPECT_EQ(base::DiscardableSharedMemory::FAILED, lock_rv); 145 EXPECT_EQ(base::DiscardableSharedMemory::FAILED, lock_rv);
146 lock_rv = memory2.Lock(0, 0); 146 lock_rv = memory2.Lock(0, 0);
147 EXPECT_EQ(base::DiscardableSharedMemory::SUCCESS, lock_rv); 147 EXPECT_EQ(base::DiscardableSharedMemory::SUCCESS, lock_rv);
148 } 148 }
149 149
150 TEST_F(HostDiscardableSharedMemoryManagerTest, EnforceMemoryPolicy) { 150 TEST_F(HostDiscardableSharedMemoryManagerTest, EnforceMemoryPolicy) {
151 const int kDataSize = 1024; 151 const int kDataSize = 1024;
152 152
153 base::SharedMemoryHandle shared_handle; 153 base::SharedMemoryHandle shared_handle;
154 manager_->AllocateLockedDiscardableSharedMemoryForChild( 154 manager_->AllocateLockedDiscardableSharedMemoryForChild(
155 base::GetCurrentProcessHandle(), kDataSize, &shared_handle); 155 base::GetCurrentProcessHandle(), kDataSize, 0, &shared_handle);
156 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle)); 156 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle));
157 157
158 TestDiscardableSharedMemory memory(shared_handle); 158 TestDiscardableSharedMemory memory(shared_handle);
159 bool rv = memory.Map(kDataSize); 159 bool rv = memory.Map(kDataSize);
160 ASSERT_TRUE(rv); 160 ASSERT_TRUE(rv);
161 161
162 // Not enough memory for one allocation. 162 // Not enough memory for one allocation.
163 manager_->SetNow(base::Time::FromDoubleT(1)); 163 manager_->SetNow(base::Time::FromDoubleT(1));
164 manager_->SetMemoryLimit(memory.mapped_size() - 1); 164 manager_->SetMemoryLimit(memory.mapped_size() - 1);
165 // We need to enforce memory policy as our memory usage is currently above 165 // We need to enforce memory policy as our memory usage is currently above
(...skipping 13 matching lines...) Expand all
179 manager_->SetNow(base::Time::FromDoubleT(4)); 179 manager_->SetNow(base::Time::FromDoubleT(4));
180 manager_->EnforceMemoryPolicy(); 180 manager_->EnforceMemoryPolicy();
181 // Memory policy should have successfully been enforced. 181 // Memory policy should have successfully been enforced.
182 EXPECT_FALSE(manager_->enforce_memory_policy_pending()); 182 EXPECT_FALSE(manager_->enforce_memory_policy_pending());
183 183
184 EXPECT_EQ(base::DiscardableSharedMemory::FAILED, memory.Lock(0, 0)); 184 EXPECT_EQ(base::DiscardableSharedMemory::FAILED, memory.Lock(0, 0));
185 } 185 }
186 186
187 } // namespace 187 } // namespace
188 } // namespace content 188 } // namespace content
OLDNEW
« no previous file with comments | « content/common/host_discardable_shared_memory_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698