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

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

Issue 2869005: Disk Cache: Remove deprecated methods from the disk cache interface.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 6 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.h ('k') | net/disk_cache/mem_backend_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-2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2010 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/io_buffer.h"
10 #include "net/base/net_errors.h" 10 #include "net/base/net_errors.h"
(...skipping 1008 matching lines...) Expand 10 before | Expand all | Expand 10 after
1019 const int kSize = 16 * 1024; 1019 const int kSize = 16 * 1024;
1020 scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(kSize); 1020 scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(kSize);
1021 CacheTestFillBuffer(buf->data(), kSize, false); 1021 CacheTestFillBuffer(buf->data(), kSize, false);
1022 1022
1023 // Write at offset 0x20F0000 (33 MB - 64 KB), and 0x20F4400 (33 MB - 47 KB). 1023 // Write at offset 0x20F0000 (33 MB - 64 KB), and 0x20F4400 (33 MB - 47 KB).
1024 EXPECT_EQ(kSize, entry->WriteSparseData(0x20F0000, buf, kSize, NULL)); 1024 EXPECT_EQ(kSize, entry->WriteSparseData(0x20F0000, buf, kSize, NULL));
1025 EXPECT_EQ(kSize, entry->WriteSparseData(0x20F4400, buf, kSize, NULL)); 1025 EXPECT_EQ(kSize, entry->WriteSparseData(0x20F4400, buf, kSize, NULL));
1026 1026
1027 // We stop at the first empty block. 1027 // We stop at the first empty block.
1028 int64 start; 1028 int64 start;
1029 EXPECT_EQ(kSize, entry->GetAvailableRange(0x20F0000, kSize * 2, &start)); 1029 TestCompletionCallback cb;
1030 int rv = entry->GetAvailableRange(0x20F0000, kSize * 2, &start, &cb);
1031 EXPECT_EQ(kSize, cb.GetResult(rv));
1030 EXPECT_EQ(0x20F0000, start); 1032 EXPECT_EQ(0x20F0000, start);
1031 1033
1032 start = 0; 1034 start = 0;
1033 EXPECT_EQ(0, entry->GetAvailableRange(0, kSize, &start)); 1035 rv = entry->GetAvailableRange(0, kSize, &start, &cb);
1034 EXPECT_EQ(0, entry->GetAvailableRange(0x20F0000 - kSize, kSize, &start)); 1036 EXPECT_EQ(0, cb.GetResult(rv));
1035 EXPECT_EQ(kSize, entry->GetAvailableRange(0, 0x2100000, &start)); 1037 rv = entry->GetAvailableRange(0x20F0000 - kSize, kSize, &start, &cb);
1038 EXPECT_EQ(0, cb.GetResult(rv));
1039 rv = entry->GetAvailableRange(0, 0x2100000, &start, &cb);
1040 EXPECT_EQ(kSize, cb.GetResult(rv));
1036 EXPECT_EQ(0x20F0000, start); 1041 EXPECT_EQ(0x20F0000, start);
1037 1042
1038 // We should be able to Read based on the results of GetAvailableRange. 1043 // We should be able to Read based on the results of GetAvailableRange.
1039 start = -1; 1044 start = -1;
1040 EXPECT_EQ(0, entry->GetAvailableRange(0x2100000, kSize, &start)); 1045 rv = entry->GetAvailableRange(0x2100000, kSize, &start, &cb);
1041 EXPECT_EQ(0, entry->ReadSparseData(start, buf, kSize, NULL)); 1046 EXPECT_EQ(0, cb.GetResult(rv));
1047 rv = entry->ReadSparseData(start, buf, kSize, &cb);
1048 EXPECT_EQ(0, cb.GetResult(rv));
1042 1049
1043 start = 0; 1050 start = 0;
1044 EXPECT_EQ(0x2000, entry->GetAvailableRange(0x20F2000, kSize, &start)); 1051 rv = entry->GetAvailableRange(0x20F2000, kSize, &start, &cb);
1052 EXPECT_EQ(0x2000, cb.GetResult(rv));
1045 EXPECT_EQ(0x20F2000, start); 1053 EXPECT_EQ(0x20F2000, start);
1046 EXPECT_EQ(0x2000, entry->ReadSparseData(start, buf, kSize, NULL)); 1054 EXPECT_EQ(0x2000, entry->ReadSparseData(start, buf, kSize, NULL));
1047 1055
1048 // Make sure that we respect the |len| argument. 1056 // Make sure that we respect the |len| argument.
1049 start = 0; 1057 start = 0;
1050 EXPECT_EQ(1, entry->GetAvailableRange(0x20F0001 - kSize, kSize, &start)); 1058 rv = entry->GetAvailableRange(0x20F0001 - kSize, kSize, &start, &cb);
1059 EXPECT_EQ(1, cb.GetResult(rv));
1051 EXPECT_EQ(0x20F0000, start); 1060 EXPECT_EQ(0x20F0000, start);
1052 1061
1053 entry->Close(); 1062 entry->Close();
1054 } 1063 }
1055 1064
1056 TEST_F(DiskCacheEntryTest, GetAvailableRange) { 1065 TEST_F(DiskCacheEntryTest, GetAvailableRange) {
1057 InitCache(); 1066 InitCache();
1058 GetAvailableRange(); 1067 GetAvailableRange();
1059 } 1068 }
1060 1069
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1156 1165
1157 // Writes in the middle of an entry. 1166 // Writes in the middle of an entry.
1158 EXPECT_EQ(1024, entry->WriteSparseData(0, buf, 1024, NULL)); 1167 EXPECT_EQ(1024, entry->WriteSparseData(0, buf, 1024, NULL));
1159 EXPECT_EQ(1024, entry->WriteSparseData(5120, buf, 1024, NULL)); 1168 EXPECT_EQ(1024, entry->WriteSparseData(5120, buf, 1024, NULL));
1160 EXPECT_EQ(1024, entry->WriteSparseData(10000, buf, 1024, NULL)); 1169 EXPECT_EQ(1024, entry->WriteSparseData(10000, buf, 1024, NULL));
1161 1170
1162 // Writes in the middle of an entry and spans 2 child entries. 1171 // Writes in the middle of an entry and spans 2 child entries.
1163 EXPECT_EQ(8192, entry->WriteSparseData(50000, buf, 8192, NULL)); 1172 EXPECT_EQ(8192, entry->WriteSparseData(50000, buf, 8192, NULL));
1164 1173
1165 int64 start; 1174 int64 start;
1175 TestCompletionCallback cb;
1166 // Test that we stop at a discontinuous child at the second block. 1176 // Test that we stop at a discontinuous child at the second block.
1167 EXPECT_EQ(1024, entry->GetAvailableRange(0, 10000, &start)); 1177 int rv = entry->GetAvailableRange(0, 10000, &start, &cb);
1178 EXPECT_EQ(1024, cb.GetResult(rv));
1168 EXPECT_EQ(0, start); 1179 EXPECT_EQ(0, start);
1169 1180
1170 // Test that number of bytes is reported correctly when we start from the 1181 // Test that number of bytes is reported correctly when we start from the
1171 // middle of a filled region. 1182 // middle of a filled region.
1172 EXPECT_EQ(512, entry->GetAvailableRange(512, 10000, &start)); 1183 rv = entry->GetAvailableRange(512, 10000, &start, &cb);
1184 EXPECT_EQ(512, cb.GetResult(rv));
1173 EXPECT_EQ(512, start); 1185 EXPECT_EQ(512, start);
1174 1186
1175 // Test that we found bytes in the child of next block. 1187 // Test that we found bytes in the child of next block.
1176 EXPECT_EQ(1024, entry->GetAvailableRange(1024, 10000, &start)); 1188 rv = entry->GetAvailableRange(1024, 10000, &start, &cb);
1189 EXPECT_EQ(1024, cb.GetResult(rv));
1177 EXPECT_EQ(5120, start); 1190 EXPECT_EQ(5120, start);
1178 1191
1179 // Test that the desired length is respected. It starts within a filled 1192 // Test that the desired length is respected. It starts within a filled
1180 // region. 1193 // region.
1181 EXPECT_EQ(512, entry->GetAvailableRange(5500, 512, &start)); 1194 rv = entry->GetAvailableRange(5500, 512, &start, &cb);
1195 EXPECT_EQ(512, cb.GetResult(rv));
1182 EXPECT_EQ(5500, start); 1196 EXPECT_EQ(5500, start);
1183 1197
1184 // Test that the desired length is respected. It starts before a filled 1198 // Test that the desired length is respected. It starts before a filled
1185 // region. 1199 // region.
1186 EXPECT_EQ(500, entry->GetAvailableRange(5000, 620, &start)); 1200 rv = entry->GetAvailableRange(5000, 620, &start, &cb);
1201 EXPECT_EQ(500, cb.GetResult(rv));
1187 EXPECT_EQ(5120, start); 1202 EXPECT_EQ(5120, start);
1188 1203
1189 // Test that multiple blocks are scanned. 1204 // Test that multiple blocks are scanned.
1190 EXPECT_EQ(8192, entry->GetAvailableRange(40000, 20000, &start)); 1205 rv = entry->GetAvailableRange(40000, 20000, &start, &cb);
1206 EXPECT_EQ(8192, cb.GetResult(rv));
1191 EXPECT_EQ(50000, start); 1207 EXPECT_EQ(50000, start);
1192 1208
1193 entry->Close(); 1209 entry->Close();
1194 } 1210 }
1195 1211
1196 void DiskCacheEntryTest::DoomSparseEntry() { 1212 void DiskCacheEntryTest::DoomSparseEntry() {
1197 std::string key1("the first key"); 1213 std::string key1("the first key");
1198 std::string key2("the second key"); 1214 std::string key2("the second key");
1199 disk_cache::Entry *entry1, *entry2; 1215 disk_cache::Entry *entry1, *entry2;
1200 ASSERT_EQ(net::OK, CreateEntry(key1, &entry1)); 1216 ASSERT_EQ(net::OK, CreateEntry(key1, &entry1));
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
1285 1301
1286 EXPECT_EQ(500, entry->ReadSparseData(kSize, buf2, kSize, NULL)); 1302 EXPECT_EQ(500, entry->ReadSparseData(kSize, buf2, kSize, NULL));
1287 EXPECT_EQ(0, memcmp(buf2->data(), buf1->data() + kSize - 500, 500)); 1303 EXPECT_EQ(0, memcmp(buf2->data(), buf1->data() + kSize - 500, 500));
1288 EXPECT_EQ(0, entry->ReadSparseData(0, buf2, kSize, NULL)); 1304 EXPECT_EQ(0, entry->ReadSparseData(0, buf2, kSize, NULL));
1289 1305
1290 // This read should not change anything. 1306 // This read should not change anything.
1291 EXPECT_EQ(96, entry->ReadSparseData(24000, buf2, kSize, NULL)); 1307 EXPECT_EQ(96, entry->ReadSparseData(24000, buf2, kSize, NULL));
1292 EXPECT_EQ(500, entry->ReadSparseData(kSize, buf2, kSize, NULL)); 1308 EXPECT_EQ(500, entry->ReadSparseData(kSize, buf2, kSize, NULL));
1293 EXPECT_EQ(0, entry->ReadSparseData(499, buf2, kSize, NULL)); 1309 EXPECT_EQ(0, entry->ReadSparseData(499, buf2, kSize, NULL));
1294 1310
1311 int rv;
1295 int64 start; 1312 int64 start;
1313 TestCompletionCallback cb;
1296 if (memory_only_) { 1314 if (memory_only_) {
1297 EXPECT_EQ(100, entry->GetAvailableRange(0, 600, &start)); 1315 rv = entry->GetAvailableRange(0, 600, &start, &cb);
1316 EXPECT_EQ(100, cb.GetResult(rv));
1298 EXPECT_EQ(500, start); 1317 EXPECT_EQ(500, start);
1299 } else { 1318 } else {
1300 EXPECT_EQ(1024, entry->GetAvailableRange(0, 2048, &start)); 1319 rv = entry->GetAvailableRange(0, 2048, &start, &cb);
1320 EXPECT_EQ(1024, cb.GetResult(rv));
1301 EXPECT_EQ(1024, start); 1321 EXPECT_EQ(1024, start);
1302 } 1322 }
1303 EXPECT_EQ(500, entry->GetAvailableRange(kSize, kSize, &start)); 1323 rv = entry->GetAvailableRange(kSize, kSize, &start, &cb);
1324 EXPECT_EQ(500, cb.GetResult(rv));
1304 EXPECT_EQ(kSize, start); 1325 EXPECT_EQ(kSize, start);
1305 EXPECT_EQ(3616, entry->GetAvailableRange(20 * 1024, 10000, &start)); 1326 rv = entry->GetAvailableRange(20 * 1024, 10000, &start, &cb);
1327 EXPECT_EQ(3616, cb.GetResult(rv));
1306 EXPECT_EQ(20 * 1024, start); 1328 EXPECT_EQ(20 * 1024, start);
1307 1329
1308 // 1. Query before a filled 1KB block. 1330 // 1. Query before a filled 1KB block.
1309 // 2. Query within a filled 1KB block. 1331 // 2. Query within a filled 1KB block.
1310 // 3. Query beyond a filled 1KB block. 1332 // 3. Query beyond a filled 1KB block.
1311 if (memory_only_) { 1333 if (memory_only_) {
1312 EXPECT_EQ(3496, entry->GetAvailableRange(19400, kSize, &start)); 1334 rv = entry->GetAvailableRange(19400, kSize, &start, &cb);
1335 EXPECT_EQ(3496, cb.GetResult(rv));
1313 EXPECT_EQ(20000, start); 1336 EXPECT_EQ(20000, start);
1314 } else { 1337 } else {
1315 EXPECT_EQ(3016, entry->GetAvailableRange(19400, kSize, &start)); 1338 rv = entry->GetAvailableRange(19400, kSize, &start, &cb);
1339 EXPECT_EQ(3016, cb.GetResult(rv));
1316 EXPECT_EQ(20480, start); 1340 EXPECT_EQ(20480, start);
1317 } 1341 }
1318 EXPECT_EQ(1523, entry->GetAvailableRange(3073, kSize, &start)); 1342 rv = entry->GetAvailableRange(3073, kSize, &start, &cb);
1343 EXPECT_EQ(1523, cb.GetResult(rv));
1319 EXPECT_EQ(3073, start); 1344 EXPECT_EQ(3073, start);
1320 EXPECT_EQ(0, entry->GetAvailableRange(4600, kSize, &start)); 1345 rv = entry->GetAvailableRange(4600, kSize, &start, &cb);
1346 EXPECT_EQ(0, cb.GetResult(rv));
1321 EXPECT_EQ(4600, start); 1347 EXPECT_EQ(4600, start);
1322 1348
1323 // Now make another write and verify that there is no hole in between. 1349 // Now make another write and verify that there is no hole in between.
1324 EXPECT_EQ(kSize, entry->WriteSparseData(500 + kSize, buf1, kSize, NULL)); 1350 EXPECT_EQ(kSize, entry->WriteSparseData(500 + kSize, buf1, kSize, NULL));
1325 EXPECT_EQ(7 * 1024 + 500, entry->GetAvailableRange(1024, 10000, &start)); 1351 rv = entry->GetAvailableRange(1024, 10000, &start, &cb);
1352 EXPECT_EQ(7 * 1024 + 500, cb.GetResult(rv));
1326 EXPECT_EQ(1024, start); 1353 EXPECT_EQ(1024, start);
1327 EXPECT_EQ(kSize, entry->ReadSparseData(kSize, buf2, kSize, NULL)); 1354 EXPECT_EQ(kSize, entry->ReadSparseData(kSize, buf2, kSize, NULL));
1328 EXPECT_EQ(0, memcmp(buf2->data(), buf1->data() + kSize - 500, 500)); 1355 EXPECT_EQ(0, memcmp(buf2->data(), buf1->data() + kSize - 500, 500));
1329 EXPECT_EQ(0, memcmp(buf2->data() + 500, buf1->data(), kSize - 500)); 1356 EXPECT_EQ(0, memcmp(buf2->data() + 500, buf1->data(), kSize - 500));
1330 1357
1331 entry->Close(); 1358 entry->Close();
1332 } 1359 }
1333 1360
1334 TEST_F(DiskCacheEntryTest, PartialSparseEntry) { 1361 TEST_F(DiskCacheEntryTest, PartialSparseEntry) {
1335 InitCache(); 1362 InitCache();
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1396 TEST_F(DiskCacheEntryTest, CancelSparseIO) { 1423 TEST_F(DiskCacheEntryTest, CancelSparseIO) {
1397 InitCache(); 1424 InitCache();
1398 std::string key("the first key"); 1425 std::string key("the first key");
1399 disk_cache::Entry* entry; 1426 disk_cache::Entry* entry;
1400 ASSERT_EQ(net::OK, CreateEntry(key, &entry)); 1427 ASSERT_EQ(net::OK, CreateEntry(key, &entry));
1401 1428
1402 const int kSize = 40 * 1024; 1429 const int kSize = 40 * 1024;
1403 scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(kSize); 1430 scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(kSize);
1404 CacheTestFillBuffer(buf->data(), kSize, false); 1431 CacheTestFillBuffer(buf->data(), kSize, false);
1405 1432
1406 TestCompletionCallback cb1, cb2, cb3, cb4; 1433 TestCompletionCallback cb1, cb2, cb3, cb4, cb5;
1407 int64 offset = 0; 1434 int64 offset = 0;
1408 int tries = 0; 1435 int tries = 0;
1409 const int maxtries = 100; // Avoid hang on infinitely fast disks. 1436 const int maxtries = 100; // Avoid hang on infinitely fast disks.
1410 for (int ret = 0; ret != net::ERR_IO_PENDING; offset += kSize * 4) { 1437 for (int ret = 0; ret != net::ERR_IO_PENDING; offset += kSize * 4) {
1411 ret = entry->WriteSparseData(offset, buf, kSize, &cb1); 1438 ret = entry->WriteSparseData(offset, buf, kSize, &cb1);
1412 if (++tries > maxtries) { 1439 if (++tries > maxtries) {
1413 LOG(ERROR) << "Data writes never come back PENDING; skipping test"; 1440 LOG(ERROR) << "Data writes never come back PENDING; skipping test";
1414 entry->Close(); 1441 entry->Close();
1415 return; 1442 return;
1416 } 1443 }
1417 } 1444 }
1418 1445
1419 // Cannot use the entry at this point. 1446 // Cannot use the entry at this point.
1420 offset = 0; 1447 offset = 0;
1421 EXPECT_EQ(net::ERR_CACHE_OPERATION_NOT_SUPPORTED, 1448 int rv = entry->GetAvailableRange(offset, kSize, &offset, &cb5);
1422 entry->GetAvailableRange(offset, kSize, &offset)); 1449 EXPECT_EQ(net::ERR_CACHE_OPERATION_NOT_SUPPORTED, cb5.GetResult(rv));
1423 EXPECT_EQ(net::OK, entry->ReadyForSparseIO(&cb2)); 1450 EXPECT_EQ(net::OK, entry->ReadyForSparseIO(&cb2));
1424 1451
1425 // We cancel the pending operation, and register multiple notifications. 1452 // We cancel the pending operation, and register multiple notifications.
1426 entry->CancelSparseIO(); 1453 entry->CancelSparseIO();
1427 EXPECT_EQ(net::ERR_IO_PENDING, entry->ReadyForSparseIO(&cb2)); 1454 EXPECT_EQ(net::ERR_IO_PENDING, entry->ReadyForSparseIO(&cb2));
1428 EXPECT_EQ(net::ERR_IO_PENDING, entry->ReadyForSparseIO(&cb3)); 1455 EXPECT_EQ(net::ERR_IO_PENDING, entry->ReadyForSparseIO(&cb3));
1429 entry->CancelSparseIO(); // Should be a no op at this point. 1456 entry->CancelSparseIO(); // Should be a no op at this point.
1430 EXPECT_EQ(net::ERR_IO_PENDING, entry->ReadyForSparseIO(&cb4)); 1457 EXPECT_EQ(net::ERR_IO_PENDING, entry->ReadyForSparseIO(&cb4));
1431 1458
1432 offset = 0; 1459 offset = 0;
1433 EXPECT_EQ(net::ERR_CACHE_OPERATION_NOT_SUPPORTED, 1460 rv = entry->GetAvailableRange(offset, kSize, &offset, &cb5);
1434 entry->GetAvailableRange(offset, kSize, &offset)); 1461 EXPECT_EQ(net::ERR_CACHE_OPERATION_NOT_SUPPORTED, cb5.GetResult(rv));
1435 EXPECT_EQ(net::ERR_CACHE_OPERATION_NOT_SUPPORTED, 1462 EXPECT_EQ(net::ERR_CACHE_OPERATION_NOT_SUPPORTED,
1436 entry->ReadSparseData(offset, buf, kSize, NULL)); 1463 entry->ReadSparseData(offset, buf, kSize, NULL));
1437 EXPECT_EQ(net::ERR_CACHE_OPERATION_NOT_SUPPORTED, 1464 EXPECT_EQ(net::ERR_CACHE_OPERATION_NOT_SUPPORTED,
1438 entry->WriteSparseData(offset, buf, kSize, NULL)); 1465 entry->WriteSparseData(offset, buf, kSize, NULL));
1439 1466
1440 // Now see if we receive all notifications. 1467 // Now see if we receive all notifications.
1441 EXPECT_EQ(kSize, cb1.GetResult(net::ERR_IO_PENDING)); 1468 EXPECT_EQ(kSize, cb1.GetResult(net::ERR_IO_PENDING));
1442 EXPECT_EQ(net::OK, cb2.GetResult(net::ERR_IO_PENDING)); 1469 EXPECT_EQ(net::OK, cb2.GetResult(net::ERR_IO_PENDING));
1443 EXPECT_EQ(net::OK, cb3.GetResult(net::ERR_IO_PENDING)); 1470 EXPECT_EQ(net::OK, cb3.GetResult(net::ERR_IO_PENDING));
1444 EXPECT_EQ(net::OK, cb4.GetResult(net::ERR_IO_PENDING)); 1471 EXPECT_EQ(net::OK, cb4.GetResult(net::ERR_IO_PENDING));
1445 1472
1446 EXPECT_EQ(kSize, entry->GetAvailableRange(offset, kSize, &offset)); 1473 rv = entry->GetAvailableRange(offset, kSize, &offset, &cb5);
1474 EXPECT_EQ(kSize, cb5.GetResult(rv));
1447 EXPECT_EQ(net::OK, entry->ReadyForSparseIO(&cb2)); 1475 EXPECT_EQ(net::OK, entry->ReadyForSparseIO(&cb2));
1448 entry->Close(); 1476 entry->Close();
1449 } 1477 }
OLDNEW
« no previous file with comments | « net/disk_cache/entry_impl.h ('k') | net/disk_cache/mem_backend_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698