| OLD | NEW |
| (Empty) |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "components/previews/core/previews_data_savings.h" | |
| 6 | |
| 7 #include <stdint.h> | |
| 8 | |
| 9 #include <memory> | |
| 10 #include <string> | |
| 11 | |
| 12 #include "base/test/histogram_tester.h" | |
| 13 #include "components/data_reduction_proxy/core/common/data_savings_recorder.h" | |
| 14 #include "testing/gtest/include/gtest/gtest.h" | |
| 15 | |
| 16 namespace previews { | |
| 17 | |
| 18 namespace { | |
| 19 | |
| 20 class TestDataSavingsRecorder | |
| 21 : public data_reduction_proxy::DataSavingsRecorder { | |
| 22 public: | |
| 23 TestDataSavingsRecorder() | |
| 24 : data_saver_enabled_(false), data_used_(0), original_size_(0) {} | |
| 25 ~TestDataSavingsRecorder() {} | |
| 26 | |
| 27 // data_reduction_proxy::DataSavingsRecorder implementation: | |
| 28 bool UpdateDataSavings(const std::string& host, | |
| 29 int64_t data_used, | |
| 30 int64_t original_size) override { | |
| 31 if (!data_saver_enabled_) { | |
| 32 return false; | |
| 33 } | |
| 34 last_host_ = host; | |
| 35 data_used_ += data_used; | |
| 36 original_size_ += original_size; | |
| 37 return true; | |
| 38 } | |
| 39 | |
| 40 void set_data_saver_enabled(bool data_saver_enabled) { | |
| 41 data_saver_enabled_ = data_saver_enabled; | |
| 42 } | |
| 43 | |
| 44 std::string last_host() const { return last_host_; } | |
| 45 | |
| 46 int64_t data_used() const { return data_used_; } | |
| 47 | |
| 48 int64_t original_size() const { return original_size_; } | |
| 49 | |
| 50 private: | |
| 51 bool data_saver_enabled_; | |
| 52 std::string last_host_; | |
| 53 int64_t data_used_; | |
| 54 int64_t original_size_; | |
| 55 }; | |
| 56 | |
| 57 } // namespace | |
| 58 | |
| 59 class PreviewsDataSavingsTest : public testing::Test { | |
| 60 public: | |
| 61 PreviewsDataSavingsTest() | |
| 62 : test_data_savings_recorder_(new TestDataSavingsRecorder()), | |
| 63 data_savings_( | |
| 64 new PreviewsDataSavings(test_data_savings_recorder_.get())) {} | |
| 65 ~PreviewsDataSavingsTest() override {} | |
| 66 | |
| 67 PreviewsDataSavings* data_savings() const { return data_savings_.get(); } | |
| 68 | |
| 69 TestDataSavingsRecorder* test_data_savings_recorder() const { | |
| 70 return test_data_savings_recorder_.get(); | |
| 71 } | |
| 72 | |
| 73 base::HistogramTester* histogram_tester() { return &histogram_tester_; } | |
| 74 | |
| 75 private: | |
| 76 base::HistogramTester histogram_tester_; | |
| 77 | |
| 78 std::unique_ptr<TestDataSavingsRecorder> test_data_savings_recorder_; | |
| 79 std::unique_ptr<PreviewsDataSavings> data_savings_; | |
| 80 }; | |
| 81 | |
| 82 TEST_F(PreviewsDataSavingsTest, RecordDataSavings) { | |
| 83 int64_t original_size = 200; | |
| 84 int64_t data_used = 100; | |
| 85 std::string host = "host"; | |
| 86 | |
| 87 EXPECT_EQ(0, test_data_savings_recorder()->data_used()); | |
| 88 EXPECT_EQ(0, test_data_savings_recorder()->original_size()); | |
| 89 test_data_savings_recorder()->set_data_saver_enabled(false); | |
| 90 data_savings()->RecordDataSavings(host, data_used, original_size); | |
| 91 | |
| 92 EXPECT_EQ(0, test_data_savings_recorder()->data_used()); | |
| 93 EXPECT_EQ(0, test_data_savings_recorder()->original_size()); | |
| 94 EXPECT_EQ(std::string(), test_data_savings_recorder()->last_host()); | |
| 95 | |
| 96 test_data_savings_recorder()->set_data_saver_enabled(true); | |
| 97 data_savings()->RecordDataSavings(host, data_used, original_size); | |
| 98 | |
| 99 EXPECT_EQ(data_used, test_data_savings_recorder()->data_used()); | |
| 100 EXPECT_EQ(original_size, test_data_savings_recorder()->original_size()); | |
| 101 EXPECT_EQ(host, test_data_savings_recorder()->last_host()); | |
| 102 } | |
| 103 | |
| 104 TEST_F(PreviewsDataSavingsTest, RecordDataSavingsHistograms) { | |
| 105 int64_t twenty_kb = 20480; | |
| 106 int64_t twenty = twenty_kb >> 10; | |
| 107 int64_t ten_kb = 10240; | |
| 108 int64_t ten = ten_kb >> 10; | |
| 109 std::string host = "host"; | |
| 110 | |
| 111 test_data_savings_recorder()->set_data_saver_enabled(false); | |
| 112 data_savings()->RecordDataSavings(host, ten_kb, twenty_kb); | |
| 113 | |
| 114 // The histograms record bytes in KB. | |
| 115 histogram_tester()->ExpectUniqueSample( | |
| 116 "Previews.OriginalContentLength.DataSaverDisabled", twenty, 1); | |
| 117 histogram_tester()->ExpectUniqueSample( | |
| 118 "Previews.ContentLength.DataSaverDisabled", ten, 1); | |
| 119 histogram_tester()->ExpectUniqueSample( | |
| 120 "Previews.DataSavings.DataSaverDisabled", twenty - ten, 1); | |
| 121 histogram_tester()->ExpectUniqueSample( | |
| 122 "Previews.DataSavingsPercent.DataSaverDisabled", | |
| 123 (twenty_kb - ten_kb) * 100 / twenty_kb, 1); | |
| 124 | |
| 125 data_savings()->RecordDataSavings(host, twenty_kb, ten_kb); | |
| 126 | |
| 127 // The histograms record bytes in KB. | |
| 128 histogram_tester()->ExpectBucketCount( | |
| 129 "Previews.OriginalContentLength.DataSaverDisabled", ten, 1); | |
| 130 histogram_tester()->ExpectBucketCount( | |
| 131 "Previews.ContentLength.DataSaverDisabled", twenty, 1); | |
| 132 histogram_tester()->ExpectUniqueSample( | |
| 133 "Previews.DataInflation.DataSaverDisabled", twenty - ten, 1); | |
| 134 histogram_tester()->ExpectUniqueSample( | |
| 135 "Previews.DataInflationPercent.DataSaverDisabled", | |
| 136 (twenty_kb - ten_kb) * 100 / twenty_kb, 1); | |
| 137 | |
| 138 test_data_savings_recorder()->set_data_saver_enabled(true); | |
| 139 data_savings()->RecordDataSavings(host, ten_kb, twenty_kb); | |
| 140 | |
| 141 // The histograms record bytes in KB. | |
| 142 histogram_tester()->ExpectUniqueSample( | |
| 143 "Previews.OriginalContentLength.DataSaverEnabled", twenty, 1); | |
| 144 histogram_tester()->ExpectUniqueSample( | |
| 145 "Previews.ContentLength.DataSaverEnabled", ten, 1); | |
| 146 histogram_tester()->ExpectUniqueSample( | |
| 147 "Previews.DataSavings.DataSaverEnabled", twenty - ten, 1); | |
| 148 histogram_tester()->ExpectUniqueSample( | |
| 149 "Previews.DataSavingsPercent.DataSaverEnabled", | |
| 150 (twenty_kb - ten_kb) * 100 / twenty_kb, 1); | |
| 151 | |
| 152 data_savings()->RecordDataSavings(host, twenty_kb, ten_kb); | |
| 153 | |
| 154 // The histograms record bytes in KB. | |
| 155 histogram_tester()->ExpectBucketCount( | |
| 156 "Previews.OriginalContentLength.DataSaverEnabled", ten, 1); | |
| 157 histogram_tester()->ExpectBucketCount( | |
| 158 "Previews.ContentLength.DataSaverEnabled", twenty, 1); | |
| 159 histogram_tester()->ExpectUniqueSample( | |
| 160 "Previews.DataInflation.DataSaverEnabled", twenty - ten, 1); | |
| 161 histogram_tester()->ExpectUniqueSample( | |
| 162 "Previews.DataInflationPercent.DataSaverEnabled", | |
| 163 (twenty_kb - ten_kb) * 100 / twenty_kb, 1); | |
| 164 } | |
| 165 | |
| 166 } // namespace previews | |
| OLD | NEW |