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/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 |