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

Side by Side Diff: chrome/browser/predictors/resource_prefetcher_unittest.cc

Issue 2688633002: predictors: Add prefetching hit/miss histograms. (Closed)
Patch Set: Remove duplicated duplicated comment comment. Created 3 years, 10 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/predictors/resource_prefetcher.h" 5 #include "chrome/browser/predictors/resource_prefetcher.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <string> 10 #include <string>
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 DISALLOW_COPY_AND_ASSIGN(TestResourcePrefetcher); 54 DISALLOW_COPY_AND_ASSIGN(TestResourcePrefetcher);
55 }; 55 };
56 56
57 57
58 // Delegate for ResourcePrefetcher. 58 // Delegate for ResourcePrefetcher.
59 class TestResourcePrefetcherDelegate : public ResourcePrefetcher::Delegate { 59 class TestResourcePrefetcherDelegate : public ResourcePrefetcher::Delegate {
60 public: 60 public:
61 explicit TestResourcePrefetcherDelegate(base::MessageLoop* loop) 61 explicit TestResourcePrefetcherDelegate(base::MessageLoop* loop)
62 : request_context_getter_( 62 : request_context_getter_(
63 new net::TestURLRequestContextGetter(loop->task_runner())) {} 63 new net::TestURLRequestContextGetter(loop->task_runner())) {}
64 ~TestResourcePrefetcherDelegate() { } 64 ~TestResourcePrefetcherDelegate() override {}
65 65
66 net::URLRequestContext* GetURLRequestContext() override { 66 net::URLRequestContext* GetURLRequestContext() override {
67 return request_context_getter_->GetURLRequestContext(); 67 return request_context_getter_->GetURLRequestContext();
68 } 68 }
69 69
70 MOCK_METHOD1(ResourcePrefetcherFinished, 70 void ResourcePrefetcherFinished(
71 void(ResourcePrefetcher* prefetcher)); 71 ResourcePrefetcher* prefetcher,
72 std::unique_ptr<ResourcePrefetcher::PrefetcherStats> stats) override {
73 prefetcher_ = prefetcher;
74 }
75
76 bool ResourcePrefetcherFinishedCalled(ResourcePrefetcher* for_prefetcher) {
77 ResourcePrefetcher* prefetcher = prefetcher_;
78 prefetcher_ = nullptr;
79 return prefetcher == for_prefetcher;
80 }
72 81
73 private: 82 private:
74 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_; 83 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_;
84 ResourcePrefetcher* prefetcher_;
75 85
76 DISALLOW_COPY_AND_ASSIGN(TestResourcePrefetcherDelegate); 86 DISALLOW_COPY_AND_ASSIGN(TestResourcePrefetcherDelegate);
77 }; 87 };
78 88
79 89
80 // The following unittest tests most of the ResourcePrefetcher except for: 90 // The following unittest tests most of the ResourcePrefetcher except for:
81 // 1. Call to ReadFullResponse. There does not seem to be a good way to test the 91 // 1. Call to ReadFullResponse. There does not seem to be a good way to test the
82 // function in a unittest, and probably requires a browser_test. 92 // function in a unittest, and probably requires a browser_test.
83 // 2. Setting of the Prefetch status for cache vs non cache. 93 // 2. Setting of the Prefetch status for cache vs non cache.
84 class ResourcePrefetcherTest : public testing::Test { 94 class ResourcePrefetcherTest : public testing::Test {
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 OnResponse("http://yahoo.com/resource5.png"); 224 OnResponse("http://yahoo.com/resource5.png");
215 CheckPrefetcherState(3, 0, 2); 225 CheckPrefetcherState(3, 0, 2);
216 226
217 OnCertificateRequested("http://m.google.com/resource4.png"); 227 OnCertificateRequested("http://m.google.com/resource4.png");
218 CheckPrefetcherState(2, 0, 2); 228 CheckPrefetcherState(2, 0, 2);
219 229
220 OnAuthRequired("http://m.google.com/resource3.css"); 230 OnAuthRequired("http://m.google.com/resource3.css");
221 CheckPrefetcherState(1, 0, 1); 231 CheckPrefetcherState(1, 0, 1);
222 232
223 // Expect the final call. 233 // Expect the final call.
224 EXPECT_CALL(prefetcher_delegate_, 234 EXPECT_TRUE(
alexilin 2017/02/13 17:07:05 This test fails. EXPECT_CALL introduces assert th
Benoit L 2017/02/13 17:32:51 Done.
225 ResourcePrefetcherFinished(Eq(prefetcher_.get()))); 235 prefetcher_delegate_.ResourcePrefetcherFinishedCalled(prefetcher_.get()));
226 236
227 OnResponse("http://yahoo.com/resource3.png"); 237 OnResponse("http://yahoo.com/resource3.png");
228 CheckPrefetcherState(0, 0, 0); 238 CheckPrefetcherState(0, 0, 0);
229 } 239 }
230 240
231 TEST_F(ResourcePrefetcherTest, TestPrefetcherStopped) { 241 TEST_F(ResourcePrefetcherTest, TestPrefetcherStopped) {
232 GURL main_frame_url("http://www.google.com"); 242 GURL main_frame_url("http://www.google.com");
233 std::vector<GURL> urls = {GURL("http://www.google.com/resource1.html"), 243 std::vector<GURL> urls = {GURL("http://www.google.com/resource1.html"),
234 GURL("http://www.google.com/resource2.png"), 244 GURL("http://www.google.com/resource2.png"),
235 GURL("http://yahoo.com/resource1.png"), 245 GURL("http://yahoo.com/resource1.png"),
(...skipping 22 matching lines...) Expand all
258 OnResponse("http://www.google.com/resource2.png"); 268 OnResponse("http://www.google.com/resource2.png");
259 CheckPrefetcherState(3, 1, 2); 269 CheckPrefetcherState(3, 1, 2);
260 270
261 OnResponse("http://yahoo.com/resource1.png"); 271 OnResponse("http://yahoo.com/resource1.png");
262 CheckPrefetcherState(2, 1, 2); 272 CheckPrefetcherState(2, 1, 2);
263 273
264 OnResponse("http://yahoo.com/resource2.png"); 274 OnResponse("http://yahoo.com/resource2.png");
265 CheckPrefetcherState(1, 1, 1); 275 CheckPrefetcherState(1, 1, 1);
266 276
267 // Expect the final call. 277 // Expect the final call.
268 EXPECT_CALL(prefetcher_delegate_, 278 EXPECT_TRUE(
269 ResourcePrefetcherFinished(Eq(prefetcher_.get()))); 279 prefetcher_delegate_.ResourcePrefetcherFinishedCalled(prefetcher_.get()));
270 280
271 OnResponse("http://m.google.com/resource1.jpg"); 281 OnResponse("http://m.google.com/resource1.jpg");
272 CheckPrefetcherState(0, 1, 0); 282 CheckPrefetcherState(0, 1, 0);
273 } 283 }
274 284
275 TEST_F(ResourcePrefetcherTest, TestHistogramsCollected) { 285 TEST_F(ResourcePrefetcherTest, TestHistogramsCollected) {
276 base::HistogramTester histogram_tester; 286 base::HistogramTester histogram_tester;
277 GURL main_frame_url("http://www.google.com"); 287 GURL main_frame_url("http://www.google.com");
278 std::vector<GURL> urls = {GURL("http://www.google.com/resource1.png"), 288 std::vector<GURL> urls = {GURL("http://www.google.com/resource1.png"),
279 GURL("http://www.google.com/resource2.png"), 289 GURL("http://www.google.com/resource2.png"),
(...skipping 24 matching lines...) Expand all
304 AddStartUrlRequestExpectation("http://www.google.com/resource6.png"); 314 AddStartUrlRequestExpectation("http://www.google.com/resource6.png");
305 OnAuthRequired("http://www.google.com/resource3.png"); 315 OnAuthRequired("http://www.google.com/resource3.png");
306 316
307 OnCertificateRequested("http://www.google.com/resource4.png"); 317 OnCertificateRequested("http://www.google.com/resource4.png");
308 318
309 OnSSLCertificateError("http://www.google.com/resource5.png"); 319 OnSSLCertificateError("http://www.google.com/resource5.png");
310 histogram_tester.ExpectTotalCount( 320 histogram_tester.ExpectTotalCount(
311 internal::kResourcePrefetchPredictorCachePatternHistogram, 1); 321 internal::kResourcePrefetchPredictorCachePatternHistogram, 1);
312 322
313 // Expect the final call. 323 // Expect the final call.
314 EXPECT_CALL(prefetcher_delegate_, 324 EXPECT_TRUE(
315 ResourcePrefetcherFinished(Eq(prefetcher_.get()))); 325 prefetcher_delegate_.ResourcePrefetcherFinishedCalled(prefetcher_.get()));
316 326
317 OnResponse("http://www.google.com/resource6.png"); 327 OnResponse("http://www.google.com/resource6.png");
318 histogram_tester.ExpectTotalCount( 328 histogram_tester.ExpectTotalCount(
319 internal::kResourcePrefetchPredictorCachePatternHistogram, 2); 329 internal::kResourcePrefetchPredictorCachePatternHistogram, 2);
320 histogram_tester.ExpectBucketCount( 330 histogram_tester.ExpectBucketCount(
321 internal::kResourcePrefetchPredictorPrefetchedCountHistogram, 2, 1); 331 internal::kResourcePrefetchPredictorPrefetchedCountHistogram, 2, 1);
322 histogram_tester.ExpectTotalCount( 332 histogram_tester.ExpectTotalCount(
323 internal::kResourcePrefetchPredictorPrefetchedSizeHistogram, 1); 333 internal::kResourcePrefetchPredictorPrefetchedSizeHistogram, 1);
324 } 334 }
325 335
326 } // namespace predictors 336 } // namespace predictors
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698