Commit 3eb8769e authored by zhongyi's avatar zhongyi Committed by Commit bot

Enforce check on how many pref updates and cache updates are called in...

Enforce check on how many pref updates and cache updates are called in http_server_properties_manager_unittests

BUG=670519

Review-Url: https://codereview.chromium.org/2585823003
Cr-Commit-Position: refs/heads/master@{#439535}
parent 28fb80be
...@@ -32,6 +32,7 @@ namespace { ...@@ -32,6 +32,7 @@ namespace {
using base::StringPrintf; using base::StringPrintf;
using base::TestMockTimeTaskRunner; using base::TestMockTimeTaskRunner;
using ::testing::_; using ::testing::_;
using ::testing::AtLeast;
using ::testing::Invoke; using ::testing::Invoke;
using ::testing::Mock; using ::testing::Mock;
using ::testing::StrictMock; using ::testing::StrictMock;
...@@ -213,25 +214,19 @@ class HttpServerPropertiesManagerTest : public testing::TestWithParam<int> { ...@@ -213,25 +214,19 @@ class HttpServerPropertiesManagerTest : public testing::TestWithParam<int> {
ScheduleUpdatePrefsOnNetworkThreadConcrete)); ScheduleUpdatePrefsOnNetworkThreadConcrete));
} }
void ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly() { void ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(int times) {
EXPECT_CALL(*http_server_props_manager_, EXPECT_CALL(*http_server_props_manager_,
ScheduleUpdatePrefsOnNetworkThread(_)) ScheduleUpdatePrefsOnNetworkThread(_))
.Times(AtLeast(times))
.WillRepeatedly(Invoke(http_server_props_manager_.get(), .WillRepeatedly(Invoke(http_server_props_manager_.get(),
&TestingHttpServerPropertiesManager:: &TestingHttpServerPropertiesManager::
ScheduleUpdatePrefsOnNetworkThreadConcrete)); ScheduleUpdatePrefsOnNetworkThreadConcrete));
} }
void ExpectPrefsUpdate() { void ExpectPrefsUpdate(int times) {
EXPECT_CALL(*http_server_props_manager_,
UpdatePrefsFromCacheOnNetworkThread(_))
.WillOnce(Invoke(http_server_props_manager_.get(),
&TestingHttpServerPropertiesManager::
UpdatePrefsFromCacheOnNetworkThreadConcrete));
}
void ExpectPrefsUpdateRepeatedly() {
EXPECT_CALL(*http_server_props_manager_, EXPECT_CALL(*http_server_props_manager_,
UpdatePrefsFromCacheOnNetworkThread(_)) UpdatePrefsFromCacheOnNetworkThread(_))
.Times(times)
.WillRepeatedly( .WillRepeatedly(
Invoke(http_server_props_manager_.get(), Invoke(http_server_props_manager_.get(),
&TestingHttpServerPropertiesManager:: &TestingHttpServerPropertiesManager::
...@@ -487,7 +482,7 @@ TEST_P(HttpServerPropertiesManagerTest, ...@@ -487,7 +482,7 @@ TEST_P(HttpServerPropertiesManagerTest,
TEST_P(HttpServerPropertiesManagerTest, BadCachedHostPortPair) { TEST_P(HttpServerPropertiesManagerTest, BadCachedHostPortPair) {
ExpectCacheUpdate(); ExpectCacheUpdate();
// The prefs are automatically updated in the case corruption is detected. // The prefs are automatically updated in the case corruption is detected.
ExpectPrefsUpdate(); ExpectPrefsUpdate(1);
ExpectScheduleUpdatePrefsOnNetworkThread(); ExpectScheduleUpdatePrefsOnNetworkThread();
base::DictionaryValue* server_pref_dict = new base::DictionaryValue; base::DictionaryValue* server_pref_dict = new base::DictionaryValue;
...@@ -577,7 +572,7 @@ TEST_P(HttpServerPropertiesManagerTest, BadCachedHostPortPair) { ...@@ -577,7 +572,7 @@ TEST_P(HttpServerPropertiesManagerTest, BadCachedHostPortPair) {
TEST_P(HttpServerPropertiesManagerTest, BadCachedAltProtocolPort) { TEST_P(HttpServerPropertiesManagerTest, BadCachedAltProtocolPort) {
ExpectCacheUpdate(); ExpectCacheUpdate();
// The prefs are automatically updated in the case corruption is detected. // The prefs are automatically updated in the case corruption is detected.
ExpectPrefsUpdate(); ExpectPrefsUpdate(1);
ExpectScheduleUpdatePrefsOnNetworkThread(); ExpectScheduleUpdatePrefsOnNetworkThread();
base::DictionaryValue* server_pref_dict = new base::DictionaryValue; base::DictionaryValue* server_pref_dict = new base::DictionaryValue;
...@@ -638,7 +633,7 @@ TEST_P(HttpServerPropertiesManagerTest, BadCachedAltProtocolPort) { ...@@ -638,7 +633,7 @@ TEST_P(HttpServerPropertiesManagerTest, BadCachedAltProtocolPort) {
} }
TEST_P(HttpServerPropertiesManagerTest, SupportsSpdy) { TEST_P(HttpServerPropertiesManagerTest, SupportsSpdy) {
ExpectPrefsUpdate(); ExpectPrefsUpdate(1);
ExpectScheduleUpdatePrefsOnNetworkThread(); ExpectScheduleUpdatePrefsOnNetworkThread();
// Post an update task to the network thread. SetSupportsSpdy calls // Post an update task to the network thread. SetSupportsSpdy calls
...@@ -670,11 +665,11 @@ TEST_P(HttpServerPropertiesManagerTest, SupportsSpdy) { ...@@ -670,11 +665,11 @@ TEST_P(HttpServerPropertiesManagerTest, SupportsSpdy) {
// update could also be scheduled once the previous scheduled update is // update could also be scheduled once the previous scheduled update is
// completed. // completed.
TEST_P(HttpServerPropertiesManagerTest, TEST_P(HttpServerPropertiesManagerTest,
SinglePrefUpdateForTwoSpdyServerCacheChangese) { SinglePrefUpdateForTwoSpdyServerCacheChanges) {
http_server_props_manager_->set_pref_update_delay( http_server_props_manager_->set_pref_update_delay(
base::TimeDelta::FromMilliseconds(60)); base::TimeDelta::FromMilliseconds(60));
ExpectPrefsUpdateRepeatedly(); ExpectPrefsUpdate(2);
ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(); ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(3);
// Post an update task to the network thread. SetSupportsSpdy calls // Post an update task to the network thread. SetSupportsSpdy calls
// ScheduleUpdatePrefsOnNetworkThread with a delay of 60ms. // ScheduleUpdatePrefsOnNetworkThread with a delay of 60ms.
...@@ -728,7 +723,7 @@ TEST_P(HttpServerPropertiesManagerTest, ...@@ -728,7 +723,7 @@ TEST_P(HttpServerPropertiesManagerTest,
} }
TEST_P(HttpServerPropertiesManagerTest, GetAlternativeServices) { TEST_P(HttpServerPropertiesManagerTest, GetAlternativeServices) {
ExpectPrefsUpdate(); ExpectPrefsUpdate(1);
ExpectScheduleUpdatePrefsOnNetworkThread(); ExpectScheduleUpdatePrefsOnNetworkThread();
url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80);
...@@ -759,7 +754,7 @@ TEST_P(HttpServerPropertiesManagerTest, GetAlternativeServices) { ...@@ -759,7 +754,7 @@ TEST_P(HttpServerPropertiesManagerTest, GetAlternativeServices) {
} }
TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServices) { TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServices) {
ExpectPrefsUpdate(); ExpectPrefsUpdate(1);
ExpectScheduleUpdatePrefsOnNetworkThread(); ExpectScheduleUpdatePrefsOnNetworkThread();
url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80);
...@@ -814,7 +809,7 @@ TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServicesEmpty) { ...@@ -814,7 +809,7 @@ TEST_P(HttpServerPropertiesManagerTest, SetAlternativeServicesEmpty) {
} }
TEST_P(HttpServerPropertiesManagerTest, ConfirmAlternativeService) { TEST_P(HttpServerPropertiesManagerTest, ConfirmAlternativeService) {
ExpectPrefsUpdate(); ExpectPrefsUpdate(1);
url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80); url::SchemeHostPort spdy_server_mail("http", "mail.google.com", 80);
EXPECT_FALSE(HasAlternativeService(spdy_server_mail)); EXPECT_FALSE(HasAlternativeService(spdy_server_mail));
...@@ -867,7 +862,7 @@ TEST_P(HttpServerPropertiesManagerTest, ConfirmAlternativeService) { ...@@ -867,7 +862,7 @@ TEST_P(HttpServerPropertiesManagerTest, ConfirmAlternativeService) {
} }
TEST_P(HttpServerPropertiesManagerTest, SupportsQuic) { TEST_P(HttpServerPropertiesManagerTest, SupportsQuic) {
ExpectPrefsUpdate(); ExpectPrefsUpdate(1);
ExpectScheduleUpdatePrefsOnNetworkThread(); ExpectScheduleUpdatePrefsOnNetworkThread();
IPAddress address; IPAddress address;
...@@ -894,7 +889,7 @@ TEST_P(HttpServerPropertiesManagerTest, SupportsQuic) { ...@@ -894,7 +889,7 @@ TEST_P(HttpServerPropertiesManagerTest, SupportsQuic) {
} }
TEST_P(HttpServerPropertiesManagerTest, ServerNetworkStats) { TEST_P(HttpServerPropertiesManagerTest, ServerNetworkStats) {
ExpectPrefsUpdate(); ExpectPrefsUpdate(1);
ExpectScheduleUpdatePrefsOnNetworkThread(); ExpectScheduleUpdatePrefsOnNetworkThread();
url::SchemeHostPort mail_server("http", "mail.google.com", 80); url::SchemeHostPort mail_server("http", "mail.google.com", 80);
...@@ -924,7 +919,7 @@ TEST_P(HttpServerPropertiesManagerTest, ServerNetworkStats) { ...@@ -924,7 +919,7 @@ TEST_P(HttpServerPropertiesManagerTest, ServerNetworkStats) {
} }
TEST_P(HttpServerPropertiesManagerTest, QuicServerInfo) { TEST_P(HttpServerPropertiesManagerTest, QuicServerInfo) {
ExpectPrefsUpdate(); ExpectPrefsUpdate(1);
ExpectScheduleUpdatePrefsOnNetworkThread(); ExpectScheduleUpdatePrefsOnNetworkThread();
QuicServerId mail_quic_server_id("mail.google.com", 80); QuicServerId mail_quic_server_id("mail.google.com", 80);
...@@ -957,8 +952,8 @@ TEST_P(HttpServerPropertiesManagerTest, Clear) { ...@@ -957,8 +952,8 @@ TEST_P(HttpServerPropertiesManagerTest, Clear) {
// thus can not mock the pref task runner. // thus can not mock the pref task runner.
SetUpWithNonTaskRunner(); SetUpWithNonTaskRunner();
ExpectPrefsUpdate(); ExpectPrefsUpdate(1);
ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(); ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(5);
url::SchemeHostPort spdy_server("https", "mail.google.com", 443); url::SchemeHostPort spdy_server("https", "mail.google.com", 443);
http_server_props_manager_->SetSupportsSpdy(spdy_server, true); http_server_props_manager_->SetSupportsSpdy(spdy_server, true);
...@@ -995,7 +990,7 @@ TEST_P(HttpServerPropertiesManagerTest, Clear) { ...@@ -995,7 +990,7 @@ TEST_P(HttpServerPropertiesManagerTest, Clear) {
Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
ExpectPrefsUpdate(); ExpectPrefsUpdate(1);
// Clear http server data, time out if we do not get a completion callback. // Clear http server data, time out if we do not get a completion callback.
http_server_props_manager_->Clear(base::MessageLoop::QuitWhenIdleClosure()); http_server_props_manager_->Clear(base::MessageLoop::QuitWhenIdleClosure());
...@@ -1120,7 +1115,7 @@ TEST_P(HttpServerPropertiesManagerTest, BadSupportsQuic) { ...@@ -1120,7 +1115,7 @@ TEST_P(HttpServerPropertiesManagerTest, BadSupportsQuic) {
} }
TEST_P(HttpServerPropertiesManagerTest, UpdateCacheWithPrefs) { TEST_P(HttpServerPropertiesManagerTest, UpdateCacheWithPrefs) {
ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(); ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(5);
const url::SchemeHostPort server_www("http", "www.google.com", 80); const url::SchemeHostPort server_www("http", "www.google.com", 80);
const url::SchemeHostPort server_mail("http", "mail.google.com", 80); const url::SchemeHostPort server_mail("http", "mail.google.com", 80);
...@@ -1163,7 +1158,7 @@ TEST_P(HttpServerPropertiesManagerTest, UpdateCacheWithPrefs) { ...@@ -1163,7 +1158,7 @@ TEST_P(HttpServerPropertiesManagerTest, UpdateCacheWithPrefs) {
http_server_props_manager_->SetSupportsQuic(true, actual_address); http_server_props_manager_->SetSupportsQuic(true, actual_address);
// Update cache. // Update cache.
ExpectPrefsUpdate(); ExpectPrefsUpdate(1);
ExpectCacheUpdate(); ExpectCacheUpdate();
http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); http_server_props_manager_->ScheduleUpdateCacheOnPrefThread();
...@@ -1270,7 +1265,7 @@ TEST_P(HttpServerPropertiesManagerTest, DoNotLoadAltSvcForInsecureOrigins) { ...@@ -1270,7 +1265,7 @@ TEST_P(HttpServerPropertiesManagerTest, DoNotLoadAltSvcForInsecureOrigins) {
// Do not persist expired or broken alternative service entries to disk. // Do not persist expired or broken alternative service entries to disk.
TEST_P(HttpServerPropertiesManagerTest, TEST_P(HttpServerPropertiesManagerTest,
DoNotPersistExpiredOrBrokenAlternativeService) { DoNotPersistExpiredOrBrokenAlternativeService) {
ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(); ExpectScheduleUpdatePrefsOnNetworkThreadRepeatedly(2);
AlternativeServiceInfoVector alternative_service_info_vector; AlternativeServiceInfoVector alternative_service_info_vector;
...@@ -1300,7 +1295,7 @@ TEST_P(HttpServerPropertiesManagerTest, ...@@ -1300,7 +1295,7 @@ TEST_P(HttpServerPropertiesManagerTest,
server, alternative_service_info_vector); server, alternative_service_info_vector);
// Update cache. // Update cache.
ExpectPrefsUpdate(); ExpectPrefsUpdate(1);
ExpectCacheUpdate(); ExpectCacheUpdate();
http_server_props_manager_->ScheduleUpdateCacheOnPrefThread(); http_server_props_manager_->ScheduleUpdateCacheOnPrefThread();
...@@ -1446,7 +1441,7 @@ TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs0) { ...@@ -1446,7 +1441,7 @@ TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs0) {
} }
TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs1) { TEST_P(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdatePrefs1) {
ExpectPrefsUpdate(); ExpectPrefsUpdate(1);
// Post an update task. // Post an update task.
http_server_props_manager_->ScheduleUpdatePrefsOnNetworkThread(); http_server_props_manager_->ScheduleUpdatePrefsOnNetworkThread();
// Shutdown comes before the task is executed. // Shutdown comes before the task is executed.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment