Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats_unittest.cc |
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats_unittest.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats_unittest.cc |
index f69a5fc44704d459d03f727759a03749beb101db..42f93fb5c84f0bc9b405bdd219d52446c9d457c5 100644 |
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats_unittest.cc |
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats_unittest.cc |
@@ -11,6 +11,7 @@ |
#include "base/prefs/pref_service.h" |
#include "base/prefs/testing_pref_service.h" |
#include "base/strings/string_number_conversions.h" |
+#include "base/test/histogram_tester.h" |
#include "base/test/test_simple_task_runner.h" |
#include "base/time/time.h" |
#include "base/values.h" |
@@ -168,16 +169,20 @@ class DataReductionProxyCompressionStatsTest : public testing::Test { |
ASSERT_EQ(kNumDaysInHistory, update->GetSize()) << "Pref: " << pref; |
for (size_t i = 0; i < count; ++i) { |
- EXPECT_EQ( |
- values[i], |
- GetListPrefInt64Value(*update, kNumDaysInHistory - count + i)) |
- << "index=" << (kNumDaysInHistory - count + i); |
+ EXPECT_EQ(values[i], |
+ GetListPrefInt64Value(*update, kNumDaysInHistory - count + i)) |
+ << pref << "; index=" << (kNumDaysInHistory - count + i); |
} |
for (size_t i = 0; i < kNumDaysInHistory - count; ++i) { |
EXPECT_EQ(0, GetListPrefInt64Value(*update, i)) << "index=" << i; |
} |
} |
+ // Verify that the pref value is equal to given value. |
+ void VerifyPrefInt64(const char* pref, const int64 value) { |
+ EXPECT_EQ(value, compression_stats_->GetInt64(pref)); |
+ } |
+ |
// Verify all daily data saving pref list values. |
void VerifyDailyDataSavingContentLengthPrefLists( |
const int64* original_values, size_t original_count, |
@@ -214,6 +219,42 @@ class DataReductionProxyCompressionStatsTest : public testing::Test { |
kDailyContentLengthViaDataReductionProxy, |
received_via_data_reduction_proxy_values, |
received_via_data_reduction_proxy_count); |
+ |
+ VerifyPrefInt64( |
+ data_reduction_proxy::prefs::kDailyHttpOriginalContentLengthApplication, |
+ original_values ? original_values[original_count - 1] : 0); |
+ VerifyPrefInt64( |
+ data_reduction_proxy::prefs::kDailyHttpReceivedContentLengthApplication, |
+ received_values ? received_values[received_count - 1] : 0); |
+ |
+ VerifyPrefInt64( |
+ data_reduction_proxy::prefs:: |
+ kDailyOriginalContentLengthWithDataReductionProxyEnabledApplication, |
+ original_with_data_reduction_proxy_enabled_values |
+ ? original_with_data_reduction_proxy_enabled_values |
+ [original_with_data_reduction_proxy_enabled_count - 1] |
+ : 0); |
+ VerifyPrefInt64( |
+ data_reduction_proxy::prefs:: |
+ kDailyContentLengthWithDataReductionProxyEnabledApplication, |
+ received_with_data_reduction_proxy_enabled_values |
+ ? received_with_data_reduction_proxy_enabled_values |
+ [received_with_data_reduction_proxy_count - 1] |
+ : 0); |
+ |
+ VerifyPrefInt64( |
+ data_reduction_proxy::prefs:: |
+ kDailyOriginalContentLengthViaDataReductionProxyApplication, |
+ original_via_data_reduction_proxy_values |
+ ? original_via_data_reduction_proxy_values |
+ [original_via_data_reduction_proxy_count - 1] |
+ : 0); |
+ VerifyPrefInt64(data_reduction_proxy::prefs:: |
+ kDailyContentLengthViaDataReductionProxyApplication, |
+ received_via_data_reduction_proxy_values |
+ ? received_via_data_reduction_proxy_values |
+ [received_via_data_reduction_proxy_count - 1] |
+ : 0); |
} |
// Verify daily data saving pref for request types. |
@@ -284,10 +325,21 @@ class DataReductionProxyCompressionStatsTest : public testing::Test { |
int64 original_content_length, |
bool with_data_reduction_proxy_enabled, |
DataReductionProxyRequestType request_type, |
+ const std::string& mime_type, |
base::Time now) { |
compression_stats_->RecordRequestSizePrefs( |
received_content_length, original_content_length, |
- with_data_reduction_proxy_enabled, request_type, std::string(), now); |
+ with_data_reduction_proxy_enabled, request_type, mime_type, now); |
+ } |
+ |
+ void RecordContentLengthPrefs(int64 received_content_length, |
+ int64 original_content_length, |
+ bool with_data_reduction_proxy_enabled, |
+ DataReductionProxyRequestType request_type, |
+ base::Time now) { |
+ RecordContentLengthPrefs(received_content_length, original_content_length, |
+ with_data_reduction_proxy_enabled, request_type, |
+ "application/octet-stream", now); |
} |
DataReductionProxyCompressionStats* compression_stats() { |
@@ -471,6 +523,7 @@ TEST_F(DataReductionProxyCompressionStatsTest, OneResponse) { |
RecordContentLengthPrefs( |
kReceivedLength, kOriginalLength, true, VIA_DATA_REDUCTION_PROXY, |
FakeNow()); |
+ |
VerifyDailyDataSavingContentLengthPrefLists( |
original, 1, received, 1, |
original, 1, received, 1, |
@@ -859,4 +912,61 @@ TEST_F(DataReductionProxyCompressionStatsTest, NormalizeHostname) { |
EXPECT_EQ("http.www.co.in", NormalizeHostname("http://http.www.co.in")); |
} |
+TEST_F(DataReductionProxyCompressionStatsTest, RecordUma) { |
+ const int64 kOriginalLength = 15000; |
+ const int64 kReceivedLength = 10000; |
+ base::HistogramTester tester; |
+ |
+ RecordContentLengthPrefs(kReceivedLength, kOriginalLength, true, |
+ VIA_DATA_REDUCTION_PROXY, FakeNow()); |
+ |
+ // Forward one day. |
+ SetFakeTimeDeltaInHours(24); |
+ |
+ // Proxy not enabled. Not via proxy. |
+ RecordContentLengthPrefs(kReceivedLength, kOriginalLength, false, |
+ UNKNOWN_TYPE, FakeNow()); |
+ |
+ // 15000 falls into the 12 KB bucket |
+ tester.ExpectUniqueSample("Net.DailyOriginalContentLength", 12, 1); |
+ tester.ExpectUniqueSample("Net.DailyOriginalContentLength_Application", 12, |
+ 1); |
+ tester.ExpectUniqueSample( |
+ "Net.DailyOriginalContentLength_DataReductionProxyEnabled", 12, 1); |
+ tester.ExpectUniqueSample( |
+ "Net.DailyOriginalContentLength_DataReductionProxyEnabled_Application", |
+ 12, 1); |
+ tester.ExpectUniqueSample( |
+ "Net.DailyOriginalContentLength_ViaDataReductionProxy", 12, 1); |
+ tester.ExpectUniqueSample( |
+ "Net.DailyOriginalContentLength_ViaDataReductionProxy_Application", 12, |
+ 1); |
+ |
+ // 10000 falls into the 9 KB bucket |
+ tester.ExpectUniqueSample("Net.DailyContentLength", 9, 1); |
+ tester.ExpectUniqueSample("Net.DailyReceivedContentLength_Application", 9, 1); |
+ tester.ExpectUniqueSample("Net.DailyContentLength_DataReductionProxyEnabled", |
+ 9, 1); |
+ tester.ExpectUniqueSample( |
+ "Net.DailyContentLength_DataReductionProxyEnabled_Application", 9, 1); |
+ tester.ExpectUniqueSample("Net.DailyContentLength_ViaDataReductionProxy", 9, |
+ 1); |
+ tester.ExpectUniqueSample( |
+ "Net.DailyContentLength_ViaDataReductionProxy_Application", 9, 1); |
+ |
+ // floor((15000 - 10000) * 100) = 33. |
+ tester.ExpectUniqueSample("Net.DailyContentSavingPercent", 33, 1); |
+ tester.ExpectUniqueSample( |
+ "Net.DailyContentSavingPercent_DataReductionProxyEnabled", 33, 1); |
+ tester.ExpectUniqueSample( |
+ "Net.DailyContentSavingPercent_ViaDataReductionProxy", 33, 1); |
+ |
+ tester.ExpectUniqueSample("Net.DailyContentPercent_DataReductionProxyEnabled", |
+ 100, 1); |
+ tester.ExpectUniqueSample("Net.DailyContentPercent_ViaDataReductionProxy", |
+ 100, 1); |
+ tester.ExpectUniqueSample( |
+ "Net.DailyContentPercent_DataReductionProxyEnabled_Unknown", 0, 1); |
+} |
+ |
} // namespace data_reduction_proxy |