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

Side by Side Diff: net/disk_cache/entry_unittest.cc

Issue 20134: Extend the IOBuffer to the disk cache. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 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 | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698