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

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

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

Powered by Google App Engine
This is Rietveld 408576698