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

Side by Side Diff: net/http/http_cache_unittest.cc

Issue 4067002: First pass at adding http/backend cache to NetLog (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Lint fixes Created 9 years, 11 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/http/http_cache_transaction.cc ('k') | net/http/http_network_session.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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "net/http/http_cache.h" 5 #include "net/http/http_cache.h"
6 6
7 #include "base/hash_tables.h" 7 #include "base/hash_tables.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/scoped_vector.h" 9 #include "base/scoped_vector.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 529
530 EntryMap entries_; 530 EntryMap entries_;
531 int open_count_; 531 int open_count_;
532 int create_count_; 532 int create_count_;
533 bool fail_requests_; 533 bool fail_requests_;
534 bool soft_failures_; 534 bool soft_failures_;
535 }; 535 };
536 536
537 class MockBackendFactory : public net::HttpCache::BackendFactory { 537 class MockBackendFactory : public net::HttpCache::BackendFactory {
538 public: 538 public:
539 virtual int CreateBackend(disk_cache::Backend** backend, 539 virtual int CreateBackend(net::NetLog* /* net_log */,
540 disk_cache::Backend** backend,
540 net::CompletionCallback* callback) { 541 net::CompletionCallback* callback) {
541 *backend = new MockDiskCache(); 542 *backend = new MockDiskCache();
542 return net::OK; 543 return net::OK;
543 } 544 }
544 }; 545 };
545 546
546 class MockHttpCache { 547 class MockHttpCache {
547 public: 548 public:
548 MockHttpCache() 549 MockHttpCache()
549 : http_cache_(new MockNetworkLayer(), new MockBackendFactory()) { 550 : http_cache_(new MockNetworkLayer(), NULL, new MockBackendFactory()) {
550 } 551 }
551 552
552 explicit MockHttpCache(net::HttpCache::BackendFactory* disk_cache_factory) 553 explicit MockHttpCache(net::HttpCache::BackendFactory* disk_cache_factory)
553 : http_cache_(new MockNetworkLayer(), disk_cache_factory) { 554 : http_cache_(new MockNetworkLayer(), NULL, disk_cache_factory) {
554 } 555 }
555 556
556 net::HttpCache* http_cache() { return &http_cache_; } 557 net::HttpCache* http_cache() { return &http_cache_; }
557 558
558 MockNetworkLayer* network_layer() { 559 MockNetworkLayer* network_layer() {
559 return static_cast<MockNetworkLayer*>(http_cache_.network_layer()); 560 return static_cast<MockNetworkLayer*>(http_cache_.network_layer());
560 } 561 }
561 MockDiskCache* disk_cache() { 562 MockDiskCache* disk_cache() {
562 TestCompletionCallback cb; 563 TestCompletionCallback cb;
563 disk_cache::Backend* backend; 564 disk_cache::Backend* backend;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 } 604 }
604 605
605 // Helper function to synchronously open a backend entry. 606 // Helper function to synchronously open a backend entry.
606 bool OpenBackendEntry(const std::string& key, disk_cache::Entry** entry) { 607 bool OpenBackendEntry(const std::string& key, disk_cache::Entry** entry) {
607 TestCompletionCallback cb; 608 TestCompletionCallback cb;
608 int rv = disk_cache()->OpenEntry(key, entry, &cb); 609 int rv = disk_cache()->OpenEntry(key, entry, &cb);
609 return (cb.GetResult(rv) == net::OK); 610 return (cb.GetResult(rv) == net::OK);
610 } 611 }
611 612
612 // Helper function to synchronously create a backend entry. 613 // Helper function to synchronously create a backend entry.
613 bool CreateBackendEntry(const std::string& key, disk_cache::Entry** entry) { 614 bool CreateBackendEntry(const std::string& key, disk_cache::Entry** entry,
615 net::NetLog* /* net_log */) {
614 TestCompletionCallback cb; 616 TestCompletionCallback cb;
615 int rv = disk_cache()->CreateEntry(key, entry, &cb); 617 int rv = disk_cache()->CreateEntry(key, entry, &cb);
616 return (cb.GetResult(rv) == net::OK); 618 return (cb.GetResult(rv) == net::OK);
617 } 619 }
618 620
619 private: 621 private:
620 net::HttpCache http_cache_; 622 net::HttpCache http_cache_;
621 }; 623 };
622 624
623 // This version of the disk cache doesn't invoke CreateEntry callbacks. 625 // This version of the disk cache doesn't invoke CreateEntry callbacks.
624 class MockDiskCacheNoCB : public MockDiskCache { 626 class MockDiskCacheNoCB : public MockDiskCache {
625 virtual int CreateEntry(const std::string& key, disk_cache::Entry** entry, 627 virtual int CreateEntry(const std::string& key, disk_cache::Entry** entry,
626 net::CompletionCallback* callback) { 628 net::CompletionCallback* callback) {
627 return net::ERR_IO_PENDING; 629 return net::ERR_IO_PENDING;
628 } 630 }
629 }; 631 };
630 632
631 class MockBackendNoCbFactory : public net::HttpCache::BackendFactory { 633 class MockBackendNoCbFactory : public net::HttpCache::BackendFactory {
632 public: 634 public:
633 virtual int CreateBackend(disk_cache::Backend** backend, 635 virtual int CreateBackend(net::NetLog* /* net_log */,
636 disk_cache::Backend** backend,
634 net::CompletionCallback* callback) { 637 net::CompletionCallback* callback) {
635 *backend = new MockDiskCacheNoCB(); 638 *backend = new MockDiskCacheNoCB();
636 return net::OK; 639 return net::OK;
637 } 640 }
638 }; 641 };
639 642
640 // This backend factory allows us to control the backend instantiation. 643 // This backend factory allows us to control the backend instantiation.
641 class MockBlockingBackendFactory : public net::HttpCache::BackendFactory { 644 class MockBlockingBackendFactory : public net::HttpCache::BackendFactory {
642 public: 645 public:
643 MockBlockingBackendFactory() 646 MockBlockingBackendFactory()
644 : backend_(NULL), callback_(NULL), block_(true), fail_(false) {} 647 : backend_(NULL), callback_(NULL), block_(true), fail_(false) {}
645 648
646 virtual int CreateBackend(disk_cache::Backend** backend, 649 virtual int CreateBackend(net::NetLog* /* net_log */,
650 disk_cache::Backend** backend,
647 net::CompletionCallback* callback) { 651 net::CompletionCallback* callback) {
648 if (!block_) { 652 if (!block_) {
649 if (!fail_) 653 if (!fail_)
650 *backend = new MockDiskCache(); 654 *backend = new MockDiskCache();
651 return Result(); 655 return Result();
652 } 656 }
653 657
654 backend_ = backend; 658 backend_ = backend;
655 callback_ = callback; 659 callback_ = callback;
656 return net::ERR_IO_PENDING; 660 return net::ERR_IO_PENDING;
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
1030 EXPECT_EQ(0, cache.disk_cache()->open_count()); 1034 EXPECT_EQ(0, cache.disk_cache()->open_count());
1031 EXPECT_EQ(1, cache.disk_cache()->create_count()); 1035 EXPECT_EQ(1, cache.disk_cache()->create_count());
1032 } 1036 }
1033 1037
1034 TEST(HttpCache, SimpleGETNoDiskCache) { 1038 TEST(HttpCache, SimpleGETNoDiskCache) {
1035 MockHttpCache cache; 1039 MockHttpCache cache;
1036 1040
1037 cache.disk_cache()->set_fail_requests(); 1041 cache.disk_cache()->set_fail_requests();
1038 1042
1039 net::CapturingBoundNetLog log(net::CapturingNetLog::kUnbounded); 1043 net::CapturingBoundNetLog log(net::CapturingNetLog::kUnbounded);
1044 log.SetLogLevel(net::NetLog::LOG_BASIC);
1040 1045
1041 // Read from the network, and don't use the cache. 1046 // Read from the network, and don't use the cache.
1042 RunTransactionTestWithLog(cache.http_cache(), kSimpleGET_Transaction, 1047 RunTransactionTestWithLog(cache.http_cache(), kSimpleGET_Transaction,
1043 log.bound()); 1048 log.bound());
1044 1049
1045 // Check that the NetLog was filled as expected. 1050 // Check that the NetLog was filled as expected.
1046 // (We attempted to both Open and Create entries, but both failed). 1051 // (We attempted to both Open and Create entries, but both failed).
1047 net::CapturingNetLog::EntryList entries; 1052 net::CapturingNetLog::EntryList entries;
1048 log.GetEntries(&entries); 1053 log.GetEntries(&entries);
1049 1054
1050 EXPECT_EQ(6u, entries.size()); 1055 EXPECT_EQ(6u, entries.size());
1051 EXPECT_TRUE(net::LogContainsBeginEvent( 1056 EXPECT_TRUE(net::LogContainsBeginEvent(
1052 entries, 0, net::NetLog::TYPE_HTTP_CACHE_WAITING)); 1057 entries, 0, net::NetLog::TYPE_HTTP_CACHE_GET_BACKEND));
1053 EXPECT_TRUE(net::LogContainsEndEvent( 1058 EXPECT_TRUE(net::LogContainsEndEvent(
1054 entries, 1, net::NetLog::TYPE_HTTP_CACHE_WAITING)); 1059 entries, 1, net::NetLog::TYPE_HTTP_CACHE_GET_BACKEND));
1055 EXPECT_TRUE(net::LogContainsBeginEvent( 1060 EXPECT_TRUE(net::LogContainsBeginEvent(
1056 entries, 2, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); 1061 entries, 2, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY));
1057 EXPECT_TRUE(net::LogContainsEndEvent( 1062 EXPECT_TRUE(net::LogContainsEndEvent(
1058 entries, 3, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); 1063 entries, 3, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY));
1059 EXPECT_TRUE(net::LogContainsBeginEvent( 1064 EXPECT_TRUE(net::LogContainsBeginEvent(
1060 entries, 4, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); 1065 entries, 4, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY));
1061 EXPECT_TRUE(net::LogContainsEndEvent( 1066 EXPECT_TRUE(net::LogContainsEndEvent(
1062 entries, 5, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); 1067 entries, 5, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY));
1063 1068
1064 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 1069 EXPECT_EQ(1, cache.network_layer()->transaction_count());
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1136 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 1141 EXPECT_EQ(2, cache.network_layer()->transaction_count());
1137 EXPECT_EQ(1, cache.disk_cache()->open_count()); 1142 EXPECT_EQ(1, cache.disk_cache()->open_count());
1138 EXPECT_EQ(2, cache.disk_cache()->create_count()); 1143 EXPECT_EQ(2, cache.disk_cache()->create_count());
1139 } 1144 }
1140 1145
1141 TEST(HttpCache, SimpleGET_LoadOnlyFromCache_Hit) { 1146 TEST(HttpCache, SimpleGET_LoadOnlyFromCache_Hit) {
1142 MockHttpCache cache; 1147 MockHttpCache cache;
1143 1148
1144 net::CapturingBoundNetLog log(net::CapturingNetLog::kUnbounded); 1149 net::CapturingBoundNetLog log(net::CapturingNetLog::kUnbounded);
1145 1150
1151 // This prevents a number of write events from being logged.
1152 log.SetLogLevel(net::NetLog::LOG_BASIC);
1153
1146 // write to the cache 1154 // write to the cache
1147 RunTransactionTestWithLog(cache.http_cache(), kSimpleGET_Transaction, 1155 RunTransactionTestWithLog(cache.http_cache(), kSimpleGET_Transaction,
1148 log.bound()); 1156 log.bound());
1149 1157
1150 // Check that the NetLog was filled as expected. 1158 // Check that the NetLog was filled as expected.
1151 net::CapturingNetLog::EntryList entries; 1159 net::CapturingNetLog::EntryList entries;
1152 log.GetEntries(&entries); 1160 log.GetEntries(&entries);
1153 1161
1154 EXPECT_EQ(8u, entries.size()); 1162 EXPECT_EQ(8u, entries.size());
1155 EXPECT_TRUE(net::LogContainsBeginEvent( 1163 EXPECT_TRUE(net::LogContainsBeginEvent(
1156 entries, 0, net::NetLog::TYPE_HTTP_CACHE_WAITING)); 1164 entries, 0, net::NetLog::TYPE_HTTP_CACHE_GET_BACKEND));
1157 EXPECT_TRUE(net::LogContainsEndEvent( 1165 EXPECT_TRUE(net::LogContainsEndEvent(
1158 entries, 1, net::NetLog::TYPE_HTTP_CACHE_WAITING)); 1166 entries, 1, net::NetLog::TYPE_HTTP_CACHE_GET_BACKEND));
1159 EXPECT_TRUE(net::LogContainsBeginEvent( 1167 EXPECT_TRUE(net::LogContainsBeginEvent(
1160 entries, 2, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); 1168 entries, 2, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY));
1161 EXPECT_TRUE(net::LogContainsEndEvent( 1169 EXPECT_TRUE(net::LogContainsEndEvent(
1162 entries, 3, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); 1170 entries, 3, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY));
1163 EXPECT_TRUE(net::LogContainsBeginEvent( 1171 EXPECT_TRUE(net::LogContainsBeginEvent(
1164 entries, 4, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); 1172 entries, 4, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY));
1165 EXPECT_TRUE(net::LogContainsEndEvent( 1173 EXPECT_TRUE(net::LogContainsEndEvent(
1166 entries, 5, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); 1174 entries, 5, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY));
1167 EXPECT_TRUE(net::LogContainsBeginEvent( 1175 EXPECT_TRUE(net::LogContainsBeginEvent(
1168 entries, 6, net::NetLog::TYPE_HTTP_CACHE_WAITING)); 1176 entries, 6, net::NetLog::TYPE_HTTP_CACHE_ADD_TO_ENTRY));
1169 EXPECT_TRUE(net::LogContainsEndEvent( 1177 EXPECT_TRUE(net::LogContainsEndEvent(
1170 entries, 7, net::NetLog::TYPE_HTTP_CACHE_WAITING)); 1178 entries, 7, net::NetLog::TYPE_HTTP_CACHE_ADD_TO_ENTRY));
1171 1179
1172 // force this transaction to read from the cache 1180 // force this transaction to read from the cache
1173 MockTransaction transaction(kSimpleGET_Transaction); 1181 MockTransaction transaction(kSimpleGET_Transaction);
1174 transaction.load_flags |= net::LOAD_ONLY_FROM_CACHE; 1182 transaction.load_flags |= net::LOAD_ONLY_FROM_CACHE;
1175 1183
1176 log.Clear(); 1184 log.Clear();
1177 1185
1178 RunTransactionTestWithLog(cache.http_cache(), transaction, log.bound()); 1186 RunTransactionTestWithLog(cache.http_cache(), transaction, log.bound());
1179 1187
1180 // Check that the NetLog was filled as expected. 1188 // Check that the NetLog was filled as expected.
1181 log.GetEntries(&entries); 1189 log.GetEntries(&entries);
1182 1190
1183 EXPECT_EQ(8u, entries.size()); 1191 EXPECT_EQ(8u, entries.size());
1184 EXPECT_TRUE(net::LogContainsBeginEvent( 1192 EXPECT_TRUE(net::LogContainsBeginEvent(
1185 entries, 0, net::NetLog::TYPE_HTTP_CACHE_WAITING)); 1193 entries, 0, net::NetLog::TYPE_HTTP_CACHE_GET_BACKEND));
1186 EXPECT_TRUE(net::LogContainsEndEvent( 1194 EXPECT_TRUE(net::LogContainsEndEvent(
1187 entries, 1, net::NetLog::TYPE_HTTP_CACHE_WAITING)); 1195 entries, 1, net::NetLog::TYPE_HTTP_CACHE_GET_BACKEND));
1188 EXPECT_TRUE(net::LogContainsBeginEvent( 1196 EXPECT_TRUE(net::LogContainsBeginEvent(
1189 entries, 2, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); 1197 entries, 2, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY));
1190 EXPECT_TRUE(net::LogContainsEndEvent( 1198 EXPECT_TRUE(net::LogContainsEndEvent(
1191 entries, 3, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY)); 1199 entries, 3, net::NetLog::TYPE_HTTP_CACHE_OPEN_ENTRY));
1192 EXPECT_TRUE(net::LogContainsBeginEvent( 1200 EXPECT_TRUE(net::LogContainsBeginEvent(
1193 entries, 4, net::NetLog::TYPE_HTTP_CACHE_WAITING)); 1201 entries, 4, net::NetLog::TYPE_HTTP_CACHE_ADD_TO_ENTRY));
1194 EXPECT_TRUE(net::LogContainsEndEvent( 1202 EXPECT_TRUE(net::LogContainsEndEvent(
1195 entries, 5, net::NetLog::TYPE_HTTP_CACHE_WAITING)); 1203 entries, 5, net::NetLog::TYPE_HTTP_CACHE_ADD_TO_ENTRY));
1196 EXPECT_TRUE(net::LogContainsBeginEvent( 1204 EXPECT_TRUE(net::LogContainsBeginEvent(
1197 entries, 6, net::NetLog::TYPE_HTTP_CACHE_READ_INFO)); 1205 entries, 6, net::NetLog::TYPE_HTTP_CACHE_READ_INFO));
1198 EXPECT_TRUE(net::LogContainsEndEvent( 1206 EXPECT_TRUE(net::LogContainsEndEvent(
1199 entries, 7, net::NetLog::TYPE_HTTP_CACHE_READ_INFO)); 1207 entries, 7, net::NetLog::TYPE_HTTP_CACHE_READ_INFO));
1200 1208
1201 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 1209 EXPECT_EQ(1, cache.network_layer()->transaction_count());
1202 EXPECT_EQ(1, cache.disk_cache()->open_count()); 1210 EXPECT_EQ(1, cache.disk_cache()->open_count());
1203 EXPECT_EQ(1, cache.disk_cache()->create_count()); 1211 EXPECT_EQ(1, cache.disk_cache()->create_count());
1204 } 1212 }
1205 1213
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1266 1274
1267 // Write to the cache. 1275 // Write to the cache.
1268 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction); 1276 RunTransactionTest(cache.http_cache(), kSimpleGET_Transaction);
1269 1277
1270 // Force this transaction to write to the cache again. 1278 // Force this transaction to write to the cache again.
1271 MockTransaction transaction(kSimpleGET_Transaction); 1279 MockTransaction transaction(kSimpleGET_Transaction);
1272 transaction.load_flags |= net::LOAD_BYPASS_CACHE; 1280 transaction.load_flags |= net::LOAD_BYPASS_CACHE;
1273 1281
1274 net::CapturingBoundNetLog log(net::CapturingNetLog::kUnbounded); 1282 net::CapturingBoundNetLog log(net::CapturingNetLog::kUnbounded);
1275 1283
1284 // This prevents a number of write events from being logged.
1285 log.SetLogLevel(net::NetLog::LOG_BASIC);
1286
1276 RunTransactionTestWithLog(cache.http_cache(), transaction, log.bound()); 1287 RunTransactionTestWithLog(cache.http_cache(), transaction, log.bound());
1277 1288
1278 // Check that the NetLog was filled as expected. 1289 // Check that the NetLog was filled as expected.
1279 net::CapturingNetLog::EntryList entries; 1290 net::CapturingNetLog::EntryList entries;
1280 log.GetEntries(&entries); 1291 log.GetEntries(&entries);
1281 1292
1282 EXPECT_EQ(8u, entries.size()); 1293 EXPECT_EQ(8u, entries.size());
1283 EXPECT_TRUE(net::LogContainsBeginEvent( 1294 EXPECT_TRUE(net::LogContainsBeginEvent(
1284 entries, 0, net::NetLog::TYPE_HTTP_CACHE_WAITING)); 1295 entries, 0, net::NetLog::TYPE_HTTP_CACHE_GET_BACKEND));
1285 EXPECT_TRUE(net::LogContainsEndEvent( 1296 EXPECT_TRUE(net::LogContainsEndEvent(
1286 entries, 1, net::NetLog::TYPE_HTTP_CACHE_WAITING)); 1297 entries, 1, net::NetLog::TYPE_HTTP_CACHE_GET_BACKEND));
1287 EXPECT_TRUE(net::LogContainsBeginEvent( 1298 EXPECT_TRUE(net::LogContainsBeginEvent(
1288 entries, 2, net::NetLog::TYPE_HTTP_CACHE_DOOM_ENTRY)); 1299 entries, 2, net::NetLog::TYPE_HTTP_CACHE_DOOM_ENTRY));
1289 EXPECT_TRUE(net::LogContainsEndEvent( 1300 EXPECT_TRUE(net::LogContainsEndEvent(
1290 entries, 3, net::NetLog::TYPE_HTTP_CACHE_DOOM_ENTRY)); 1301 entries, 3, net::NetLog::TYPE_HTTP_CACHE_DOOM_ENTRY));
1291 EXPECT_TRUE(net::LogContainsBeginEvent( 1302 EXPECT_TRUE(net::LogContainsBeginEvent(
1292 entries, 4, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); 1303 entries, 4, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY));
1293 EXPECT_TRUE(net::LogContainsEndEvent( 1304 EXPECT_TRUE(net::LogContainsEndEvent(
1294 entries, 5, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY)); 1305 entries, 5, net::NetLog::TYPE_HTTP_CACHE_CREATE_ENTRY));
1295 EXPECT_TRUE(net::LogContainsBeginEvent( 1306 EXPECT_TRUE(net::LogContainsBeginEvent(
1296 entries, 6, net::NetLog::TYPE_HTTP_CACHE_WAITING)); 1307 entries, 6, net::NetLog::TYPE_HTTP_CACHE_ADD_TO_ENTRY));
1297 EXPECT_TRUE(net::LogContainsEndEvent( 1308 EXPECT_TRUE(net::LogContainsEndEvent(
1298 entries, 7, net::NetLog::TYPE_HTTP_CACHE_WAITING)); 1309 entries, 7, net::NetLog::TYPE_HTTP_CACHE_ADD_TO_ENTRY));
1299 1310
1300 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 1311 EXPECT_EQ(2, cache.network_layer()->transaction_count());
1301 EXPECT_EQ(0, cache.disk_cache()->open_count()); 1312 EXPECT_EQ(0, cache.disk_cache()->open_count());
1302 EXPECT_EQ(2, cache.disk_cache()->create_count()); 1313 EXPECT_EQ(2, cache.disk_cache()->create_count());
1303 } 1314 }
1304 1315
1305 TEST(HttpCache, SimpleGET_LoadBypassCache_Implicit) { 1316 TEST(HttpCache, SimpleGET_LoadBypassCache_Implicit) {
1306 MockHttpCache cache; 1317 MockHttpCache cache;
1307 1318
1308 // write to the cache 1319 // write to the cache
(...skipping 1986 matching lines...) Expand 10 before | Expand all | Expand 10 after
3295 3306
3296 RemoveMockTransaction(&transaction); 3307 RemoveMockTransaction(&transaction);
3297 } 3308 }
3298 3309
3299 // Tests that we can handle cached 206 responses that are not sparse. 3310 // Tests that we can handle cached 206 responses that are not sparse.
3300 TEST(HttpCache, GET_Previous206_NotSparse) { 3311 TEST(HttpCache, GET_Previous206_NotSparse) {
3301 MockHttpCache cache; 3312 MockHttpCache cache;
3302 3313
3303 // Create a disk cache entry that stores 206 headers while not being sparse. 3314 // Create a disk cache entry that stores 206 headers while not being sparse.
3304 disk_cache::Entry* entry; 3315 disk_cache::Entry* entry;
3305 ASSERT_TRUE(cache.CreateBackendEntry(kSimpleGET_Transaction.url, &entry)); 3316 ASSERT_TRUE(cache.CreateBackendEntry(kSimpleGET_Transaction.url, &entry,
3317 NULL));
3306 3318
3307 std::string raw_headers(kRangeGET_TransactionOK.status); 3319 std::string raw_headers(kRangeGET_TransactionOK.status);
3308 raw_headers.append("\n"); 3320 raw_headers.append("\n");
3309 raw_headers.append(kRangeGET_TransactionOK.response_headers); 3321 raw_headers.append(kRangeGET_TransactionOK.response_headers);
3310 raw_headers = net::HttpUtil::AssembleRawHeaders(raw_headers.data(), 3322 raw_headers = net::HttpUtil::AssembleRawHeaders(raw_headers.data(),
3311 raw_headers.size()); 3323 raw_headers.size());
3312 3324
3313 net::HttpResponseInfo response; 3325 net::HttpResponseInfo response;
3314 response.headers = new net::HttpResponseHeaders(raw_headers); 3326 response.headers = new net::HttpResponseHeaders(raw_headers);
3315 EXPECT_TRUE(MockHttpCache::WriteResponseInfo(entry, &response, true, false)); 3327 EXPECT_TRUE(MockHttpCache::WriteResponseInfo(entry, &response, true, false));
(...skipping 22 matching lines...) Expand all
3338 } 3350 }
3339 3351
3340 // Tests that we can handle cached 206 responses that are not sparse. This time 3352 // Tests that we can handle cached 206 responses that are not sparse. This time
3341 // we issue a range request and expect to receive a range. 3353 // we issue a range request and expect to receive a range.
3342 TEST(HttpCache, RangeGET_Previous206_NotSparse_2) { 3354 TEST(HttpCache, RangeGET_Previous206_NotSparse_2) {
3343 MockHttpCache cache; 3355 MockHttpCache cache;
3344 AddMockTransaction(&kRangeGET_TransactionOK); 3356 AddMockTransaction(&kRangeGET_TransactionOK);
3345 3357
3346 // Create a disk cache entry that stores 206 headers while not being sparse. 3358 // Create a disk cache entry that stores 206 headers while not being sparse.
3347 disk_cache::Entry* entry; 3359 disk_cache::Entry* entry;
3348 ASSERT_TRUE(cache.CreateBackendEntry(kRangeGET_TransactionOK.url, &entry)); 3360 ASSERT_TRUE(cache.CreateBackendEntry(kRangeGET_TransactionOK.url, &entry,
3361 NULL));
3349 3362
3350 std::string raw_headers(kRangeGET_TransactionOK.status); 3363 std::string raw_headers(kRangeGET_TransactionOK.status);
3351 raw_headers.append("\n"); 3364 raw_headers.append("\n");
3352 raw_headers.append(kRangeGET_TransactionOK.response_headers); 3365 raw_headers.append(kRangeGET_TransactionOK.response_headers);
3353 raw_headers = net::HttpUtil::AssembleRawHeaders(raw_headers.data(), 3366 raw_headers = net::HttpUtil::AssembleRawHeaders(raw_headers.data(),
3354 raw_headers.size()); 3367 raw_headers.size());
3355 3368
3356 net::HttpResponseInfo response; 3369 net::HttpResponseInfo response;
3357 response.headers = new net::HttpResponseHeaders(raw_headers); 3370 response.headers = new net::HttpResponseHeaders(raw_headers);
3358 EXPECT_TRUE(MockHttpCache::WriteResponseInfo(entry, &response, true, false)); 3371 EXPECT_TRUE(MockHttpCache::WriteResponseInfo(entry, &response, true, false));
(...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after
3936 EXPECT_EQ(1, cache.disk_cache()->create_count()); 3949 EXPECT_EQ(1, cache.disk_cache()->create_count());
3937 3950
3938 RemoveMockTransaction(&kRangeGET_TransactionOK); 3951 RemoveMockTransaction(&kRangeGET_TransactionOK);
3939 } 3952 }
3940 #endif 3953 #endif
3941 3954
3942 // Tests the handling of the "truncation" flag. 3955 // Tests the handling of the "truncation" flag.
3943 TEST(HttpCache, WriteResponseInfo_Truncated) { 3956 TEST(HttpCache, WriteResponseInfo_Truncated) {
3944 MockHttpCache cache; 3957 MockHttpCache cache;
3945 disk_cache::Entry* entry; 3958 disk_cache::Entry* entry;
3946 ASSERT_TRUE(cache.CreateBackendEntry("http://www.google.com", &entry)); 3959 ASSERT_TRUE(cache.CreateBackendEntry("http://www.google.com", &entry,
3960 NULL));
3947 3961
3948 std::string headers("HTTP/1.1 200 OK"); 3962 std::string headers("HTTP/1.1 200 OK");
3949 headers = net::HttpUtil::AssembleRawHeaders(headers.data(), headers.size()); 3963 headers = net::HttpUtil::AssembleRawHeaders(headers.data(), headers.size());
3950 net::HttpResponseInfo response; 3964 net::HttpResponseInfo response;
3951 response.headers = new net::HttpResponseHeaders(headers); 3965 response.headers = new net::HttpResponseHeaders(headers);
3952 3966
3953 // Set the last argument for this to be an incomplete request. 3967 // Set the last argument for this to be an incomplete request.
3954 EXPECT_TRUE(MockHttpCache::WriteResponseInfo(entry, &response, true, true)); 3968 EXPECT_TRUE(MockHttpCache::WriteResponseInfo(entry, &response, true, true));
3955 bool truncated = false; 3969 bool truncated = false;
3956 EXPECT_TRUE(MockHttpCache::ReadResponseInfo(entry, &response, &truncated)); 3970 EXPECT_TRUE(MockHttpCache::ReadResponseInfo(entry, &response, &truncated));
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
4135 RemoveMockTransaction(&transaction); 4149 RemoveMockTransaction(&transaction);
4136 } 4150 }
4137 4151
4138 // Tests that we can continue with a request that was interrupted. 4152 // Tests that we can continue with a request that was interrupted.
4139 TEST(HttpCache, GET_IncompleteResource) { 4153 TEST(HttpCache, GET_IncompleteResource) {
4140 MockHttpCache cache; 4154 MockHttpCache cache;
4141 AddMockTransaction(&kRangeGET_TransactionOK); 4155 AddMockTransaction(&kRangeGET_TransactionOK);
4142 4156
4143 // Create a disk cache entry that stores an incomplete resource. 4157 // Create a disk cache entry that stores an incomplete resource.
4144 disk_cache::Entry* entry; 4158 disk_cache::Entry* entry;
4145 ASSERT_TRUE(cache.CreateBackendEntry(kRangeGET_TransactionOK.url, &entry)); 4159 ASSERT_TRUE(cache.CreateBackendEntry(kRangeGET_TransactionOK.url, &entry,
4160 NULL));
4146 4161
4147 std::string raw_headers("HTTP/1.1 200 OK\n" 4162 std::string raw_headers("HTTP/1.1 200 OK\n"
4148 "Last-Modified: Sat, 18 Apr 2009 01:10:43 GMT\n" 4163 "Last-Modified: Sat, 18 Apr 2009 01:10:43 GMT\n"
4149 "ETag: \"foo\"\n" 4164 "ETag: \"foo\"\n"
4150 "Accept-Ranges: bytes\n" 4165 "Accept-Ranges: bytes\n"
4151 "Content-Length: 80\n"); 4166 "Content-Length: 80\n");
4152 raw_headers = net::HttpUtil::AssembleRawHeaders(raw_headers.data(), 4167 raw_headers = net::HttpUtil::AssembleRawHeaders(raw_headers.data(),
4153 raw_headers.size()); 4168 raw_headers.size());
4154 4169
4155 net::HttpResponseInfo response; 4170 net::HttpResponseInfo response;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
4195 entry->Close(); 4210 entry->Close();
4196 } 4211 }
4197 4212
4198 // Tests that we delete truncated entries if the server changes its mind midway. 4213 // Tests that we delete truncated entries if the server changes its mind midway.
4199 TEST(HttpCache, GET_IncompleteResource2) { 4214 TEST(HttpCache, GET_IncompleteResource2) {
4200 MockHttpCache cache; 4215 MockHttpCache cache;
4201 AddMockTransaction(&kRangeGET_TransactionOK); 4216 AddMockTransaction(&kRangeGET_TransactionOK);
4202 4217
4203 // Create a disk cache entry that stores an incomplete resource. 4218 // Create a disk cache entry that stores an incomplete resource.
4204 disk_cache::Entry* entry; 4219 disk_cache::Entry* entry;
4205 ASSERT_TRUE(cache.CreateBackendEntry(kRangeGET_TransactionOK.url, &entry)); 4220 ASSERT_TRUE(cache.CreateBackendEntry(kRangeGET_TransactionOK.url, &entry,
4221 NULL));
4206 4222
4207 4223
4208 // Content-length will be intentionally bad. 4224 // Content-length will be intentionally bad.
4209 std::string raw_headers("HTTP/1.1 200 OK\n" 4225 std::string raw_headers("HTTP/1.1 200 OK\n"
4210 "Last-Modified: Sat, 18 Apr 2009 01:10:43 GMT\n" 4226 "Last-Modified: Sat, 18 Apr 2009 01:10:43 GMT\n"
4211 "ETag: \"foo\"\n" 4227 "ETag: \"foo\"\n"
4212 "Accept-Ranges: bytes\n" 4228 "Accept-Ranges: bytes\n"
4213 "Content-Length: 50\n"); 4229 "Content-Length: 50\n");
4214 raw_headers = net::HttpUtil::AssembleRawHeaders(raw_headers.data(), 4230 raw_headers = net::HttpUtil::AssembleRawHeaders(raw_headers.data(),
4215 raw_headers.size()); 4231 raw_headers.size());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
4254 } 4270 }
4255 4271
4256 // Tests that when we cancel a request that was interrupted, we mark it again 4272 // Tests that when we cancel a request that was interrupted, we mark it again
4257 // as truncated. 4273 // as truncated.
4258 TEST(HttpCache, GET_CancelIncompleteResource) { 4274 TEST(HttpCache, GET_CancelIncompleteResource) {
4259 MockHttpCache cache; 4275 MockHttpCache cache;
4260 AddMockTransaction(&kRangeGET_TransactionOK); 4276 AddMockTransaction(&kRangeGET_TransactionOK);
4261 4277
4262 // Create a disk cache entry that stores an incomplete resource. 4278 // Create a disk cache entry that stores an incomplete resource.
4263 disk_cache::Entry* entry; 4279 disk_cache::Entry* entry;
4264 ASSERT_TRUE(cache.CreateBackendEntry(kRangeGET_TransactionOK.url, &entry)); 4280 ASSERT_TRUE(cache.CreateBackendEntry(kRangeGET_TransactionOK.url, &entry,
4281 NULL));
4265 4282
4266 std::string raw_headers("HTTP/1.1 200 OK\n" 4283 std::string raw_headers("HTTP/1.1 200 OK\n"
4267 "Last-Modified: Sat, 18 Apr 2009 01:10:43 GMT\n" 4284 "Last-Modified: Sat, 18 Apr 2009 01:10:43 GMT\n"
4268 "ETag: \"foo\"\n" 4285 "ETag: \"foo\"\n"
4269 "Accept-Ranges: bytes\n" 4286 "Accept-Ranges: bytes\n"
4270 "Content-Length: 80\n"); 4287 "Content-Length: 80\n");
4271 raw_headers = net::HttpUtil::AssembleRawHeaders(raw_headers.data(), 4288 raw_headers = net::HttpUtil::AssembleRawHeaders(raw_headers.data(),
4272 raw_headers.size()); 4289 raw_headers.size());
4273 4290
4274 net::HttpResponseInfo response; 4291 net::HttpResponseInfo response;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
4319 entry->Close(); 4336 entry->Close();
4320 } 4337 }
4321 4338
4322 // Tests that we can handle range requests when we have a truncated entry. 4339 // Tests that we can handle range requests when we have a truncated entry.
4323 TEST(HttpCache, RangeGET_IncompleteResource) { 4340 TEST(HttpCache, RangeGET_IncompleteResource) {
4324 MockHttpCache cache; 4341 MockHttpCache cache;
4325 AddMockTransaction(&kRangeGET_TransactionOK); 4342 AddMockTransaction(&kRangeGET_TransactionOK);
4326 4343
4327 // Create a disk cache entry that stores an incomplete resource. 4344 // Create a disk cache entry that stores an incomplete resource.
4328 disk_cache::Entry* entry; 4345 disk_cache::Entry* entry;
4329 ASSERT_TRUE(cache.CreateBackendEntry(kRangeGET_TransactionOK.url, &entry)); 4346 ASSERT_TRUE(cache.CreateBackendEntry(kRangeGET_TransactionOK.url, &entry,
4347 NULL));
4330 4348
4331 // Content-length will be intentionally bogus. 4349 // Content-length will be intentionally bogus.
4332 std::string raw_headers("HTTP/1.1 200 OK\n" 4350 std::string raw_headers("HTTP/1.1 200 OK\n"
4333 "Last-Modified: something\n" 4351 "Last-Modified: something\n"
4334 "ETag: \"foo\"\n" 4352 "ETag: \"foo\"\n"
4335 "Accept-Ranges: bytes\n" 4353 "Accept-Ranges: bytes\n"
4336 "Content-Length: 10\n"); 4354 "Content-Length: 10\n");
4337 raw_headers = net::HttpUtil::AssembleRawHeaders(raw_headers.data(), 4355 raw_headers = net::HttpUtil::AssembleRawHeaders(raw_headers.data(),
4338 raw_headers.size()); 4356 raw_headers.size());
4339 4357
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
4822 // Now return 200 when validating the entry so the metadata will be lost. 4840 // Now return 200 when validating the entry so the metadata will be lost.
4823 MockTransaction trans2(kTypicalGET_Transaction); 4841 MockTransaction trans2(kTypicalGET_Transaction);
4824 trans2.load_flags = net::LOAD_VALIDATE_CACHE; 4842 trans2.load_flags = net::LOAD_VALIDATE_CACHE;
4825 RunTransactionTestWithResponseInfo(cache.http_cache(), trans2, &response); 4843 RunTransactionTestWithResponseInfo(cache.http_cache(), trans2, &response);
4826 EXPECT_TRUE(response.metadata.get() == NULL); 4844 EXPECT_TRUE(response.metadata.get() == NULL);
4827 4845
4828 EXPECT_EQ(3, cache.network_layer()->transaction_count()); 4846 EXPECT_EQ(3, cache.network_layer()->transaction_count());
4829 EXPECT_EQ(4, cache.disk_cache()->open_count()); 4847 EXPECT_EQ(4, cache.disk_cache()->open_count());
4830 EXPECT_EQ(1, cache.disk_cache()->create_count()); 4848 EXPECT_EQ(1, cache.disk_cache()->create_count());
4831 } 4849 }
OLDNEW
« no previous file with comments | « net/http/http_cache_transaction.cc ('k') | net/http/http_network_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698