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

Side by Side Diff: components/ntp_snippets/remote/ntp_snippets_fetcher_unittest.cc

Issue 2548343002: NTPSnippets: Set MaxRetriesOn5xx only for interactive requests. (Closed)
Patch Set: Created 4 years 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/ntp_snippets/remote/ntp_snippets_fetcher.h" 5 #include "components/ntp_snippets/remote/ntp_snippets_fetcher.h"
6 6
7 #include <map> 7 #include <map>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "base/strings/stringprintf.h" 12 #include "base/strings/stringprintf.h"
13 #include "base/test/histogram_tester.h" 13 #include "base/test/histogram_tester.h"
14 #include "base/test/test_mock_time_task_runner.h" 14 #include "base/test/test_mock_time_task_runner.h"
15 #include "base/threading/thread_task_runner_handle.h" 15 #include "base/threading/thread_task_runner_handle.h"
16 #include "base/time/default_tick_clock.h"
16 #include "base/time/time.h" 17 #include "base/time/time.h"
17 #include "base/values.h" 18 #include "base/values.h"
18 #include "components/ntp_snippets/category_factory.h" 19 #include "components/ntp_snippets/category_factory.h"
19 #include "components/ntp_snippets/ntp_snippets_constants.h" 20 #include "components/ntp_snippets/ntp_snippets_constants.h"
20 #include "components/ntp_snippets/remote/ntp_snippet.h" 21 #include "components/ntp_snippets/remote/ntp_snippet.h"
21 #include "components/ntp_snippets/user_classifier.h" 22 #include "components/ntp_snippets/user_classifier.h"
22 #include "components/prefs/testing_pref_service.h" 23 #include "components/prefs/testing_pref_service.h"
23 #include "components/signin/core/browser/account_tracker_service.h" 24 #include "components/signin/core/browser/account_tracker_service.h"
24 #include "components/signin/core/browser/fake_profile_oauth2_token_service.h" 25 #include "components/signin/core/browser/fake_profile_oauth2_token_service.h"
25 #include "components/signin/core/browser/fake_signin_manager.h" 26 #include "components/signin/core/browser/fake_signin_manager.h"
26 #include "components/signin/core/browser/test_signin_client.h" 27 #include "components/signin/core/browser/test_signin_client.h"
27 #include "components/variations/entropy_provider.h" 28 #include "components/variations/entropy_provider.h"
28 #include "components/variations/variations_associated_data.h" 29 #include "components/variations/variations_associated_data.h"
29 #include "net/url_request/test_url_fetcher_factory.h" 30 #include "net/url_request/test_url_fetcher_factory.h"
31 #include "net/url_request/url_fetcher.h"
30 #include "net/url_request/url_request_test_util.h" 32 #include "net/url_request/url_request_test_util.h"
31 #include "testing/gmock/include/gmock/gmock.h" 33 #include "testing/gmock/include/gmock/gmock.h"
32 #include "testing/gtest/include/gtest/gtest.h" 34 #include "testing/gtest/include/gtest/gtest.h"
33 35
34 namespace ntp_snippets { 36 namespace ntp_snippets {
35 37
36 namespace { 38 namespace {
37 39
38 using testing::_; 40 using testing::_;
39 using testing::AllOf; 41 using testing::AllOf;
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 translate::LanguageModel::RegisterProfilePrefs(pref_service()->registry()); 236 translate::LanguageModel::RegisterProfilePrefs(pref_service()->registry());
235 user_classifier_ = base::MakeUnique<UserClassifier>(pref_service_.get()); 237 user_classifier_ = base::MakeUnique<UserClassifier>(pref_service_.get());
236 // Increase initial time such that ticks are non-zero. 238 // Increase initial time such that ticks are non-zero.
237 mock_task_runner_->FastForwardBy(base::TimeDelta::FromMilliseconds(1234)); 239 mock_task_runner_->FastForwardBy(base::TimeDelta::FromMilliseconds(1234));
238 ResetSnippetsFetcher(); 240 ResetSnippetsFetcher();
239 } 241 }
240 242
241 void ResetSnippetsFetcher() { 243 void ResetSnippetsFetcher() {
242 snippets_fetcher_ = base::MakeUnique<NTPSnippetsFetcher>( 244 snippets_fetcher_ = base::MakeUnique<NTPSnippetsFetcher>(
243 fake_signin_manager_.get(), fake_token_service_.get(), 245 fake_signin_manager_.get(), fake_token_service_.get(),
244 scoped_refptr<net::TestURLRequestContextGetter>( 246 CreateContextGetter(), pref_service_.get(), &category_factory_, nullptr,
245 new net::TestURLRequestContextGetter(mock_task_runner_.get())),
246 pref_service_.get(), &category_factory_, nullptr,
247 base::Bind(&ParseJsonDelayed), kAPIKey, user_classifier_.get()); 247 base::Bind(&ParseJsonDelayed), kAPIKey, user_classifier_.get());
248 248
249 snippets_fetcher_->SetTickClockForTesting( 249 snippets_fetcher_->SetTickClockForTesting(
250 mock_task_runner_->GetMockTickClock()); 250 mock_task_runner_->GetMockTickClock());
251 } 251 }
252 252
253 NTPSnippetsFetcher::SnippetsAvailableCallback ToSnippetsAvailableCallback( 253 NTPSnippetsFetcher::SnippetsAvailableCallback ToSnippetsAvailableCallback(
254 MockSnippetsAvailableCallback* callback) { 254 MockSnippetsAvailableCallback* callback) {
255 return base::BindOnce(&MockSnippetsAvailableCallback::WrappedRun, 255 return base::BindOnce(&MockSnippetsAvailableCallback::WrappedRun,
256 base::Unretained(callback)); 256 base::Unretained(callback));
257 } 257 }
258 258
259 NTPSnippetsFetcher& snippets_fetcher() { return *snippets_fetcher_; } 259 NTPSnippetsFetcher& snippets_fetcher() { return *snippets_fetcher_; }
260 MockSnippetsAvailableCallback& mock_callback() { return mock_callback_; } 260 MockSnippetsAvailableCallback& mock_callback() { return mock_callback_; }
261 void FastForwardUntilNoTasksRemain() { 261 void FastForwardUntilNoTasksRemain() {
262 mock_task_runner_->FastForwardUntilNoTasksRemain(); 262 mock_task_runner_->FastForwardUntilNoTasksRemain();
263 } 263 }
264 base::HistogramTester& histogram_tester() { return histogram_tester_; } 264 base::HistogramTester& histogram_tester() { return histogram_tester_; }
265 265
266 NTPSnippetsFetcher::Params test_params() { 266 NTPSnippetsFetcher::Params test_params() {
267 NTPSnippetsFetcher::Params result; 267 NTPSnippetsFetcher::Params result;
268 result.count_to_fetch = 1; 268 result.count_to_fetch = 1;
269 result.interactive_request = true; 269 result.interactive_request = true;
270 return result; 270 return result;
271 } 271 }
272 272
273 scoped_refptr<net::TestURLRequestContextGetter> CreateContextGetter() {
274 return scoped_refptr<net::TestURLRequestContextGetter>(
275 new net::TestURLRequestContextGetter(mock_task_runner_.get()));
276 }
277
273 void InitFakeURLFetcherFactory() { 278 void InitFakeURLFetcherFactory() {
274 if (fake_url_fetcher_factory_) { 279 if (fake_url_fetcher_factory_) {
275 return; 280 return;
276 } 281 }
277 // Instantiation of factory automatically sets itself as URLFetcher's 282 // Instantiation of factory automatically sets itself as URLFetcher's
278 // factory. 283 // factory.
279 fake_url_fetcher_factory_.reset(new net::FakeURLFetcherFactory( 284 fake_url_fetcher_factory_.reset(new net::FakeURLFetcherFactory(
280 /*default_factory=*/&failing_url_fetcher_factory_)); 285 /*default_factory=*/&failing_url_fetcher_factory_));
281 } 286 }
282 287
(...skipping 804 matching lines...) Expand 10 before | Expand all | Expand 10 after
1087 ::std::ostream& os, 1092 ::std::ostream& os,
1088 const NTPSnippetsFetcher::OptionalFetchedCategories& fetched_categories) { 1093 const NTPSnippetsFetcher::OptionalFetchedCategories& fetched_categories) {
1089 if (fetched_categories) { 1094 if (fetched_categories) {
1090 // Matchers above aren't any more precise than this, so this is sufficient 1095 // Matchers above aren't any more precise than this, so this is sufficient
1091 // for test-failure diagnostics. 1096 // for test-failure diagnostics.
1092 return os << "list with " << fetched_categories->size() << " elements"; 1097 return os << "list with " << fetched_categories->size() << " elements";
1093 } 1098 }
1094 return os << "null"; 1099 return os << "null";
1095 } 1100 }
1096 1101
1102 TEST_F(NTPSnippetsFetcherTest, BuildRequestFetcherDependingOnInteractivity) {
1103 NTPSnippetsFetcher::RequestBuilder builder;
1104 base::DefaultTickClock clock;
1105 NTPSnippetsFetcher::Params params = test_params();
1106 builder.SetUrl(GURL("http://valid-irrelevant-url.com"))
1107 .SetUrlRequestContextGetter(CreateContextGetter())
1108 .SetPersonalization(NTPSnippetsFetcher::Personalization::kNonPersonal)
1109 .SetTickClock(&clock);
1110
1111 params.interactive_request = false;
1112 builder.SetParams(params);
1113 EXPECT_THAT(builder.PreviewURLFetcherForTesting()->GetMaxRetriesOn5xx(),
1114 Eq(0));
1115
1116 params.interactive_request = true;
1117 builder.SetParams(params);
1118 EXPECT_THAT(builder.PreviewURLFetcherForTesting()->GetMaxRetriesOn5xx(),
1119 Eq(2));
1120 }
1121
1097 } // namespace ntp_snippets 1122 } // namespace ntp_snippets
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698