| 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 6bdaba84d69a8459e871d03cfea016746da34cc2..87e92e60560b561d2c52169d48376824686d757a 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
|
| @@ -3,8 +3,10 @@
|
| // found in the LICENSE file.
|
|
|
| #include "base/command_line.h"
|
| +#include "base/memory/ref_counted.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/prefs/pref_registry_simple.h"
|
| +#include "base/prefs/pref_service.h"
|
| #include "base/prefs/testing_pref_service.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/test/test_simple_task_runner.h"
|
| @@ -18,8 +20,6 @@
|
|
|
| namespace {
|
|
|
| -// TODO Make kNumDaysInHistory accessible from DataReductionProxySettings.
|
| -const size_t kNumDaysInHistory = 60;
|
| const int kWriteDelayMinutes = 60;
|
|
|
| int64 GetListPrefInt64Value(
|
| @@ -36,13 +36,42 @@ int64 GetListPrefInt64Value(
|
|
|
| namespace data_reduction_proxy {
|
|
|
| +// The initial last update time used in test. There is no leap second a few
|
| +// days around this time used in the test.
|
| +// Note: No time zone is specified. Local time will be assumed by
|
| +// base::Time::FromString below.
|
| +const char kLastUpdateTime[] = "Wed, 18 Sep 2013 03:45:26";
|
| +
|
| class DataReductionProxyCompressionStatsTest : public testing::Test {
|
| protected:
|
| DataReductionProxyCompressionStatsTest()
|
| : task_runner_(scoped_refptr<base::TestSimpleTaskRunner>(
|
| - new base::TestSimpleTaskRunner())) {}
|
| + new base::TestSimpleTaskRunner())) {
|
| + base::Time::FromString(kLastUpdateTime, &now_);
|
| + }
|
| +
|
| + void SetUp() override {
|
| + compression_stats_.reset(new DataReductionProxyCompressionStats(
|
| + pref_service(), task_runner_, base::TimeDelta()));
|
| + RegisterSimpleProfilePrefs(pref_service()->registry());
|
| + }
|
| +
|
| + void ResetCompressionStatsWithDelay(const base::TimeDelta& delay) {
|
| + compression_stats_.reset(new DataReductionProxyCompressionStats(
|
| + pref_service(), task_runner_, delay));
|
| + }
|
| +
|
| + base::Time FakeNow() const {
|
| + return now_ + now_delta_;
|
| + }
|
|
|
| - void SetUp() override { RegisterPrefs(simple_pref_service_.registry()); }
|
| + void SetFakeTimeDeltaInHours(int hours) {
|
| + now_delta_ = base::TimeDelta::FromHours(hours);
|
| + }
|
| +
|
| + void AddFakeTimeDeltaInHours(int hours) {
|
| + now_delta_ += base::TimeDelta::FromHours(hours);
|
| + }
|
|
|
| void SetUpPrefs() {
|
| CreatePrefList(prefs::kDailyHttpOriginalContentLength);
|
| @@ -86,7 +115,7 @@ class DataReductionProxyCompressionStatsTest : public testing::Test {
|
| // |simple_pref_service| for |pref|.
|
| void VerifyPrefListWasWritten(const char* pref) {
|
| const base::ListValue* delayed_list = compression_stats_->GetList(pref);
|
| - const base::ListValue* written_list = simple_pref_service_.GetList(pref);
|
| + const base::ListValue* written_list = pref_service()->GetList(pref);
|
| ASSERT_EQ(delayed_list->GetSize(), written_list->GetSize());
|
| size_t count = delayed_list->GetSize();
|
|
|
| @@ -100,7 +129,7 @@ class DataReductionProxyCompressionStatsTest : public testing::Test {
|
| // |simple_pref_service|.
|
| void VerifyPrefWasWritten(const char* pref) {
|
| int64 delayed_pref = compression_stats_->GetInt64(pref);
|
| - int64 written_pref = simple_pref_service_.GetInt64(pref);
|
| + int64 written_pref = pref_service()->GetInt64(pref);
|
| EXPECT_EQ(delayed_pref, written_pref);
|
| }
|
|
|
| @@ -123,16 +152,154 @@ class DataReductionProxyCompressionStatsTest : public testing::Test {
|
| EXPECT_EQ(service_pref, dict_pref);
|
| }
|
|
|
| + // Verify the pref list values are equal to the given values.
|
| + // If the count of values is less than kNumDaysInHistory, zeros are assumed
|
| + // at the beginning.
|
| + void VerifyPrefList(const char* pref, const int64* values, size_t count) {
|
| + ASSERT_GE(kNumDaysInHistory, count);
|
| + base::ListValue* update = compression_stats_->GetList(pref);
|
| + 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);
|
| + }
|
| + for (size_t i = 0; i < kNumDaysInHistory - count; ++i) {
|
| + EXPECT_EQ(0, GetListPrefInt64Value(*update, i)) << "index=" << i;
|
| + }
|
| + }
|
| +
|
| + // Verify all daily data saving pref list values.
|
| + void VerifyDailyDataSavingContentLengthPrefLists(
|
| + const int64* original_values, size_t original_count,
|
| + const int64* received_values, size_t received_count,
|
| + const int64* original_with_data_reduction_proxy_enabled_values,
|
| + size_t original_with_data_reduction_proxy_enabled_count,
|
| + const int64* received_with_data_reduction_proxy_enabled_values,
|
| + size_t received_with_data_reduction_proxy_count,
|
| + const int64* original_via_data_reduction_proxy_values,
|
| + size_t original_via_data_reduction_proxy_count,
|
| + const int64* received_via_data_reduction_proxy_values,
|
| + size_t received_via_data_reduction_proxy_count) {
|
| + VerifyPrefList(data_reduction_proxy::prefs::kDailyHttpOriginalContentLength,
|
| + original_values, original_count);
|
| + VerifyPrefList(data_reduction_proxy::prefs::kDailyHttpReceivedContentLength,
|
| + received_values, received_count);
|
| + VerifyPrefList(
|
| + data_reduction_proxy::prefs::
|
| + kDailyOriginalContentLengthWithDataReductionProxyEnabled,
|
| + original_with_data_reduction_proxy_enabled_values,
|
| + original_with_data_reduction_proxy_enabled_count);
|
| + VerifyPrefList(
|
| + data_reduction_proxy::prefs::
|
| + kDailyContentLengthWithDataReductionProxyEnabled,
|
| + received_with_data_reduction_proxy_enabled_values,
|
| + received_with_data_reduction_proxy_count);
|
| + VerifyPrefList(
|
| + data_reduction_proxy::prefs::
|
| + kDailyOriginalContentLengthViaDataReductionProxy,
|
| + original_via_data_reduction_proxy_values,
|
| + original_via_data_reduction_proxy_count);
|
| + VerifyPrefList(
|
| + data_reduction_proxy::prefs::
|
| + kDailyContentLengthViaDataReductionProxy,
|
| + received_via_data_reduction_proxy_values,
|
| + received_via_data_reduction_proxy_count);
|
| + }
|
| +
|
| + // Verify daily data saving pref for request types.
|
| + void VerifyDailyRequestTypeContentLengthPrefLists(
|
| + const int64* original_values, size_t original_count,
|
| + const int64* received_values, size_t received_count,
|
| + const int64* original_with_data_reduction_proxy_enabled_values,
|
| + size_t original_with_data_reduction_proxy_enabled_count,
|
| + const int64* received_with_data_reduction_proxy_enabled_values,
|
| + size_t received_with_data_reduction_proxy_count,
|
| + const int64* https_with_data_reduction_proxy_enabled_values,
|
| + size_t https_with_data_reduction_proxy_enabled_count,
|
| + const int64* short_bypass_with_data_reduction_proxy_enabled_values,
|
| + size_t short_bypass_with_data_reduction_proxy_enabled_count,
|
| + const int64* long_bypass_with_data_reduction_proxy_enabled_values,
|
| + size_t long_bypass_with_data_reduction_proxy_enabled_count,
|
| + const int64* unknown_with_data_reduction_proxy_enabled_values,
|
| + size_t unknown_with_data_reduction_proxy_enabled_count) {
|
| + VerifyPrefList(data_reduction_proxy::prefs::kDailyHttpOriginalContentLength,
|
| + original_values, original_count);
|
| + VerifyPrefList(data_reduction_proxy::prefs::kDailyHttpReceivedContentLength,
|
| + received_values, received_count);
|
| + VerifyPrefList(
|
| + data_reduction_proxy::prefs::
|
| + kDailyOriginalContentLengthWithDataReductionProxyEnabled,
|
| + original_with_data_reduction_proxy_enabled_values,
|
| + original_with_data_reduction_proxy_enabled_count);
|
| + VerifyPrefList(
|
| + data_reduction_proxy::prefs::
|
| + kDailyContentLengthWithDataReductionProxyEnabled,
|
| + received_with_data_reduction_proxy_enabled_values,
|
| + received_with_data_reduction_proxy_count);
|
| + VerifyPrefList(
|
| + data_reduction_proxy::prefs::
|
| + kDailyContentLengthHttpsWithDataReductionProxyEnabled,
|
| + https_with_data_reduction_proxy_enabled_values,
|
| + https_with_data_reduction_proxy_enabled_count);
|
| + VerifyPrefList(
|
| + data_reduction_proxy::prefs::
|
| + kDailyContentLengthShortBypassWithDataReductionProxyEnabled,
|
| + short_bypass_with_data_reduction_proxy_enabled_values,
|
| + short_bypass_with_data_reduction_proxy_enabled_count);
|
| + VerifyPrefList(
|
| + data_reduction_proxy::prefs::
|
| + kDailyContentLengthLongBypassWithDataReductionProxyEnabled,
|
| + long_bypass_with_data_reduction_proxy_enabled_values,
|
| + long_bypass_with_data_reduction_proxy_enabled_count);
|
| + VerifyPrefList(
|
| + data_reduction_proxy::prefs::
|
| + kDailyContentLengthUnknownWithDataReductionProxyEnabled,
|
| + unknown_with_data_reduction_proxy_enabled_values,
|
| + unknown_with_data_reduction_proxy_enabled_count);
|
| + }
|
| +
|
| + int64 GetInt64(const char* pref_path) {
|
| + return compression_stats_->GetInt64(pref_path);
|
| + }
|
| +
|
| + void SetInt64(const char* pref_path, int64 pref_value) {
|
| + compression_stats_->SetInt64(pref_path, pref_value);
|
| + }
|
| +
|
| + void RecordContentLengthPrefs(int received_content_length,
|
| + int original_content_length,
|
| + bool with_data_reduction_proxy_enabled,
|
| + DataReductionProxyRequestType request_type,
|
| + base::Time now) {
|
| + compression_stats_->RecordContentLengthPrefs(
|
| + received_content_length, original_content_length,
|
| + with_data_reduction_proxy_enabled, request_type, now);
|
| + }
|
| +
|
| + DataReductionProxyCompressionStats* compression_stats() {
|
| + return compression_stats_.get();
|
| + }
|
| +
|
| + void RunPendingTasks() {
|
| + task_runner_->RunPendingTasks();
|
| + }
|
| +
|
| + TestingPrefServiceSimple* pref_service() {
|
| + return &simple_pref_service_;
|
| + }
|
| +
|
| + private:
|
| scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
|
| TestingPrefServiceSimple simple_pref_service_;
|
| scoped_ptr<DataReductionProxyCompressionStats> compression_stats_;
|
| + base::Time now_;
|
| + base::TimeDelta now_delta_;
|
| };
|
|
|
| TEST_F(DataReductionProxyCompressionStatsTest, WritePrefsDirect) {
|
| - compression_stats_.reset(new DataReductionProxyCompressionStats(
|
| - &simple_pref_service_,
|
| - task_runner_,
|
| - base::TimeDelta()));
|
| SetUpPrefs();
|
|
|
| VerifyPrefWasWritten(prefs::kHttpOriginalContentLength);
|
| @@ -142,13 +309,11 @@ TEST_F(DataReductionProxyCompressionStatsTest, WritePrefsDirect) {
|
| }
|
|
|
| TEST_F(DataReductionProxyCompressionStatsTest, WritePrefsDelayed) {
|
| - compression_stats_.reset(new DataReductionProxyCompressionStats(
|
| - &simple_pref_service_,
|
| - task_runner_,
|
| - base::TimeDelta::FromMinutes(kWriteDelayMinutes)));
|
| + ResetCompressionStatsWithDelay(
|
| + base::TimeDelta::FromMinutes(kWriteDelayMinutes));
|
| SetUpPrefs();
|
|
|
| - task_runner_->RunPendingTasks();
|
| + RunPendingTasks();
|
|
|
| VerifyPrefWasWritten(prefs::kHttpOriginalContentLength);
|
| VerifyPrefWasWritten(prefs::kHttpReceivedContentLength);
|
| @@ -158,13 +323,11 @@ TEST_F(DataReductionProxyCompressionStatsTest, WritePrefsDelayed) {
|
|
|
| TEST_F(DataReductionProxyCompressionStatsTest,
|
| WritePrefsOnUpdateDailyReceivedContentLengths) {
|
| - compression_stats_.reset(new DataReductionProxyCompressionStats(
|
| - &simple_pref_service_,
|
| - task_runner_,
|
| - base::TimeDelta::FromMinutes(kWriteDelayMinutes)));
|
| + ResetCompressionStatsWithDelay(
|
| + base::TimeDelta::FromMinutes(kWriteDelayMinutes));
|
| SetUpPrefs();
|
|
|
| - simple_pref_service_.SetBoolean(
|
| + pref_service()->SetBoolean(
|
| prefs::kUpdateDailyReceivedContentLengths, true);
|
|
|
| VerifyPrefWasWritten(prefs::kHttpOriginalContentLength);
|
| @@ -177,23 +340,19 @@ TEST_F(DataReductionProxyCompressionStatsTest,
|
| HistoricNetworkStatsInfoToValue) {
|
| const int64 kOriginalLength = 150;
|
| const int64 kReceivedLength = 100;
|
| - compression_stats_.reset(new DataReductionProxyCompressionStats(
|
| - &simple_pref_service_,
|
| - task_runner_,
|
| - base::TimeDelta::FromMinutes(kWriteDelayMinutes)));
|
| + ResetCompressionStatsWithDelay(
|
| + base::TimeDelta::FromMinutes(kWriteDelayMinutes));
|
|
|
| base::DictionaryValue* dict = nullptr;
|
| scoped_ptr<base::Value> stats_value(
|
| - compression_stats_->HistoricNetworkStatsInfoToValue());
|
| + compression_stats()->HistoricNetworkStatsInfoToValue());
|
| EXPECT_TRUE(stats_value->GetAsDictionary(&dict));
|
| VerifyPrefs(dict);
|
|
|
| - compression_stats_->SetInt64(prefs::kHttpOriginalContentLength,
|
| - kOriginalLength);
|
| - compression_stats_->SetInt64(prefs::kHttpReceivedContentLength,
|
| - kReceivedLength);
|
| + SetInt64(prefs::kHttpOriginalContentLength, kOriginalLength);
|
| + SetInt64(prefs::kHttpReceivedContentLength, kReceivedLength);
|
|
|
| - stats_value.reset(compression_stats_->HistoricNetworkStatsInfoToValue());
|
| + stats_value.reset(compression_stats()->HistoricNetworkStatsInfoToValue());
|
| EXPECT_TRUE(stats_value->GetAsDictionary(&dict));
|
| VerifyPrefs(dict);
|
| }
|
| @@ -202,23 +361,17 @@ TEST_F(DataReductionProxyCompressionStatsTest,
|
| HistoricNetworkStatsInfoToValueDirect) {
|
| const int64 kOriginalLength = 150;
|
| const int64 kReceivedLength = 100;
|
| - compression_stats_.reset(new DataReductionProxyCompressionStats(
|
| - &simple_pref_service_,
|
| - task_runner_,
|
| - base::TimeDelta()));
|
|
|
| base::DictionaryValue* dict = nullptr;
|
| scoped_ptr<base::Value> stats_value(
|
| - compression_stats_->HistoricNetworkStatsInfoToValue());
|
| + compression_stats()->HistoricNetworkStatsInfoToValue());
|
| EXPECT_TRUE(stats_value->GetAsDictionary(&dict));
|
| VerifyPrefs(dict);
|
|
|
| - compression_stats_->SetInt64(prefs::kHttpOriginalContentLength,
|
| - kOriginalLength);
|
| - compression_stats_->SetInt64(prefs::kHttpReceivedContentLength,
|
| - kReceivedLength);
|
| + SetInt64(prefs::kHttpOriginalContentLength, kOriginalLength);
|
| + SetInt64(prefs::kHttpReceivedContentLength, kReceivedLength);
|
|
|
| - stats_value.reset(compression_stats_->HistoricNetworkStatsInfoToValue());
|
| + stats_value.reset(compression_stats()->HistoricNetworkStatsInfoToValue());
|
| EXPECT_TRUE(stats_value->GetAsDictionary(&dict));
|
| VerifyPrefs(dict);
|
| }
|
| @@ -231,14 +384,12 @@ TEST_F(DataReductionProxyCompressionStatsTest,
|
|
|
| base::ListValue list_value;
|
| list_value.Insert(0, new base::StringValue(base::Int64ToString(1234)));
|
| - simple_pref_service_.Set(prefs::kDailyHttpOriginalContentLength, list_value);
|
| + pref_service()->Set(prefs::kDailyHttpOriginalContentLength, list_value);
|
|
|
| - compression_stats_.reset(new DataReductionProxyCompressionStats(
|
| - &simple_pref_service_,
|
| - task_runner_,
|
| - base::TimeDelta::FromMinutes(kWriteDelayMinutes)));
|
| + ResetCompressionStatsWithDelay(
|
| + base::TimeDelta::FromMinutes(kWriteDelayMinutes));
|
|
|
| - const base::ListValue* value = simple_pref_service_.GetList(
|
| + const base::ListValue* value = pref_service()->GetList(
|
| prefs::kDailyHttpOriginalContentLength);
|
| EXPECT_EQ(0u, value->GetSize());
|
| }
|
| @@ -247,18 +398,421 @@ TEST_F(DataReductionProxyCompressionStatsTest,
|
| ClearPrefsOnRestartDisabled) {
|
| base::ListValue list_value;
|
| list_value.Insert(0, new base::StringValue(base::Int64ToString(1234)));
|
| - simple_pref_service_.Set(prefs::kDailyHttpOriginalContentLength, list_value);
|
| + pref_service()->Set(prefs::kDailyHttpOriginalContentLength, list_value);
|
|
|
| - compression_stats_.reset(new DataReductionProxyCompressionStats(
|
| - &simple_pref_service_,
|
| - task_runner_,
|
| - base::TimeDelta::FromMinutes(kWriteDelayMinutes)));
|
| + ResetCompressionStatsWithDelay(
|
| + base::TimeDelta::FromMinutes(kWriteDelayMinutes));
|
|
|
| - const base::ListValue* value = simple_pref_service_.GetList(
|
| + const base::ListValue* value = pref_service()->GetList(
|
| prefs::kDailyHttpOriginalContentLength);
|
| std::string string_value;
|
| value->GetString(0, &string_value);
|
| EXPECT_EQ("1234", string_value);
|
| }
|
|
|
| +TEST_F(DataReductionProxyCompressionStatsTest, TotalLengths) {
|
| + const int64 kOriginalLength = 200;
|
| + const int64 kReceivedLength = 100;
|
| +
|
| + compression_stats()->UpdateContentLengths(
|
| + kReceivedLength, kOriginalLength,
|
| + pref_service()->GetBoolean(
|
| + data_reduction_proxy::prefs::kDataReductionProxyEnabled),
|
| + UNKNOWN_TYPE);
|
| +
|
| + EXPECT_EQ(kReceivedLength,
|
| + GetInt64(data_reduction_proxy::prefs::kHttpReceivedContentLength));
|
| + EXPECT_FALSE(pref_service()->GetBoolean(
|
| + data_reduction_proxy::prefs::kDataReductionProxyEnabled));
|
| + EXPECT_EQ(kOriginalLength,
|
| + GetInt64(data_reduction_proxy::prefs::kHttpOriginalContentLength));
|
| +
|
| + // Record the same numbers again, and total lengths should be doubled.
|
| + compression_stats()->UpdateContentLengths(
|
| + kReceivedLength, kOriginalLength,
|
| + pref_service()->GetBoolean(
|
| + data_reduction_proxy::prefs::kDataReductionProxyEnabled),
|
| + UNKNOWN_TYPE);
|
| +
|
| + EXPECT_EQ(kReceivedLength * 2,
|
| + GetInt64(data_reduction_proxy::prefs::kHttpReceivedContentLength));
|
| + EXPECT_FALSE(pref_service()->GetBoolean(
|
| + data_reduction_proxy::prefs::kDataReductionProxyEnabled));
|
| + EXPECT_EQ(kOriginalLength * 2,
|
| + GetInt64(data_reduction_proxy::prefs::kHttpOriginalContentLength));
|
| +}
|
| +
|
| +TEST_F(DataReductionProxyCompressionStatsTest, OneResponse) {
|
| + const int64 kOriginalLength = 200;
|
| + const int64 kReceivedLength = 100;
|
| + int64 original[] = {kOriginalLength};
|
| + int64 received[] = {kReceivedLength};
|
| +
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, VIA_DATA_REDUCTION_PROXY,
|
| + FakeNow());
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original, 1, received, 1,
|
| + original, 1, received, 1,
|
| + original, 1, received, 1);
|
| +}
|
| +
|
| +TEST_F(DataReductionProxyCompressionStatsTest, MultipleResponses) {
|
| + const int64 kOriginalLength = 150;
|
| + const int64 kReceivedLength = 100;
|
| + int64 original[] = {kOriginalLength};
|
| + int64 received[] = {kReceivedLength};
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, false, UNKNOWN_TYPE, FakeNow());
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original, 1, received, 1,
|
| + NULL, 0, NULL, 0, NULL, 0, NULL, 0);
|
| +
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, UNKNOWN_TYPE, FakeNow());
|
| + original[0] += kOriginalLength;
|
| + received[0] += kReceivedLength;
|
| + int64 original_proxy_enabled[] = {kOriginalLength};
|
| + int64 received_proxy_enabled[] = {kReceivedLength};
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original, 1, received, 1,
|
| + original_proxy_enabled, 1, received_proxy_enabled, 1,
|
| + NULL, 0, NULL, 0);
|
| +
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, VIA_DATA_REDUCTION_PROXY,
|
| + FakeNow());
|
| + original[0] += kOriginalLength;
|
| + received[0] += kReceivedLength;
|
| + original_proxy_enabled[0] += kOriginalLength;
|
| + received_proxy_enabled[0] += kReceivedLength;
|
| + int64 original_via_proxy[] = {kOriginalLength};
|
| + int64 received_via_proxy[] = {kReceivedLength};
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original, 1, received, 1,
|
| + original_proxy_enabled, 1, received_proxy_enabled, 1,
|
| + original_via_proxy, 1, received_via_proxy, 1);
|
| +
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, UNKNOWN_TYPE, FakeNow());
|
| + original[0] += kOriginalLength;
|
| + received[0] += kReceivedLength;
|
| + original_proxy_enabled[0] += kOriginalLength;
|
| + received_proxy_enabled[0] += kReceivedLength;
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original, 1, received, 1,
|
| + original_proxy_enabled, 1, received_proxy_enabled, 1,
|
| + original_via_proxy, 1, received_via_proxy, 1);
|
| +
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, false, UNKNOWN_TYPE, FakeNow());
|
| + original[0] += kOriginalLength;
|
| + received[0] += kReceivedLength;
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original, 1, received, 1,
|
| + original_proxy_enabled, 1, received_proxy_enabled, 1,
|
| + original_via_proxy, 1, received_via_proxy, 1);
|
| +}
|
| +
|
| +TEST_F(DataReductionProxyCompressionStatsTest, RequestType) {
|
| + const int64 kContentLength = 200;
|
| + int64 received[] = {0};
|
| + int64 https_received[] = {0};
|
| + int64 total_received[] = {0};
|
| + int64 proxy_enabled_received[] = {0};
|
| +
|
| + RecordContentLengthPrefs(
|
| + kContentLength, kContentLength, true, HTTPS, FakeNow());
|
| + total_received[0] += kContentLength;
|
| + proxy_enabled_received[0] += kContentLength;
|
| + https_received[0] += kContentLength;
|
| + VerifyDailyRequestTypeContentLengthPrefLists(
|
| + total_received, 1, total_received, 1,
|
| + proxy_enabled_received, 1, proxy_enabled_received, 1,
|
| + https_received, 1,
|
| + received, 0, // short bypass
|
| + received, 0, // long bypass
|
| + received, 0); // unknown
|
| +
|
| + // Data reduction proxy is not enabled.
|
| + RecordContentLengthPrefs(
|
| + kContentLength, kContentLength, false, HTTPS, FakeNow());
|
| + total_received[0] += kContentLength;
|
| + VerifyDailyRequestTypeContentLengthPrefLists(
|
| + total_received, 1, total_received, 1,
|
| + proxy_enabled_received, 1, proxy_enabled_received, 1,
|
| + https_received, 1,
|
| + received, 0, // short bypass
|
| + received, 0, // long bypass
|
| + received, 0); // unknown
|
| +
|
| + RecordContentLengthPrefs(
|
| + kContentLength, kContentLength, true, HTTPS, FakeNow());
|
| + total_received[0] += kContentLength;
|
| + proxy_enabled_received[0] += kContentLength;
|
| + https_received[0] += kContentLength;
|
| + VerifyDailyRequestTypeContentLengthPrefLists(
|
| + total_received, 1, total_received, 1,
|
| + proxy_enabled_received, 1, proxy_enabled_received, 1,
|
| + https_received, 1,
|
| + received, 0, // short bypass
|
| + received, 0, // long bypass
|
| + received, 0); // unknown
|
| +
|
| + RecordContentLengthPrefs(
|
| + kContentLength, kContentLength, true, SHORT_BYPASS, FakeNow());
|
| + total_received[0] += kContentLength;
|
| + proxy_enabled_received[0] += kContentLength;
|
| + received[0] += kContentLength;
|
| + VerifyDailyRequestTypeContentLengthPrefLists(
|
| + total_received, 1, total_received, 1,
|
| + proxy_enabled_received, 1, proxy_enabled_received, 1,
|
| + https_received, 1,
|
| + received, 1, // short bypass
|
| + received, 0, // long bypass
|
| + received, 0); // unknown
|
| +
|
| + RecordContentLengthPrefs(
|
| + kContentLength, kContentLength, true, LONG_BYPASS, FakeNow());
|
| + total_received[0] += kContentLength;
|
| + proxy_enabled_received[0] += kContentLength;
|
| + VerifyDailyRequestTypeContentLengthPrefLists(
|
| + total_received, 1, total_received, 1, // total
|
| + proxy_enabled_received, 1, proxy_enabled_received, 1,
|
| + https_received, 1,
|
| + received, 1, // short bypass
|
| + received, 1, // long bypass
|
| + received, 0); // unknown
|
| +
|
| + RecordContentLengthPrefs(
|
| + kContentLength, kContentLength, true, UNKNOWN_TYPE, FakeNow());
|
| + total_received[0] += kContentLength;
|
| + proxy_enabled_received[0] += kContentLength;
|
| + VerifyDailyRequestTypeContentLengthPrefLists(
|
| + total_received, 1, total_received, 1,
|
| + proxy_enabled_received, 1, proxy_enabled_received, 1,
|
| + https_received, 1,
|
| + received, 1, // short bypass
|
| + received, 1, // long bypass
|
| + received, 1); // unknown
|
| +}
|
| +
|
| +TEST_F(DataReductionProxyCompressionStatsTest, ForwardOneDay) {
|
| + const int64 kOriginalLength = 200;
|
| + const int64 kReceivedLength = 100;
|
| +
|
| + 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());
|
| +
|
| + int64 original[] = {kOriginalLength, kOriginalLength};
|
| + int64 received[] = {kReceivedLength, kReceivedLength};
|
| + int64 original_with_data_reduction_proxy_enabled[] = {kOriginalLength, 0};
|
| + int64 received_with_data_reduction_proxy_enabled[] = {kReceivedLength, 0};
|
| + int64 original_via_data_reduction_proxy[] = {kOriginalLength, 0};
|
| + int64 received_via_data_reduction_proxy[] = {kReceivedLength, 0};
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original, 2,
|
| + received, 2,
|
| + original_with_data_reduction_proxy_enabled, 2,
|
| + received_with_data_reduction_proxy_enabled, 2,
|
| + original_via_data_reduction_proxy, 2,
|
| + received_via_data_reduction_proxy, 2);
|
| +
|
| + // Proxy enabled. Not via proxy.
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, UNKNOWN_TYPE, FakeNow());
|
| + original[1] += kOriginalLength;
|
| + received[1] += kReceivedLength;
|
| + original_with_data_reduction_proxy_enabled[1] += kOriginalLength;
|
| + received_with_data_reduction_proxy_enabled[1] += kReceivedLength;
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original, 2,
|
| + received, 2,
|
| + original_with_data_reduction_proxy_enabled, 2,
|
| + received_with_data_reduction_proxy_enabled, 2,
|
| + original_via_data_reduction_proxy, 2,
|
| + received_via_data_reduction_proxy, 2);
|
| +
|
| + // Proxy enabled and via proxy.
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, VIA_DATA_REDUCTION_PROXY,
|
| + FakeNow());
|
| + original[1] += kOriginalLength;
|
| + received[1] += kReceivedLength;
|
| + original_with_data_reduction_proxy_enabled[1] += kOriginalLength;
|
| + received_with_data_reduction_proxy_enabled[1] += kReceivedLength;
|
| + original_via_data_reduction_proxy[1] += kOriginalLength;
|
| + received_via_data_reduction_proxy[1] += kReceivedLength;
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original, 2,
|
| + received, 2,
|
| + original_with_data_reduction_proxy_enabled, 2,
|
| + received_with_data_reduction_proxy_enabled, 2,
|
| + original_via_data_reduction_proxy, 2,
|
| + received_via_data_reduction_proxy, 2);
|
| +}
|
| +
|
| +TEST_F(DataReductionProxyCompressionStatsTest, PartialDayTimeChange) {
|
| + const int64 kOriginalLength = 200;
|
| + const int64 kReceivedLength = 100;
|
| + int64 original[] = {0, kOriginalLength};
|
| + int64 received[] = {0, kReceivedLength};
|
| +
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, VIA_DATA_REDUCTION_PROXY,
|
| + FakeNow());
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original, 2, received, 2,
|
| + original, 2, received, 2,
|
| + original, 2, received, 2);
|
| +
|
| + // Forward 10 hours, stay in the same day.
|
| + // See kLastUpdateTime: "Now" in test is 03:45am.
|
| + SetFakeTimeDeltaInHours(10);
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, VIA_DATA_REDUCTION_PROXY,
|
| + FakeNow());
|
| + original[1] += kOriginalLength;
|
| + received[1] += kReceivedLength;
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original, 2, received, 2,
|
| + original, 2, received, 2,
|
| + original, 2, received, 2);
|
| +
|
| + // Forward 11 more hours, comes to tomorrow.
|
| + AddFakeTimeDeltaInHours(11);
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, VIA_DATA_REDUCTION_PROXY,
|
| + FakeNow());
|
| + int64 original2[] = {kOriginalLength * 2, kOriginalLength};
|
| + int64 received2[] = {kReceivedLength * 2, kReceivedLength};
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original2, 2, received2, 2,
|
| + original2, 2, received2, 2,
|
| + original2, 2, received2, 2);
|
| +}
|
| +
|
| +TEST_F(DataReductionProxyCompressionStatsTest, ForwardMultipleDays) {
|
| + const int64 kOriginalLength = 200;
|
| + const int64 kReceivedLength = 100;
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, VIA_DATA_REDUCTION_PROXY,
|
| + FakeNow());
|
| +
|
| + // Forward three days.
|
| + SetFakeTimeDeltaInHours(3 * 24);
|
| +
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, VIA_DATA_REDUCTION_PROXY,
|
| + FakeNow());
|
| +
|
| + int64 original[] = {kOriginalLength, 0, 0, kOriginalLength};
|
| + int64 received[] = {kReceivedLength, 0, 0, kReceivedLength};
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original, 4, received, 4,
|
| + original, 4, received, 4,
|
| + original, 4, received, 4);
|
| +
|
| + // Forward four more days.
|
| + AddFakeTimeDeltaInHours(4 * 24);
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, VIA_DATA_REDUCTION_PROXY,
|
| + FakeNow());
|
| + int64 original2[] = {
|
| + kOriginalLength, 0, 0, kOriginalLength, 0, 0, 0, kOriginalLength,
|
| + };
|
| + int64 received2[] = {
|
| + kReceivedLength, 0, 0, kReceivedLength, 0, 0, 0, kReceivedLength,
|
| + };
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original2, 8, received2, 8,
|
| + original2, 8, received2, 8,
|
| + original2, 8, received2, 8);
|
| +
|
| + // Forward |kNumDaysInHistory| more days.
|
| + AddFakeTimeDeltaInHours(kNumDaysInHistory * 24);
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, VIA_DATA_REDUCTION_PROXY,
|
| + FakeNow());
|
| + int64 original3[] = {kOriginalLength};
|
| + int64 received3[] = {kReceivedLength};
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original3, 1, received3, 1,
|
| + original3, 1, received3, 1,
|
| + original3, 1, received3, 1);
|
| +
|
| + // Forward |kNumDaysInHistory| + 1 more days.
|
| + AddFakeTimeDeltaInHours((kNumDaysInHistory + 1)* 24);
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, VIA_DATA_REDUCTION_PROXY,
|
| + FakeNow());
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original3, 1, received3, 1,
|
| + original3, 1, received3, 1,
|
| + original3, 1, received3, 1);
|
| +}
|
| +
|
| +TEST_F(DataReductionProxyCompressionStatsTest, BackwardAndForwardOneDay) {
|
| + const int64 kOriginalLength = 200;
|
| + const int64 kReceivedLength = 100;
|
| + int64 original[] = {kOriginalLength};
|
| + int64 received[] = {kReceivedLength};
|
| +
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, VIA_DATA_REDUCTION_PROXY,
|
| + FakeNow());
|
| +
|
| + // Backward one day.
|
| + SetFakeTimeDeltaInHours(-24);
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, VIA_DATA_REDUCTION_PROXY,
|
| + FakeNow());
|
| + original[0] += kOriginalLength;
|
| + received[0] += kReceivedLength;
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original, 1, received, 1,
|
| + original, 1, received, 1,
|
| + original, 1, received, 1);
|
| +
|
| + // Then, Forward one day
|
| + AddFakeTimeDeltaInHours(24);
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, VIA_DATA_REDUCTION_PROXY,
|
| + FakeNow());
|
| + int64 original2[] = {kOriginalLength * 2, kOriginalLength};
|
| + int64 received2[] = {kReceivedLength * 2, kReceivedLength};
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original2, 2, received2, 2,
|
| + original2, 2, received2, 2,
|
| + original2, 2, received2, 2);
|
| +}
|
| +
|
| +TEST_F(DataReductionProxyCompressionStatsTest, BackwardTwoDays) {
|
| + const int64 kOriginalLength = 200;
|
| + const int64 kReceivedLength = 100;
|
| + int64 original[] = {kOriginalLength};
|
| + int64 received[] = {kReceivedLength};
|
| +
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, VIA_DATA_REDUCTION_PROXY,
|
| + FakeNow());
|
| + // Backward two days.
|
| + SetFakeTimeDeltaInHours(-2 * 24);
|
| + RecordContentLengthPrefs(
|
| + kReceivedLength, kOriginalLength, true, VIA_DATA_REDUCTION_PROXY,
|
| + FakeNow());
|
| + VerifyDailyDataSavingContentLengthPrefLists(
|
| + original, 1, received, 1,
|
| + original, 1, received, 1,
|
| + original, 1, received, 1);
|
| +}
|
| +
|
| } // namespace data_reduction_proxy
|
|
|