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

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

Issue 509783002: Http cache: Allow caching of byte ranges without strong validators. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix comments Created 6 years, 3 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
« no previous file with comments | « net/http/http_cache_transaction.cc ('k') | net/http/partial_data.cc » ('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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 3634 matching lines...) Expand 10 before | Expand all | Expand 10 after
3645 transaction.status = "HTTP/1.1 416 Requested Range Not Satisfiable"; 3645 transaction.status = "HTTP/1.1 416 Requested Range Not Satisfiable";
3646 RunTransactionTest(cache.http_cache(), transaction); 3646 RunTransactionTest(cache.http_cache(), transaction);
3647 3647
3648 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 3648 EXPECT_EQ(1, cache.network_layer()->transaction_count());
3649 EXPECT_EQ(0, cache.disk_cache()->open_count()); 3649 EXPECT_EQ(0, cache.disk_cache()->open_count());
3650 EXPECT_EQ(1, cache.disk_cache()->create_count()); 3650 EXPECT_EQ(1, cache.disk_cache()->create_count());
3651 3651
3652 RemoveMockTransaction(&transaction); 3652 RemoveMockTransaction(&transaction);
3653 } 3653 }
3654 3654
3655 // Tests that we don't cache partial responses that can't be validated. 3655 // Tests that we store partial responses that can't be validated, as they can
3656 // be used for requests that don't require revalidation.
3656 TEST(HttpCache, RangeGET_NoStrongValidators) { 3657 TEST(HttpCache, RangeGET_NoStrongValidators) {
3657 MockHttpCache cache; 3658 MockHttpCache cache;
3658 std::string headers; 3659 std::string headers;
3659 3660
3660 // Attempt to write to the cache (40-49). 3661 // Write to the cache (40-49).
3661 MockTransaction transaction(kRangeGET_TransactionOK); 3662 MockTransaction transaction(kRangeGET_TransactionOK);
3662 AddMockTransaction(&transaction); 3663 AddMockTransaction(&transaction);
3663 transaction.response_headers = "Content-Length: 10\n" 3664 transaction.response_headers = "Content-Length: 10\n"
3665 "Cache-Control: max-age=3600\n"
3664 "ETag: w/\"foo\"\n"; 3666 "ETag: w/\"foo\"\n";
3665 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers); 3667 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
3666 3668
3667 Verify206Response(headers, 40, 49); 3669 Verify206Response(headers, 40, 49);
3668 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 3670 EXPECT_EQ(1, cache.network_layer()->transaction_count());
3669 EXPECT_EQ(0, cache.disk_cache()->open_count()); 3671 EXPECT_EQ(0, cache.disk_cache()->open_count());
3670 EXPECT_EQ(1, cache.disk_cache()->create_count()); 3672 EXPECT_EQ(1, cache.disk_cache()->create_count());
3671 3673
3672 // Now verify that there's no cached data. 3674 // Now verify that there's cached data.
3675 RunTransactionTestWithResponse(cache.http_cache(), kRangeGET_TransactionOK,
3676 &headers);
3677
3678 Verify206Response(headers, 40, 49);
3679 EXPECT_EQ(1, cache.network_layer()->transaction_count());
3680 EXPECT_EQ(1, cache.disk_cache()->open_count());
3681 EXPECT_EQ(1, cache.disk_cache()->create_count());
3682
3683 RemoveMockTransaction(&transaction);
3684 }
3685
3686 // Tests failures to validate cache partial responses that lack strong
3687 // validators.
3688 TEST(HttpCache, RangeGET_NoValidation) {
3689 MockHttpCache cache;
3690 std::string headers;
3691
3692 // Write to the cache (40-49).
3693 MockTransaction transaction(kRangeGET_TransactionOK);
3694 AddMockTransaction(&transaction);
3695 transaction.response_headers = "Content-Length: 10\n"
3696 "ETag: w/\"foo\"\n";
3697 RunTransactionTestWithResponse(cache.http_cache(), transaction, &headers);
3698
3699 Verify206Response(headers, 40, 49);
3700 EXPECT_EQ(1, cache.network_layer()->transaction_count());
3701 EXPECT_EQ(0, cache.disk_cache()->open_count());
3702 EXPECT_EQ(1, cache.disk_cache()->create_count());
3703
3704 // Now verify that the cached data is not used.
3673 RunTransactionTestWithResponse(cache.http_cache(), kRangeGET_TransactionOK, 3705 RunTransactionTestWithResponse(cache.http_cache(), kRangeGET_TransactionOK,
3674 &headers); 3706 &headers);
3675 3707
3676 Verify206Response(headers, 40, 49); 3708 Verify206Response(headers, 40, 49);
3677 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 3709 EXPECT_EQ(2, cache.network_layer()->transaction_count());
3678 EXPECT_EQ(0, cache.disk_cache()->open_count()); 3710 EXPECT_EQ(1, cache.disk_cache()->open_count());
3679 EXPECT_EQ(2, cache.disk_cache()->create_count()); 3711 EXPECT_EQ(2, cache.disk_cache()->create_count());
3680 3712
3681 RemoveMockTransaction(&transaction); 3713 RemoveMockTransaction(&transaction);
3682 } 3714 }
3683 3715
3684 // Tests that we cache partial responses that lack content-length. 3716 // Tests that we cache partial responses that lack content-length.
3685 TEST(HttpCache, RangeGET_NoContentLength) { 3717 TEST(HttpCache, RangeGET_NoContentLength) {
3686 MockHttpCache cache; 3718 MockHttpCache cache;
3687 std::string headers; 3719 std::string headers;
3688 3720
(...skipping 3094 matching lines...) Expand 10 before | Expand all | Expand 10 after
6783 6815
6784 EXPECT_EQ(1, cache.network_layer()->transaction_count()); 6816 EXPECT_EQ(1, cache.network_layer()->transaction_count());
6785 6817
6786 // Send the request again and check that Resource-Freshness header is absent. 6818 // Send the request again and check that Resource-Freshness header is absent.
6787 stale_while_revalidate_transaction.handler = CheckResourceFreshnessAbsent; 6819 stale_while_revalidate_transaction.handler = CheckResourceFreshnessAbsent;
6788 6820
6789 RunTransactionTest(cache.http_cache(), stale_while_revalidate_transaction); 6821 RunTransactionTest(cache.http_cache(), stale_while_revalidate_transaction);
6790 6822
6791 EXPECT_EQ(2, cache.network_layer()->transaction_count()); 6823 EXPECT_EQ(2, cache.network_layer()->transaction_count());
6792 } 6824 }
OLDNEW
« no previous file with comments | « net/http/http_cache_transaction.cc ('k') | net/http/partial_data.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698