OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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/platform_thread.h" | 6 #include "base/platform_thread.h" |
7 #include "base/timer.h" | 7 #include "base/timer.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 #include "net/base/io_buffer.h" |
9 #include "net/base/net_errors.h" | 10 #include "net/base/net_errors.h" |
10 #include "net/disk_cache/disk_cache_test_base.h" | 11 #include "net/disk_cache/disk_cache_test_base.h" |
11 #include "net/disk_cache/disk_cache_test_util.h" | 12 #include "net/disk_cache/disk_cache_test_util.h" |
12 #include "net/disk_cache/entry_impl.h" | 13 #include "net/disk_cache/entry_impl.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
14 | 15 |
15 using base::Time; | 16 using base::Time; |
16 | 17 |
17 extern int g_cache_tests_max_id; | 18 extern int g_cache_tests_max_id; |
18 extern volatile int g_cache_tests_received; | 19 extern volatile int g_cache_tests_received; |
(...skipping 14 matching lines...) Expand all Loading... |
33 void InvalidData(); | 34 void InvalidData(); |
34 void DoomEntry(); | 35 void DoomEntry(); |
35 void DoomedEntry(); | 36 void DoomedEntry(); |
36 }; | 37 }; |
37 | 38 |
38 void DiskCacheEntryTest::InternalSyncIO() { | 39 void DiskCacheEntryTest::InternalSyncIO() { |
39 disk_cache::Entry *entry1 = NULL; | 40 disk_cache::Entry *entry1 = NULL; |
40 ASSERT_TRUE(cache_->CreateEntry("the first key", &entry1)); | 41 ASSERT_TRUE(cache_->CreateEntry("the first key", &entry1)); |
41 ASSERT_TRUE(NULL != entry1); | 42 ASSERT_TRUE(NULL != entry1); |
42 | 43 |
43 char buffer1[10]; | 44 const int kSize1 = 10; |
44 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 45 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize1); |
45 EXPECT_EQ(0, entry1->ReadData(0, 0, buffer1, sizeof(buffer1), NULL)); | 46 CacheTestFillBuffer(buffer1->data(), kSize1, false); |
46 base::strlcpy(buffer1, "the data", arraysize(buffer1)); | 47 EXPECT_EQ(0, entry1->ReadData(0, 0, buffer1, kSize1, NULL)); |
47 EXPECT_EQ(10, entry1->WriteData(0, 0, buffer1, sizeof(buffer1), NULL, false)); | 48 base::strlcpy(buffer1->data(), "the data", kSize1); |
48 memset(buffer1, 0, sizeof(buffer1)); | 49 EXPECT_EQ(10, entry1->WriteData(0, 0, buffer1, kSize1, NULL, false)); |
49 EXPECT_EQ(10, entry1->ReadData(0, 0, buffer1, sizeof(buffer1), NULL)); | 50 memset(buffer1->data(), 0, kSize1); |
50 EXPECT_STREQ("the data", buffer1); | 51 EXPECT_EQ(10, entry1->ReadData(0, 0, buffer1, kSize1, NULL)); |
| 52 EXPECT_STREQ("the data", buffer1->data()); |
51 | 53 |
52 char buffer2[5000]; | 54 const int kSize2 = 5000; |
53 char buffer3[10000] = {0}; | 55 const int kSize3 = 10000; |
54 CacheTestFillBuffer(buffer2, sizeof(buffer2), false); | 56 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize2); |
55 base::strlcpy(buffer2, "The really big data goes here", arraysize(buffer2)); | 57 scoped_refptr<net::IOBuffer> buffer3 = new net::IOBuffer(kSize3); |
56 EXPECT_EQ(5000, entry1->WriteData(1, 1500, buffer2, sizeof(buffer2), NULL, | 58 memset(buffer3->data(), 0, kSize3); |
57 false)); | 59 CacheTestFillBuffer(buffer2->data(), kSize2, false); |
58 memset(buffer2, 0, sizeof(buffer2)); | 60 base::strlcpy(buffer2->data(), "The really big data goes here", kSize2); |
59 EXPECT_EQ(4989, entry1->ReadData(1, 1511, buffer2, sizeof(buffer2), NULL)); | 61 EXPECT_EQ(5000, entry1->WriteData(1, 1500, buffer2, kSize2, NULL, false)); |
60 EXPECT_STREQ("big data goes here", buffer2); | 62 memset(buffer2->data(), 0, kSize2); |
61 EXPECT_EQ(5000, entry1->ReadData(1, 0, buffer2, sizeof(buffer2), NULL)); | 63 EXPECT_EQ(4989, entry1->ReadData(1, 1511, buffer2, kSize2, NULL)); |
62 EXPECT_EQ(0, memcmp(buffer2, buffer3, 1500)); | 64 EXPECT_STREQ("big data goes here", buffer2->data()); |
63 EXPECT_EQ(1500, entry1->ReadData(1, 5000, buffer2, sizeof(buffer2), NULL)); | 65 EXPECT_EQ(5000, entry1->ReadData(1, 0, buffer2, kSize2, NULL)); |
| 66 EXPECT_EQ(0, memcmp(buffer2->data(), buffer3->data(), 1500)); |
| 67 EXPECT_EQ(1500, entry1->ReadData(1, 5000, buffer2, kSize2, NULL)); |
64 | 68 |
65 EXPECT_EQ(0, entry1->ReadData(1, 6500, buffer2, sizeof(buffer2), NULL)); | 69 EXPECT_EQ(0, entry1->ReadData(1, 6500, buffer2, kSize2, NULL)); |
66 EXPECT_EQ(6500, entry1->ReadData(1, 0, buffer3, sizeof(buffer3), NULL)); | 70 EXPECT_EQ(6500, entry1->ReadData(1, 0, buffer3, kSize3, NULL)); |
67 EXPECT_EQ(8192, entry1->WriteData(1, 0, buffer3, 8192, NULL, false)); | 71 EXPECT_EQ(8192, entry1->WriteData(1, 0, buffer3, 8192, NULL, false)); |
68 EXPECT_EQ(8192, entry1->ReadData(1, 0, buffer3, sizeof(buffer3), NULL)); | 72 EXPECT_EQ(8192, entry1->ReadData(1, 0, buffer3, kSize3, NULL)); |
69 EXPECT_EQ(8192, entry1->GetDataSize(1)); | 73 EXPECT_EQ(8192, entry1->GetDataSize(1)); |
70 | 74 |
71 entry1->Doom(); | 75 entry1->Doom(); |
72 entry1->Close(); | 76 entry1->Close(); |
73 EXPECT_EQ(0, cache_->GetEntryCount()); | 77 EXPECT_EQ(0, cache_->GetEntryCount()); |
74 } | 78 } |
75 | 79 |
76 TEST_F(DiskCacheEntryTest, InternalSyncIO) { | 80 TEST_F(DiskCacheEntryTest, InternalSyncIO) { |
77 InitCache(); | 81 InitCache(); |
78 InternalSyncIO(); | 82 InternalSyncIO(); |
(...skipping 24 matching lines...) Expand all Loading... |
103 CallbackTest callback11(11, false); | 107 CallbackTest callback11(11, false); |
104 CallbackTest callback12(12, false); | 108 CallbackTest callback12(12, false); |
105 CallbackTest callback13(13, false); | 109 CallbackTest callback13(13, false); |
106 | 110 |
107 g_cache_tests_error = false; | 111 g_cache_tests_error = false; |
108 g_cache_tests_max_id = 0; | 112 g_cache_tests_max_id = 0; |
109 g_cache_tests_received = 0; | 113 g_cache_tests_received = 0; |
110 | 114 |
111 MessageLoopHelper helper; | 115 MessageLoopHelper helper; |
112 | 116 |
113 char buffer1[10]; | 117 const int kSize1 = 10; |
114 char buffer2[5000]; | 118 const int kSize2 = 5000; |
115 char buffer3[10000]; | 119 const int kSize3 = 10000; |
116 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 120 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize1); |
117 CacheTestFillBuffer(buffer2, sizeof(buffer2), false); | 121 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize2); |
118 CacheTestFillBuffer(buffer3, sizeof(buffer3), false); | 122 scoped_refptr<net::IOBuffer> buffer3 = new net::IOBuffer(kSize3); |
| 123 CacheTestFillBuffer(buffer1->data(), kSize1, false); |
| 124 CacheTestFillBuffer(buffer2->data(), kSize2, false); |
| 125 CacheTestFillBuffer(buffer3->data(), kSize3, false); |
119 | 126 |
120 EXPECT_EQ(0, entry1->ReadData(0, 0, buffer1, sizeof(buffer1), &callback1)); | 127 EXPECT_EQ(0, entry1->ReadData(0, 0, buffer1, kSize1, &callback1)); |
121 base::strlcpy(buffer1, "the data", arraysize(buffer1)); | 128 base::strlcpy(buffer1->data(), "the data", kSize1); |
122 int expected = 0; | 129 int expected = 0; |
123 int ret = entry1->WriteData(0, 0, buffer1, sizeof(buffer1), &callback2, | 130 int ret = entry1->WriteData(0, 0, buffer1, kSize1, &callback2, false); |
124 false); | |
125 EXPECT_TRUE(10 == ret || net::ERR_IO_PENDING == ret); | 131 EXPECT_TRUE(10 == ret || net::ERR_IO_PENDING == ret); |
126 if (net::ERR_IO_PENDING == ret) | 132 if (net::ERR_IO_PENDING == ret) |
127 expected++; | 133 expected++; |
128 | 134 |
129 memset(buffer2, 0, sizeof(buffer1)); | 135 memset(buffer2->data(), 0, kSize1); |
130 ret = entry1->ReadData(0, 0, buffer2, sizeof(buffer1), &callback3); | 136 ret = entry1->ReadData(0, 0, buffer2, kSize1, &callback3); |
131 EXPECT_TRUE(10 == ret || net::ERR_IO_PENDING == ret); | 137 EXPECT_TRUE(10 == ret || net::ERR_IO_PENDING == ret); |
132 if (net::ERR_IO_PENDING == ret) | 138 if (net::ERR_IO_PENDING == ret) |
133 expected++; | 139 expected++; |
134 | 140 |
135 g_cache_tests_max_id = 3; | 141 g_cache_tests_max_id = 3; |
136 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 142 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
137 EXPECT_STREQ("the data", buffer2); | 143 EXPECT_STREQ("the data", buffer2->data()); |
138 | 144 |
139 base::strlcpy(buffer2, "The really big data goes here", arraysize(buffer2)); | 145 base::strlcpy(buffer2->data(), "The really big data goes here", kSize2); |
140 ret = entry1->WriteData(1, 1500, buffer2, sizeof(buffer2), &callback4, false); | 146 ret = entry1->WriteData(1, 1500, buffer2, kSize2, &callback4, false); |
141 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); | 147 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); |
142 if (net::ERR_IO_PENDING == ret) | 148 if (net::ERR_IO_PENDING == ret) |
143 expected++; | 149 expected++; |
144 | 150 |
145 memset(buffer3, 0, sizeof(buffer2)); | 151 memset(buffer3->data(), 0, kSize2); |
146 ret = entry1->ReadData(1, 1511, buffer3, sizeof(buffer2), &callback5); | 152 ret = entry1->ReadData(1, 1511, buffer3, kSize2, &callback5); |
147 EXPECT_TRUE(4989 == ret || net::ERR_IO_PENDING == ret); | 153 EXPECT_TRUE(4989 == ret || net::ERR_IO_PENDING == ret); |
148 if (net::ERR_IO_PENDING == ret) | 154 if (net::ERR_IO_PENDING == ret) |
149 expected++; | 155 expected++; |
150 | 156 |
151 g_cache_tests_max_id = 5; | 157 g_cache_tests_max_id = 5; |
152 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 158 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
153 EXPECT_STREQ("big data goes here", buffer3); | 159 EXPECT_STREQ("big data goes here", buffer3->data()); |
154 ret = entry1->ReadData(1, 0, buffer2, sizeof(buffer2), &callback6); | 160 ret = entry1->ReadData(1, 0, buffer2, kSize2, &callback6); |
155 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); | 161 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); |
156 if (net::ERR_IO_PENDING == ret) | 162 if (net::ERR_IO_PENDING == ret) |
157 expected++; | 163 expected++; |
158 | 164 |
159 memset(buffer3, 0, sizeof(buffer3)); | 165 memset(buffer3->data(), 0, kSize3); |
160 | 166 |
161 g_cache_tests_max_id = 6; | 167 g_cache_tests_max_id = 6; |
162 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 168 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
163 EXPECT_EQ(0, memcmp(buffer2, buffer3, 1500)); | 169 EXPECT_EQ(0, memcmp(buffer2->data(), buffer3->data(), 1500)); |
164 ret = entry1->ReadData(1, 5000, buffer2, sizeof(buffer2), &callback7); | 170 ret = entry1->ReadData(1, 5000, buffer2, kSize2, &callback7); |
165 EXPECT_TRUE(1500 == ret || net::ERR_IO_PENDING == ret); | 171 EXPECT_TRUE(1500 == ret || net::ERR_IO_PENDING == ret); |
166 if (net::ERR_IO_PENDING == ret) | 172 if (net::ERR_IO_PENDING == ret) |
167 expected++; | 173 expected++; |
168 | 174 |
169 EXPECT_EQ(0, entry1->ReadData(1, 6500, buffer2, sizeof(buffer2), &callback8)); | 175 EXPECT_EQ(0, entry1->ReadData(1, 6500, buffer2, kSize2, &callback8)); |
170 ret = entry1->ReadData(1, 0, buffer3, sizeof(buffer3), &callback9); | 176 ret = entry1->ReadData(1, 0, buffer3, kSize3, &callback9); |
171 EXPECT_TRUE(6500 == ret || net::ERR_IO_PENDING == ret); | 177 EXPECT_TRUE(6500 == ret || net::ERR_IO_PENDING == ret); |
172 if (net::ERR_IO_PENDING == ret) | 178 if (net::ERR_IO_PENDING == ret) |
173 expected++; | 179 expected++; |
174 | 180 |
175 ret = entry1->WriteData(1, 0, buffer3, 8192, &callback10, false); | 181 ret = entry1->WriteData(1, 0, buffer3, 8192, &callback10, false); |
176 EXPECT_TRUE(8192 == ret || net::ERR_IO_PENDING == ret); | 182 EXPECT_TRUE(8192 == ret || net::ERR_IO_PENDING == ret); |
177 if (net::ERR_IO_PENDING == ret) | 183 if (net::ERR_IO_PENDING == ret) |
178 expected++; | 184 expected++; |
179 | 185 |
180 ret = entry1->ReadData(1, 0, buffer3, sizeof(buffer3), &callback11); | 186 ret = entry1->ReadData(1, 0, buffer3, kSize3, &callback11); |
181 EXPECT_TRUE(8192 == ret || net::ERR_IO_PENDING == ret); | 187 EXPECT_TRUE(8192 == ret || net::ERR_IO_PENDING == ret); |
182 if (net::ERR_IO_PENDING == ret) | 188 if (net::ERR_IO_PENDING == ret) |
183 expected++; | 189 expected++; |
184 | 190 |
185 EXPECT_EQ(8192, entry1->GetDataSize(1)); | 191 EXPECT_EQ(8192, entry1->GetDataSize(1)); |
186 | 192 |
187 ret = entry1->ReadData(0, 0, buffer1, sizeof(buffer1), &callback12); | 193 ret = entry1->ReadData(0, 0, buffer1, kSize1, &callback12); |
188 EXPECT_TRUE(10 == ret || net::ERR_IO_PENDING == ret); | 194 EXPECT_TRUE(10 == ret || net::ERR_IO_PENDING == ret); |
189 if (net::ERR_IO_PENDING == ret) | 195 if (net::ERR_IO_PENDING == ret) |
190 expected++; | 196 expected++; |
191 | 197 |
192 ret = entry1->ReadData(1, 0, buffer2, sizeof(buffer2), &callback13); | 198 ret = entry1->ReadData(1, 0, buffer2, kSize2, &callback13); |
193 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); | 199 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); |
194 if (net::ERR_IO_PENDING == ret) | 200 if (net::ERR_IO_PENDING == ret) |
195 expected++; | 201 expected++; |
196 | 202 |
197 g_cache_tests_max_id = 13; | 203 g_cache_tests_max_id = 13; |
198 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 204 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
199 | 205 |
200 EXPECT_FALSE(g_cache_tests_error); | 206 EXPECT_FALSE(g_cache_tests_error); |
201 EXPECT_EQ(expected, g_cache_tests_received); | 207 EXPECT_EQ(expected, g_cache_tests_received); |
202 | 208 |
(...skipping 10 matching lines...) Expand all Loading... |
213 TEST_F(DiskCacheEntryTest, MemoryOnlyInternalAsyncIO) { | 219 TEST_F(DiskCacheEntryTest, MemoryOnlyInternalAsyncIO) { |
214 SetMemoryOnlyMode(); | 220 SetMemoryOnlyMode(); |
215 InitCache(); | 221 InitCache(); |
216 InternalAsyncIO(); | 222 InternalAsyncIO(); |
217 } | 223 } |
218 | 224 |
219 void DiskCacheEntryTest::ExternalSyncIO() { | 225 void DiskCacheEntryTest::ExternalSyncIO() { |
220 disk_cache::Entry *entry1; | 226 disk_cache::Entry *entry1; |
221 ASSERT_TRUE(cache_->CreateEntry("the first key", &entry1)); | 227 ASSERT_TRUE(cache_->CreateEntry("the first key", &entry1)); |
222 | 228 |
223 char buffer1[17000], buffer2[25000]; | 229 const int kSize1 = 17000; |
224 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 230 const int kSize2 = 25000; |
225 CacheTestFillBuffer(buffer2, sizeof(buffer2), false); | 231 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize1); |
226 base::strlcpy(buffer1, "the data", arraysize(buffer1)); | 232 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize2); |
227 EXPECT_EQ(17000, entry1->WriteData(0, 0, buffer1, sizeof(buffer1), NULL, | 233 CacheTestFillBuffer(buffer1->data(), kSize1, false); |
228 false)); | 234 CacheTestFillBuffer(buffer2->data(), kSize2, false); |
229 memset(buffer1, 0, sizeof(buffer1)); | 235 base::strlcpy(buffer1->data(), "the data", kSize1); |
230 EXPECT_EQ(17000, entry1->ReadData(0, 0, buffer1, sizeof(buffer1), NULL)); | 236 EXPECT_EQ(17000, entry1->WriteData(0, 0, buffer1, kSize1, NULL, false)); |
231 EXPECT_STREQ("the data", buffer1); | 237 memset(buffer1->data(), 0, kSize1); |
| 238 EXPECT_EQ(17000, entry1->ReadData(0, 0, buffer1, kSize1, NULL)); |
| 239 EXPECT_STREQ("the data", buffer1->data()); |
232 | 240 |
233 base::strlcpy(buffer2, "The really big data goes here", arraysize(buffer2)); | 241 base::strlcpy(buffer2->data(), "The really big data goes here", kSize2); |
234 EXPECT_EQ(25000, entry1->WriteData(1, 10000, buffer2, sizeof(buffer2), NULL, | 242 EXPECT_EQ(25000, entry1->WriteData(1, 10000, buffer2, kSize2, NULL, false)); |
235 false)); | 243 memset(buffer2->data(), 0, kSize2); |
236 memset(buffer2, 0, sizeof(buffer2)); | 244 EXPECT_EQ(24989, entry1->ReadData(1, 10011, buffer2, kSize2, NULL)); |
237 EXPECT_EQ(24989, entry1->ReadData(1, 10011, buffer2, sizeof(buffer2), NULL)); | 245 EXPECT_STREQ("big data goes here", buffer2->data()); |
238 EXPECT_STREQ("big data goes here", buffer2); | 246 EXPECT_EQ(25000, entry1->ReadData(1, 0, buffer2, kSize2, NULL)); |
239 EXPECT_EQ(25000, entry1->ReadData(1, 0, buffer2, sizeof(buffer2), NULL)); | 247 EXPECT_EQ(0, memcmp(buffer2->data(), buffer2->data(), 10000)); |
240 EXPECT_EQ(0, memcmp(buffer2, buffer2, 10000)); | 248 EXPECT_EQ(5000, entry1->ReadData(1, 30000, buffer2, kSize2, NULL)); |
241 EXPECT_EQ(5000, entry1->ReadData(1, 30000, buffer2, sizeof(buffer2), NULL)); | |
242 | 249 |
243 EXPECT_EQ(0, entry1->ReadData(1, 35000, buffer2, sizeof(buffer2), NULL)); | 250 EXPECT_EQ(0, entry1->ReadData(1, 35000, buffer2, kSize2, NULL)); |
244 EXPECT_EQ(17000, entry1->ReadData(1, 0, buffer1, sizeof(buffer1), NULL)); | 251 EXPECT_EQ(17000, entry1->ReadData(1, 0, buffer1, kSize1, NULL)); |
245 EXPECT_EQ(17000, entry1->WriteData(1, 20000, buffer1, sizeof(buffer1), NULL, | 252 EXPECT_EQ(17000, entry1->WriteData(1, 20000, buffer1, kSize1, NULL, false)); |
246 false)); | |
247 EXPECT_EQ(37000, entry1->GetDataSize(1)); | 253 EXPECT_EQ(37000, entry1->GetDataSize(1)); |
248 | 254 |
249 entry1->Doom(); | 255 entry1->Doom(); |
250 entry1->Close(); | 256 entry1->Close(); |
251 EXPECT_EQ(0, cache_->GetEntryCount()); | 257 EXPECT_EQ(0, cache_->GetEntryCount()); |
252 } | 258 } |
253 | 259 |
254 TEST_F(DiskCacheEntryTest, ExternalSyncIO) { | 260 TEST_F(DiskCacheEntryTest, ExternalSyncIO) { |
255 InitCache(); | 261 InitCache(); |
256 ExternalSyncIO(); | 262 ExternalSyncIO(); |
(...skipping 20 matching lines...) Expand all Loading... |
277 CallbackTest callback8(8, false); | 283 CallbackTest callback8(8, false); |
278 CallbackTest callback9(9, false); | 284 CallbackTest callback9(9, false); |
279 | 285 |
280 g_cache_tests_error = false; | 286 g_cache_tests_error = false; |
281 g_cache_tests_max_id = 0; | 287 g_cache_tests_max_id = 0; |
282 g_cache_tests_received = 0; | 288 g_cache_tests_received = 0; |
283 int expected = 0; | 289 int expected = 0; |
284 | 290 |
285 MessageLoopHelper helper; | 291 MessageLoopHelper helper; |
286 | 292 |
287 char buffer1[17000], buffer2[25000], buffer3[25000]; | 293 const int kSize1 = 17000; |
288 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 294 const int kSize2 = 25000; |
289 CacheTestFillBuffer(buffer2, sizeof(buffer2), false); | 295 const int kSize3 = 25000; |
290 CacheTestFillBuffer(buffer3, sizeof(buffer3), false); | 296 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize1); |
291 base::strlcpy(buffer1, "the data", arraysize(buffer1)); | 297 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize2); |
292 int ret = entry1->WriteData(0, 0, buffer1, sizeof(buffer1), &callback1, | 298 scoped_refptr<net::IOBuffer> buffer3 = new net::IOBuffer(kSize3); |
293 false); | 299 CacheTestFillBuffer(buffer1->data(), kSize1, false); |
| 300 CacheTestFillBuffer(buffer2->data(), kSize2, false); |
| 301 CacheTestFillBuffer(buffer3->data(), kSize3, false); |
| 302 base::strlcpy(buffer1->data(), "the data", kSize1); |
| 303 int ret = entry1->WriteData(0, 0, buffer1, kSize1, &callback1, false); |
294 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); | 304 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); |
295 if (net::ERR_IO_PENDING == ret) | 305 if (net::ERR_IO_PENDING == ret) |
296 expected++; | 306 expected++; |
297 | 307 |
298 g_cache_tests_max_id = 1; | 308 g_cache_tests_max_id = 1; |
299 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 309 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
300 | 310 |
301 memset(buffer2, 0, sizeof(buffer1)); | 311 memset(buffer2->data(), 0, kSize1); |
302 ret = entry1->ReadData(0, 0, buffer2, sizeof(buffer1), &callback2); | 312 ret = entry1->ReadData(0, 0, buffer2, kSize1, &callback2); |
303 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); | 313 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); |
304 if (net::ERR_IO_PENDING == ret) | 314 if (net::ERR_IO_PENDING == ret) |
305 expected++; | 315 expected++; |
306 | 316 |
307 g_cache_tests_max_id = 2; | 317 g_cache_tests_max_id = 2; |
308 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 318 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
309 EXPECT_STREQ("the data", buffer1); | 319 EXPECT_STREQ("the data", buffer1->data()); |
310 | 320 |
311 base::strlcpy(buffer2, "The really big data goes here", arraysize(buffer2)); | 321 base::strlcpy(buffer2->data(), "The really big data goes here", kSize2); |
312 ret = entry1->WriteData(1, 10000, buffer2, sizeof(buffer2), &callback3, | 322 ret = entry1->WriteData(1, 10000, buffer2, kSize2, &callback3, false); |
313 false); | |
314 EXPECT_TRUE(25000 == ret || net::ERR_IO_PENDING == ret); | 323 EXPECT_TRUE(25000 == ret || net::ERR_IO_PENDING == ret); |
315 if (net::ERR_IO_PENDING == ret) | 324 if (net::ERR_IO_PENDING == ret) |
316 expected++; | 325 expected++; |
317 | 326 |
318 g_cache_tests_max_id = 3; | 327 g_cache_tests_max_id = 3; |
319 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 328 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
320 | 329 |
321 memset(buffer3, 0, sizeof(buffer3)); | 330 memset(buffer3->data(), 0, kSize3); |
322 ret = entry1->ReadData(1, 10011, buffer3, sizeof(buffer3), &callback4); | 331 ret = entry1->ReadData(1, 10011, buffer3, kSize3, &callback4); |
323 EXPECT_TRUE(24989 == ret || net::ERR_IO_PENDING == ret); | 332 EXPECT_TRUE(24989 == ret || net::ERR_IO_PENDING == ret); |
324 if (net::ERR_IO_PENDING == ret) | 333 if (net::ERR_IO_PENDING == ret) |
325 expected++; | 334 expected++; |
326 | 335 |
327 g_cache_tests_max_id = 4; | 336 g_cache_tests_max_id = 4; |
328 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 337 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
329 EXPECT_STREQ("big data goes here", buffer3); | 338 EXPECT_STREQ("big data goes here", buffer3->data()); |
330 ret = entry1->ReadData(1, 0, buffer2, sizeof(buffer2), &callback5); | 339 ret = entry1->ReadData(1, 0, buffer2, kSize2, &callback5); |
331 EXPECT_TRUE(25000 == ret || net::ERR_IO_PENDING == ret); | 340 EXPECT_TRUE(25000 == ret || net::ERR_IO_PENDING == ret); |
332 if (net::ERR_IO_PENDING == ret) | 341 if (net::ERR_IO_PENDING == ret) |
333 expected++; | 342 expected++; |
334 | 343 |
335 g_cache_tests_max_id = 5; | 344 g_cache_tests_max_id = 5; |
336 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 345 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
337 EXPECT_EQ(0, memcmp(buffer2, buffer2, 10000)); | 346 EXPECT_EQ(0, memcmp(buffer2->data(), buffer2->data(), 10000)); |
338 ret = entry1->ReadData(1, 30000, buffer2, sizeof(buffer2), &callback6); | 347 ret = entry1->ReadData(1, 30000, buffer2, kSize2, &callback6); |
339 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); | 348 EXPECT_TRUE(5000 == ret || net::ERR_IO_PENDING == ret); |
340 if (net::ERR_IO_PENDING == ret) | 349 if (net::ERR_IO_PENDING == ret) |
341 expected++; | 350 expected++; |
342 | 351 |
343 EXPECT_EQ(0, entry1->ReadData(1, 35000, buffer2, sizeof(buffer2), | 352 EXPECT_EQ(0, entry1->ReadData(1, 35000, buffer2, kSize2, &callback7)); |
344 &callback7)); | 353 ret = entry1->ReadData(1, 0, buffer1, kSize1, &callback8); |
345 ret = entry1->ReadData(1, 0, buffer1, sizeof(buffer1), &callback8); | |
346 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); | 354 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); |
347 if (net::ERR_IO_PENDING == ret) | 355 if (net::ERR_IO_PENDING == ret) |
348 expected++; | 356 expected++; |
349 ret = entry1->WriteData(1, 20000, buffer1, sizeof(buffer1), &callback9, | 357 ret = entry1->WriteData(1, 20000, buffer1, kSize1, &callback9, false); |
350 false); | |
351 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); | 358 EXPECT_TRUE(17000 == ret || net::ERR_IO_PENDING == ret); |
352 if (net::ERR_IO_PENDING == ret) | 359 if (net::ERR_IO_PENDING == ret) |
353 expected++; | 360 expected++; |
354 EXPECT_EQ(37000, entry1->GetDataSize(1)); | 361 EXPECT_EQ(37000, entry1->GetDataSize(1)); |
355 | 362 |
356 g_cache_tests_max_id = 9; | 363 g_cache_tests_max_id = 9; |
357 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); | 364 EXPECT_TRUE(helper.WaitUntilCacheIoFinished(expected)); |
358 | 365 |
359 EXPECT_FALSE(g_cache_tests_error); | 366 EXPECT_FALSE(g_cache_tests_error); |
360 EXPECT_EQ(expected, g_cache_tests_received); | 367 EXPECT_EQ(expected, g_cache_tests_received); |
(...skipping 13 matching lines...) Expand all Loading... |
374 InitCache(); | 381 InitCache(); |
375 ExternalAsyncIO(); | 382 ExternalAsyncIO(); |
376 } | 383 } |
377 | 384 |
378 void DiskCacheEntryTest::StreamAccess() { | 385 void DiskCacheEntryTest::StreamAccess() { |
379 disk_cache::Entry *entry = NULL; | 386 disk_cache::Entry *entry = NULL; |
380 ASSERT_TRUE(cache_->CreateEntry("the first key", &entry)); | 387 ASSERT_TRUE(cache_->CreateEntry("the first key", &entry)); |
381 ASSERT_TRUE(NULL != entry); | 388 ASSERT_TRUE(NULL != entry); |
382 | 389 |
383 const int kBufferSize = 1024; | 390 const int kBufferSize = 1024; |
384 char buffer1[kBufferSize]; | 391 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kBufferSize); |
385 char buffer2[kBufferSize]; | 392 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kBufferSize); |
386 | 393 |
387 const int kNumStreams = 3; | 394 const int kNumStreams = 3; |
388 for (int i = 0; i < kNumStreams; i++) { | 395 for (int i = 0; i < kNumStreams; i++) { |
389 CacheTestFillBuffer(buffer1, kBufferSize, false); | 396 CacheTestFillBuffer(buffer1->data(), kBufferSize, false); |
390 EXPECT_EQ(kBufferSize, entry->WriteData(i, 0, buffer1, kBufferSize, NULL, | 397 EXPECT_EQ(kBufferSize, entry->WriteData(i, 0, buffer1, kBufferSize, NULL, |
391 false)); | 398 false)); |
392 memset(buffer2, 0, kBufferSize); | 399 memset(buffer2->data(), 0, kBufferSize); |
393 EXPECT_EQ(kBufferSize, entry->ReadData(i, 0, buffer2, kBufferSize, NULL)); | 400 EXPECT_EQ(kBufferSize, entry->ReadData(i, 0, buffer2, kBufferSize, NULL)); |
394 EXPECT_EQ(0, memcmp(buffer1, buffer2, kBufferSize)); | 401 EXPECT_EQ(0, memcmp(buffer1->data(), buffer2->data(), kBufferSize)); |
395 } | 402 } |
396 | 403 |
397 EXPECT_EQ(net::ERR_INVALID_ARGUMENT, | 404 EXPECT_EQ(net::ERR_INVALID_ARGUMENT, |
398 entry->ReadData(kNumStreams, 0, buffer1, kBufferSize, NULL)); | 405 entry->ReadData(kNumStreams, 0, buffer1, kBufferSize, NULL)); |
399 entry->Close(); | 406 entry->Close(); |
400 } | 407 } |
401 | 408 |
402 TEST_F(DiskCacheEntryTest, StreamAccess) { | 409 TEST_F(DiskCacheEntryTest, StreamAccess) { |
403 InitCache(); | 410 InitCache(); |
404 StreamAccess(); | 411 StreamAccess(); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
454 SetMemoryOnlyMode(); | 461 SetMemoryOnlyMode(); |
455 InitCache(); | 462 InitCache(); |
456 GetKey(); | 463 GetKey(); |
457 } | 464 } |
458 | 465 |
459 void DiskCacheEntryTest::GrowData() { | 466 void DiskCacheEntryTest::GrowData() { |
460 std::string key1("the first key"); | 467 std::string key1("the first key"); |
461 disk_cache::Entry *entry1, *entry2; | 468 disk_cache::Entry *entry1, *entry2; |
462 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); | 469 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
463 | 470 |
464 char buffer1[20000]; | 471 const int kSize = 20000; |
465 char buffer2[20000]; | 472 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize); |
466 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 473 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize); |
467 memset(buffer2, 0, sizeof(buffer2)); | 474 CacheTestFillBuffer(buffer1->data(), kSize, false); |
| 475 memset(buffer2->data(), 0, kSize); |
468 | 476 |
469 base::strlcpy(buffer1, "the data", arraysize(buffer1)); | 477 base::strlcpy(buffer1->data(), "the data", kSize); |
470 EXPECT_EQ(10, entry1->WriteData(0, 0, buffer1, 10, NULL, false)); | 478 EXPECT_EQ(10, entry1->WriteData(0, 0, buffer1, 10, NULL, false)); |
471 EXPECT_EQ(10, entry1->ReadData(0, 0, buffer2, 10, NULL)); | 479 EXPECT_EQ(10, entry1->ReadData(0, 0, buffer2, 10, NULL)); |
472 EXPECT_STREQ("the data", buffer2); | 480 EXPECT_STREQ("the data", buffer2->data()); |
473 EXPECT_EQ(10, entry1->GetDataSize(0)); | 481 EXPECT_EQ(10, entry1->GetDataSize(0)); |
474 | 482 |
475 EXPECT_EQ(2000, entry1->WriteData(0, 0, buffer1, 2000, NULL, false)); | 483 EXPECT_EQ(2000, entry1->WriteData(0, 0, buffer1, 2000, NULL, false)); |
476 EXPECT_EQ(2000, entry1->GetDataSize(0)); | 484 EXPECT_EQ(2000, entry1->GetDataSize(0)); |
477 EXPECT_EQ(2000, entry1->ReadData(0, 0, buffer2, 2000, NULL)); | 485 EXPECT_EQ(2000, entry1->ReadData(0, 0, buffer2, 2000, NULL)); |
478 EXPECT_TRUE(!memcmp(buffer1, buffer2, 2000)); | 486 EXPECT_TRUE(!memcmp(buffer1->data(), buffer2->data(), 2000)); |
479 | 487 |
480 EXPECT_EQ(20000, entry1->WriteData(0, 0, buffer1, sizeof(buffer1), NULL, | 488 EXPECT_EQ(20000, entry1->WriteData(0, 0, buffer1, kSize, NULL, false)); |
481 false)); | |
482 EXPECT_EQ(20000, entry1->GetDataSize(0)); | 489 EXPECT_EQ(20000, entry1->GetDataSize(0)); |
483 EXPECT_EQ(20000, entry1->ReadData(0, 0, buffer2, sizeof(buffer2), NULL)); | 490 EXPECT_EQ(20000, entry1->ReadData(0, 0, buffer2, kSize, NULL)); |
484 EXPECT_TRUE(!memcmp(buffer1, buffer2, sizeof(buffer1))); | 491 EXPECT_TRUE(!memcmp(buffer1->data(), buffer2->data(), kSize)); |
485 entry1->Close(); | 492 entry1->Close(); |
486 | 493 |
487 memset(buffer2, 0, sizeof(buffer2)); | 494 memset(buffer2->data(), 0, kSize); |
488 ASSERT_TRUE(cache_->CreateEntry("Second key", &entry2)); | 495 ASSERT_TRUE(cache_->CreateEntry("Second key", &entry2)); |
489 EXPECT_EQ(10, entry2->WriteData(0, 0, buffer1, 10, NULL, false)); | 496 EXPECT_EQ(10, entry2->WriteData(0, 0, buffer1, 10, NULL, false)); |
490 EXPECT_EQ(10, entry2->GetDataSize(0)); | 497 EXPECT_EQ(10, entry2->GetDataSize(0)); |
491 entry2->Close(); | 498 entry2->Close(); |
492 | 499 |
493 // Go from an internal address to a bigger block size. | 500 // Go from an internal address to a bigger block size. |
494 ASSERT_TRUE(cache_->OpenEntry("Second key", &entry2)); | 501 ASSERT_TRUE(cache_->OpenEntry("Second key", &entry2)); |
495 EXPECT_EQ(2000, entry2->WriteData(0, 0, buffer1, 2000, NULL, false)); | 502 EXPECT_EQ(2000, entry2->WriteData(0, 0, buffer1, 2000, NULL, false)); |
496 EXPECT_EQ(2000, entry2->GetDataSize(0)); | 503 EXPECT_EQ(2000, entry2->GetDataSize(0)); |
497 EXPECT_EQ(2000, entry2->ReadData(0, 0, buffer2, 2000, NULL)); | 504 EXPECT_EQ(2000, entry2->ReadData(0, 0, buffer2, 2000, NULL)); |
498 EXPECT_TRUE(!memcmp(buffer1, buffer2, 2000)); | 505 EXPECT_TRUE(!memcmp(buffer1->data(), buffer2->data(), 2000)); |
499 entry2->Close(); | 506 entry2->Close(); |
500 memset(buffer2, 0, sizeof(buffer2)); | 507 memset(buffer2->data(), 0, kSize); |
501 | 508 |
502 // Go from an internal address to an external one. | 509 // Go from an internal address to an external one. |
503 ASSERT_TRUE(cache_->OpenEntry("Second key", &entry2)); | 510 ASSERT_TRUE(cache_->OpenEntry("Second key", &entry2)); |
504 EXPECT_EQ(20000, entry2->WriteData(0, 0, buffer1, sizeof(buffer1), NULL, | 511 EXPECT_EQ(20000, entry2->WriteData(0, 0, buffer1, kSize, NULL, false)); |
505 false)); | |
506 EXPECT_EQ(20000, entry2->GetDataSize(0)); | 512 EXPECT_EQ(20000, entry2->GetDataSize(0)); |
507 EXPECT_EQ(20000, entry2->ReadData(0, 0, buffer2, sizeof(buffer2), NULL)); | 513 EXPECT_EQ(20000, entry2->ReadData(0, 0, buffer2, kSize, NULL)); |
508 EXPECT_TRUE(!memcmp(buffer1, buffer2, sizeof(buffer1))); | 514 EXPECT_TRUE(!memcmp(buffer1->data(), buffer2->data(), kSize)); |
509 entry2->Close(); | 515 entry2->Close(); |
510 } | 516 } |
511 | 517 |
512 TEST_F(DiskCacheEntryTest, GrowData) { | 518 TEST_F(DiskCacheEntryTest, GrowData) { |
513 InitCache(); | 519 InitCache(); |
514 GrowData(); | 520 GrowData(); |
515 } | 521 } |
516 | 522 |
517 TEST_F(DiskCacheEntryTest, MemoryOnlyGrowData) { | 523 TEST_F(DiskCacheEntryTest, MemoryOnlyGrowData) { |
518 SetMemoryOnlyMode(); | 524 SetMemoryOnlyMode(); |
519 InitCache(); | 525 InitCache(); |
520 GrowData(); | 526 GrowData(); |
521 } | 527 } |
522 | 528 |
523 void DiskCacheEntryTest::TruncateData() { | 529 void DiskCacheEntryTest::TruncateData() { |
524 std::string key1("the first key"); | 530 std::string key1("the first key"); |
525 disk_cache::Entry *entry1; | 531 disk_cache::Entry *entry1; |
526 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); | 532 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
527 | 533 |
528 char buffer1[20000]; | 534 const int kSize1 = 20000; |
529 char buffer2[20000]; | 535 const int kSize2 = 20000; |
| 536 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize1); |
| 537 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize2); |
530 | 538 |
531 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 539 CacheTestFillBuffer(buffer1->data(), kSize1, false); |
532 memset(buffer2, 0, sizeof(buffer2)); | 540 memset(buffer2->data(), 0, kSize2); |
533 | 541 |
534 // Simple truncation: | 542 // Simple truncation: |
535 EXPECT_EQ(200, entry1->WriteData(0, 0, buffer1, 200, NULL, false)); | 543 EXPECT_EQ(200, entry1->WriteData(0, 0, buffer1, 200, NULL, false)); |
536 EXPECT_EQ(200, entry1->GetDataSize(0)); | 544 EXPECT_EQ(200, entry1->GetDataSize(0)); |
537 EXPECT_EQ(100, entry1->WriteData(0, 0, buffer1, 100, NULL, false)); | 545 EXPECT_EQ(100, entry1->WriteData(0, 0, buffer1, 100, NULL, false)); |
538 EXPECT_EQ(200, entry1->GetDataSize(0)); | 546 EXPECT_EQ(200, entry1->GetDataSize(0)); |
539 EXPECT_EQ(100, entry1->WriteData(0, 0, buffer1, 100, NULL, true)); | 547 EXPECT_EQ(100, entry1->WriteData(0, 0, buffer1, 100, NULL, true)); |
540 EXPECT_EQ(100, entry1->GetDataSize(0)); | 548 EXPECT_EQ(100, entry1->GetDataSize(0)); |
541 EXPECT_EQ(0, entry1->WriteData(0, 50, buffer1, 0, NULL, true)); | 549 EXPECT_EQ(0, entry1->WriteData(0, 50, buffer1, 0, NULL, true)); |
542 EXPECT_EQ(50, entry1->GetDataSize(0)); | 550 EXPECT_EQ(50, entry1->GetDataSize(0)); |
543 EXPECT_EQ(0, entry1->WriteData(0, 0, buffer1, 0, NULL, true)); | 551 EXPECT_EQ(0, entry1->WriteData(0, 0, buffer1, 0, NULL, true)); |
544 EXPECT_EQ(0, entry1->GetDataSize(0)); | 552 EXPECT_EQ(0, entry1->GetDataSize(0)); |
545 entry1->Close(); | 553 entry1->Close(); |
546 ASSERT_TRUE(cache_->OpenEntry(key1, &entry1)); | 554 ASSERT_TRUE(cache_->OpenEntry(key1, &entry1)); |
547 | 555 |
548 // Go to an external file. | 556 // Go to an external file. |
549 EXPECT_EQ(20000, entry1->WriteData(0, 0, buffer1, 20000, NULL, true)); | 557 EXPECT_EQ(20000, entry1->WriteData(0, 0, buffer1, 20000, NULL, true)); |
550 EXPECT_EQ(20000, entry1->GetDataSize(0)); | 558 EXPECT_EQ(20000, entry1->GetDataSize(0)); |
551 EXPECT_EQ(20000, entry1->ReadData(0, 0, buffer2, 20000, NULL)); | 559 EXPECT_EQ(20000, entry1->ReadData(0, 0, buffer2, 20000, NULL)); |
552 EXPECT_TRUE(!memcmp(buffer1, buffer2, 20000)); | 560 EXPECT_TRUE(!memcmp(buffer1->data(), buffer2->data(), 20000)); |
553 memset(buffer2, 0, sizeof(buffer2)); | 561 memset(buffer2->data(), 0, kSize2); |
554 | 562 |
555 // External file truncation | 563 // External file truncation |
556 EXPECT_EQ(18000, entry1->WriteData(0, 0, buffer1, 18000, NULL, false)); | 564 EXPECT_EQ(18000, entry1->WriteData(0, 0, buffer1, 18000, NULL, false)); |
557 EXPECT_EQ(20000, entry1->GetDataSize(0)); | 565 EXPECT_EQ(20000, entry1->GetDataSize(0)); |
558 EXPECT_EQ(18000, entry1->WriteData(0, 0, buffer1, 18000, NULL, true)); | 566 EXPECT_EQ(18000, entry1->WriteData(0, 0, buffer1, 18000, NULL, true)); |
559 EXPECT_EQ(18000, entry1->GetDataSize(0)); | 567 EXPECT_EQ(18000, entry1->GetDataSize(0)); |
560 EXPECT_EQ(0, entry1->WriteData(0, 17500, buffer1, 0, NULL, true)); | 568 EXPECT_EQ(0, entry1->WriteData(0, 17500, buffer1, 0, NULL, true)); |
561 EXPECT_EQ(17500, entry1->GetDataSize(0)); | 569 EXPECT_EQ(17500, entry1->GetDataSize(0)); |
562 | 570 |
563 // And back to an internal block. | 571 // And back to an internal block. |
564 EXPECT_EQ(600, entry1->WriteData(0, 1000, buffer1, 600, NULL, true)); | 572 EXPECT_EQ(600, entry1->WriteData(0, 1000, buffer1, 600, NULL, true)); |
565 EXPECT_EQ(1600, entry1->GetDataSize(0)); | 573 EXPECT_EQ(1600, entry1->GetDataSize(0)); |
566 EXPECT_EQ(600, entry1->ReadData(0, 1000, buffer2, 600, NULL)); | 574 EXPECT_EQ(600, entry1->ReadData(0, 1000, buffer2, 600, NULL)); |
567 EXPECT_TRUE(!memcmp(buffer1, buffer2, 600)); | 575 EXPECT_TRUE(!memcmp(buffer1->data(), buffer2->data(), 600)); |
568 EXPECT_EQ(1000, entry1->ReadData(0, 0, buffer2, 1000, NULL)); | 576 EXPECT_EQ(1000, entry1->ReadData(0, 0, buffer2, 1000, NULL)); |
569 EXPECT_TRUE(!memcmp(buffer1, buffer2, 1000)) << "Preserves previous data"; | 577 EXPECT_TRUE(!memcmp(buffer1->data(), buffer2->data(), 1000)) << |
| 578 "Preserves previous data"; |
570 | 579 |
571 // Go from external file to zero length. | 580 // Go from external file to zero length. |
572 EXPECT_EQ(20000, entry1->WriteData(0, 0, buffer1, 20000, NULL, true)); | 581 EXPECT_EQ(20000, entry1->WriteData(0, 0, buffer1, 20000, NULL, true)); |
573 EXPECT_EQ(20000, entry1->GetDataSize(0)); | 582 EXPECT_EQ(20000, entry1->GetDataSize(0)); |
574 EXPECT_EQ(0, entry1->WriteData(0, 0, buffer1, 0, NULL, true)); | 583 EXPECT_EQ(0, entry1->WriteData(0, 0, buffer1, 0, NULL, true)); |
575 EXPECT_EQ(0, entry1->GetDataSize(0)); | 584 EXPECT_EQ(0, entry1->GetDataSize(0)); |
576 | 585 |
577 entry1->Close(); | 586 entry1->Close(); |
578 } | 587 } |
579 | 588 |
(...skipping 17 matching lines...) Expand all Loading... |
597 // amount of bytes to write each time. | 606 // amount of bytes to write each time. |
598 void DiskCacheEntryTest::ReuseEntry(int size) { | 607 void DiskCacheEntryTest::ReuseEntry(int size) { |
599 std::string key1("the first key"); | 608 std::string key1("the first key"); |
600 disk_cache::Entry *entry; | 609 disk_cache::Entry *entry; |
601 ASSERT_TRUE(cache_->CreateEntry(key1, &entry)); | 610 ASSERT_TRUE(cache_->CreateEntry(key1, &entry)); |
602 | 611 |
603 entry->Close(); | 612 entry->Close(); |
604 std::string key2("the second key"); | 613 std::string key2("the second key"); |
605 ASSERT_TRUE(cache_->CreateEntry(key2, &entry)); | 614 ASSERT_TRUE(cache_->CreateEntry(key2, &entry)); |
606 | 615 |
607 scoped_array<char> buffer(new char[size]); | 616 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(size); |
608 CacheTestFillBuffer(buffer.get(), size, false); | 617 CacheTestFillBuffer(buffer->data(), size, false); |
609 | 618 |
610 for (int i = 0; i < 15; i++) { | 619 for (int i = 0; i < 15; i++) { |
611 EXPECT_EQ(0, entry->WriteData(0, 0, buffer.get(), 0, NULL, true)); | 620 EXPECT_EQ(0, entry->WriteData(0, 0, buffer, 0, NULL, true)); |
612 EXPECT_EQ(size, entry->WriteData(0, 0, buffer.get(), size, NULL, false)); | 621 EXPECT_EQ(size, entry->WriteData(0, 0, buffer, size, NULL, false)); |
613 entry->Close(); | 622 entry->Close(); |
614 ASSERT_TRUE(cache_->OpenEntry(key2, &entry)); | 623 ASSERT_TRUE(cache_->OpenEntry(key2, &entry)); |
615 } | 624 } |
616 | 625 |
617 entry->Close(); | 626 entry->Close(); |
618 ASSERT_TRUE(cache_->OpenEntry(key1, &entry)) << "have not evicted this entry"; | 627 ASSERT_TRUE(cache_->OpenEntry(key1, &entry)) << "have not evicted this entry"; |
619 entry->Close(); | 628 entry->Close(); |
620 } | 629 } |
621 | 630 |
622 TEST_F(DiskCacheEntryTest, ReuseExternalEntry) { | 631 TEST_F(DiskCacheEntryTest, ReuseExternalEntry) { |
(...skipping 25 matching lines...) Expand all Loading... |
648 InitCache(); | 657 InitCache(); |
649 ReuseEntry(10 * 1024); | 658 ReuseEntry(10 * 1024); |
650 } | 659 } |
651 | 660 |
652 // Reading somewhere that was not written should return zeros. | 661 // Reading somewhere that was not written should return zeros. |
653 void DiskCacheEntryTest::InvalidData() { | 662 void DiskCacheEntryTest::InvalidData() { |
654 std::string key1("the first key"); | 663 std::string key1("the first key"); |
655 disk_cache::Entry *entry1; | 664 disk_cache::Entry *entry1; |
656 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); | 665 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
657 | 666 |
658 char buffer1[20000]; | 667 const int kSize1 = 20000; |
659 char buffer2[20000]; | 668 const int kSize2 = 20000; |
660 char buffer3[20000]; | 669 const int kSize3 = 20000; |
| 670 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize1); |
| 671 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize2); |
| 672 scoped_refptr<net::IOBuffer> buffer3 = new net::IOBuffer(kSize3); |
661 | 673 |
662 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 674 CacheTestFillBuffer(buffer1->data(), kSize1, false); |
663 memset(buffer2, 0, sizeof(buffer2)); | 675 memset(buffer2->data(), 0, kSize2); |
664 | 676 |
665 // Simple data grow: | 677 // Simple data grow: |
666 EXPECT_EQ(200, entry1->WriteData(0, 400, buffer1, 200, NULL, false)); | 678 EXPECT_EQ(200, entry1->WriteData(0, 400, buffer1, 200, NULL, false)); |
667 EXPECT_EQ(600, entry1->GetDataSize(0)); | 679 EXPECT_EQ(600, entry1->GetDataSize(0)); |
668 EXPECT_EQ(100, entry1->ReadData(0, 300, buffer3, 100, NULL)); | 680 EXPECT_EQ(100, entry1->ReadData(0, 300, buffer3, 100, NULL)); |
669 EXPECT_TRUE(!memcmp(buffer3, buffer2, 100)); | 681 EXPECT_TRUE(!memcmp(buffer3->data(), buffer2->data(), 100)); |
670 entry1->Close(); | 682 entry1->Close(); |
671 ASSERT_TRUE(cache_->OpenEntry(key1, &entry1)); | 683 ASSERT_TRUE(cache_->OpenEntry(key1, &entry1)); |
672 | 684 |
673 // The entry is now on disk. Load it and extend it. | 685 // The entry is now on disk. Load it and extend it. |
674 EXPECT_EQ(200, entry1->WriteData(0, 800, buffer1, 200, NULL, false)); | 686 EXPECT_EQ(200, entry1->WriteData(0, 800, buffer1, 200, NULL, false)); |
675 EXPECT_EQ(1000, entry1->GetDataSize(0)); | 687 EXPECT_EQ(1000, entry1->GetDataSize(0)); |
676 EXPECT_EQ(100, entry1->ReadData(0, 700, buffer3, 100, NULL)); | 688 EXPECT_EQ(100, entry1->ReadData(0, 700, buffer3, 100, NULL)); |
677 EXPECT_TRUE(!memcmp(buffer3, buffer2, 100)); | 689 EXPECT_TRUE(!memcmp(buffer3->data(), buffer2->data(), 100)); |
678 entry1->Close(); | 690 entry1->Close(); |
679 ASSERT_TRUE(cache_->OpenEntry(key1, &entry1)); | 691 ASSERT_TRUE(cache_->OpenEntry(key1, &entry1)); |
680 | 692 |
681 // This time using truncate. | 693 // This time using truncate. |
682 EXPECT_EQ(200, entry1->WriteData(0, 1800, buffer1, 200, NULL, true)); | 694 EXPECT_EQ(200, entry1->WriteData(0, 1800, buffer1, 200, NULL, true)); |
683 EXPECT_EQ(2000, entry1->GetDataSize(0)); | 695 EXPECT_EQ(2000, entry1->GetDataSize(0)); |
684 EXPECT_EQ(100, entry1->ReadData(0, 1500, buffer3, 100, NULL)); | 696 EXPECT_EQ(100, entry1->ReadData(0, 1500, buffer3, 100, NULL)); |
685 EXPECT_TRUE(!memcmp(buffer3, buffer2, 100)); | 697 EXPECT_TRUE(!memcmp(buffer3->data(), buffer2->data(), 100)); |
686 | 698 |
687 // Go to an external file. | 699 // Go to an external file. |
688 EXPECT_EQ(200, entry1->WriteData(0, 19800, buffer1, 200, NULL, false)); | 700 EXPECT_EQ(200, entry1->WriteData(0, 19800, buffer1, 200, NULL, false)); |
689 EXPECT_EQ(20000, entry1->GetDataSize(0)); | 701 EXPECT_EQ(20000, entry1->GetDataSize(0)); |
690 EXPECT_EQ(4000, entry1->ReadData(0, 14000, buffer3, 4000, NULL)); | 702 EXPECT_EQ(4000, entry1->ReadData(0, 14000, buffer3, 4000, NULL)); |
691 EXPECT_TRUE(!memcmp(buffer3, buffer2, 4000)); | 703 EXPECT_TRUE(!memcmp(buffer3->data(), buffer2->data(), 4000)); |
692 | 704 |
693 // And back to an internal block. | 705 // And back to an internal block. |
694 EXPECT_EQ(600, entry1->WriteData(0, 1000, buffer1, 600, NULL, true)); | 706 EXPECT_EQ(600, entry1->WriteData(0, 1000, buffer1, 600, NULL, true)); |
695 EXPECT_EQ(1600, entry1->GetDataSize(0)); | 707 EXPECT_EQ(1600, entry1->GetDataSize(0)); |
696 EXPECT_EQ(600, entry1->ReadData(0, 1000, buffer3, 600, NULL)); | 708 EXPECT_EQ(600, entry1->ReadData(0, 1000, buffer3, 600, NULL)); |
697 EXPECT_TRUE(!memcmp(buffer3, buffer1, 600)); | 709 EXPECT_TRUE(!memcmp(buffer3->data(), buffer1->data(), 600)); |
698 | 710 |
699 // Extend it again. | 711 // Extend it again. |
700 EXPECT_EQ(600, entry1->WriteData(0, 2000, buffer1, 600, NULL, false)); | 712 EXPECT_EQ(600, entry1->WriteData(0, 2000, buffer1, 600, NULL, false)); |
701 EXPECT_EQ(2600, entry1->GetDataSize(0)); | 713 EXPECT_EQ(2600, entry1->GetDataSize(0)); |
702 EXPECT_EQ(200, entry1->ReadData(0, 1800, buffer3, 200, NULL)); | 714 EXPECT_EQ(200, entry1->ReadData(0, 1800, buffer3, 200, NULL)); |
703 EXPECT_TRUE(!memcmp(buffer3, buffer2, 200)); | 715 EXPECT_TRUE(!memcmp(buffer3->data(), buffer2->data(), 200)); |
704 | 716 |
705 // And again (with truncation flag). | 717 // And again (with truncation flag). |
706 EXPECT_EQ(600, entry1->WriteData(0, 3000, buffer1, 600, NULL, true)); | 718 EXPECT_EQ(600, entry1->WriteData(0, 3000, buffer1, 600, NULL, true)); |
707 EXPECT_EQ(3600, entry1->GetDataSize(0)); | 719 EXPECT_EQ(3600, entry1->GetDataSize(0)); |
708 EXPECT_EQ(200, entry1->ReadData(0, 2800, buffer3, 200, NULL)); | 720 EXPECT_EQ(200, entry1->ReadData(0, 2800, buffer3, 200, NULL)); |
709 EXPECT_TRUE(!memcmp(buffer3, buffer2, 200)); | 721 EXPECT_TRUE(!memcmp(buffer3->data(), buffer2->data(), 200)); |
710 | 722 |
711 entry1->Close(); | 723 entry1->Close(); |
712 } | 724 } |
713 | 725 |
714 TEST_F(DiskCacheEntryTest, InvalidData) { | 726 TEST_F(DiskCacheEntryTest, InvalidData) { |
715 InitCache(); | 727 InitCache(); |
716 InvalidData(); | 728 InvalidData(); |
717 } | 729 } |
718 | 730 |
719 TEST_F(DiskCacheEntryTest, MemoryOnlyInvalidData) { | 731 TEST_F(DiskCacheEntryTest, MemoryOnlyInvalidData) { |
720 SetMemoryOnlyMode(); | 732 SetMemoryOnlyMode(); |
721 InitCache(); | 733 InitCache(); |
722 InvalidData(); | 734 InvalidData(); |
723 } | 735 } |
724 | 736 |
725 void DiskCacheEntryTest::DoomEntry() { | 737 void DiskCacheEntryTest::DoomEntry() { |
726 std::string key1("the first key"); | 738 std::string key1("the first key"); |
727 disk_cache::Entry *entry1; | 739 disk_cache::Entry *entry1; |
728 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); | 740 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
729 entry1->Doom(); | 741 entry1->Doom(); |
730 entry1->Close(); | 742 entry1->Close(); |
731 | 743 |
732 char key_buffer[20000]; | 744 const int kSize = 20000; |
733 CacheTestFillBuffer(key_buffer, sizeof(key_buffer), true); | 745 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(kSize); |
734 key_buffer[19999] = '\0'; | 746 CacheTestFillBuffer(buffer->data(), kSize, true); |
| 747 buffer->data()[19999] = '\0'; |
735 | 748 |
736 key1 = key_buffer; | 749 key1 = buffer->data(); |
737 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); | 750 ASSERT_TRUE(cache_->CreateEntry(key1, &entry1)); |
738 EXPECT_EQ(20000, entry1->WriteData(0, 0, key_buffer, 20000, NULL, false)); | 751 EXPECT_EQ(20000, entry1->WriteData(0, 0, buffer, kSize, NULL, false)); |
739 EXPECT_EQ(20000, entry1->WriteData(1, 0, key_buffer, 20000, NULL, false)); | 752 EXPECT_EQ(20000, entry1->WriteData(1, 0, buffer, kSize, NULL, false)); |
740 entry1->Doom(); | 753 entry1->Doom(); |
741 entry1->Close(); | 754 entry1->Close(); |
742 | 755 |
743 EXPECT_EQ(0, cache_->GetEntryCount()); | 756 EXPECT_EQ(0, cache_->GetEntryCount()); |
744 } | 757 } |
745 | 758 |
746 TEST_F(DiskCacheEntryTest, DoomEntry) { | 759 TEST_F(DiskCacheEntryTest, DoomEntry) { |
747 InitCache(); | 760 InitCache(); |
748 DoomEntry(); | 761 DoomEntry(); |
749 } | 762 } |
750 | 763 |
751 TEST_F(DiskCacheEntryTest, MemoryOnlyDoomEntry) { | 764 TEST_F(DiskCacheEntryTest, MemoryOnlyDoomEntry) { |
752 SetMemoryOnlyMode(); | 765 SetMemoryOnlyMode(); |
753 InitCache(); | 766 InitCache(); |
754 DoomEntry(); | 767 DoomEntry(); |
755 } | 768 } |
756 | 769 |
757 // Verify that basic operations work as expected with doomed entries. | 770 // Verify that basic operations work as expected with doomed entries. |
758 void DiskCacheEntryTest::DoomedEntry() { | 771 void DiskCacheEntryTest::DoomedEntry() { |
759 std::string key("the first key"); | 772 std::string key("the first key"); |
760 disk_cache::Entry *entry; | 773 disk_cache::Entry *entry; |
761 ASSERT_TRUE(cache_->CreateEntry(key, &entry)); | 774 ASSERT_TRUE(cache_->CreateEntry(key, &entry)); |
762 entry->Doom(); | 775 entry->Doom(); |
763 | 776 |
764 EXPECT_EQ(0, cache_->GetEntryCount()); | 777 EXPECT_EQ(0, cache_->GetEntryCount()); |
765 Time initial = Time::Now(); | 778 Time initial = Time::Now(); |
766 PlatformThread::Sleep(20); | 779 PlatformThread::Sleep(20); |
767 | 780 |
768 char buffer1[2000]; | 781 const int kSize1 = 2000; |
769 char buffer2[2000]; | 782 const int kSize2 = 2000; |
770 CacheTestFillBuffer(buffer1, sizeof(buffer1), false); | 783 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize1); |
771 memset(buffer2, 0, sizeof(buffer2)); | 784 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize2); |
| 785 CacheTestFillBuffer(buffer1->data(), kSize1, false); |
| 786 memset(buffer2->data(), 0, kSize2); |
772 | 787 |
773 EXPECT_EQ(2000, entry->WriteData(0, 0, buffer1, 2000, NULL, false)); | 788 EXPECT_EQ(2000, entry->WriteData(0, 0, buffer1, 2000, NULL, false)); |
774 EXPECT_EQ(2000, entry->ReadData(0, 0, buffer2, 2000, NULL)); | 789 EXPECT_EQ(2000, entry->ReadData(0, 0, buffer2, 2000, NULL)); |
775 EXPECT_EQ(0, memcmp(buffer1, buffer2, sizeof(buffer1))); | 790 EXPECT_EQ(0, memcmp(buffer1->data(), buffer2->data(), kSize1)); |
776 EXPECT_TRUE(initial < entry->GetLastModified()); | 791 EXPECT_TRUE(initial < entry->GetLastModified()); |
777 EXPECT_TRUE(initial < entry->GetLastUsed()); | 792 EXPECT_TRUE(initial < entry->GetLastUsed()); |
778 | 793 |
779 entry->Close(); | 794 entry->Close(); |
780 } | 795 } |
781 | 796 |
782 TEST_F(DiskCacheEntryTest, DoomedEntry) { | 797 TEST_F(DiskCacheEntryTest, DoomedEntry) { |
783 InitCache(); | 798 InitCache(); |
784 DoomEntry(); | 799 DoomEntry(); |
785 } | 800 } |
786 | 801 |
787 TEST_F(DiskCacheEntryTest, MemoryOnlyDoomedEntry) { | 802 TEST_F(DiskCacheEntryTest, MemoryOnlyDoomedEntry) { |
788 SetMemoryOnlyMode(); | 803 SetMemoryOnlyMode(); |
789 InitCache(); | 804 InitCache(); |
790 DoomEntry(); | 805 DoomEntry(); |
791 } | 806 } |
792 | 807 |
OLD | NEW |