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

Side by Side Diff: components/translate/core/browser/translate_ranker_impl_unittest.cc

Issue 2697703004: Allow TranslateRanker to override decisions taken by heuristics. (Closed)
Patch Set: Merge & Cleanup commented code. Created 3 years, 8 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
1 // Copyright 2016 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/translate/core/browser/translate_ranker_impl.h" 5 #include "components/translate/core/browser/translate_ranker_impl.h"
6 6
7 #include <initializer_list> 7 #include <initializer_list>
8 #include <memory> 8 #include <memory>
9 9
10 #include "base/feature_list.h" 10 #include "base/feature_list.h"
(...skipping 18 matching lines...) Expand all
29 #include "net/url_request/test_url_fetcher_factory.h" 29 #include "net/url_request/test_url_fetcher_factory.h"
30 #include "net/url_request/url_request_test_util.h" 30 #include "net/url_request/url_request_test_util.h"
31 #include "testing/gtest/include/gtest/gtest.h" 31 #include "testing/gtest/include/gtest/gtest.h"
32 #include "url/gurl.h" 32 #include "url/gurl.h"
33 33
34 namespace { 34 namespace {
35 35
36 using translate::kTranslateRankerEnforcement; 36 using translate::kTranslateRankerEnforcement;
37 using translate::kTranslateRankerLogging; 37 using translate::kTranslateRankerLogging;
38 using translate::kTranslateRankerQuery; 38 using translate::kTranslateRankerQuery;
39 using translate::kTranslateRankerDecisionOverride;
39 using translate::TranslateDownloadManager; 40 using translate::TranslateDownloadManager;
40 using translate::TranslateRankerFeatures; 41 using translate::TranslateRankerFeatures;
41 using translate::TranslatePrefs; 42 using translate::TranslatePrefs;
42 using translate::TranslateRankerImpl; 43 using translate::TranslateRankerImpl;
43 44
44 constexpr int kModelVersion = 1234; 45 constexpr uint32_t kModelVersion = 1234;
45 46
46 class TranslateRankerImplTest : public ::testing::Test { 47 class TranslateRankerImplTest : public ::testing::Test {
47 protected: 48 protected:
48 TranslateRankerImplTest(); 49 TranslateRankerImplTest();
49 50
50 void SetUp() override; 51 void SetUp() override;
51 52
52 void TearDown() override; 53 void TearDown() override;
53 54
54 // Initializes the explicitly |enabled| and |disabled| features for this test. 55 // Initializes the explicitly |enabled| and |disabled| features for this test.
(...skipping 17 matching lines...) Expand all
72 // The platform-specific name of the preferred language pref. 73 // The platform-specific name of the preferred language pref.
73 static const char* const kPreferredLanguagePref; 74 static const char* const kPreferredLanguagePref;
74 75
75 // Prefs. 76 // Prefs.
76 std::unique_ptr<sync_preferences::TestingPrefServiceSyncable> prefs_; 77 std::unique_ptr<sync_preferences::TestingPrefServiceSyncable> prefs_;
77 std::unique_ptr<translate::TranslatePrefs> translate_prefs_; 78 std::unique_ptr<translate::TranslatePrefs> translate_prefs_;
78 79
79 ukm::TestUkmService* GetTestUkmService() { 80 ukm::TestUkmService* GetTestUkmService() {
80 return ukm_service_test_harness_.test_ukm_service(); 81 return ukm_service_test_harness_.test_ukm_service();
81 } 82 }
83 metrics::TranslateEventProto tep1_ =
84 CreateTranslateEvent("fr", "en", 1, 0, 3);
85 metrics::TranslateEventProto tep2_ =
86 CreateTranslateEvent("jp", "en", 2, 0, 3);
87 metrics::TranslateEventProto tep3_ =
88 CreateTranslateEvent("es", "de", 4, 5, 6);
82 89
83 private: 90 private:
84 ukm::UkmServiceTestingHarness ukm_service_test_harness_; 91 ukm::UkmServiceTestingHarness ukm_service_test_harness_;
85 92
86 // Override the default URL fetcher to return custom responses for tests. 93 // Override the default URL fetcher to return custom responses for tests.
87 net::TestURLFetcherFactory url_fetcher_factory_; 94 net::TestURLFetcherFactory url_fetcher_factory_;
88 95
89 // Used to initialize the translate download manager. 96 // Used to initialize the translate download manager.
90 scoped_refptr<net::TestURLRequestContextGetter> request_context_; 97 scoped_refptr<net::TestURLRequestContextGetter> request_context_;
91 98
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 translate_event.set_source_language(src_lang); 205 translate_event.set_source_language(src_lang);
199 translate_event.set_target_language(dst_lang); 206 translate_event.set_target_language(dst_lang);
200 translate_event.set_accept_count(accept_count); 207 translate_event.set_accept_count(accept_count);
201 translate_event.set_decline_count(decline_count); 208 translate_event.set_decline_count(decline_count);
202 translate_event.set_ignore_count(ignore_count); 209 translate_event.set_ignore_count(ignore_count);
203 return translate_event; 210 return translate_event;
204 } 211 }
205 212
206 } // namespace 213 } // namespace
207 214
208 TEST_F(TranslateRankerImplTest, DisabledByDefault) {
209 InitFeatures({}, {});
210 auto ranker = GetRankerForTest(0.5);
211 EXPECT_FALSE(ranker->IsQueryEnabled());
212 EXPECT_FALSE(ranker->IsEnforcementEnabled());
213 EXPECT_TRUE(ranker->IsLoggingEnabled());
214 }
215
216 TEST_F(TranslateRankerImplTest, ExplicitlyDisabled) {
217 InitFeatures({}, {kTranslateRankerQuery, kTranslateRankerEnforcement,
218 kTranslateRankerLogging});
219 auto ranker = GetRankerForTest(0.5);
220 EXPECT_FALSE(ranker->IsQueryEnabled());
221 EXPECT_FALSE(ranker->IsEnforcementEnabled());
222 EXPECT_FALSE(ranker->IsLoggingEnabled());
223 }
224
225 TEST_F(TranslateRankerImplTest, EnableQuery) {
226 InitFeatures({kTranslateRankerQuery}, {kTranslateRankerEnforcement});
227 auto ranker = GetRankerForTest(0.5);
228 EXPECT_TRUE(ranker->IsQueryEnabled());
229 EXPECT_FALSE(ranker->IsEnforcementEnabled());
230 EXPECT_TRUE(ranker->IsLoggingEnabled());
231 }
232
233 TEST_F(TranslateRankerImplTest, EnableEnforcement) {
234 InitFeatures({kTranslateRankerEnforcement}, {kTranslateRankerQuery});
235 auto ranker = GetRankerForTest(0.5);
236 EXPECT_FALSE(ranker->IsQueryEnabled());
237 EXPECT_TRUE(ranker->IsEnforcementEnabled());
238 EXPECT_TRUE(ranker->IsLoggingEnabled());
239 }
240
241 TEST_F(TranslateRankerImplTest, EnableQueryAndEnforcement) {
242 InitFeatures({kTranslateRankerQuery, kTranslateRankerEnforcement}, {});
243 auto ranker = GetRankerForTest(0.5);
244 EXPECT_TRUE(ranker->IsQueryEnabled());
245 EXPECT_TRUE(ranker->IsEnforcementEnabled());
246 EXPECT_TRUE(ranker->IsLoggingEnabled());
247 }
248
249 TEST_F(TranslateRankerImplTest, EnableLogging) {
250 InitFeatures({kTranslateRankerLogging}, {});
251 auto ranker = GetRankerForTest(0.5);
252 EXPECT_FALSE(ranker->IsQueryEnabled());
253 EXPECT_FALSE(ranker->IsEnforcementEnabled());
254 EXPECT_TRUE(ranker->IsLoggingEnabled());
255 }
256
257 TEST_F(TranslateRankerImplTest, DisableLogging) {
258 InitFeatures({}, {kTranslateRankerLogging});
259 auto ranker = GetRankerForTest(0.5);
260 EXPECT_FALSE(ranker->IsQueryEnabled());
261 EXPECT_FALSE(ranker->IsEnforcementEnabled());
262 EXPECT_FALSE(ranker->IsLoggingEnabled());
263 }
264
265 TEST_F(TranslateRankerImplTest, EnableAll) {
266 InitFeatures({kTranslateRankerQuery, kTranslateRankerEnforcement,
267 kTranslateRankerLogging},
268 {});
269 auto ranker = GetRankerForTest(0.5);
270 EXPECT_TRUE(ranker->IsQueryEnabled());
271 EXPECT_TRUE(ranker->IsEnforcementEnabled());
272 EXPECT_TRUE(ranker->IsLoggingEnabled());
273 }
274
275 TEST_F(TranslateRankerImplTest, GetVersion) { 215 TEST_F(TranslateRankerImplTest, GetVersion) {
276 InitFeatures({kTranslateRankerQuery}, {}); 216 InitFeatures({kTranslateRankerQuery}, {});
277 auto ranker = GetRankerForTest(0.01f); 217 auto ranker = GetRankerForTest(0.01f);
278 EXPECT_TRUE(ranker->CheckModelLoaderForTesting()); 218 EXPECT_TRUE(ranker->CheckModelLoaderForTesting());
279 EXPECT_EQ(kModelVersion, ranker->GetModelVersion()); 219 EXPECT_EQ(kModelVersion, ranker->GetModelVersion());
280 } 220 }
281 221
282 TEST_F(TranslateRankerImplTest, ModelLoaderQueryNotEnabled) { 222 TEST_F(TranslateRankerImplTest, ModelLoaderQueryNotEnabled) {
283 // If Query is not enabled, the ranker should not try to load the model. 223 // If Query is not enabled, the ranker should not try to load the model.
284 InitFeatures({}, {kTranslateRankerQuery}); 224 InitFeatures({}, {kTranslateRankerQuery});
(...skipping 15 matching lines...) Expand all
300 1.0 * 0.04f + // one-hot src-language "en" * weight 240 1.0 * 0.04f + // one-hot src-language "en" * weight
301 1.0 * 0.00f + // one-hot dst-language "fr" * weight 241 1.0 * 0.00f + // one-hot dst-language "fr" * weight
302 1.0 * 0.07f + // one-hot country "de" * weight 242 1.0 * 0.07f + // one-hot country "de" * weight
303 1.0 * 0.12f + // one-hot locale "zh-CN" * weight 243 1.0 * 0.12f + // one-hot locale "zh-CN" * weight
304 0.01f); // bias 244 0.01f); // bias
305 TranslateRankerFeatures features(50, 50, 0, "en", "fr", "de", "zh-CN"); 245 TranslateRankerFeatures features(50, 50, 0, "en", "fr", "de", "zh-CN");
306 246
307 EXPECT_NEAR(expected, ranker->CalculateScore(features), 0.000001); 247 EXPECT_NEAR(expected, ranker->CalculateScore(features), 0.000001);
308 } 248 }
309 249
310 TEST_F(TranslateRankerImplTest, ShouldOfferTranslation) { 250 TEST_F(TranslateRankerImplTest, ShouldOfferTranslation_AllEnabled) {
311 InitFeatures({kTranslateRankerQuery, kTranslateRankerEnforcement}, {}); 251 InitFeatures({kTranslateRankerQuery, kTranslateRankerEnforcement,
252 kTranslateRankerDecisionOverride},
253 {});
254 metrics::TranslateEventProto tep;
255
312 // With a bias of -0.5 en->fr is not over the threshold. 256 // With a bias of -0.5 en->fr is not over the threshold.
313 EXPECT_FALSE(GetRankerForTest(-0.5f)->ShouldOfferTranslation( 257 EXPECT_FALSE(GetRankerForTest(-0.5f)->ShouldOfferTranslation(
314 *translate_prefs_, "en", "fr")); 258 *translate_prefs_, "en", "fr", &tep));
259 EXPECT_NE(0U, tep.ranker_request_timestamp_sec());
260 EXPECT_EQ(kModelVersion, tep.ranker_version());
261 EXPECT_EQ(metrics::TranslateEventProto::DONT_SHOW, tep.ranker_response());
262
315 // With a bias of 0.25 en-fr is over the threshold. 263 // With a bias of 0.25 en-fr is over the threshold.
316 EXPECT_TRUE(GetRankerForTest(0.25f)->ShouldOfferTranslation(*translate_prefs_, 264 tep.Clear();
317 "en", "fr")); 265 EXPECT_TRUE(GetRankerForTest(0.25f)->ShouldOfferTranslation(
266 *translate_prefs_, "en", "fr", &tep));
267 EXPECT_EQ(metrics::TranslateEventProto::SHOW, tep.ranker_response());
268 }
269 TEST_F(TranslateRankerImplTest, ShouldOfferTranslation_AllDisabled) {
270 InitFeatures({}, {kTranslateRankerQuery, kTranslateRankerEnforcement,
271 kTranslateRankerDecisionOverride});
272 metrics::TranslateEventProto tep;
273 // If query and other flags are turned off, returns true and do not query the
274 // ranker.
275 EXPECT_TRUE(GetRankerForTest(-0.5f)->ShouldOfferTranslation(
276 *translate_prefs_, "en", "fr", &tep));
277 EXPECT_NE(0U, tep.ranker_request_timestamp_sec());
278 EXPECT_EQ(kModelVersion, tep.ranker_version());
279 EXPECT_EQ(metrics::TranslateEventProto::NOT_QUERIED, tep.ranker_response());
280 }
281
282 TEST_F(TranslateRankerImplTest, ShouldOfferTranslation_QueryOnly) {
283 InitFeatures({kTranslateRankerQuery},
284 {kTranslateRankerEnforcement, kTranslateRankerDecisionOverride});
285 metrics::TranslateEventProto tep;
286 // If enforcement is turned off, returns true even if the decision
287 // is not to show.
288 EXPECT_TRUE(GetRankerForTest(-0.5f)->ShouldOfferTranslation(
289 *translate_prefs_, "en", "fr", &tep));
290 EXPECT_NE(0U, tep.ranker_request_timestamp_sec());
291 EXPECT_EQ(kModelVersion, tep.ranker_version());
292 EXPECT_EQ(metrics::TranslateEventProto::DONT_SHOW, tep.ranker_response());
293 }
294
295 TEST_F(TranslateRankerImplTest, ShouldOfferTranslation_EnforcementOnly) {
296 InitFeatures({kTranslateRankerEnforcement},
297 {kTranslateRankerQuery, kTranslateRankerDecisionOverride});
298 metrics::TranslateEventProto tep;
299 // If either enforcement or decision override are turned on, returns the
300 // ranker decision.
301 EXPECT_FALSE(GetRankerForTest(-0.5f)->ShouldOfferTranslation(
302 *translate_prefs_, "en", "fr", &tep));
303 EXPECT_NE(0U, tep.ranker_request_timestamp_sec());
304 EXPECT_EQ(kModelVersion, tep.ranker_version());
305 EXPECT_EQ(metrics::TranslateEventProto::DONT_SHOW, tep.ranker_response());
306 }
307
308 TEST_F(TranslateRankerImplTest, ShouldOfferTranslation_OverrideOnly) {
309 InitFeatures({kTranslateRankerDecisionOverride},
310 {kTranslateRankerQuery, kTranslateRankerEnforcement});
311 metrics::TranslateEventProto tep;
312 // If either enforcement or decision override are turned on, returns the
313 // ranker decision.
314 EXPECT_FALSE(GetRankerForTest(-0.5f)->ShouldOfferTranslation(
315 *translate_prefs_, "en", "fr", &tep));
316 EXPECT_NE(0U, tep.ranker_request_timestamp_sec());
317 EXPECT_EQ(kModelVersion, tep.ranker_version());
318 EXPECT_EQ(metrics::TranslateEventProto::DONT_SHOW, tep.ranker_response());
319 }
320
321 TEST_F(TranslateRankerImplTest, ShouldOfferTranslation_NoModel) {
322 auto ranker =
323 base::MakeUnique<TranslateRankerImpl>(base::FilePath(), GURL(), nullptr);
324 InitFeatures({kTranslateRankerDecisionOverride, kTranslateRankerQuery,
325 kTranslateRankerEnforcement},
326 {});
327 metrics::TranslateEventProto tep;
328 // If we don't have a model, returns true.
329 EXPECT_TRUE(
330 ranker->ShouldOfferTranslation(*translate_prefs_, "en", "fr", &tep));
331 EXPECT_NE(0U, tep.ranker_request_timestamp_sec());
332 EXPECT_EQ(0U, tep.ranker_version());
333 EXPECT_EQ(metrics::TranslateEventProto::NOT_QUERIED, tep.ranker_response());
318 } 334 }
319 335
320 TEST_F(TranslateRankerImplTest, RecordAndFlushEvents) { 336 TEST_F(TranslateRankerImplTest, RecordAndFlushEvents) {
321 InitFeatures({kTranslateRankerLogging}, {}); 337 InitFeatures({kTranslateRankerLogging}, {});
322 std::unique_ptr<translate::TranslateRanker> ranker = GetRankerForTest(0.0f); 338 std::unique_ptr<translate::TranslateRanker> ranker = GetRankerForTest(0.0f);
323 std::vector<metrics::TranslateEventProto> flushed_events; 339 std::vector<metrics::TranslateEventProto> flushed_events;
324 340
325 GURL url0("https://www.google.com"); 341 GURL url0("https://www.google.com");
326 GURL url1("https://www.gmail.com"); 342 GURL url1("https://www.gmail.com");
327 343
328 // Check that flushing an empty cache will return an empty vector. 344 // Check that flushing an empty cache will return an empty vector.
329 ranker->FlushTranslateEvents(&flushed_events); 345 ranker->FlushTranslateEvents(&flushed_events);
330 EXPECT_EQ(0U, flushed_events.size()); 346 EXPECT_EQ(0U, flushed_events.size());
331 347
332 ranker->AddTranslateEvent(CreateTranslateEvent("fr", "en", 1, 0, 3), url0); 348 ranker->RecordTranslateEvent(0, url0, &tep1_);
333 ranker->AddTranslateEvent(CreateTranslateEvent("jp", "en", 2, 0, 3), GURL()); 349 ranker->RecordTranslateEvent(1, GURL(), &tep2_);
334 ranker->AddTranslateEvent(CreateTranslateEvent("es", "de", 4, 5, 6), url1); 350 ranker->RecordTranslateEvent(2, url1, &tep3_);
335 351
336 // Capture the data and verify that it is as expected. 352 // Capture the data and verify that it is as expected.
337 ranker->FlushTranslateEvents(&flushed_events); 353 ranker->FlushTranslateEvents(&flushed_events);
338 EXPECT_EQ(3U, flushed_events.size()); 354 EXPECT_EQ(3U, flushed_events.size());
339 ASSERT_EQ("fr", flushed_events[0].source_language()); 355 ASSERT_EQ(tep1_.source_language(), flushed_events[0].source_language());
340 ASSERT_EQ("jp", flushed_events[1].source_language()); 356 ASSERT_EQ(0, flushed_events[0].event_type());
341 ASSERT_EQ("es", flushed_events[2].source_language()); 357 ASSERT_EQ(tep2_.source_language(), flushed_events[1].source_language());
358 ASSERT_EQ(1, flushed_events[1].event_type());
359 ASSERT_EQ(tep3_.source_language(), flushed_events[2].source_language());
360 ASSERT_EQ(2, flushed_events[2].event_type());
342 361
343 // Check that the cache has been cleared. 362 // Check that the cache has been cleared.
344 ranker->FlushTranslateEvents(&flushed_events); 363 ranker->FlushTranslateEvents(&flushed_events);
345 EXPECT_EQ(0U, flushed_events.size()); 364 EXPECT_EQ(0U, flushed_events.size());
346 365
347 ASSERT_EQ(2U, GetTestUkmService()->sources_count()); 366 ASSERT_EQ(2U, GetTestUkmService()->sources_count());
348 EXPECT_EQ( 367 EXPECT_EQ(
349 url0.spec(), 368 url0.spec(),
350 GetTestUkmService()->GetSourceForUrl(url0.spec().c_str())->url().spec()); 369 GetTestUkmService()->GetSourceForUrl(url0.spec().c_str())->url().spec());
351 EXPECT_EQ( 370 EXPECT_EQ(
352 url1.spec(), 371 url1.spec(),
353 GetTestUkmService()->GetSourceForUrl(url1.spec().c_str())->url().spec()); 372 GetTestUkmService()->GetSourceForUrl(url1.spec().c_str())->url().spec());
354 } 373 }
355 374
356 TEST_F(TranslateRankerImplTest, LoggingDisabled) { 375 TEST_F(TranslateRankerImplTest, LoggingDisabled) {
357 InitFeatures({}, {kTranslateRankerLogging}); 376 InitFeatures({}, {kTranslateRankerLogging});
358 std::unique_ptr<translate::TranslateRanker> ranker = GetRankerForTest(0.0f); 377 std::unique_ptr<translate::TranslateRanker> ranker = GetRankerForTest(0.0f);
359 std::vector<metrics::TranslateEventProto> flushed_events; 378 std::vector<metrics::TranslateEventProto> flushed_events;
360 379
361 ranker->FlushTranslateEvents(&flushed_events); 380 ranker->FlushTranslateEvents(&flushed_events);
362 EXPECT_EQ(0U, flushed_events.size()); 381 EXPECT_EQ(0U, flushed_events.size());
363 382
364 ranker->AddTranslateEvent(CreateTranslateEvent("fr", "en", 1, 0, 3), GURL()); 383 ranker->RecordTranslateEvent(0, GURL(), &tep1_);
365 ranker->AddTranslateEvent(CreateTranslateEvent("jp", "en", 2, 0, 3), GURL()); 384 ranker->RecordTranslateEvent(1, GURL(), &tep2_);
366 ranker->AddTranslateEvent(CreateTranslateEvent("es", "de", 4, 5, 6), GURL()); 385 ranker->RecordTranslateEvent(2, GURL(), &tep3_);
367 386
368 // Logging is disabled, so no events should be cached. 387 // Logging is disabled, so no events should be cached.
369 ranker->FlushTranslateEvents(&flushed_events); 388 ranker->FlushTranslateEvents(&flushed_events);
370 EXPECT_EQ(0U, flushed_events.size()); 389 EXPECT_EQ(0U, flushed_events.size());
371 EXPECT_EQ(0ul, GetTestUkmService()->sources_count()); 390 EXPECT_EQ(0ul, GetTestUkmService()->sources_count());
372 } 391 }
373 392
374 TEST_F(TranslateRankerImplTest, LoggingDisabledViaOverride) { 393 TEST_F(TranslateRankerImplTest, LoggingDisabledViaOverride) {
375 InitFeatures({kTranslateRankerLogging}, {}); 394 InitFeatures({kTranslateRankerLogging}, {});
376 std::unique_ptr<translate::TranslateRankerImpl> ranker = 395 std::unique_ptr<translate::TranslateRankerImpl> ranker =
377 GetRankerForTest(0.0f); 396 GetRankerForTest(0.0f);
378 std::vector<metrics::TranslateEventProto> flushed_events; 397 std::vector<metrics::TranslateEventProto> flushed_events;
379 398
380 ranker->FlushTranslateEvents(&flushed_events); 399 ranker->FlushTranslateEvents(&flushed_events);
381 EXPECT_EQ(0U, flushed_events.size()); 400 EXPECT_EQ(0U, flushed_events.size());
382 401
383 ranker->AddTranslateEvent(CreateTranslateEvent("fr", "en", 1, 0, 3), GURL()); 402 ranker->RecordTranslateEvent(0, GURL(), &tep1_);
384 ranker->AddTranslateEvent(CreateTranslateEvent("jp", "en", 2, 0, 3), GURL()); 403 ranker->RecordTranslateEvent(1, GURL(), &tep2_);
385 ranker->AddTranslateEvent(CreateTranslateEvent("es", "de", 4, 5, 6), GURL()); 404 ranker->RecordTranslateEvent(2, GURL(), &tep3_);
386 405
387 // Logging is disabled, so no events should be cached. 406 // Logging is disabled, so no events should be cached.
388 ranker->FlushTranslateEvents(&flushed_events); 407 ranker->FlushTranslateEvents(&flushed_events);
389 EXPECT_EQ(3U, flushed_events.size()); 408 EXPECT_EQ(3U, flushed_events.size());
390 409
391 // Override the feature setting to disable logging. 410 // Override the feature setting to disable logging.
392 ranker->EnableLogging(false); 411 ranker->EnableLogging(false);
393 412
394 ranker->AddTranslateEvent(CreateTranslateEvent("fr", "en", 1, 0, 3), GURL()); 413 ranker->RecordTranslateEvent(0, GURL(), &tep1_);
395 ranker->AddTranslateEvent(CreateTranslateEvent("jp", "en", 2, 0, 3), GURL()); 414 ranker->RecordTranslateEvent(1, GURL(), &tep2_);
396 ranker->AddTranslateEvent(CreateTranslateEvent("es", "de", 4, 5, 6), GURL()); 415 ranker->RecordTranslateEvent(2, GURL(), &tep3_);
397 416
398 // Logging is disabled, so no events should be cached. 417 // Logging is disabled, so no events should be cached.
399 ranker->FlushTranslateEvents(&flushed_events); 418 ranker->FlushTranslateEvents(&flushed_events);
400 EXPECT_EQ(0U, flushed_events.size()); 419 EXPECT_EQ(0U, flushed_events.size());
401 } 420 }
421
422 TEST_F(TranslateRankerImplTest, ShouldOverrideDecision_OverrideDisabled) {
423 InitFeatures({}, {kTranslateRankerDecisionOverride});
424 std::unique_ptr<translate::TranslateRankerImpl> ranker =
425 GetRankerForTest(0.0f);
426 const int kEventType = 12;
427 metrics::TranslateEventProto tep = CreateTranslateEvent("fr", "en", 1, 0, 3);
428
429 EXPECT_FALSE(ranker->ShouldOverrideDecision(kEventType, GURL(), &tep));
430
431 std::vector<metrics::TranslateEventProto> flushed_events;
432 ranker->FlushTranslateEvents(&flushed_events);
433 EXPECT_EQ(1U, flushed_events.size());
434 ASSERT_EQ(tep.source_language(), flushed_events[0].source_language());
435 ASSERT_EQ(kEventType, flushed_events[0].event_type());
436 }
437
438 TEST_F(TranslateRankerImplTest, ShouldOverrideDecision_OverrideEnabled) {
439 InitFeatures({kTranslateRankerDecisionOverride}, {});
440 std::unique_ptr<translate::TranslateRankerImpl> ranker =
441 GetRankerForTest(0.0f);
442 metrics::TranslateEventProto tep = CreateTranslateEvent("fr", "en", 1, 0, 3);
443
444 EXPECT_TRUE(ranker->ShouldOverrideDecision(1, GURL(), &tep));
445 EXPECT_TRUE(ranker->ShouldOverrideDecision(2, GURL(), &tep));
446
447 std::vector<metrics::TranslateEventProto> flushed_events;
448 ranker->FlushTranslateEvents(&flushed_events);
449 EXPECT_EQ(0U, flushed_events.size());
450 ASSERT_EQ(2, tep.decision_overrides_size());
451 ASSERT_EQ(1, tep.decision_overrides(0));
452 ASSERT_EQ(2, tep.decision_overrides(1));
453 ASSERT_EQ(0, tep.event_type());
454 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698