OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/metrics/persistent_memory_allocator.h" | 5 #include "base/metrics/persistent_memory_allocator.h" |
6 | 6 |
7 #include "base/files/file.h" | 7 #include "base/files/file.h" |
8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
9 #include "base/files/memory_mapped_file.h" | 9 #include "base/files/memory_mapped_file.h" |
10 #include "base/files/scoped_temp_dir.h" | 10 #include "base/files/scoped_temp_dir.h" |
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
558 File writer(file_path, File::FLAG_CREATE | File::FLAG_WRITE); | 558 File writer(file_path, File::FLAG_CREATE | File::FLAG_WRITE); |
559 ASSERT_TRUE(writer.IsValid()); | 559 ASSERT_TRUE(writer.IsValid()); |
560 writer.Write(0, (const char*)local.data(), filesize); | 560 writer.Write(0, (const char*)local.data(), filesize); |
561 } | 561 } |
562 ASSERT_TRUE(PathExists(file_path)); | 562 ASSERT_TRUE(PathExists(file_path)); |
563 | 563 |
564 mmfile.reset(new MemoryMappedFile()); | 564 mmfile.reset(new MemoryMappedFile()); |
565 mmfile->Initialize(file_path); | 565 mmfile->Initialize(file_path); |
566 EXPECT_EQ(filesize, mmfile->length()); | 566 EXPECT_EQ(filesize, mmfile->length()); |
567 if (FilePersistentMemoryAllocator::IsFileAcceptable(*mmfile)) { | 567 if (FilePersistentMemoryAllocator::IsFileAcceptable(*mmfile)) { |
568 // Make sure construction doesn't crash. | 568 // Make sure construction doesn't crash. It will, however, cause |
| 569 // error messages warning about about a corrupted memory segment. |
569 FilePersistentMemoryAllocator allocator(std::move(mmfile), 0, ""); | 570 FilePersistentMemoryAllocator allocator(std::move(mmfile), 0, ""); |
570 // Also make sure that iteration doesn't crash. | 571 // Also make sure that iteration doesn't crash. |
571 PersistentMemoryAllocator::Iterator iter; | 572 PersistentMemoryAllocator::Iterator iter; |
572 allocator.CreateIterator(&iter); | 573 allocator.CreateIterator(&iter); |
573 for (;;) { | 574 for (;;) { |
574 Reference ref = allocator.GetNextIterable(&iter, 0); | 575 Reference ref = allocator.GetNextIterable(&iter, 0); |
575 if (!ref) | 576 if (!ref) |
576 break; | 577 break; |
577 const char* data = allocator.GetAsObject<char>(ref, 0); | 578 const char* data = allocator.GetAsObject<char>(ref, 0); |
578 uint32_t type = allocator.GetType(ref); | 579 uint32_t type = allocator.GetType(ref); |
(...skipping 19 matching lines...) Expand all Loading... |
598 File writer(file_path, File::FLAG_CREATE | File::FLAG_WRITE); | 599 File writer(file_path, File::FLAG_CREATE | File::FLAG_WRITE); |
599 ASSERT_TRUE(writer.IsValid()); | 600 ASSERT_TRUE(writer.IsValid()); |
600 writer.Write(0, (const char*)garbage.get(), filesize); | 601 writer.Write(0, (const char*)garbage.get(), filesize); |
601 } | 602 } |
602 ASSERT_TRUE(PathExists(file_path)); | 603 ASSERT_TRUE(PathExists(file_path)); |
603 | 604 |
604 mmfile.reset(new MemoryMappedFile()); | 605 mmfile.reset(new MemoryMappedFile()); |
605 mmfile->Initialize(file_path); | 606 mmfile->Initialize(file_path); |
606 EXPECT_EQ(filesize, mmfile->length()); | 607 EXPECT_EQ(filesize, mmfile->length()); |
607 if (FilePersistentMemoryAllocator::IsFileAcceptable(*mmfile)) { | 608 if (FilePersistentMemoryAllocator::IsFileAcceptable(*mmfile)) { |
608 // Just need to make sure it doesn't crash. | 609 // Make sure construction doesn't crash. It will, however, cause |
| 610 // error messages warning about about a corrupted memory segment. |
609 FilePersistentMemoryAllocator allocator(std::move(mmfile), 0, ""); | 611 FilePersistentMemoryAllocator allocator(std::move(mmfile), 0, ""); |
610 EXPECT_TRUE(allocator.IsCorrupt()); // Garbage data so it should be. | 612 EXPECT_TRUE(allocator.IsCorrupt()); // Garbage data so it should be. |
611 } else { | 613 } else { |
612 // For filesize >= minsize, the file must be acceptable. This | 614 // For filesize >= minsize, the file must be acceptable. This |
613 // else clause (file-not-acceptable) should be reached only if | 615 // else clause (file-not-acceptable) should be reached only if |
614 // filesize < minsize. | 616 // filesize < minsize. |
615 EXPECT_GT(minsize, filesize); | 617 EXPECT_GT(minsize, filesize); |
616 } | 618 } |
617 } | 619 } |
618 } | 620 } |
619 | 621 |
620 } // namespace base | 622 } // namespace base |
OLD | NEW |