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

Side by Side Diff: chrome/common/translate/translate_common_metrics_unittest.cc

Issue 25531002: Move language detection to a component (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Run translate unittests on iOS Created 7 years, 2 months 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2013 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 "chrome/common/translate/translate_common_metrics.h"
6
7 #include "base/basictypes.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "base/metrics/histogram.h"
10 #include "base/metrics/histogram_samples.h"
11 #include "base/metrics/statistics_recorder.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "testing/platform_test.h"
14
15 using base::HistogramBase;
16 using base::HistogramSamples;
17 using base::SampleCountIterator;
18 using base::StatisticsRecorder;
19 using base::TimeTicks;
20
21 namespace {
22
23 const int kTrue = 1;
24 const int kFalse = 0;
25
26 class MetricsRecorder {
27 public:
28 explicit MetricsRecorder(const char* key) : key_(key) {
29 StatisticsRecorder::Initialize();
30
31 HistogramBase* histogram = StatisticsRecorder::FindHistogram(key_);
32 if (histogram)
33 base_samples_ = histogram->SnapshotSamples();
34 }
35
36 void CheckLanguage(TranslateCommonMetrics::MetricsNameIndex index,
37 int expected_not_provided,
38 int expected_valid,
39 int expected_invalid) {
40 ASSERT_EQ(TranslateCommonMetrics::GetMetricsName(index), key_);
41
42 Snapshot();
43
44 EXPECT_EQ(expected_not_provided,
45 GetCountWithoutSnapshot(
46 TranslateCommonMetrics::LANGUAGE_NOT_PROVIDED));
47 EXPECT_EQ(expected_valid,
48 GetCountWithoutSnapshot(
49 TranslateCommonMetrics::LANGUAGE_VALID));
50 EXPECT_EQ(expected_invalid,
51 GetCountWithoutSnapshot(
52 TranslateCommonMetrics::LANGUAGE_INVALID));
53 }
54
55 void CheckLanguageVerification(int expected_cld_disabled,
56 int expected_cld_only,
57 int expected_unknown,
58 int expected_cld_agree,
59 int expected_cld_disagree,
60 int expected_trust_cld,
61 int expected_cld_complement_sub_code) {
62 ASSERT_EQ(TranslateCommonMetrics::GetMetricsName(
63 TranslateCommonMetrics::UMA_LANGUAGE_VERIFICATION), key_);
64
65 Snapshot();
66
67 EXPECT_EQ(
68 expected_cld_disabled,
69 GetCountWithoutSnapshot(
70 TranslateCommonMetrics::LANGUAGE_VERIFICATION_CLD_DISABLED));
71 EXPECT_EQ(
72 expected_cld_only,
73 GetCountWithoutSnapshot(
74 TranslateCommonMetrics::LANGUAGE_VERIFICATION_CLD_ONLY));
75 EXPECT_EQ(
76 expected_unknown,
77 GetCountWithoutSnapshot(
78 TranslateCommonMetrics::LANGUAGE_VERIFICATION_UNKNOWN));
79 EXPECT_EQ(
80 expected_cld_agree,
81 GetCountWithoutSnapshot(
82 TranslateCommonMetrics::LANGUAGE_VERIFICATION_CLD_AGREE));
83 EXPECT_EQ(
84 expected_cld_disagree,
85 GetCountWithoutSnapshot(
86 TranslateCommonMetrics::LANGUAGE_VERIFICATION_CLD_DISAGREE));
87 EXPECT_EQ(
88 expected_trust_cld,
89 GetCountWithoutSnapshot(
90 TranslateCommonMetrics::LANGUAGE_VERIFICATION_TRUST_CLD));
91 EXPECT_EQ(
92 expected_cld_complement_sub_code,
93 GetCountWithoutSnapshot(
94 TranslateCommonMetrics::
95 LANGUAGE_VERIFICATION_CLD_COMPLEMENT_SUB_CODE));
96 }
97
98 void CheckScheme(int expected_http, int expected_https, int expected_others) {
99 ASSERT_EQ(TranslateCommonMetrics::GetMetricsName(
100 TranslateCommonMetrics::UMA_PAGE_SCHEME), key_);
101
102 Snapshot();
103
104 EXPECT_EQ(expected_http,
105 GetCountWithoutSnapshot(TranslateCommonMetrics::SCHEME_HTTP));
106 EXPECT_EQ(expected_https,
107 GetCountWithoutSnapshot(TranslateCommonMetrics::SCHEME_HTTPS));
108 EXPECT_EQ(expected_others,
109 GetCountWithoutSnapshot(TranslateCommonMetrics::SCHEME_OTHERS));
110 }
111
112 void CheckTotalCount(int count) {
113 Snapshot();
114 EXPECT_EQ(count, GetTotalCount());
115 }
116
117 void CheckValueInLogs(double value) {
118 Snapshot();
119 ASSERT_TRUE(samples_.get());
120 for (scoped_ptr<SampleCountIterator> i = samples_->Iterator();
121 !i->Done();
122 i->Next()) {
123 HistogramBase::Sample min;
124 HistogramBase::Sample max;
125 HistogramBase::Count count;
126 i->Get(&min, &max, &count);
127 if (min <= value && value <= max && count >= 1)
128 return;
129 }
130 EXPECT_FALSE(true);
131 }
132
133 HistogramBase::Count GetCount(HistogramBase::Sample value) {
134 Snapshot();
135 return GetCountWithoutSnapshot(value);
136 }
137
138 private:
139 void Snapshot() {
140 HistogramBase* histogram = StatisticsRecorder::FindHistogram(key_);
141 if (!histogram)
142 return;
143 samples_ = histogram->SnapshotSamples();
144 }
145
146 HistogramBase::Count GetCountWithoutSnapshot(HistogramBase::Sample value) {
147 if (!samples_.get())
148 return 0;
149 HistogramBase::Count count = samples_->GetCount(value);
150 if (!base_samples_.get())
151 return count;
152 return count - base_samples_->GetCount(value);
153 }
154
155 HistogramBase::Count GetTotalCount() {
156 if (!samples_.get())
157 return 0;
158 HistogramBase::Count count = samples_->TotalCount();
159 if (!base_samples_.get())
160 return count;
161 return count - base_samples_->TotalCount();
162 }
163
164 std::string key_;
165 scoped_ptr<HistogramSamples> base_samples_;
166 scoped_ptr<HistogramSamples> samples_;
167
168 DISALLOW_COPY_AND_ASSIGN(MetricsRecorder);
169 };
170
171 } // namespace
172
173 TEST(TranslateCommonMetricsTest, ReportContentLanguage) {
174 MetricsRecorder recorder(TranslateCommonMetrics::GetMetricsName(
175 TranslateCommonMetrics::UMA_CONTENT_LANGUAGE));
176
177 recorder.CheckLanguage(TranslateCommonMetrics::UMA_CONTENT_LANGUAGE, 0, 0, 0);
178 TranslateCommonMetrics::ReportContentLanguage(std::string(), std::string());
179 recorder.CheckLanguage(TranslateCommonMetrics::UMA_CONTENT_LANGUAGE, 1, 0, 0);
180 TranslateCommonMetrics::ReportContentLanguage("ja_JP", "ja-JP");
181 recorder.CheckLanguage(TranslateCommonMetrics::UMA_CONTENT_LANGUAGE, 1, 0, 1);
182 TranslateCommonMetrics::ReportContentLanguage("en", "en");
183 recorder.CheckLanguage(TranslateCommonMetrics::UMA_CONTENT_LANGUAGE, 1, 1, 1);
184 }
185
186 TEST(TranslateCommonMetricsTest, ReportHtmlLang) {
187 MetricsRecorder recorder(TranslateCommonMetrics::GetMetricsName(
188 TranslateCommonMetrics::UMA_HTML_LANG));
189
190 recorder.CheckLanguage(TranslateCommonMetrics::UMA_HTML_LANG, 0, 0, 0);
191 TranslateCommonMetrics::ReportHtmlLang(std::string(), std::string());
192 recorder.CheckLanguage(TranslateCommonMetrics::UMA_HTML_LANG, 1, 0, 0);
193 TranslateCommonMetrics::ReportHtmlLang("ja_JP", "ja-JP");
194 recorder.CheckLanguage(TranslateCommonMetrics::UMA_HTML_LANG, 1, 0, 1);
195 TranslateCommonMetrics::ReportHtmlLang("en", "en");
196 recorder.CheckLanguage(TranslateCommonMetrics::UMA_HTML_LANG, 1, 1, 1);
197 }
198
199 TEST(TranslateCommonMetricsTest, ReportLanguageVerification) {
200 MetricsRecorder recorder(TranslateCommonMetrics::GetMetricsName(
201 TranslateCommonMetrics::UMA_LANGUAGE_VERIFICATION));
202
203 recorder.CheckLanguageVerification(0, 0, 0, 0, 0, 0, 0);
204 TranslateCommonMetrics::ReportLanguageVerification(
205 TranslateCommonMetrics::LANGUAGE_VERIFICATION_CLD_DISABLED);
206 recorder.CheckLanguageVerification(1, 0, 0, 0, 0, 0, 0);
207 TranslateCommonMetrics::ReportLanguageVerification(
208 TranslateCommonMetrics::LANGUAGE_VERIFICATION_CLD_ONLY);
209 recorder.CheckLanguageVerification(1, 1, 0, 0, 0, 0, 0);
210 TranslateCommonMetrics::ReportLanguageVerification(
211 TranslateCommonMetrics::LANGUAGE_VERIFICATION_UNKNOWN);
212 recorder.CheckLanguageVerification(1, 1, 1, 0, 0, 0, 0);
213 TranslateCommonMetrics::ReportLanguageVerification(
214 TranslateCommonMetrics::LANGUAGE_VERIFICATION_CLD_AGREE);
215 recorder.CheckLanguageVerification(1, 1, 1, 1, 0, 0, 0);
216 TranslateCommonMetrics::ReportLanguageVerification(
217 TranslateCommonMetrics::LANGUAGE_VERIFICATION_CLD_DISAGREE);
218 recorder.CheckLanguageVerification(1, 1, 1, 1, 1, 0, 0);
219 TranslateCommonMetrics::ReportLanguageVerification(
220 TranslateCommonMetrics::LANGUAGE_VERIFICATION_TRUST_CLD);
221 recorder.CheckLanguageVerification(1, 1, 1, 1, 1, 1, 0);
222 TranslateCommonMetrics::ReportLanguageVerification(
223 TranslateCommonMetrics::LANGUAGE_VERIFICATION_CLD_COMPLEMENT_SUB_CODE);
224 recorder.CheckLanguageVerification(1, 1, 1, 1, 1, 1, 1);
225 }
226
227 TEST(TranslateCommonMetricsTest, ReportTimeToBeReady) {
228 MetricsRecorder recorder(TranslateCommonMetrics::GetMetricsName(
229 TranslateCommonMetrics::UMA_TIME_TO_BE_READY));
230 recorder.CheckTotalCount(0);
231 TranslateCommonMetrics::ReportTimeToBeReady(3.14);
232 recorder.CheckValueInLogs(3.14);
233 recorder.CheckTotalCount(1);
234 }
235
236 TEST(TranslateCommonMetricsTest, ReportTimeToLoad) {
237 MetricsRecorder recorder(TranslateCommonMetrics::GetMetricsName(
238 TranslateCommonMetrics::UMA_TIME_TO_LOAD));
239 recorder.CheckTotalCount(0);
240 TranslateCommonMetrics::ReportTimeToLoad(573.0);
241 recorder.CheckValueInLogs(573.0);
242 recorder.CheckTotalCount(1);
243 }
244
245 TEST(TranslateCommonMetricsTest, ReportTimeToTranslate) {
246 MetricsRecorder recorder(TranslateCommonMetrics::GetMetricsName(
247 TranslateCommonMetrics::UMA_TIME_TO_TRANSLATE));
248 recorder.CheckTotalCount(0);
249 TranslateCommonMetrics::ReportTimeToTranslate(4649.0);
250 recorder.CheckValueInLogs(4649.0);
251 recorder.CheckTotalCount(1);
252 }
253
254 TEST(TranslateCommonMetricsTest, ReportUserActionDuration) {
255 MetricsRecorder recorder(TranslateCommonMetrics::GetMetricsName(
256 TranslateCommonMetrics::UMA_USER_ACTION_DURATION));
257 recorder.CheckTotalCount(0);
258 TimeTicks begin = TimeTicks::Now();
259 TimeTicks end = begin + base::TimeDelta::FromSeconds(3776);
260 TranslateCommonMetrics::ReportUserActionDuration(begin, end);
261 recorder.CheckValueInLogs(3776000.0);
262 recorder.CheckTotalCount(1);
263 }
264
265 TEST(TranslateCommonMetricsTest, ReportPageScheme) {
266 MetricsRecorder recorder(TranslateCommonMetrics::GetMetricsName(
267 TranslateCommonMetrics::UMA_PAGE_SCHEME));
268 recorder.CheckScheme(0, 0, 0);
269 TranslateCommonMetrics::ReportPageScheme("http");
270 recorder.CheckScheme(1, 0, 0);
271 TranslateCommonMetrics::ReportPageScheme("https");
272 recorder.CheckScheme(1, 1, 0);
273 TranslateCommonMetrics::ReportPageScheme("ftp");
274 recorder.CheckScheme(1, 1, 1);
275 }
276
277 TEST(TranslateCommonMetricsTest, ReportSimilarLanguageMatch) {
278 MetricsRecorder recorder(TranslateCommonMetrics::GetMetricsName(
279 TranslateCommonMetrics::UMA_SIMILAR_LANGUAGE_MATCH));
280 recorder.CheckTotalCount(0);
281 EXPECT_EQ(0, recorder.GetCount(kTrue));
282 EXPECT_EQ(0, recorder.GetCount(kFalse));
283 TranslateCommonMetrics::ReportSimilarLanguageMatch(true);
284 EXPECT_EQ(1, recorder.GetCount(kTrue));
285 EXPECT_EQ(0, recorder.GetCount(kFalse));
286 TranslateCommonMetrics::ReportSimilarLanguageMatch(false);
287 EXPECT_EQ(1, recorder.GetCount(kTrue));
288 EXPECT_EQ(1, recorder.GetCount(kFalse));
289 }
290
291 TEST(TranslateCommonMetricsTest, ReportLanguageDetectionTime) {
292 MetricsRecorder recorder(TranslateCommonMetrics::GetMetricsName(
293 TranslateCommonMetrics::UMA_LANGUAGE_DETECTION));
294 recorder.CheckTotalCount(0);
295 TimeTicks begin = TimeTicks::Now();
296 TimeTicks end = begin + base::TimeDelta::FromMicroseconds(9009);
297 TranslateCommonMetrics::ReportLanguageDetectionTime(begin, end);
298 recorder.CheckValueInLogs(9.009);
299 recorder.CheckTotalCount(1);
300 }
OLDNEW
« no previous file with comments | « chrome/common/translate/translate_common_metrics.cc ('k') | chrome/common/translate/translate_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698