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

Side by Side Diff: components/discardable_memory/service/discardable_shared_memory_manager_unittest.cc

Issue 2485623002: discardable_memory: Using mojo IPC to replace Chrome IPC (Closed)
Patch Set: Fix bot issues Created 4 years 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
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 #include "components/discardable_memory/service/discardable_shared_memory_manage r.h" 4 #include "components/discardable_memory/service/discardable_shared_memory_manage r.h"
5 5
6 #include <stddef.h> 6 #include <stddef.h>
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <string.h> 8 #include <string.h>
9 9
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 std::unique_ptr<TestDiscardableSharedMemoryManager> manager_; 70 std::unique_ptr<TestDiscardableSharedMemoryManager> manager_;
71 }; 71 };
72 72
73 TEST_F(DiscardableSharedMemoryManagerTest, AllocateForClient) { 73 TEST_F(DiscardableSharedMemoryManagerTest, AllocateForClient) {
74 const int kDataSize = 1024; 74 const int kDataSize = 1024;
75 uint8_t data[kDataSize]; 75 uint8_t data[kDataSize];
76 memset(data, 0x80, kDataSize); 76 memset(data, 0x80, kDataSize);
77 77
78 base::SharedMemoryHandle shared_handle; 78 base::SharedMemoryHandle shared_handle;
79 manager_->AllocateLockedDiscardableSharedMemoryForClient( 79 manager_->AllocateLockedDiscardableSharedMemoryForClient(
80 base::GetCurrentProcessHandle(), kInvalidUniqueID, kDataSize, 0, 80 kInvalidUniqueID, kDataSize, 0, &shared_handle);
81 &shared_handle);
82 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle)); 81 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle));
83 82
84 TestDiscardableSharedMemory memory(shared_handle); 83 TestDiscardableSharedMemory memory(shared_handle);
85 bool rv = memory.Map(kDataSize); 84 bool rv = memory.Map(kDataSize);
86 ASSERT_TRUE(rv); 85 ASSERT_TRUE(rv);
87 86
88 memcpy(memory.memory(), data, kDataSize); 87 memcpy(memory.memory(), data, kDataSize);
89 memory.SetNow(base::Time::FromDoubleT(1)); 88 memory.SetNow(base::Time::FromDoubleT(1));
90 memory.Unlock(0, 0); 89 memory.Unlock(0, 0);
91 90
92 ASSERT_EQ(base::DiscardableSharedMemory::SUCCESS, memory.Lock(0, 0)); 91 ASSERT_EQ(base::DiscardableSharedMemory::SUCCESS, memory.Lock(0, 0));
93 EXPECT_EQ(memcmp(data, memory.memory(), kDataSize), 0); 92 EXPECT_EQ(memcmp(data, memory.memory(), kDataSize), 0);
94 memory.Unlock(0, 0); 93 memory.Unlock(0, 0);
95 } 94 }
96 95
97 TEST_F(DiscardableSharedMemoryManagerTest, Purge) { 96 TEST_F(DiscardableSharedMemoryManagerTest, Purge) {
98 const int kDataSize = 1024; 97 const int kDataSize = 1024;
99 98
100 base::SharedMemoryHandle shared_handle1; 99 base::SharedMemoryHandle shared_handle1;
101 manager_->AllocateLockedDiscardableSharedMemoryForClient( 100 manager_->AllocateLockedDiscardableSharedMemoryForClient(
102 base::GetCurrentProcessHandle(), kInvalidUniqueID, kDataSize, 1, 101 kInvalidUniqueID, kDataSize, 1, &shared_handle1);
103 &shared_handle1);
104 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle1)); 102 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle1));
105 103
106 TestDiscardableSharedMemory memory1(shared_handle1); 104 TestDiscardableSharedMemory memory1(shared_handle1);
107 bool rv = memory1.Map(kDataSize); 105 bool rv = memory1.Map(kDataSize);
108 ASSERT_TRUE(rv); 106 ASSERT_TRUE(rv);
109 107
110 base::SharedMemoryHandle shared_handle2; 108 base::SharedMemoryHandle shared_handle2;
111 manager_->AllocateLockedDiscardableSharedMemoryForClient( 109 manager_->AllocateLockedDiscardableSharedMemoryForClient(
112 base::GetCurrentProcessHandle(), kInvalidUniqueID, kDataSize, 2, 110 kInvalidUniqueID, kDataSize, 2, &shared_handle2);
113 &shared_handle2);
114 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle2)); 111 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle2));
115 112
116 TestDiscardableSharedMemory memory2(shared_handle2); 113 TestDiscardableSharedMemory memory2(shared_handle2);
117 rv = memory2.Map(kDataSize); 114 rv = memory2.Map(kDataSize);
118 ASSERT_TRUE(rv); 115 ASSERT_TRUE(rv);
119 116
120 // Enough memory for both allocations. 117 // Enough memory for both allocations.
121 manager_->SetNow(base::Time::FromDoubleT(1)); 118 manager_->SetNow(base::Time::FromDoubleT(1));
122 manager_->SetMemoryLimit(memory1.mapped_size() + memory2.mapped_size()); 119 manager_->SetMemoryLimit(memory1.mapped_size() + memory2.mapped_size());
123 120
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 EXPECT_EQ(base::DiscardableSharedMemory::FAILED, lock_rv); 155 EXPECT_EQ(base::DiscardableSharedMemory::FAILED, lock_rv);
159 lock_rv = memory2.Lock(0, 0); 156 lock_rv = memory2.Lock(0, 0);
160 EXPECT_EQ(base::DiscardableSharedMemory::SUCCESS, lock_rv); 157 EXPECT_EQ(base::DiscardableSharedMemory::SUCCESS, lock_rv);
161 } 158 }
162 159
163 TEST_F(DiscardableSharedMemoryManagerTest, EnforceMemoryPolicy) { 160 TEST_F(DiscardableSharedMemoryManagerTest, EnforceMemoryPolicy) {
164 const int kDataSize = 1024; 161 const int kDataSize = 1024;
165 162
166 base::SharedMemoryHandle shared_handle; 163 base::SharedMemoryHandle shared_handle;
167 manager_->AllocateLockedDiscardableSharedMemoryForClient( 164 manager_->AllocateLockedDiscardableSharedMemoryForClient(
168 base::GetCurrentProcessHandle(), kInvalidUniqueID, kDataSize, 0, 165 kInvalidUniqueID, kDataSize, 0, &shared_handle);
169 &shared_handle);
170 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle)); 166 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle));
171 167
172 TestDiscardableSharedMemory memory(shared_handle); 168 TestDiscardableSharedMemory memory(shared_handle);
173 bool rv = memory.Map(kDataSize); 169 bool rv = memory.Map(kDataSize);
174 ASSERT_TRUE(rv); 170 ASSERT_TRUE(rv);
175 171
176 // Not enough memory for one allocation. 172 // Not enough memory for one allocation.
177 manager_->SetNow(base::Time::FromDoubleT(1)); 173 manager_->SetNow(base::Time::FromDoubleT(1));
178 manager_->SetMemoryLimit(memory.mapped_size() - 1); 174 manager_->SetMemoryLimit(memory.mapped_size() - 1);
179 // We need to enforce memory policy as our memory usage is currently above 175 // We need to enforce memory policy as our memory usage is currently above
(...skipping 17 matching lines...) Expand all
197 193
198 EXPECT_EQ(base::DiscardableSharedMemory::FAILED, memory.Lock(0, 0)); 194 EXPECT_EQ(base::DiscardableSharedMemory::FAILED, memory.Lock(0, 0));
199 } 195 }
200 196
201 TEST_F(DiscardableSharedMemoryManagerTest, 197 TEST_F(DiscardableSharedMemoryManagerTest,
202 ReduceMemoryAfterSegmentHasBeenDeleted) { 198 ReduceMemoryAfterSegmentHasBeenDeleted) {
203 const int kDataSize = 1024; 199 const int kDataSize = 1024;
204 200
205 base::SharedMemoryHandle shared_handle1; 201 base::SharedMemoryHandle shared_handle1;
206 manager_->AllocateLockedDiscardableSharedMemoryForClient( 202 manager_->AllocateLockedDiscardableSharedMemoryForClient(
207 base::GetCurrentProcessHandle(), kInvalidUniqueID, kDataSize, 1, 203 kInvalidUniqueID, kDataSize, 1, &shared_handle1);
208 &shared_handle1);
209 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle1)); 204 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle1));
210 205
211 TestDiscardableSharedMemory memory1(shared_handle1); 206 TestDiscardableSharedMemory memory1(shared_handle1);
212 bool rv = memory1.Map(kDataSize); 207 bool rv = memory1.Map(kDataSize);
213 ASSERT_TRUE(rv); 208 ASSERT_TRUE(rv);
214 209
215 base::SharedMemoryHandle shared_handle2; 210 base::SharedMemoryHandle shared_handle2;
216 manager_->AllocateLockedDiscardableSharedMemoryForClient( 211 manager_->AllocateLockedDiscardableSharedMemoryForClient(
217 base::GetCurrentProcessHandle(), kInvalidUniqueID, kDataSize, 2, 212 kInvalidUniqueID, kDataSize, 2, &shared_handle2);
218 &shared_handle2);
219 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle2)); 213 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle2));
220 214
221 TestDiscardableSharedMemory memory2(shared_handle2); 215 TestDiscardableSharedMemory memory2(shared_handle2);
222 rv = memory2.Map(kDataSize); 216 rv = memory2.Map(kDataSize);
223 ASSERT_TRUE(rv); 217 ASSERT_TRUE(rv);
224 218
225 // Unlock and delete segment 1. 219 // Unlock and delete segment 1.
226 memory1.SetNow(base::Time::FromDoubleT(1)); 220 memory1.SetNow(base::Time::FromDoubleT(1));
227 memory1.Unlock(0, 0); 221 memory1.Unlock(0, 0);
228 memory1.Unmap(); 222 memory1.Unmap();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 DiscardableSharedMemoryManager* const manager_; 256 DiscardableSharedMemoryManager* const manager_;
263 const size_t limit_; 257 const size_t limit_;
264 }; 258 };
265 259
266 TEST_F(DiscardableSharedMemoryManagerScheduleEnforceMemoryPolicyTest, 260 TEST_F(DiscardableSharedMemoryManagerScheduleEnforceMemoryPolicyTest,
267 SetMemoryLimitOnSimpleThread) { 261 SetMemoryLimitOnSimpleThread) {
268 const int kDataSize = 1024; 262 const int kDataSize = 1024;
269 263
270 base::SharedMemoryHandle shared_handle; 264 base::SharedMemoryHandle shared_handle;
271 manager_->AllocateLockedDiscardableSharedMemoryForClient( 265 manager_->AllocateLockedDiscardableSharedMemoryForClient(
272 base::GetCurrentProcessHandle(), kInvalidUniqueID, kDataSize, 0, 266 kInvalidUniqueID, kDataSize, 0, &shared_handle);
273 &shared_handle);
274 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle)); 267 ASSERT_TRUE(base::SharedMemory::IsHandleValid(shared_handle));
275 268
276 // Set the memory limit to a value that will require EnforceMemoryPolicy() 269 // Set the memory limit to a value that will require EnforceMemoryPolicy()
277 // to be schedule on a thread without a message loop. 270 // to be schedule on a thread without a message loop.
278 SetMemoryLimitRunner runner(manager_.get(), kDataSize - 1); 271 SetMemoryLimitRunner runner(manager_.get(), kDataSize - 1);
279 base::DelegateSimpleThread thread(&runner, "memory_limit_setter"); 272 base::DelegateSimpleThread thread(&runner, "memory_limit_setter");
280 thread.Start(); 273 thread.Start();
281 thread.Join(); 274 thread.Join();
282 } 275 }
283 276
284 } // namespace 277 } // namespace
285 } // namespace discardable_memory 278 } // namespace discardable_memory
OLDNEW
« no previous file with comments | « components/discardable_memory/service/discardable_shared_memory_manager.cc ('k') | content/browser/browser_main_loop.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698