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

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

Issue 2930433004: Send UMA recording state to TranslateRanker. (Closed)
Patch Set: Enable Logging in tests that use Flushing. Created 3 years, 6 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 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 // If we don't have a model, returns true. 312 // If we don't have a model, returns true.
313 EXPECT_TRUE(ranker->ShouldOfferTranslation(&translate_event)); 313 EXPECT_TRUE(ranker->ShouldOfferTranslation(&translate_event));
314 EXPECT_NE(0U, translate_event.ranker_request_timestamp_sec()); 314 EXPECT_NE(0U, translate_event.ranker_request_timestamp_sec());
315 EXPECT_EQ(0U, translate_event.ranker_version()); 315 EXPECT_EQ(0U, translate_event.ranker_version());
316 EXPECT_EQ(metrics::TranslateEventProto::NOT_QUERIED, 316 EXPECT_EQ(metrics::TranslateEventProto::NOT_QUERIED,
317 translate_event.ranker_response()); 317 translate_event.ranker_response());
318 } 318 }
319 319
320 TEST_F(TranslateRankerImplTest, RecordAndFlushEvents) { 320 TEST_F(TranslateRankerImplTest, RecordAndFlushEvents) {
321 std::unique_ptr<translate::TranslateRanker> ranker = GetRankerForTest(0.0f); 321 std::unique_ptr<translate::TranslateRanker> ranker = GetRankerForTest(0.0f);
322 ranker->EnableLogging(true);
322 std::vector<metrics::TranslateEventProto> flushed_events; 323 std::vector<metrics::TranslateEventProto> flushed_events;
323 324
324 GURL url0("https://www.google.com"); 325 GURL url0("https://www.google.com");
325 GURL url1("https://www.gmail.com"); 326 GURL url1("https://www.gmail.com");
326 327
327 // Check that flushing an empty cache will return an empty vector. 328 // Check that flushing an empty cache will return an empty vector.
328 ranker->FlushTranslateEvents(&flushed_events); 329 ranker->FlushTranslateEvents(&flushed_events);
329 EXPECT_EQ(0U, flushed_events.size()); 330 EXPECT_EQ(0U, flushed_events.size());
330 331
331 ranker->RecordTranslateEvent(0, url0, &translate_event1_); 332 ranker->RecordTranslateEvent(0, url0, &translate_event1_);
(...skipping 19 matching lines...) Expand all
351 352
352 ASSERT_EQ(2U, GetTestUkmRecorder()->sources_count()); 353 ASSERT_EQ(2U, GetTestUkmRecorder()->sources_count());
353 EXPECT_EQ( 354 EXPECT_EQ(
354 url0.spec(), 355 url0.spec(),
355 GetTestUkmRecorder()->GetSourceForUrl(url0.spec().c_str())->url().spec()); 356 GetTestUkmRecorder()->GetSourceForUrl(url0.spec().c_str())->url().spec());
356 EXPECT_EQ( 357 EXPECT_EQ(
357 url1.spec(), 358 url1.spec(),
358 GetTestUkmRecorder()->GetSourceForUrl(url1.spec().c_str())->url().spec()); 359 GetTestUkmRecorder()->GetSourceForUrl(url1.spec().c_str())->url().spec());
359 } 360 }
360 361
361 TEST_F(TranslateRankerImplTest, LoggingDisabledViaOverride) { 362 TEST_F(TranslateRankerImplTest, EnableLogging) {
362 std::unique_ptr<translate::TranslateRankerImpl> ranker = 363 std::unique_ptr<translate::TranslateRankerImpl> ranker =
363 GetRankerForTest(0.0f); 364 GetRankerForTest(0.0f);
364 std::vector<metrics::TranslateEventProto> flushed_events; 365 std::vector<metrics::TranslateEventProto> flushed_events;
365 366
367 // Logging is disabled by default. No events will be cached.
368 ranker->RecordTranslateEvent(0, GURL(), &translate_event1_);
369 ranker->RecordTranslateEvent(1, GURL(), &translate_event2_);
370
366 ranker->FlushTranslateEvents(&flushed_events); 371 ranker->FlushTranslateEvents(&flushed_events);
367 EXPECT_EQ(0U, flushed_events.size()); 372 EXPECT_EQ(0U, flushed_events.size());
368 373
374 // Once we enable logging, events will be cached.
375 ranker->EnableLogging(true);
369 ranker->RecordTranslateEvent(0, GURL(), &translate_event1_); 376 ranker->RecordTranslateEvent(0, GURL(), &translate_event1_);
370 ranker->RecordTranslateEvent(1, GURL(), &translate_event2_); 377 ranker->RecordTranslateEvent(1, GURL(), &translate_event2_);
371 ranker->RecordTranslateEvent(2, GURL(), &translate_event3_);
372 378
373 // Logging is enabled by default, so events should be cached.
374 ranker->FlushTranslateEvents(&flushed_events); 379 ranker->FlushTranslateEvents(&flushed_events);
375 EXPECT_EQ(3U, flushed_events.size()); 380 EXPECT_EQ(2U, flushed_events.size());
381 flushed_events.clear();
376 382
377 // Override the feature setting to disable logging. 383 // Turning logging back off, caching is disabled once again.
378 ranker->EnableLogging(false); 384 ranker->EnableLogging(false);
379
380 ranker->RecordTranslateEvent(0, GURL(), &translate_event1_); 385 ranker->RecordTranslateEvent(0, GURL(), &translate_event1_);
381 ranker->RecordTranslateEvent(1, GURL(), &translate_event2_); 386 ranker->RecordTranslateEvent(1, GURL(), &translate_event2_);
382 ranker->RecordTranslateEvent(2, GURL(), &translate_event3_);
383 387
384 // Logging is disabled, so no events should be cached. 388 // Logging is disabled, so no events should be cached.
385 ranker->FlushTranslateEvents(&flushed_events); 389 ranker->FlushTranslateEvents(&flushed_events);
386 EXPECT_EQ(0U, flushed_events.size()); 390 EXPECT_EQ(0U, flushed_events.size());
387 } 391 }
388 392
393 TEST_F(TranslateRankerImplTest, EnableLoggingClearsCache) {
394 std::unique_ptr<translate::TranslateRankerImpl> ranker =
395 GetRankerForTest(0.0f);
396 std::vector<metrics::TranslateEventProto> flushed_events;
397 // Logging is disabled by default. No events will be cached.
398 ranker->RecordTranslateEvent(0, GURL(), &translate_event1_);
399 // Making sure that cache is still empty once logging is turned on.
400 ranker->EnableLogging(true);
401 ranker->FlushTranslateEvents(&flushed_events);
402 EXPECT_EQ(0U, flushed_events.size());
403
404 // These events will be cached.
405 ranker->RecordTranslateEvent(0, GURL(), &translate_event1_);
406 ranker->RecordTranslateEvent(1, GURL(), &translate_event2_);
407 // Cache will not be cleared if the logging state does not change.
408 ranker->EnableLogging(true);
409 ranker->FlushTranslateEvents(&flushed_events);
410 EXPECT_EQ(2U, flushed_events.size());
411 flushed_events.clear();
412 // Cache is now empty after being flushed.
413 ranker->FlushTranslateEvents(&flushed_events);
414 EXPECT_EQ(0U, flushed_events.size());
415
416 // Filling cache again.
417 ranker->EnableLogging(true);
418 ranker->RecordTranslateEvent(0, GURL(), &translate_event1_);
419 ranker->RecordTranslateEvent(1, GURL(), &translate_event2_);
420 // Switching logging off will clear the cache.
421 ranker->EnableLogging(false);
422 ranker->FlushTranslateEvents(&flushed_events);
423 EXPECT_EQ(0U, flushed_events.size());
424
425 // Filling cache again.
426 ranker->EnableLogging(true);
427 ranker->RecordTranslateEvent(0, GURL(), &translate_event1_);
428 ranker->RecordTranslateEvent(1, GURL(), &translate_event2_);
429 // Switching logging off and on again will clear the cache.
430 ranker->EnableLogging(false);
431 ranker->EnableLogging(true);
432 ranker->FlushTranslateEvents(&flushed_events);
433 EXPECT_EQ(0U, flushed_events.size());
434 }
435
389 TEST_F(TranslateRankerImplTest, ShouldOverrideDecision_OverrideDisabled) { 436 TEST_F(TranslateRankerImplTest, ShouldOverrideDecision_OverrideDisabled) {
390 InitFeatures({}, {kTranslateRankerDecisionOverride}); 437 InitFeatures({}, {kTranslateRankerDecisionOverride});
391 std::unique_ptr<translate::TranslateRankerImpl> ranker = 438 std::unique_ptr<translate::TranslateRankerImpl> ranker =
392 GetRankerForTest(0.0f); 439 GetRankerForTest(0.0f);
440 ranker->EnableLogging(true);
393 const int kEventType = 12; 441 const int kEventType = 12;
394 metrics::TranslateEventProto translate_event = CreateDefaultTranslateEvent(); 442 metrics::TranslateEventProto translate_event = CreateDefaultTranslateEvent();
395 443
396 EXPECT_FALSE( 444 EXPECT_FALSE(
397 ranker->ShouldOverrideDecision(kEventType, GURL(), &translate_event)); 445 ranker->ShouldOverrideDecision(kEventType, GURL(), &translate_event));
398 446
399 std::vector<metrics::TranslateEventProto> flushed_events; 447 std::vector<metrics::TranslateEventProto> flushed_events;
400 ranker->FlushTranslateEvents(&flushed_events); 448 ranker->FlushTranslateEvents(&flushed_events);
401 EXPECT_EQ(1U, flushed_events.size()); 449 EXPECT_EQ(1U, flushed_events.size());
402 ASSERT_EQ(translate_event.source_language(), 450 ASSERT_EQ(translate_event.source_language(),
403 flushed_events[0].source_language()); 451 flushed_events[0].source_language());
404 ASSERT_EQ(kEventType, flushed_events[0].event_type()); 452 ASSERT_EQ(kEventType, flushed_events[0].event_type());
405 } 453 }
406 454
407 TEST_F(TranslateRankerImplTest, ShouldOverrideDecision_OverrideEnabled) { 455 TEST_F(TranslateRankerImplTest, ShouldOverrideDecision_OverrideEnabled) {
408 InitFeatures({kTranslateRankerDecisionOverride}, 456 InitFeatures({kTranslateRankerDecisionOverride},
409 {kTranslateRankerQuery, kTranslateRankerEnforcement}); 457 {kTranslateRankerQuery, kTranslateRankerEnforcement});
410 std::unique_ptr<translate::TranslateRankerImpl> ranker = 458 std::unique_ptr<translate::TranslateRankerImpl> ranker =
411 GetRankerForTest(0.0f); 459 GetRankerForTest(0.0f);
460 ranker->EnableLogging(true);
412 metrics::TranslateEventProto translate_event = CreateDefaultTranslateEvent(); 461 metrics::TranslateEventProto translate_event = CreateDefaultTranslateEvent();
413 // DecisionOverride is decoupled from querying and enforcement. Enabling 462 // DecisionOverride is decoupled from querying and enforcement. Enabling
414 // only DecisionOverride will not query the Ranker. Ranker returns its default 463 // only DecisionOverride will not query the Ranker. Ranker returns its default
415 // response. 464 // response.
416 EXPECT_TRUE( 465 EXPECT_TRUE(
417 GetRankerForTest(0.99f)->ShouldOfferTranslation(&translate_event)); 466 GetRankerForTest(0.99f)->ShouldOfferTranslation(&translate_event));
418 EXPECT_TRUE(ranker->ShouldOverrideDecision(1, GURL(), &translate_event)); 467 EXPECT_TRUE(ranker->ShouldOverrideDecision(1, GURL(), &translate_event));
419 EXPECT_TRUE(ranker->ShouldOverrideDecision(2, GURL(), &translate_event)); 468 EXPECT_TRUE(ranker->ShouldOverrideDecision(2, GURL(), &translate_event));
420 469
421 std::vector<metrics::TranslateEventProto> flushed_events; 470 std::vector<metrics::TranslateEventProto> flushed_events;
422 ranker->FlushTranslateEvents(&flushed_events); 471 ranker->FlushTranslateEvents(&flushed_events);
423 EXPECT_EQ(0U, flushed_events.size()); 472 EXPECT_EQ(0U, flushed_events.size());
424 ASSERT_EQ(2, translate_event.decision_overrides_size()); 473 ASSERT_EQ(2, translate_event.decision_overrides_size());
425 ASSERT_EQ(1, translate_event.decision_overrides(0)); 474 ASSERT_EQ(1, translate_event.decision_overrides(0));
426 ASSERT_EQ(2, translate_event.decision_overrides(1)); 475 ASSERT_EQ(2, translate_event.decision_overrides(1));
427 ASSERT_EQ(0, translate_event.event_type()); 476 ASSERT_EQ(0, translate_event.event_type());
428 EXPECT_EQ(metrics::TranslateEventProto::NOT_QUERIED, 477 EXPECT_EQ(metrics::TranslateEventProto::NOT_QUERIED,
429 translate_event.ranker_response()); 478 translate_event.ranker_response());
430 } 479 }
431 480
432 TEST_F(TranslateRankerImplTest, 481 TEST_F(TranslateRankerImplTest,
433 ShouldOverrideDecision_OverrideAndQueryEnabled) { 482 ShouldOverrideDecision_OverrideAndQueryEnabled) {
434 InitFeatures({kTranslateRankerDecisionOverride, kTranslateRankerQuery}, 483 InitFeatures({kTranslateRankerDecisionOverride, kTranslateRankerQuery},
435 {kTranslateRankerEnforcement}); 484 {kTranslateRankerEnforcement});
436 // This test checks that translate events are properly logged when ranker is 485 // This test checks that translate events are properly logged when ranker is
437 // queried and a decision is overridden. 486 // queried and a decision is overridden.
438 std::unique_ptr<translate::TranslateRankerImpl> ranker = 487 std::unique_ptr<translate::TranslateRankerImpl> ranker =
439 GetRankerForTest(0.0f); 488 GetRankerForTest(0.0f);
489 ranker->EnableLogging(true);
440 metrics::TranslateEventProto translate_event = CreateDefaultTranslateEvent(); 490 metrics::TranslateEventProto translate_event = CreateDefaultTranslateEvent();
441 // Ranker's decision is DONT_SHOW, but we are in query mode only, so Ranker 491 // Ranker's decision is DONT_SHOW, but we are in query mode only, so Ranker
442 // does not suppress the UI. 492 // does not suppress the UI.
443 EXPECT_TRUE( 493 EXPECT_TRUE(
444 GetRankerForTest(0.99f)->ShouldOfferTranslation(&translate_event)); 494 GetRankerForTest(0.99f)->ShouldOfferTranslation(&translate_event));
445 495
446 int kOverrideType = 1; 496 int kOverrideType = 1;
447 EXPECT_TRUE( 497 EXPECT_TRUE(
448 ranker->ShouldOverrideDecision(kOverrideType, GURL(), &translate_event)); 498 ranker->ShouldOverrideDecision(kOverrideType, GURL(), &translate_event));
449 499
450 int kEventType = 5; 500 int kEventType = 5;
451 ranker->RecordTranslateEvent(kEventType, GURL(), &translate_event); 501 ranker->RecordTranslateEvent(kEventType, GURL(), &translate_event);
452 std::vector<metrics::TranslateEventProto> flushed_events; 502 std::vector<metrics::TranslateEventProto> flushed_events;
453 ranker->FlushTranslateEvents(&flushed_events); 503 ranker->FlushTranslateEvents(&flushed_events);
454 504
455 EXPECT_EQ(1U, flushed_events.size()); 505 EXPECT_EQ(1U, flushed_events.size());
456 ASSERT_EQ(1, flushed_events[0].decision_overrides_size()); 506 ASSERT_EQ(1, flushed_events[0].decision_overrides_size());
457 ASSERT_EQ(kOverrideType, flushed_events[0].decision_overrides(0)); 507 ASSERT_EQ(kOverrideType, flushed_events[0].decision_overrides(0));
458 ASSERT_EQ(kEventType, flushed_events[0].event_type()); 508 ASSERT_EQ(kEventType, flushed_events[0].event_type());
459 EXPECT_EQ(metrics::TranslateEventProto::DONT_SHOW, 509 EXPECT_EQ(metrics::TranslateEventProto::DONT_SHOW,
460 flushed_events[0].ranker_response()); 510 flushed_events[0].ranker_response());
461 } 511 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698