OLD | NEW |
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 <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <memory> | 10 #include <memory> |
(...skipping 7707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7718 // priority. | 7718 // priority. |
7719 ReadAndVerifyTransaction(trans.get(), transaction); | 7719 ReadAndVerifyTransaction(trans.get(), transaction); |
7720 | 7720 |
7721 EXPECT_EQ(HIGHEST, cache.network_layer()->last_create_transaction_priority()); | 7721 EXPECT_EQ(HIGHEST, cache.network_layer()->last_create_transaction_priority()); |
7722 | 7722 |
7723 RemoveMockTransaction(&kRangeGET_TransactionOK); | 7723 RemoveMockTransaction(&kRangeGET_TransactionOK); |
7724 } | 7724 } |
7725 | 7725 |
7726 namespace { | 7726 namespace { |
7727 | 7727 |
7728 void RunTransactionAndGetNetworkBytes(MockHttpCache& cache, | 7728 void RunTransactionAndGetNetworkBytes(MockHttpCache* cache, |
7729 const MockTransaction& trans_info, | 7729 const MockTransaction& trans_info, |
7730 int64_t* sent_bytes, | 7730 int64_t* sent_bytes, |
7731 int64_t* received_bytes) { | 7731 int64_t* received_bytes) { |
7732 RunTransactionTestBase( | 7732 RunTransactionTestBase( |
7733 cache.http_cache(), trans_info, MockHttpRequest(trans_info), nullptr, | 7733 cache->http_cache(), trans_info, MockHttpRequest(trans_info), nullptr, |
7734 NetLogWithSource(), nullptr, sent_bytes, received_bytes, nullptr); | 7734 NetLogWithSource(), nullptr, sent_bytes, received_bytes, nullptr); |
7735 } | 7735 } |
7736 | 7736 |
7737 } // namespace | 7737 } // namespace |
7738 | 7738 |
7739 TEST(HttpCache, NetworkBytesCacheMissAndThenHit) { | 7739 TEST(HttpCache, NetworkBytesCacheMissAndThenHit) { |
7740 MockHttpCache cache; | 7740 MockHttpCache cache; |
7741 | 7741 |
7742 MockTransaction transaction(kSimpleGET_Transaction); | 7742 MockTransaction transaction(kSimpleGET_Transaction); |
7743 int64_t sent, received; | 7743 int64_t sent, received; |
7744 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received); | 7744 RunTransactionAndGetNetworkBytes(&cache, transaction, &sent, &received); |
7745 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent); | 7745 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent); |
7746 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received); | 7746 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received); |
7747 | 7747 |
7748 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received); | 7748 RunTransactionAndGetNetworkBytes(&cache, transaction, &sent, &received); |
7749 EXPECT_EQ(0, sent); | 7749 EXPECT_EQ(0, sent); |
7750 EXPECT_EQ(0, received); | 7750 EXPECT_EQ(0, received); |
7751 } | 7751 } |
7752 | 7752 |
7753 TEST(HttpCache, NetworkBytesConditionalRequest304) { | 7753 TEST(HttpCache, NetworkBytesConditionalRequest304) { |
7754 MockHttpCache cache; | 7754 MockHttpCache cache; |
7755 | 7755 |
7756 ScopedMockTransaction transaction(kETagGET_Transaction); | 7756 ScopedMockTransaction transaction(kETagGET_Transaction); |
7757 int64_t sent, received; | 7757 int64_t sent, received; |
7758 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received); | 7758 RunTransactionAndGetNetworkBytes(&cache, transaction, &sent, &received); |
7759 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent); | 7759 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent); |
7760 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received); | 7760 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received); |
7761 | 7761 |
7762 transaction.load_flags = LOAD_VALIDATE_CACHE; | 7762 transaction.load_flags = LOAD_VALIDATE_CACHE; |
7763 transaction.handler = ETagGet_ConditionalRequest_Handler; | 7763 transaction.handler = ETagGet_ConditionalRequest_Handler; |
7764 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received); | 7764 RunTransactionAndGetNetworkBytes(&cache, transaction, &sent, &received); |
7765 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent); | 7765 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent); |
7766 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received); | 7766 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received); |
7767 } | 7767 } |
7768 | 7768 |
7769 TEST(HttpCache, NetworkBytesConditionalRequest200) { | 7769 TEST(HttpCache, NetworkBytesConditionalRequest200) { |
7770 MockHttpCache cache; | 7770 MockHttpCache cache; |
7771 | 7771 |
7772 MockTransaction transaction(kTypicalGET_Transaction); | 7772 MockTransaction transaction(kTypicalGET_Transaction); |
7773 transaction.request_headers = "Foo: bar\r\n"; | 7773 transaction.request_headers = "Foo: bar\r\n"; |
7774 transaction.response_headers = | 7774 transaction.response_headers = |
7775 "Date: Wed, 28 Nov 2007 09:40:09 GMT\n" | 7775 "Date: Wed, 28 Nov 2007 09:40:09 GMT\n" |
7776 "Last-Modified: Wed, 28 Nov 2007 00:40:09 GMT\n" | 7776 "Last-Modified: Wed, 28 Nov 2007 00:40:09 GMT\n" |
7777 "Etag: \"foopy\"\n" | 7777 "Etag: \"foopy\"\n" |
7778 "Cache-Control: max-age=0\n" | 7778 "Cache-Control: max-age=0\n" |
7779 "Vary: Foo\n"; | 7779 "Vary: Foo\n"; |
7780 AddMockTransaction(&transaction); | 7780 AddMockTransaction(&transaction); |
7781 int64_t sent, received; | 7781 int64_t sent, received; |
7782 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received); | 7782 RunTransactionAndGetNetworkBytes(&cache, transaction, &sent, &received); |
7783 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent); | 7783 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent); |
7784 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received); | 7784 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received); |
7785 | 7785 |
7786 RevalidationServer server; | 7786 RevalidationServer server; |
7787 transaction.handler = server.Handler; | 7787 transaction.handler = server.Handler; |
7788 transaction.request_headers = "Foo: none\r\n"; | 7788 transaction.request_headers = "Foo: none\r\n"; |
7789 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received); | 7789 RunTransactionAndGetNetworkBytes(&cache, transaction, &sent, &received); |
7790 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent); | 7790 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent); |
7791 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received); | 7791 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received); |
7792 | 7792 |
7793 RemoveMockTransaction(&transaction); | 7793 RemoveMockTransaction(&transaction); |
7794 } | 7794 } |
7795 | 7795 |
7796 TEST(HttpCache, NetworkBytesRange) { | 7796 TEST(HttpCache, NetworkBytesRange) { |
7797 MockHttpCache cache; | 7797 MockHttpCache cache; |
7798 AddMockTransaction(&kRangeGET_TransactionOK); | 7798 AddMockTransaction(&kRangeGET_TransactionOK); |
7799 MockTransaction transaction(kRangeGET_TransactionOK); | 7799 MockTransaction transaction(kRangeGET_TransactionOK); |
7800 | 7800 |
7801 // Read bytes 40-49 from the network. | 7801 // Read bytes 40-49 from the network. |
7802 int64_t sent, received; | 7802 int64_t sent, received; |
7803 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received); | 7803 RunTransactionAndGetNetworkBytes(&cache, transaction, &sent, &received); |
7804 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent); | 7804 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent); |
7805 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received); | 7805 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received); |
7806 | 7806 |
7807 // Read bytes 40-49 from the cache. | 7807 // Read bytes 40-49 from the cache. |
7808 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received); | 7808 RunTransactionAndGetNetworkBytes(&cache, transaction, &sent, &received); |
7809 EXPECT_EQ(0, sent); | 7809 EXPECT_EQ(0, sent); |
7810 EXPECT_EQ(0, received); | 7810 EXPECT_EQ(0, received); |
7811 base::RunLoop().RunUntilIdle(); | 7811 base::RunLoop().RunUntilIdle(); |
7812 | 7812 |
7813 // Read bytes 30-39 from the network. | 7813 // Read bytes 30-39 from the network. |
7814 transaction.request_headers = "Range: bytes = 30-39\r\n" EXTRA_HEADER; | 7814 transaction.request_headers = "Range: bytes = 30-39\r\n" EXTRA_HEADER; |
7815 transaction.data = "rg: 30-39 "; | 7815 transaction.data = "rg: 30-39 "; |
7816 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received); | 7816 RunTransactionAndGetNetworkBytes(&cache, transaction, &sent, &received); |
7817 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent); | 7817 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes, sent); |
7818 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received); | 7818 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes, received); |
7819 base::RunLoop().RunUntilIdle(); | 7819 base::RunLoop().RunUntilIdle(); |
7820 | 7820 |
7821 // Read bytes 20-29 and 50-59 from the network, bytes 30-49 from the cache. | 7821 // Read bytes 20-29 and 50-59 from the network, bytes 30-49 from the cache. |
7822 transaction.request_headers = "Range: bytes = 20-59\r\n" EXTRA_HEADER; | 7822 transaction.request_headers = "Range: bytes = 20-59\r\n" EXTRA_HEADER; |
7823 transaction.data = "rg: 20-29 rg: 30-39 rg: 40-49 rg: 50-59 "; | 7823 transaction.data = "rg: 20-29 rg: 30-39 rg: 40-49 rg: 50-59 "; |
7824 RunTransactionAndGetNetworkBytes(cache, transaction, &sent, &received); | 7824 RunTransactionAndGetNetworkBytes(&cache, transaction, &sent, &received); |
7825 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes * 2, sent); | 7825 EXPECT_EQ(MockNetworkTransaction::kTotalSentBytes * 2, sent); |
7826 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes * 2, received); | 7826 EXPECT_EQ(MockNetworkTransaction::kTotalReceivedBytes * 2, received); |
7827 | 7827 |
7828 RemoveMockTransaction(&kRangeGET_TransactionOK); | 7828 RemoveMockTransaction(&kRangeGET_TransactionOK); |
7829 } | 7829 } |
7830 | 7830 |
7831 class HttpCachePrefetchValidationTest : public ::testing::Test { | 7831 class HttpCachePrefetchValidationTest : public ::testing::Test { |
7832 protected: | 7832 protected: |
7833 static const int kNumSecondsPerMinute = 60; | 7833 static const int kNumSecondsPerMinute = 60; |
7834 static const int kMaxAgeSecs = 100; | 7834 static const int kMaxAgeSecs = 100; |
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8255 ASSERT_TRUE(attrs->GetDictionary( | 8255 ASSERT_TRUE(attrs->GetDictionary( |
8256 base::trace_event::MemoryAllocatorDump::kNameSize, &size_attrs)); | 8256 base::trace_event::MemoryAllocatorDump::kNameSize, &size_attrs)); |
8257 std::string size; | 8257 std::string size; |
8258 ASSERT_TRUE(size_attrs->GetString("value", &size)); | 8258 ASSERT_TRUE(size_attrs->GetString("value", &size)); |
8259 int actual_size = 0; | 8259 int actual_size = 0; |
8260 ASSERT_TRUE(base::HexStringToInt(size, &actual_size)); | 8260 ASSERT_TRUE(base::HexStringToInt(size, &actual_size)); |
8261 ASSERT_LT(0, actual_size); | 8261 ASSERT_LT(0, actual_size); |
8262 } | 8262 } |
8263 | 8263 |
8264 } // namespace net | 8264 } // namespace net |
OLD | NEW |