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

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

Issue 784253002: Measure network error rates with and without data reduction proxy (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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 side-by-side diff with in-line comments
Download patch
Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_usage_stats_unittest.cc
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_usage_stats_unittest.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_usage_stats_unittest.cc
index 24f39eb035ccc077271a713ad85dabcbf0ceb4e4..1aa2ae7a569fca89c0dda3fc2fe8925d271f63e9 100644
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_usage_stats_unittest.cc
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_usage_stats_unittest.cc
@@ -12,6 +12,7 @@
#include "base/test/histogram_tester.h"
#include "components/data_reduction_proxy/core/common/data_reduction_proxy_headers_test_utils.h"
#include "net/base/host_port_pair.h"
+#include "net/base/net_errors.h"
#include "net/base/request_priority.h"
#include "net/http/http_response_headers.h"
#include "net/http/http_util.h"
@@ -149,7 +150,7 @@ TEST_F(DataReductionProxyUsageStatsTest, IsDataReductionProxyUnreachable) {
.WillRepeatedly(testing::Return(
test_case.fallback_proxy_server_is_data_reduction_proxy));
EXPECT_CALL(mock_params_,
- WasDataReductionProxyUsed(mock_url_request_.get(), NULL))
+ WasDataReductionProxyUsed(mock_url_request_.get(), testing::_))
.WillRepeatedly(testing::Return(test_case.was_proxy_used));
scoped_ptr<DataReductionProxyUsageStats> usage_stats(
@@ -161,7 +162,7 @@ TEST_F(DataReductionProxyUsageStatsTest, IsDataReductionProxyUnreachable) {
usage_stats->OnProxyFallback(fallback_proxy_server,
net::ERR_PROXY_CONNECTION_FAILED);
- usage_stats->OnUrlRequestCompleted(mock_url_request_.get(), false);
+ usage_stats->OnUrlRequestCompleted(mock_url_request_.get(), false, false);
base::MessageLoop::current()->RunUntilIdle();
EXPECT_EQ(test_case.is_unreachable, unavailable_);
@@ -181,7 +182,7 @@ TEST_F(DataReductionProxyUsageStatsTest, ProxyUnreachableThenReachable) {
EXPECT_CALL(mock_params_, IsDataReductionProxy(testing::_, testing::_))
.WillOnce(testing::Return(true));
EXPECT_CALL(mock_params_,
- WasDataReductionProxyUsed(mock_url_request_.get(), NULL))
+ WasDataReductionProxyUsed(mock_url_request_.get(), testing::_))
.WillOnce(testing::Return(true));
// proxy falls back
@@ -191,7 +192,7 @@ TEST_F(DataReductionProxyUsageStatsTest, ProxyUnreachableThenReachable) {
EXPECT_TRUE(unavailable_);
// proxy succeeds
- usage_stats->OnUrlRequestCompleted(mock_url_request_.get(), false);
+ usage_stats->OnUrlRequestCompleted(mock_url_request_.get(), false, false);
base::MessageLoop::current()->RunUntilIdle();
EXPECT_FALSE(unavailable_);
}
@@ -206,13 +207,13 @@ TEST_F(DataReductionProxyUsageStatsTest, ProxyReachableThenUnreachable) {
base::Bind(&DataReductionProxyUsageStatsTest::NotifyUnavailable,
base::Unretained(this)));
EXPECT_CALL(mock_params_,
- WasDataReductionProxyUsed(mock_url_request_.get(), NULL))
+ WasDataReductionProxyUsed(mock_url_request_.get(), testing::_))
.WillOnce(testing::Return(true));
EXPECT_CALL(mock_params_, IsDataReductionProxy(testing::_, testing::_))
.WillRepeatedly(testing::Return(true));
// Proxy succeeds.
- usage_stats->OnUrlRequestCompleted(mock_url_request_.get(), false);
+ usage_stats->OnUrlRequestCompleted(mock_url_request_.get(), false, false);
base::MessageLoop::current()->RunUntilIdle();
EXPECT_FALSE(unavailable_);
@@ -419,7 +420,7 @@ TEST_F(DataReductionProxyUsageStatsTest, RecordMissingViaHeaderBytes) {
fake_request->set_received_response_content_length(kResponseContentLength);
EXPECT_CALL(mock_params_,
- WasDataReductionProxyUsed(fake_request.get(), NULL))
+ WasDataReductionProxyUsed(fake_request.get(), testing::_))
.WillRepeatedly(Return(test_cases[i].was_proxy_used));
usage_stats->RecordMissingViaHeaderBytes(fake_request.get());
@@ -440,4 +441,90 @@ TEST_F(DataReductionProxyUsageStatsTest, RecordMissingViaHeaderBytes) {
}
}
+TEST_F(DataReductionProxyUsageStatsTest, RequestCompletionErrorCodes) {
+ const std::string kPrimaryHistogramName =
+ "DataReductionProxy.RequestCompletionErrorCodes.Primary";
+ const std::string kFallbackHistogramName =
+ "DataReductionProxy.RequestCompletionErrorCodes.Fallback";
+ const std::string kPrimaryMainFrameHistogramName =
+ "DataReductionProxy.RequestCompletionErrorCodes.MainFrame.Primary";
+ const std::string kFallbackMainFrameHistogramName =
+ "DataReductionProxy.RequestCompletionErrorCodes.MainFrame.Fallback";
+
+ struct TestCase {
+ bool was_proxy_used;
+ bool is_fallback;
+ bool is_main_frame;
+ net::Error net_error;
+ };
bengr 2014/12/09 23:44:13 Add a blank line.
sclittle 2014/12/10 00:05:03 Done.
+ const TestCase test_cases[] = {
+ {false, false, true, net::OK},
bengr 2014/12/09 23:44:13 Indent only 2.
sclittle 2014/12/10 00:05:03 Done.
+ {false, false, false, net::ERR_TOO_MANY_REDIRECTS},
+ {true, false, true, net::OK},
+ {true, false, true, net::ERR_TOO_MANY_REDIRECTS},
+ {true, false, false, net::OK},
+ {true, false, false, net::ERR_TOO_MANY_REDIRECTS},
+ {true, true, true, net::OK},
+ {true, true, true, net::ERR_TOO_MANY_REDIRECTS},
+ {true, true, false, net::OK},
+ {true, true, false, net::ERR_TOO_MANY_REDIRECTS}
+ };
+
+ for (size_t i = 0; i < arraysize(test_cases); ++i) {
+ base::HistogramTester histogram_tester;
+ scoped_ptr<DataReductionProxyUsageStats> usage_stats(
+ new DataReductionProxyUsageStats(&mock_params_, loop_proxy_));
+
+ std::string raw_headers("HTTP/1.1 200 OK\n"
+ "Via: 1.1 Chrome-Compression-Proxy\n");
+ HeadersToRaw(&raw_headers);
+ scoped_ptr<net::URLRequest> fake_request(
+ CreateURLRequestWithResponseHeaders(GURL("http://www.google.com/"),
+ raw_headers));
+
+ int net_error_int = static_cast<int>(test_cases[i].net_error);
+ if (test_cases[i].net_error != net::OK) {
+ fake_request->CancelWithError(net_error_int);
+ }
+
+ DataReductionProxyTypeInfo proxy_info;
+ proxy_info.is_fallback = test_cases[i].is_fallback;
+
+ EXPECT_CALL(mock_params_, WasDataReductionProxyUsed(fake_request.get(),
+ testing::NotNull()))
+ .WillRepeatedly(testing::DoAll(testing::SetArgPointee<1>(proxy_info),
+ Return(test_cases[i].was_proxy_used)));
+
+ usage_stats->OnUrlRequestCompleted(fake_request.get(), false,
+ test_cases[i].is_main_frame);
+
+ if (test_cases[i].was_proxy_used && !test_cases[i].is_fallback) {
+ histogram_tester.ExpectUniqueSample(kPrimaryHistogramName, -net_error_int,
bengr 2014/12/09 23:44:13 I'd put all three parameters on one line. Move the
sclittle 2014/12/10 00:05:03 Done.
+ 1);
+ } else {
+ histogram_tester.ExpectTotalCount(kPrimaryHistogramName, 0);
+ }
+ if (test_cases[i].was_proxy_used && test_cases[i].is_fallback) {
+ histogram_tester.ExpectUniqueSample(kFallbackHistogramName,
+ -net_error_int, 1);
+ } else {
+ histogram_tester.ExpectTotalCount(kFallbackHistogramName, 0);
+ }
+ if (test_cases[i].was_proxy_used && !test_cases[i].is_fallback &&
+ test_cases[i].is_main_frame) {
+ histogram_tester.ExpectUniqueSample(kPrimaryMainFrameHistogramName,
+ -net_error_int, 1);
+ } else {
+ histogram_tester.ExpectTotalCount(kPrimaryMainFrameHistogramName, 0);
+ }
+ if (test_cases[i].was_proxy_used && test_cases[i].is_fallback &&
+ test_cases[i].is_main_frame) {
+ histogram_tester.ExpectUniqueSample(kFallbackMainFrameHistogramName,
+ -net_error_int, 1);
+ } else {
+ histogram_tester.ExpectTotalCount(kFallbackMainFrameHistogramName, 0);
+ }
+ }
+}
+
} // namespace data_reduction_proxy

Powered by Google App Engine
This is Rietveld 408576698