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

Unified Diff: components/data_reduction_proxy/core/browser/data_reduction_proxy_config_service_client_unittest.cc

Issue 1024553009: Add the ability to use DataReductionProxyParams from DataReductionProxyConfigServiceClient. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@client_control_local
Patch Set: Forgot implementation of DataReductionProxyMutableConfigValues::IsDataReductionProxy in downstream … Created 5 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 side-by-side diff with in-line comments
Download patch
Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_config_service_client_unittest.cc
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_service_client_unittest.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_service_client_unittest.cc
index 6b44ceb5b70b51f6579cc46d344fc2cc741226a1..f142db0131d51ff7ad8bf85a33d7b7bb406d89ea 100644
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_service_client_unittest.cc
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_service_client_unittest.cc
@@ -7,8 +7,10 @@
#include <string>
#include "base/memory/scoped_ptr.h"
+#include "base/time/tick_clock.h"
#include "base/values.h"
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_config_test_utils.h"
+#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_configurator_test_utils.h"
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_test_utils.h"
#include "components/data_reduction_proxy/core/common/data_reduction_proxy_client_config_parser.h"
#include "components/data_reduction_proxy/core/common/data_reduction_proxy_params.h"
@@ -19,6 +21,26 @@
namespace data_reduction_proxy {
+namespace {
+
+const char kSuccessResponse[] =
+ "{ \"sessionKey\": \"foobar|foobaz\", "
+ "\"expireTime\": \"1970-01-02T00:00:00.000Z\", "
+ "\"proxyConfig\": { \"httpProxyServers\": ["
+ "{ \"scheme\": \"HTTPS\", \"host\": \"origin.net\", \"port\": 443 },"
+ "{ \"scheme\": \"HTTP\", \"host\": \"fallback.net\", \"port\": 80 }"
+ "] } }";
+
+const char kShortSuccessResponse[] =
+ "{ \"sessionKey\": \"foobar|foobaz\", "
+ "\"expireTime\": \"1970-01-01T00:00:01.000Z\", "
+ "\"proxyConfig\": { \"httpProxyServers\": ["
+ "{ \"scheme\": \"HTTPS\", \"host\": \"origin.net\", \"port\": 443 },"
+ "{ \"scheme\": \"HTTP\", \"host\": \"fallback.net\", \"port\": 80 }"
+ "] } }";
+
+} // namespace
+
class DataReductionProxyConfigClientTest : public testing::Test {
sclittle 2015/03/24 21:34:55 Rename to DataReductionProxyConfigServiceClientTes
jeremyim 2015/03/24 23:20:28 Done.
protected:
void SetUp() override {
@@ -28,13 +50,40 @@ class DataReductionProxyConfigClientTest : public testing::Test {
DataReductionProxyParams::kFallbackAllowed |
DataReductionProxyParams::kPromoAllowed)
.WithParamsDefinitions(TestDataReductionProxyParams::HAS_EVERYTHING)
+ .WithTestConfigurator()
+ .WithMockConfigClient()
.Build();
+ test_context_->mock_config_client()->SetCustomReleaseTime(
+ base::TimeTicks::UnixEpoch());
}
scoped_ptr<DataReductionProxyConfigServiceClient> BuildConfigClient() {
- return make_scoped_ptr(new DataReductionProxyConfigServiceClient(
- test_context_->config()->test_params(),
- test_context_->io_data()->request_options()));
+ scoped_ptr<DataReductionProxyParams> params(new DataReductionProxyParams(
+ DataReductionProxyParams::kAllowed |
+ DataReductionProxyParams::kFallbackAllowed |
+ DataReductionProxyParams::kPromoAllowed));
+ return scoped_ptr<DataReductionProxyConfigServiceClient>(
+ new DataReductionProxyConfigServiceClient(
+ params.Pass(), GetBackoffPolicy(),
+ test_context_->io_data()->request_options(),
+ test_context_->mutable_config_values(),
+ test_context_->io_data()->config(), test_context_->task_runner()));
+ }
+
+ void SetDataReductionProxyEnabled(bool enabled) {
+ test_context_->config()->SetStateForTest(enabled, false, false);
+ }
+
+ MockDataReductionProxyConfigServiceClient* mock_config_client() {
+ return test_context_->mock_config_client();
+ }
+
+ TestDataReductionProxyConfigurator* configurator() {
+ return test_context_->test_configurator();
+ }
+
+ void RunUntilIdle() {
+ test_context_->RunUntilIdle();
}
private:
@@ -49,4 +98,77 @@ TEST_F(DataReductionProxyConfigClientTest, TestConstructStaticResponse) {
EXPECT_TRUE(config_parser::ParseClientConfig(config_data, &config));
}
+TEST_F(DataReductionProxyConfigClientTest, SuccessfulLoop) {
+ SetDataReductionProxyEnabled(true);
+ EXPECT_TRUE(configurator()->origin().empty());
+ EXPECT_TRUE(configurator()->fallback_origin().empty());
+ EXPECT_TRUE(configurator()->ssl_origin().empty());
+ EXPECT_CALL(*mock_config_client(), ConstructStaticResponse())
sclittle 2015/03/24 21:34:55 Why are you mocking the methods of DRPConfigClient
jeremyim 2015/03/24 23:20:28 Done.
+ .Times(1)
+ .WillOnce(testing::Return(kSuccessResponse));
+ base::TimeDelta expected_delay = base::TimeDelta::FromDays(1);
+ EXPECT_CALL(*mock_config_client(), SetConfigRefreshTimer(expected_delay))
sclittle 2015/03/24 21:34:55 Same as above: mocking the class being tested mean
jeremyim 2015/03/24 23:20:28 Done.
+ .Times(1);
+ RunUntilIdle();
+ EXPECT_EQ("https://origin.net:443", configurator()->origin());
+ EXPECT_EQ("fallback.net:80", configurator()->fallback_origin());
+ EXPECT_TRUE(configurator()->ssl_origin().empty());
+}
+
+TEST_F(DataReductionProxyConfigClientTest, SuccessfulLoopShortDuration) {
+ SetDataReductionProxyEnabled(true);
+ EXPECT_TRUE(configurator()->origin().empty());
+ EXPECT_TRUE(configurator()->fallback_origin().empty());
+ EXPECT_TRUE(configurator()->ssl_origin().empty());
+ EXPECT_CALL(*mock_config_client(), ConstructStaticResponse())
+ .Times(1)
+ .WillOnce(testing::Return(kShortSuccessResponse));
+ base::TimeDelta expected_delay = base::TimeDelta::FromSeconds(10);
+ EXPECT_CALL(*mock_config_client(), SetConfigRefreshTimer(expected_delay))
+ .Times(1);
+ RunUntilIdle();
+ EXPECT_EQ("https://origin.net:443", configurator()->origin());
+ EXPECT_EQ("fallback.net:80", configurator()->fallback_origin());
+ EXPECT_TRUE(configurator()->ssl_origin().empty());
+}
+
+TEST_F(DataReductionProxyConfigClientTest, EnsureBackoff) {
+ SetDataReductionProxyEnabled(true);
+ EXPECT_TRUE(configurator()->origin().empty());
+ EXPECT_TRUE(configurator()->fallback_origin().empty());
+ EXPECT_TRUE(configurator()->ssl_origin().empty());
+ EXPECT_CALL(*mock_config_client(), ConstructStaticResponse())
+ .Times(2)
+ .WillRepeatedly(testing::Return(std::string()));
+ EXPECT_CALL(*mock_config_client(),
+ SetConfigRefreshTimer(base::TimeDelta::FromSeconds(20))).Times(1);
+ EXPECT_CALL(*mock_config_client(),
+ SetConfigRefreshTimer(base::TimeDelta::FromSeconds(40))).Times(1);
+ mock_config_client()->RetrieveConfig();
+ EXPECT_TRUE(configurator()->origin().empty());
+ EXPECT_TRUE(configurator()->fallback_origin().empty());
+ EXPECT_TRUE(configurator()->ssl_origin().empty());
+ mock_config_client()->RetrieveConfig();
+ EXPECT_TRUE(configurator()->origin().empty());
+ EXPECT_TRUE(configurator()->fallback_origin().empty());
+ EXPECT_TRUE(configurator()->ssl_origin().empty());
+}
+
+TEST_F(DataReductionProxyConfigClientTest, ConfigDisabled) {
+ SetDataReductionProxyEnabled(false);
+ EXPECT_TRUE(configurator()->origin().empty());
+ EXPECT_TRUE(configurator()->fallback_origin().empty());
+ EXPECT_TRUE(configurator()->ssl_origin().empty());
+ EXPECT_CALL(*mock_config_client(), ConstructStaticResponse())
+ .Times(1)
+ .WillOnce(testing::Return(kSuccessResponse));
+ base::TimeDelta expected_delay = base::TimeDelta::FromDays(1);
+ EXPECT_CALL(*mock_config_client(), SetConfigRefreshTimer(expected_delay))
+ .Times(1);
+ RunUntilIdle();
+ EXPECT_TRUE(configurator()->origin().empty());
+ EXPECT_TRUE(configurator()->fallback_origin().empty());
+ EXPECT_TRUE(configurator()->ssl_origin().empty());
+}
+
} // namespace data_reduction_proxy

Powered by Google App Engine
This is Rietveld 408576698