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

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

Issue 2738613003: predictors: Add Manifest table to ResourcePrefetchPredictor. (Closed)
Patch Set: Add caution message. Created 3 years, 9 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_prefetch_predictor.h" 5 #include "chrome/browser/predictors/resource_prefetch_predictor.h"
6 6
7 #include <iostream> 7 #include <iostream>
8 #include <memory> 8 #include <memory>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 23 matching lines...) Expand all
34 using testing::SetArgPointee; 34 using testing::SetArgPointee;
35 using testing::StrictMock; 35 using testing::StrictMock;
36 using testing::UnorderedElementsAre; 36 using testing::UnorderedElementsAre;
37 37
38 namespace predictors { 38 namespace predictors {
39 39
40 using URLRequestSummary = ResourcePrefetchPredictor::URLRequestSummary; 40 using URLRequestSummary = ResourcePrefetchPredictor::URLRequestSummary;
41 using PageRequestSummary = ResourcePrefetchPredictor::PageRequestSummary; 41 using PageRequestSummary = ResourcePrefetchPredictor::PageRequestSummary;
42 using PrefetchDataMap = ResourcePrefetchPredictorTables::PrefetchDataMap; 42 using PrefetchDataMap = ResourcePrefetchPredictorTables::PrefetchDataMap;
43 using RedirectDataMap = ResourcePrefetchPredictorTables::RedirectDataMap; 43 using RedirectDataMap = ResourcePrefetchPredictorTables::RedirectDataMap;
44 using ManifestDataMap = ResourcePrefetchPredictorTables::ManifestDataMap;
44 45
45 scoped_refptr<net::HttpResponseHeaders> MakeResponseHeaders( 46 scoped_refptr<net::HttpResponseHeaders> MakeResponseHeaders(
46 const char* headers) { 47 const char* headers) {
47 return make_scoped_refptr(new net::HttpResponseHeaders( 48 return make_scoped_refptr(new net::HttpResponseHeaders(
48 net::HttpUtil::AssembleRawHeaders(headers, strlen(headers)))); 49 net::HttpUtil::AssembleRawHeaders(headers, strlen(headers))));
49 } 50 }
50 51
51 class EmptyURLRequestDelegate : public net::URLRequest::Delegate { 52 class EmptyURLRequestDelegate : public net::URLRequest::Delegate {
52 void OnResponseStarted(net::URLRequest* request, int net_error) override {} 53 void OnResponseStarted(net::URLRequest* request, int net_error) override {}
53 void OnReadCompleted(net::URLRequest* request, int bytes_read) override {} 54 void OnReadCompleted(net::URLRequest* request, int bytes_read) override {}
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 private: 124 private:
124 net::HttpResponseInfo response_info_; 125 net::HttpResponseInfo response_info_;
125 std::string mime_type_; 126 std::string mime_type_;
126 }; 127 };
127 128
128 class MockResourcePrefetchPredictorTables 129 class MockResourcePrefetchPredictorTables
129 : public ResourcePrefetchPredictorTables { 130 : public ResourcePrefetchPredictorTables {
130 public: 131 public:
131 MockResourcePrefetchPredictorTables() { } 132 MockResourcePrefetchPredictorTables() { }
132 133
133 MOCK_METHOD4(GetAllData, 134 MOCK_METHOD5(GetAllData,
134 void(PrefetchDataMap* url_data_map, 135 void(PrefetchDataMap* url_data_map,
135 PrefetchDataMap* host_data_map, 136 PrefetchDataMap* host_data_map,
136 RedirectDataMap* url_redirect_data_map, 137 RedirectDataMap* url_redirect_data_map,
137 RedirectDataMap* host_redirect_data_map)); 138 RedirectDataMap* host_redirect_data_map,
139 ManifestDataMap* manifest_data_map));
138 MOCK_METHOD4(UpdateData, 140 MOCK_METHOD4(UpdateData,
139 void(const PrefetchData& url_data, 141 void(const PrefetchData& url_data,
140 const PrefetchData& host_data, 142 const PrefetchData& host_data,
141 const RedirectData& url_redirect_data, 143 const RedirectData& url_redirect_data,
142 const RedirectData& host_redirect_data)); 144 const RedirectData& host_redirect_data));
143 MOCK_METHOD2(DeleteResourceData, 145 MOCK_METHOD2(DeleteResourceData,
144 void(const std::vector<std::string>& urls, 146 void(const std::vector<std::string>& urls,
145 const std::vector<std::string>& hosts)); 147 const std::vector<std::string>& hosts));
146 MOCK_METHOD2(DeleteSingleResourceDataPoint, 148 MOCK_METHOD2(DeleteSingleResourceDataPoint,
147 void(const std::string& key, PrefetchKeyType key_type)); 149 void(const std::string& key, PrefetchKeyType key_type));
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 std::unique_ptr<TestingProfile> profile_; 252 std::unique_ptr<TestingProfile> profile_;
251 net::TestURLRequestContext url_request_context_; 253 net::TestURLRequestContext url_request_context_;
252 254
253 std::unique_ptr<ResourcePrefetchPredictor> predictor_; 255 std::unique_ptr<ResourcePrefetchPredictor> predictor_;
254 scoped_refptr<StrictMock<MockResourcePrefetchPredictorTables>> mock_tables_; 256 scoped_refptr<StrictMock<MockResourcePrefetchPredictorTables>> mock_tables_;
255 257
256 PrefetchDataMap test_url_data_; 258 PrefetchDataMap test_url_data_;
257 PrefetchDataMap test_host_data_; 259 PrefetchDataMap test_host_data_;
258 RedirectDataMap test_url_redirect_data_; 260 RedirectDataMap test_url_redirect_data_;
259 RedirectDataMap test_host_redirect_data_; 261 RedirectDataMap test_host_redirect_data_;
262 ManifestDataMap test_manifest_data_;
260 PrefetchData empty_resource_data_; 263 PrefetchData empty_resource_data_;
261 RedirectData empty_redirect_data_; 264 RedirectData empty_redirect_data_;
262 265
263 MockURLRequestJobFactory url_request_job_factory_; 266 MockURLRequestJobFactory url_request_job_factory_;
264 EmptyURLRequestDelegate url_request_delegate_; 267 EmptyURLRequestDelegate url_request_delegate_;
265 268
266 std::unique_ptr<base::HistogramTester> histogram_tester_; 269 std::unique_ptr<base::HistogramTester> histogram_tester_;
267 }; 270 };
268 271
269 ResourcePrefetchPredictorTest::ResourcePrefetchPredictorTest() 272 ResourcePrefetchPredictorTest::ResourcePrefetchPredictorTest()
(...skipping 16 matching lines...) Expand all
286 EXPECT_TRUE(HistoryServiceFactory::GetForProfile( 289 EXPECT_TRUE(HistoryServiceFactory::GetForProfile(
287 profile_.get(), ServiceAccessType::EXPLICIT_ACCESS)); 290 profile_.get(), ServiceAccessType::EXPLICIT_ACCESS));
288 // Initialize the predictor with empty data. 291 // Initialize the predictor with empty data.
289 ResetPredictor(); 292 ResetPredictor();
290 EXPECT_EQ(predictor_->initialization_state_, 293 EXPECT_EQ(predictor_->initialization_state_,
291 ResourcePrefetchPredictor::NOT_INITIALIZED); 294 ResourcePrefetchPredictor::NOT_INITIALIZED);
292 EXPECT_CALL(*mock_tables_.get(), 295 EXPECT_CALL(*mock_tables_.get(),
293 GetAllData(Pointee(ContainerEq(PrefetchDataMap())), 296 GetAllData(Pointee(ContainerEq(PrefetchDataMap())),
294 Pointee(ContainerEq(PrefetchDataMap())), 297 Pointee(ContainerEq(PrefetchDataMap())),
295 Pointee(ContainerEq(RedirectDataMap())), 298 Pointee(ContainerEq(RedirectDataMap())),
296 Pointee(ContainerEq(RedirectDataMap())))); 299 Pointee(ContainerEq(RedirectDataMap())),
300 Pointee(ContainerEq(ManifestDataMap()))));
297 InitializePredictor(); 301 InitializePredictor();
298 EXPECT_TRUE(predictor_->inflight_navigations_.empty()); 302 EXPECT_TRUE(predictor_->inflight_navigations_.empty());
299 EXPECT_EQ(predictor_->initialization_state_, 303 EXPECT_EQ(predictor_->initialization_state_,
300 ResourcePrefetchPredictor::INITIALIZED); 304 ResourcePrefetchPredictor::INITIALIZED);
301 305
302 url_request_context_.set_job_factory(&url_request_job_factory_); 306 url_request_context_.set_job_factory(&url_request_job_factory_);
303 307
304 histogram_tester_.reset(new base::HistogramTester()); 308 histogram_tester_.reset(new base::HistogramTester());
305 } 309 }
306 310
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 498
495 // Tests that the history and the db tables data are loaded correctly. 499 // Tests that the history and the db tables data are loaded correctly.
496 TEST_F(ResourcePrefetchPredictorTest, LazilyInitializeWithData) { 500 TEST_F(ResourcePrefetchPredictorTest, LazilyInitializeWithData) {
497 AddUrlToHistory("http://www.google.com/", 4); 501 AddUrlToHistory("http://www.google.com/", 4);
498 AddUrlToHistory("http://www.yahoo.com/", 2); 502 AddUrlToHistory("http://www.yahoo.com/", 2);
499 503
500 EXPECT_CALL(*mock_tables_.get(), 504 EXPECT_CALL(*mock_tables_.get(),
501 GetAllData(Pointee(ContainerEq(PrefetchDataMap())), 505 GetAllData(Pointee(ContainerEq(PrefetchDataMap())),
502 Pointee(ContainerEq(PrefetchDataMap())), 506 Pointee(ContainerEq(PrefetchDataMap())),
503 Pointee(ContainerEq(RedirectDataMap())), 507 Pointee(ContainerEq(RedirectDataMap())),
504 Pointee(ContainerEq(RedirectDataMap())))) 508 Pointee(ContainerEq(RedirectDataMap())),
509 Pointee(ContainerEq(ManifestDataMap()))))
505 .WillOnce(DoAll(SetArgPointee<0>(test_url_data_), 510 .WillOnce(DoAll(SetArgPointee<0>(test_url_data_),
506 SetArgPointee<1>(test_host_data_), 511 SetArgPointee<1>(test_host_data_),
507 SetArgPointee<2>(test_url_redirect_data_), 512 SetArgPointee<2>(test_url_redirect_data_),
508 SetArgPointee<3>(test_host_redirect_data_))); 513 SetArgPointee<3>(test_host_redirect_data_),
514 SetArgPointee<4>(test_manifest_data_)));
509 515
510 ResetPredictor(); 516 ResetPredictor();
511 InitializePredictor(); 517 InitializePredictor();
512 518
513 // Test that the internal variables correctly initialized. 519 // Test that the internal variables correctly initialized.
514 EXPECT_EQ(predictor_->initialization_state_, 520 EXPECT_EQ(predictor_->initialization_state_,
515 ResourcePrefetchPredictor::INITIALIZED); 521 ResourcePrefetchPredictor::INITIALIZED);
516 EXPECT_TRUE(predictor_->inflight_navigations_.empty()); 522 EXPECT_TRUE(predictor_->inflight_navigations_.empty());
517 523
518 EXPECT_EQ(test_url_data_, *predictor_->url_table_cache_); 524 EXPECT_EQ(test_url_data_, *predictor_->url_table_cache_);
519 EXPECT_EQ(test_host_data_, *predictor_->host_table_cache_); 525 EXPECT_EQ(test_host_data_, *predictor_->host_table_cache_);
520 EXPECT_EQ(test_url_redirect_data_, *predictor_->url_redirect_table_cache_); 526 EXPECT_EQ(test_url_redirect_data_, *predictor_->url_redirect_table_cache_);
521 EXPECT_EQ(test_host_redirect_data_, *predictor_->host_redirect_table_cache_); 527 EXPECT_EQ(test_host_redirect_data_, *predictor_->host_redirect_table_cache_);
528 EXPECT_EQ(test_manifest_data_, *predictor_->manifest_table_cache_);
522 } 529 }
523 530
524 // Single navigation but history count is low, so should not record. 531 // Single navigation but history count is low, so should not record.
525 TEST_F(ResourcePrefetchPredictorTest, NavigationNotRecorded) { 532 TEST_F(ResourcePrefetchPredictorTest, NavigationNotRecorded) {
526 const int kVisitCount = 1; 533 const int kVisitCount = 1;
527 AddUrlToHistory("https://www.google.com", kVisitCount); 534 AddUrlToHistory("https://www.google.com", kVisitCount);
528 535
529 URLRequestSummary main_frame = 536 URLRequestSummary main_frame =
530 CreateURLRequestSummary(1, "http://www.google.com"); 537 CreateURLRequestSummary(1, "http://www.google.com");
531 predictor_->RecordURLRequest(main_frame); 538 predictor_->RecordURLRequest(main_frame);
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 // Tests that navigation is recorded correctly for URL already present in 667 // Tests that navigation is recorded correctly for URL already present in
661 // the database cache. 668 // the database cache.
662 TEST_F(ResourcePrefetchPredictorTest, NavigationUrlInDB) { 669 TEST_F(ResourcePrefetchPredictorTest, NavigationUrlInDB) {
663 const int kVisitCount = 4; 670 const int kVisitCount = 4;
664 AddUrlToHistory("http://www.google.com", kVisitCount); 671 AddUrlToHistory("http://www.google.com", kVisitCount);
665 672
666 EXPECT_CALL(*mock_tables_.get(), 673 EXPECT_CALL(*mock_tables_.get(),
667 GetAllData(Pointee(ContainerEq(PrefetchDataMap())), 674 GetAllData(Pointee(ContainerEq(PrefetchDataMap())),
668 Pointee(ContainerEq(PrefetchDataMap())), 675 Pointee(ContainerEq(PrefetchDataMap())),
669 Pointee(ContainerEq(RedirectDataMap())), 676 Pointee(ContainerEq(RedirectDataMap())),
670 Pointee(ContainerEq(RedirectDataMap())))) 677 Pointee(ContainerEq(RedirectDataMap())),
678 Pointee(ContainerEq(ManifestDataMap()))))
671 .WillOnce(DoAll(SetArgPointee<0>(test_url_data_), 679 .WillOnce(DoAll(SetArgPointee<0>(test_url_data_),
672 SetArgPointee<1>(test_host_data_))); 680 SetArgPointee<1>(test_host_data_)));
673 ResetPredictor(); 681 ResetPredictor();
674 InitializePredictor(); 682 InitializePredictor();
675 EXPECT_EQ(3U, predictor_->url_table_cache_->size()); 683 EXPECT_EQ(3U, predictor_->url_table_cache_->size());
676 EXPECT_EQ(2U, predictor_->host_table_cache_->size()); 684 EXPECT_EQ(2U, predictor_->host_table_cache_->size());
677 685
678 URLRequestSummary main_frame = CreateURLRequestSummary( 686 URLRequestSummary main_frame = CreateURLRequestSummary(
679 1, "http://www.google.com", "http://www.google.com", 687 1, "http://www.google.com", "http://www.google.com",
680 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false); 688 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false);
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 773
766 // Tests that a URL is deleted before another is added if the cache is full. 774 // Tests that a URL is deleted before another is added if the cache is full.
767 TEST_F(ResourcePrefetchPredictorTest, NavigationUrlNotInDBAndDBFull) { 775 TEST_F(ResourcePrefetchPredictorTest, NavigationUrlNotInDBAndDBFull) {
768 const int kVisitCount = 4; 776 const int kVisitCount = 4;
769 AddUrlToHistory("http://www.nike.com/", kVisitCount); 777 AddUrlToHistory("http://www.nike.com/", kVisitCount);
770 778
771 EXPECT_CALL(*mock_tables_.get(), 779 EXPECT_CALL(*mock_tables_.get(),
772 GetAllData(Pointee(ContainerEq(PrefetchDataMap())), 780 GetAllData(Pointee(ContainerEq(PrefetchDataMap())),
773 Pointee(ContainerEq(PrefetchDataMap())), 781 Pointee(ContainerEq(PrefetchDataMap())),
774 Pointee(ContainerEq(RedirectDataMap())), 782 Pointee(ContainerEq(RedirectDataMap())),
775 Pointee(ContainerEq(RedirectDataMap())))) 783 Pointee(ContainerEq(RedirectDataMap())),
784 Pointee(ContainerEq(ManifestDataMap()))))
776 .WillOnce(DoAll(SetArgPointee<0>(test_url_data_), 785 .WillOnce(DoAll(SetArgPointee<0>(test_url_data_),
777 SetArgPointee<1>(test_host_data_))); 786 SetArgPointee<1>(test_host_data_)));
778 ResetPredictor(); 787 ResetPredictor();
779 InitializePredictor(); 788 InitializePredictor();
780 EXPECT_EQ(3U, predictor_->url_table_cache_->size()); 789 EXPECT_EQ(3U, predictor_->url_table_cache_->size());
781 EXPECT_EQ(2U, predictor_->host_table_cache_->size()); 790 EXPECT_EQ(2U, predictor_->host_table_cache_->size());
782 791
783 URLRequestSummary main_frame = CreateURLRequestSummary( 792 URLRequestSummary main_frame = CreateURLRequestSummary(
784 1, "http://www.nike.com", "http://www.nike.com", 793 1, "http://www.nike.com", "http://www.nike.com",
785 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false); 794 content::RESOURCE_TYPE_MAIN_FRAME, net::MEDIUM, std::string(), false);
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
885 // Tests that redirect is recorded correctly for URL already present in 894 // Tests that redirect is recorded correctly for URL already present in
886 // the database cache. 895 // the database cache.
887 TEST_F(ResourcePrefetchPredictorTest, RedirectUrlInDB) { 896 TEST_F(ResourcePrefetchPredictorTest, RedirectUrlInDB) {
888 const int kVisitCount = 7; 897 const int kVisitCount = 7;
889 AddUrlToHistory("https://facebook.com/google", kVisitCount); 898 AddUrlToHistory("https://facebook.com/google", kVisitCount);
890 899
891 EXPECT_CALL(*mock_tables_.get(), 900 EXPECT_CALL(*mock_tables_.get(),
892 GetAllData(Pointee(ContainerEq(PrefetchDataMap())), 901 GetAllData(Pointee(ContainerEq(PrefetchDataMap())),
893 Pointee(ContainerEq(PrefetchDataMap())), 902 Pointee(ContainerEq(PrefetchDataMap())),
894 Pointee(ContainerEq(RedirectDataMap())), 903 Pointee(ContainerEq(RedirectDataMap())),
895 Pointee(ContainerEq(RedirectDataMap())))) 904 Pointee(ContainerEq(RedirectDataMap())),
905 Pointee(ContainerEq(ManifestDataMap()))))
896 .WillOnce(DoAll(SetArgPointee<2>(test_url_redirect_data_), 906 .WillOnce(DoAll(SetArgPointee<2>(test_url_redirect_data_),
897 SetArgPointee<3>(test_host_redirect_data_))); 907 SetArgPointee<3>(test_host_redirect_data_)));
898 ResetPredictor(); 908 ResetPredictor();
899 InitializePredictor(); 909 InitializePredictor();
900 EXPECT_EQ(3U, predictor_->url_redirect_table_cache_->size()); 910 EXPECT_EQ(3U, predictor_->url_redirect_table_cache_->size());
901 EXPECT_EQ(2U, predictor_->host_redirect_table_cache_->size()); 911 EXPECT_EQ(2U, predictor_->host_redirect_table_cache_->size());
902 912
903 URLRequestSummary fb1 = CreateURLRequestSummary(1, "http://fb.com/google"); 913 URLRequestSummary fb1 = CreateURLRequestSummary(1, "http://fb.com/google");
904 predictor_->RecordURLRequest(fb1); 914 predictor_->RecordURLRequest(fb1);
905 EXPECT_EQ(1U, predictor_->inflight_navigations_.size()); 915 EXPECT_EQ(1U, predictor_->inflight_navigations_.size());
(...skipping 803 matching lines...) Expand 10 before | Expand all | Expand 10 after
1709 predictor_->host_table_cache_->insert( 1719 predictor_->host_table_cache_->insert(
1710 std::make_pair(google.primary_key(), google)); 1720 std::make_pair(google.primary_key(), google));
1711 1721
1712 predictor_->StartPrefetching(GURL(main_frame_url), PrefetchOrigin::EXTERNAL); 1722 predictor_->StartPrefetching(GURL(main_frame_url), PrefetchOrigin::EXTERNAL);
1713 predictor_->StopPrefetching(GURL(main_frame_url)); 1723 predictor_->StopPrefetching(GURL(main_frame_url));
1714 histogram_tester_->ExpectTotalCount( 1724 histogram_tester_->ExpectTotalCount(
1715 internal::kResourcePrefetchPredictorPrefetchingDurationHistogram, 1); 1725 internal::kResourcePrefetchPredictorPrefetchingDurationHistogram, 1);
1716 } 1726 }
1717 1727
1718 } // namespace predictors 1728 } // namespace predictors
OLDNEW
« no previous file with comments | « chrome/browser/predictors/resource_prefetch_predictor_test_util.cc ('k') | components/precache/core/proto/precache.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698