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

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

Issue 935333002: Update from https://crrev.com/316786 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 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 | « base/memory/discardable_shared_memory.cc ('k') | base/memory/memory_pressure_listener.cc » ('j') | 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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/memory/discardable_shared_memory.h" 6 #include "base/memory/discardable_shared_memory.h"
7 #include "base/process/process_metrics.h" 7 #include "base/process/process_metrics.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 namespace base { 10 namespace base {
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 227
228 memory2.SetNow(Time::FromDoubleT(1)); 228 memory2.SetNow(Time::FromDoubleT(1));
229 memory2.Unlock(0, 0); 229 memory2.Unlock(0, 0);
230 230
231 rv = memory2.Purge(Time::FromDoubleT(2)); 231 rv = memory2.Purge(Time::FromDoubleT(2));
232 EXPECT_TRUE(rv); 232 EXPECT_TRUE(rv);
233 233
234 // Lock should fail as memory has been purged. 234 // Lock should fail as memory has been purged.
235 auto lock_rv = memory2.Lock(0, 0); 235 auto lock_rv = memory2.Lock(0, 0);
236 EXPECT_EQ(DiscardableSharedMemory::FAILED, lock_rv); 236 EXPECT_EQ(DiscardableSharedMemory::FAILED, lock_rv);
237 lock_rv = memory1.Lock(0, 0);
238 EXPECT_EQ(DiscardableSharedMemory::FAILED, lock_rv);
239 } 237 }
240 238
241 TEST(DiscardableSharedMemoryTest, LockAndUnlockRange) { 239 TEST(DiscardableSharedMemoryTest, LockAndUnlockRange) {
242 const uint32 kDataSize = 32; 240 const uint32 kDataSize = 32;
243 241
244 uint32 data_size_in_bytes = kDataSize * base::GetPageSize(); 242 uint32 data_size_in_bytes = kDataSize * base::GetPageSize();
245 243
246 TestDiscardableSharedMemory memory1; 244 TestDiscardableSharedMemory memory1;
247 bool rv = memory1.CreateAndMap(data_size_in_bytes); 245 bool rv = memory1.CreateAndMap(data_size_in_bytes);
248 ASSERT_TRUE(rv); 246 ASSERT_TRUE(rv);
249 247
250 SharedMemoryHandle shared_handle; 248 SharedMemoryHandle shared_handle;
251 ASSERT_TRUE( 249 ASSERT_TRUE(
252 memory1.ShareToProcess(GetCurrentProcessHandle(), &shared_handle)); 250 memory1.ShareToProcess(GetCurrentProcessHandle(), &shared_handle));
253 ASSERT_TRUE(SharedMemory::IsHandleValid(shared_handle)); 251 ASSERT_TRUE(SharedMemory::IsHandleValid(shared_handle));
254 252
255 TestDiscardableSharedMemory memory2(shared_handle); 253 TestDiscardableSharedMemory memory2(shared_handle);
256 rv = memory2.Map(data_size_in_bytes); 254 rv = memory2.Map(data_size_in_bytes);
257 ASSERT_TRUE(rv); 255 ASSERT_TRUE(rv);
258 256
259 // Unlock first page. 257 // Unlock first page.
260 memory2.SetNow(Time::FromDoubleT(1)); 258 memory2.SetNow(Time::FromDoubleT(1));
261 memory2.Unlock(0, base::GetPageSize()); 259 memory2.Unlock(0, base::GetPageSize());
262 260
263 rv = memory1.Purge(Time::FromDoubleT(2)); 261 rv = memory1.Purge(Time::FromDoubleT(2));
264 EXPECT_FALSE(rv); 262 EXPECT_FALSE(rv);
265 263
264 // Lock first page again.
265 memory2.SetNow(Time::FromDoubleT(3));
266 auto lock_rv = memory2.Lock(0, base::GetPageSize());
267 EXPECT_NE(DiscardableSharedMemory::FAILED, lock_rv);
268
269 // Unlock first page.
270 memory2.SetNow(Time::FromDoubleT(4));
271 memory2.Unlock(0, base::GetPageSize());
272
273 rv = memory1.Purge(Time::FromDoubleT(5));
274 EXPECT_FALSE(rv);
275
266 // Unlock second page. 276 // Unlock second page.
267 memory2.SetNow(Time::FromDoubleT(3)); 277 memory2.SetNow(Time::FromDoubleT(6));
268 memory2.Unlock(base::GetPageSize(), base::GetPageSize()); 278 memory2.Unlock(base::GetPageSize(), base::GetPageSize());
269 279
270 rv = memory1.Purge(Time::FromDoubleT(4)); 280 rv = memory1.Purge(Time::FromDoubleT(7));
271 EXPECT_FALSE(rv); 281 EXPECT_FALSE(rv);
272 282
273 // Unlock anything onwards. 283 // Unlock anything onwards.
274 memory2.SetNow(Time::FromDoubleT(5)); 284 memory2.SetNow(Time::FromDoubleT(8));
275 memory2.Unlock(2 * base::GetPageSize(), 0); 285 memory2.Unlock(2 * base::GetPageSize(), 0);
276 286
277 // Memory is unlocked, but our usage timestamp is incorrect. 287 // Memory is unlocked, but our usage timestamp is incorrect.
278 rv = memory1.Purge(Time::FromDoubleT(6)); 288 rv = memory1.Purge(Time::FromDoubleT(9));
279 EXPECT_FALSE(rv); 289 EXPECT_FALSE(rv);
280 290
281 // The failed purge attempt should have updated usage time to the correct 291 // The failed purge attempt should have updated usage time to the correct
282 // value. 292 // value.
283 EXPECT_EQ(Time::FromDoubleT(5), memory1.last_known_usage()); 293 EXPECT_EQ(Time::FromDoubleT(8), memory1.last_known_usage());
284 294
285 // Purge should now succeed. 295 // Purge should now succeed.
286 rv = memory1.Purge(Time::FromDoubleT(7)); 296 rv = memory1.Purge(Time::FromDoubleT(10));
287 EXPECT_TRUE(rv); 297 EXPECT_TRUE(rv);
288 } 298 }
289 299
290 TEST(DiscardableSharedMemoryTest, MappedSize) { 300 TEST(DiscardableSharedMemoryTest, MappedSize) {
291 const uint32 kDataSize = 1024; 301 const uint32 kDataSize = 1024;
292 302
293 TestDiscardableSharedMemory memory; 303 TestDiscardableSharedMemory memory;
294 bool rv = memory.CreateAndMap(kDataSize); 304 bool rv = memory.CreateAndMap(kDataSize);
295 ASSERT_TRUE(rv); 305 ASSERT_TRUE(rv);
296 306
297 EXPECT_LE(kDataSize, memory.mapped_size()); 307 EXPECT_LE(kDataSize, memory.mapped_size());
298 308
299 // Mapped size should be 0 after memory segment has been closed. 309 // Mapped size should be 0 after memory segment has been closed.
300 memory.Close(); 310 memory.Close();
301 EXPECT_EQ(0u, memory.mapped_size()); 311 EXPECT_EQ(0u, memory.mapped_size());
302 } 312 }
303 313
304 } // namespace 314 } // namespace
305 } // namespace base 315 } // namespace base
OLDNEW
« no previous file with comments | « base/memory/discardable_shared_memory.cc ('k') | base/memory/memory_pressure_listener.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698