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

Side by Side Diff: net/disk_cache/flash/segment_unittest.cc

Issue 14265009: FlashCache refactorings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More refactorings. Created 7 years, 8 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 | « net/disk_cache/flash/log_store_unittest.cc ('k') | net/disk_cache/flash/storage_unittest.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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "net/disk_cache/disk_cache_test_util.h" 6 #include "net/disk_cache/disk_cache_test_util.h"
7 #include "net/disk_cache/flash/segment.h" 7 #include "net/disk_cache/flash/segment.h"
8 #include "net/disk_cache/flash/storage.h" 8 #include "net/disk_cache/flash/storage.h"
9 #include "net/disk_cache/flash/flash_cache_test_base.h" 9 #include "net/disk_cache/flash/flash_cache_test_base.h"
10 #include "net/disk_cache/flash/format.h" 10 #include "net/disk_cache/flash/format.h"
(...skipping 19 matching lines...) Expand all
30 30
31 typedef Entry<kSmallEntrySize> SmallEntry; 31 typedef Entry<kSmallEntrySize> SmallEntry;
32 typedef Entry<kLargeEntrySize> LargeEntry; 32 typedef Entry<kLargeEntrySize> LargeEntry;
33 33
34 const int32 kSegmentFreeSpace = disk_cache::kFlashSegmentSize - 34 const int32 kSegmentFreeSpace = disk_cache::kFlashSegmentSize -
35 disk_cache::kFlashSummarySize; 35 disk_cache::kFlashSummarySize;
36 36
37 } // namespace 37 } // namespace
38 38
39 TEST_F(FlashCacheTest, SegmentUserTracking) { 39 TEST_F(FlashCacheTest, SegmentUserTracking) {
40 disk_cache::Storage storage(path_, kStorageSize);
41 ASSERT_TRUE(storage.Init());
42
40 scoped_ptr<disk_cache::Segment> segment( 43 scoped_ptr<disk_cache::Segment> segment(
41 new disk_cache::Segment(0, false, storage_.get())); 44 new disk_cache::Segment(0, false, &storage));
42 EXPECT_TRUE(segment->Init()); 45 EXPECT_TRUE(segment->Init());
43 46
44 EXPECT_TRUE(segment->HasNoUsers()); 47 EXPECT_TRUE(segment->HasNoUsers());
45 segment->AddUser(); 48 segment->AddUser();
46 segment->AddUser(); 49 segment->AddUser();
47 EXPECT_FALSE(segment->HasNoUsers()); 50 EXPECT_FALSE(segment->HasNoUsers());
48 51
49 segment->ReleaseUser(); 52 segment->ReleaseUser();
50 EXPECT_FALSE(segment->HasNoUsers()); 53 EXPECT_FALSE(segment->HasNoUsers());
51 segment->ReleaseUser(); 54 segment->ReleaseUser();
52 EXPECT_TRUE(segment->HasNoUsers()); 55 EXPECT_TRUE(segment->HasNoUsers());
53 56
54 EXPECT_TRUE(segment->Close()); 57 EXPECT_TRUE(segment->Close());
55 } 58 }
56 59
57 TEST_F(FlashCacheTest, SegmentCreateDestroy) { 60 TEST_F(FlashCacheTest, SegmentCreateDestroy) {
61 disk_cache::Storage storage(path_, kStorageSize);
62 ASSERT_TRUE(storage.Init());
63
58 int32 index = 0; 64 int32 index = 0;
59 scoped_ptr<disk_cache::Segment> segment( 65 scoped_ptr<disk_cache::Segment> segment(
60 new disk_cache::Segment(index, false, storage_.get())); 66 new disk_cache::Segment(index, false, &storage));
61 EXPECT_TRUE(segment->Init()); 67 EXPECT_TRUE(segment->Init());
62 EXPECT_TRUE(segment->Close()); 68 EXPECT_TRUE(segment->Close());
63 69
64 index = num_segments_in_storage_ - 1; 70 index = kNumTestSegments - 1;
65 segment.reset(new disk_cache::Segment(index, false, storage_.get())); 71 segment.reset(new disk_cache::Segment(index, false, &storage));
66 EXPECT_TRUE(segment->Init()); 72 EXPECT_TRUE(segment->Init());
67 EXPECT_TRUE(segment->Close()); 73 EXPECT_TRUE(segment->Close());
68 74
69 int32 invalid_index = num_segments_in_storage_; 75 int32 invalid_index = kNumTestSegments;
70 segment.reset(new disk_cache::Segment(invalid_index, false, storage_.get())); 76 segment.reset(new disk_cache::Segment(invalid_index, false, &storage));
71 EXPECT_FALSE(segment->Init()); 77 EXPECT_FALSE(segment->Init());
72 78
73 invalid_index = -1; 79 invalid_index = -1;
74 segment.reset(new disk_cache::Segment(invalid_index, false, storage_.get())); 80 segment.reset(new disk_cache::Segment(invalid_index, false, &storage));
75 EXPECT_FALSE(segment->Init()); 81 EXPECT_FALSE(segment->Init());
76 } 82 }
77 83
78 TEST_F(FlashCacheTest, SegmentWriteDataReadData) { 84 TEST_F(FlashCacheTest, SegmentWriteDataReadData) {
79 int32 index = rand() % num_segments_in_storage_; 85 disk_cache::Storage storage(path_, kStorageSize);
86 ASSERT_TRUE(storage.Init());
87
88 int32 index = rand() % kNumTestSegments;
80 scoped_ptr<disk_cache::Segment> segment( 89 scoped_ptr<disk_cache::Segment> segment(
81 new disk_cache::Segment(index, false, storage_.get())); 90 new disk_cache::Segment(index, false, &storage));
82 91
83 EXPECT_TRUE(segment->Init()); 92 EXPECT_TRUE(segment->Init());
84 SmallEntry entry1; 93 SmallEntry entry1;
85 EXPECT_TRUE(segment->CanHold(entry1.size)); 94 EXPECT_TRUE(segment->CanHold(entry1.size));
86 int32 offset = segment->write_offset(); 95 int32 offset = segment->write_offset();
87 EXPECT_TRUE(segment->WriteData(entry1.data, entry1.size)); 96 EXPECT_TRUE(segment->WriteData(entry1.data, entry1.size));
88 segment->StoreOffset(offset); 97 segment->StoreOffset(offset);
89 EXPECT_TRUE(segment->Close()); 98 EXPECT_TRUE(segment->Close());
90 99
91 segment.reset(new disk_cache::Segment(index, true, storage_.get())); 100 segment.reset(new disk_cache::Segment(index, true, &storage));
92 EXPECT_TRUE(segment->Init()); 101 EXPECT_TRUE(segment->Init());
93 SmallEntry entry2; 102 SmallEntry entry2;
94 EXPECT_TRUE(segment->ReadData(entry2.data, entry2.size, offset)); 103 EXPECT_TRUE(segment->ReadData(entry2.data, entry2.size, offset));
95 EXPECT_EQ(entry1, entry2); 104 EXPECT_EQ(entry1, entry2);
96 EXPECT_TRUE(segment->Close()); 105 EXPECT_TRUE(segment->Close());
97 } 106 }
98 107
99 TEST_F(FlashCacheTest, SegmentFillWithSmallEntries) { 108 TEST_F(FlashCacheTest, SegmentFillWithSmallEntries) {
100 int32 index = rand() % num_segments_in_storage_; 109 disk_cache::Storage storage(path_, kStorageSize);
110 ASSERT_TRUE(storage.Init());
111
112 int32 index = rand() % kNumTestSegments;
101 scoped_ptr<disk_cache::Segment> segment( 113 scoped_ptr<disk_cache::Segment> segment(
102 new disk_cache::Segment(index, false, storage_.get())); 114 new disk_cache::Segment(index, false, &storage));
103 115
104 EXPECT_TRUE(segment->Init()); 116 EXPECT_TRUE(segment->Init());
105 SmallEntry entry; 117 SmallEntry entry;
106 int32 num_bytes_written = 0; 118 int32 num_bytes_written = 0;
107 while (segment->CanHold(entry.size)) { 119 while (segment->CanHold(entry.size)) {
108 int32 offset = segment->write_offset(); 120 int32 offset = segment->write_offset();
109 EXPECT_TRUE(segment->WriteData(entry.data, entry.size)); 121 EXPECT_TRUE(segment->WriteData(entry.data, entry.size));
110 segment->StoreOffset(offset); 122 segment->StoreOffset(offset);
111 num_bytes_written += entry.size; 123 num_bytes_written += entry.size;
112 } 124 }
113 int32 space_left = kSegmentFreeSpace - num_bytes_written; 125 int32 space_left = kSegmentFreeSpace - num_bytes_written;
114 EXPECT_GE(space_left, entry.size); 126 EXPECT_GE(space_left, entry.size);
115 EXPECT_EQ(segment->GetOffsets().size(), disk_cache::kFlashMaxEntryCount); 127 EXPECT_EQ(segment->GetOffsets().size(), disk_cache::kFlashMaxEntryCount);
116 EXPECT_TRUE(segment->Close()); 128 EXPECT_TRUE(segment->Close());
117 } 129 }
118 130
119 TEST_F(FlashCacheTest, SegmentFillWithLargeEntries) { 131 TEST_F(FlashCacheTest, SegmentFillWithLargeEntries) {
120 int32 index = rand() % num_segments_in_storage_; 132 disk_cache::Storage storage(path_, kStorageSize);
133 ASSERT_TRUE(storage.Init());
134
135 int32 index = rand() % kNumTestSegments;
121 scoped_ptr<disk_cache::Segment> segment( 136 scoped_ptr<disk_cache::Segment> segment(
122 new disk_cache::Segment(index, false, storage_.get())); 137 new disk_cache::Segment(index, false, &storage));
123 138
124 EXPECT_TRUE(segment->Init()); 139 EXPECT_TRUE(segment->Init());
125 scoped_ptr<LargeEntry> entry(new LargeEntry); 140 scoped_ptr<LargeEntry> entry(new LargeEntry);
126 int32 num_bytes_written = 0; 141 int32 num_bytes_written = 0;
127 while (segment->CanHold(entry->size)) { 142 while (segment->CanHold(entry->size)) {
128 int32 offset = segment->write_offset(); 143 int32 offset = segment->write_offset();
129 EXPECT_TRUE(segment->WriteData(entry->data, entry->size)); 144 EXPECT_TRUE(segment->WriteData(entry->data, entry->size));
130 segment->StoreOffset(offset); 145 segment->StoreOffset(offset);
131 num_bytes_written += entry->size; 146 num_bytes_written += entry->size;
132 } 147 }
133 int32 space_left = kSegmentFreeSpace - num_bytes_written; 148 int32 space_left = kSegmentFreeSpace - num_bytes_written;
134 EXPECT_LT(space_left, entry->size); 149 EXPECT_LT(space_left, entry->size);
135 EXPECT_LT(segment->GetOffsets().size(), disk_cache::kFlashMaxEntryCount); 150 EXPECT_LT(segment->GetOffsets().size(), disk_cache::kFlashMaxEntryCount);
136 EXPECT_TRUE(segment->Close()); 151 EXPECT_TRUE(segment->Close());
137 } 152 }
OLDNEW
« no previous file with comments | « net/disk_cache/flash/log_store_unittest.cc ('k') | net/disk_cache/flash/storage_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698