OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "components/precache/core/precache_fetcher.h" | 5 #include "components/precache/core/precache_fetcher.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <cstring> | 9 #include <cstring> |
10 #include <memory> | 10 #include <memory> |
(...skipping 1076 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1087 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); | 1087 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); |
1088 | 1088 |
1089 EXPECT_TRUE(precache_delegate_.was_on_done_called()); | 1089 EXPECT_TRUE(precache_delegate_.was_on_done_called()); |
1090 | 1090 |
1091 histogram.ExpectUniqueSample("Precache.Fetch.PercentCompleted", 100, 1); | 1091 histogram.ExpectUniqueSample("Precache.Fetch.PercentCompleted", 100, 1); |
1092 histogram.ExpectUniqueSample("Precache.Fetch.ResponseBytes.Total", | 1092 histogram.ExpectUniqueSample("Precache.Fetch.ResponseBytes.Total", |
1093 url_callback_.total_response_bytes(), 1); | 1093 url_callback_.total_response_bytes(), 1); |
1094 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1); | 1094 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1); |
1095 } | 1095 } |
1096 | 1096 |
| 1097 TEST_F(PrecacheFetcherTest, TopResourcesCount_ResourceBitset) { |
| 1098 SetDefaultFlags(); |
| 1099 |
| 1100 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work( |
| 1101 new PrecacheUnfinishedWork()); |
| 1102 unfinished_work->set_start_time(base::Time::UnixEpoch().ToInternalValue()); |
| 1103 unfinished_work->add_top_host()->set_hostname("good-manifest.com"); |
| 1104 |
| 1105 PrecacheConfigurationSettings config; |
| 1106 config.set_top_resources_count(2); |
| 1107 |
| 1108 PrecacheManifest good_manifest; |
| 1109 good_manifest.add_resource()->set_url("http://good-manifest.com/retrieved"); |
| 1110 good_manifest.add_resource()->set_url("http://good-manifest.com/skipped"); |
| 1111 good_manifest.add_resource()->set_url("http://good-manifest.com/retrieved"); |
| 1112 good_manifest.add_resource()->set_url("http://good-manifest.com/skipped"); |
| 1113 good_manifest.add_resource()->set_url("http://good-manifest.com/retrieved"); |
| 1114 (*good_manifest.mutable_experiments() |
| 1115 ->mutable_resources_by_experiment_group())[kExperimentID] |
| 1116 .set_deprecated_bitset(0b10101); |
| 1117 |
| 1118 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(), |
| 1119 net::HTTP_OK, net::URLRequestStatus::SUCCESS); |
| 1120 factory_.SetFakeResponse(GURL(kGoodManifestURL), |
| 1121 good_manifest.SerializeAsString(), net::HTTP_OK, |
| 1122 net::URLRequestStatus::SUCCESS); |
| 1123 factory_.SetFakeResponse(GURL("http://good-manifest.com/retrieved"), "good", |
| 1124 net::HTTP_OK, net::URLRequestStatus::SUCCESS); |
| 1125 |
| 1126 base::HistogramTester histogram; |
| 1127 |
| 1128 { |
| 1129 PrecacheFetcher precache_fetcher( |
| 1130 request_context_.get(), GURL(), std::string(), |
| 1131 std::move(unfinished_work), kExperimentID, |
| 1132 precache_database_.GetWeakPtr(), task_runner(), &precache_delegate_); |
| 1133 precache_fetcher.Start(); |
| 1134 |
| 1135 base::RunLoop().RunUntilIdle(); |
| 1136 |
| 1137 // Destroy the PrecacheFetcher after it has finished, to record metrics. |
| 1138 } |
| 1139 |
| 1140 std::vector<GURL> expected_requested_urls; |
| 1141 expected_requested_urls.emplace_back(kConfigURL); |
| 1142 expected_requested_urls.emplace_back(kGoodManifestURL); |
| 1143 expected_requested_urls.emplace_back("http://good-manifest.com/retrieved"); |
| 1144 expected_requested_urls.emplace_back("http://good-manifest.com/retrieved"); |
| 1145 |
| 1146 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); |
| 1147 |
| 1148 EXPECT_TRUE(precache_delegate_.was_on_done_called()); |
| 1149 |
| 1150 histogram.ExpectUniqueSample("Precache.Fetch.PercentCompleted", 100, 1); |
| 1151 histogram.ExpectUniqueSample("Precache.Fetch.ResponseBytes.Total", |
| 1152 url_callback_.total_response_bytes(), 1); |
| 1153 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 1); |
| 1154 } |
| 1155 |
1097 // MaxBytesPerResource is impossible to test with net::FakeURLFetcherFactory: | 1156 // MaxBytesPerResource is impossible to test with net::FakeURLFetcherFactory: |
1098 // | 1157 // |
1099 // - The PrecacheFetcher::Fetcher's max_bytes logic only applies to network | 1158 // - The PrecacheFetcher::Fetcher's max_bytes logic only applies to network |
1100 // requests, and not cached requests. | 1159 // requests, and not cached requests. |
1101 // - Forcing PrecacheFetcher::Fetcher to do a network request (i.e. a second | 1160 // - Forcing PrecacheFetcher::Fetcher to do a network request (i.e. a second |
1102 // request for the same URL) requires either setting a custom error of | 1161 // request for the same URL) requires either setting a custom error of |
1103 // ERR_CACHE_MISS or setting a custom ETag response header, neither of which | 1162 // ERR_CACHE_MISS or setting a custom ETag response header, neither of which |
1104 // is possible under FakeURLFetcherFactory. | 1163 // is possible under FakeURLFetcherFactory. |
1105 // | 1164 // |
1106 // PrecacheFetcherFetcherTest.ResourceTooBig tests the bulk of the code. We'll | 1165 // PrecacheFetcherFetcherTest.ResourceTooBig tests the bulk of the code. We'll |
(...skipping 854 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1961 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); | 2020 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); |
1962 | 2021 |
1963 EXPECT_TRUE(precache_delegate_.was_on_done_called()); | 2022 EXPECT_TRUE(precache_delegate_.was_on_done_called()); |
1964 | 2023 |
1965 histogram.ExpectTotalCount("Precache.Fetch.PercentCompleted", 2); | 2024 histogram.ExpectTotalCount("Precache.Fetch.PercentCompleted", 2); |
1966 histogram.ExpectTotalCount("Precache.Fetch.ResponseBytes.Total", 2); | 2025 histogram.ExpectTotalCount("Precache.Fetch.ResponseBytes.Total", 2); |
1967 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 2); | 2026 histogram.ExpectTotalCount("Precache.Fetch.TimeToComplete", 2); |
1968 } | 2027 } |
1969 | 2028 |
1970 } // namespace precache | 2029 } // namespace precache |
OLD | NEW |