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

Side by Side Diff: components/network_time/network_time_tracker_unittest.cc

Issue 2176373003: Add NetworkTimeTracker UMA histograms (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: holte comments Created 4 years, 4 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/network_time/network_time_tracker.h" 5 #include "components/network_time/network_time_tracker.h"
6 6
7 #include <map> 7 #include <map>
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
11 11
12 #include "base/compiler_specific.h" 12 #include "base/compiler_specific.h"
13 #include "base/feature_list.h" 13 #include "base/feature_list.h"
14 #include "base/metrics/field_trial.h" 14 #include "base/metrics/field_trial.h"
15 #include "base/strings/string_number_conversions.h" 15 #include "base/strings/string_number_conversions.h"
16 #include "base/strings/stringprintf.h" 16 #include "base/strings/stringprintf.h"
17 #include "base/test/histogram_tester.h"
17 #include "base/test/mock_entropy_provider.h" 18 #include "base/test/mock_entropy_provider.h"
18 #include "base/test/simple_test_clock.h" 19 #include "base/test/simple_test_clock.h"
19 #include "base/test/simple_test_tick_clock.h" 20 #include "base/test/simple_test_tick_clock.h"
20 #include "components/client_update_protocol/ecdsa.h" 21 #include "components/client_update_protocol/ecdsa.h"
21 #include "components/network_time/network_time_pref_names.h" 22 #include "components/network_time/network_time_pref_names.h"
22 #include "components/prefs/testing_pref_service.h" 23 #include "components/prefs/testing_pref_service.h"
23 #include "components/variations/variations_associated_data.h" 24 #include "components/variations/variations_associated_data.h"
24 #include "net/http/http_response_headers.h" 25 #include "net/http/http_response_headers.h"
25 #include "net/test/embedded_test_server/embedded_test_server.h" 26 #include "net/test/embedded_test_server/embedded_test_server.h"
26 #include "net/test/embedded_test_server/http_response.h" 27 #include "net/test/embedded_test_server/http_response.h"
27 #include "net/url_request/url_fetcher.h" 28 #include "net/url_request/url_fetcher.h"
28 #include "net/url_request/url_request_test_util.h" 29 #include "net/url_request/url_request_test_util.h"
29 #include "testing/gtest/include/gtest/gtest.h" 30 #include "testing/gtest/include/gtest/gtest.h"
30 31
31 namespace network_time { 32 namespace network_time {
32 33
34 namespace {
35 const char kFetchAttemptHistogram[] =
36 "NetworkTimeTracker.UpdateTimeFetchAttempted";
37 const char kFetchFailedHistogram[] = "NetworkTimeTracker.UpdateTimeFetchFailed";
38 const char kFetchValidHistogram[] = "NetworkTimeTracker.UpdateTimeFetchValid";
39 } // namespace
40
33 class NetworkTimeTrackerTest : public testing::Test { 41 class NetworkTimeTrackerTest : public testing::Test {
34 public: 42 public:
35 ~NetworkTimeTrackerTest() override {} 43 ~NetworkTimeTrackerTest() override {}
36 44
37 NetworkTimeTrackerTest() 45 NetworkTimeTrackerTest()
38 : io_thread_("IO thread"), 46 : io_thread_("IO thread"),
39 clock_(new base::SimpleTestClock), 47 clock_(new base::SimpleTestClock),
40 tick_clock_(new base::SimpleTestTickClock), 48 tick_clock_(new base::SimpleTestTickClock),
41 test_server_(new net::EmbeddedTestServer) { 49 test_server_(new net::EmbeddedTestServer) {
42 base::Thread::Options thread_options; 50 base::Thread::Options thread_options;
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 tick_clock_->NowTicks()); 435 tick_clock_->NowTicks());
428 436
429 base::Time out_network_time; 437 base::Time out_network_time;
430 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr)); 438 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
431 clock_->Advance(base::TimeDelta::FromDays(1)); 439 clock_->Advance(base::TimeDelta::FromDays(1));
432 Reset(); 440 Reset();
433 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); 441 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
434 } 442 }
435 443
436 TEST_F(NetworkTimeTrackerTest, UpdateFromNetwork) { 444 TEST_F(NetworkTimeTrackerTest, UpdateFromNetwork) {
445 base::HistogramTester histograms;
446 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0);
447 histograms.ExpectTotalCount(kFetchFailedHistogram, 0);
448 histograms.ExpectTotalCount(kFetchValidHistogram, 0);
449
437 base::Time out_network_time; 450 base::Time out_network_time;
438 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); 451 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
439 // First query should happen soon. 452 // First query should happen soon.
440 EXPECT_EQ(base::TimeDelta::FromMinutes(0), 453 EXPECT_EQ(base::TimeDelta::FromMinutes(0),
441 tracker_->GetTimerDelayForTesting()); 454 tracker_->GetTimerDelayForTesting());
442 455
443 test_server_->RegisterRequestHandler( 456 test_server_->RegisterRequestHandler(
444 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); 457 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler));
445 EXPECT_TRUE(test_server_->Start()); 458 EXPECT_TRUE(test_server_->Start());
446 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); 459 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/"));
447 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); 460 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting());
448 tracker_->WaitForFetchForTesting(123123123); 461 tracker_->WaitForFetchForTesting(123123123);
449 462
450 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr)); 463 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
451 EXPECT_EQ(base::Time::UnixEpoch() + 464 EXPECT_EQ(base::Time::UnixEpoch() +
452 base::TimeDelta::FromMilliseconds(1461621971825), 465 base::TimeDelta::FromMilliseconds(1461621971825),
453 out_network_time); 466 out_network_time);
454 // Should see no backoff in the success case. 467 // Should see no backoff in the success case.
455 EXPECT_EQ(base::TimeDelta::FromMinutes(60), 468 EXPECT_EQ(base::TimeDelta::FromMinutes(60),
456 tracker_->GetTimerDelayForTesting()); 469 tracker_->GetTimerDelayForTesting());
470
471 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1);
472 histograms.ExpectTotalCount(kFetchFailedHistogram, 0);
473 histograms.ExpectTotalCount(kFetchValidHistogram, 1);
474 histograms.ExpectBucketCount(kFetchValidHistogram, true, 1);
457 } 475 }
458 476
459 TEST_F(NetworkTimeTrackerTest, NoNetworkQueryWhileSynced) { 477 TEST_F(NetworkTimeTrackerTest, NoNetworkQueryWhileSynced) {
460 test_server_->RegisterRequestHandler( 478 test_server_->RegisterRequestHandler(
461 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); 479 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler));
462 EXPECT_TRUE(test_server_->Start()); 480 EXPECT_TRUE(test_server_->Start());
463 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); 481 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/"));
464 482
465 SetNetworkQueriesWithVariationsService(true, 0.0); 483 SetNetworkQueriesWithVariationsService(true, 0.0);
466 base::Time in_network_time = clock_->Now(); 484 base::Time in_network_time = clock_->Now();
(...skipping 20 matching lines...) Expand all
487 EXPECT_EQ(base::TimeDelta::FromMinutes(6), 505 EXPECT_EQ(base::TimeDelta::FromMinutes(6),
488 tracker_->GetTimerDelayForTesting()); 506 tracker_->GetTimerDelayForTesting());
489 507
490 // Enable time queries and check that a query is sent. 508 // Enable time queries and check that a query is sent.
491 SetNetworkQueriesWithVariationsService(true, 0.0); 509 SetNetworkQueriesWithVariationsService(true, 0.0);
492 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); 510 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting());
493 tracker_->WaitForFetchForTesting(123123123); 511 tracker_->WaitForFetchForTesting(123123123);
494 } 512 }
495 513
496 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkBadSignature) { 514 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkBadSignature) {
515 base::HistogramTester histograms;
516 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0);
517 histograms.ExpectTotalCount(kFetchFailedHistogram, 0);
518 histograms.ExpectTotalCount(kFetchValidHistogram, 0);
519
497 test_server_->RegisterRequestHandler( 520 test_server_->RegisterRequestHandler(
498 base::Bind(&NetworkTimeTrackerTest::BadSignatureResponseHandler)); 521 base::Bind(&NetworkTimeTrackerTest::BadSignatureResponseHandler));
499 EXPECT_TRUE(test_server_->Start()); 522 EXPECT_TRUE(test_server_->Start());
500 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); 523 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/"));
501 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); 524 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting());
502 tracker_->WaitForFetchForTesting(123123123); 525 tracker_->WaitForFetchForTesting(123123123);
503 526
504 base::Time out_network_time; 527 base::Time out_network_time;
505 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); 528 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
506 EXPECT_EQ(base::TimeDelta::FromMinutes(120), 529 EXPECT_EQ(base::TimeDelta::FromMinutes(120),
507 tracker_->GetTimerDelayForTesting()); 530 tracker_->GetTimerDelayForTesting());
531
532 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1);
533 histograms.ExpectTotalCount(kFetchFailedHistogram, 0);
534 histograms.ExpectTotalCount(kFetchValidHistogram, 1);
535 histograms.ExpectBucketCount(kFetchValidHistogram, false, 1);
508 } 536 }
509 537
510 static const uint8_t kDevKeyPubBytes[] = { 538 static const uint8_t kDevKeyPubBytes[] = {
511 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 539 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02,
512 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 540 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03,
513 0x42, 0x00, 0x04, 0xe0, 0x6b, 0x0d, 0x76, 0x75, 0xa3, 0x99, 0x7d, 0x7c, 541 0x42, 0x00, 0x04, 0xe0, 0x6b, 0x0d, 0x76, 0x75, 0xa3, 0x99, 0x7d, 0x7c,
514 0x1b, 0xd6, 0x3c, 0x73, 0xbb, 0x4b, 0xfe, 0x0a, 0xe7, 0x2f, 0x61, 0x3d, 542 0x1b, 0xd6, 0x3c, 0x73, 0xbb, 0x4b, 0xfe, 0x0a, 0xe7, 0x2f, 0x61, 0x3d,
515 0x77, 0x0a, 0xaa, 0x14, 0xd8, 0x5a, 0xbf, 0x14, 0x60, 0xec, 0xf6, 0x32, 543 0x77, 0x0a, 0xaa, 0x14, 0xd8, 0x5a, 0xbf, 0x14, 0x60, 0xec, 0xf6, 0x32,
516 0x77, 0xb5, 0xa7, 0xe6, 0x35, 0xa5, 0x61, 0xaf, 0xdc, 0xdf, 0x91, 0xce, 544 0x77, 0xb5, 0xa7, 0xe6, 0x35, 0xa5, 0x61, 0xaf, 0xdc, 0xdf, 0x91, 0xce,
517 0x45, 0x34, 0x5f, 0x36, 0x85, 0x2f, 0xb9, 0x53, 0x00, 0x5d, 0x86, 0xe7, 545 0x45, 0x34, 0x5f, 0x36, 0x85, 0x2f, 0xb9, 0x53, 0x00, 0x5d, 0x86, 0xe7,
518 0x04, 0x16, 0xe2, 0x3d, 0x21, 0x76, 0x2b}; 546 0x04, 0x16, 0xe2, 0x3d, 0x21, 0x76, 0x2b};
519 547
520 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkBadData) { 548 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkBadData) {
549 base::HistogramTester histograms;
550 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0);
551 histograms.ExpectTotalCount(kFetchFailedHistogram, 0);
552 histograms.ExpectTotalCount(kFetchValidHistogram, 0);
553
521 test_server_->RegisterRequestHandler( 554 test_server_->RegisterRequestHandler(
522 base::Bind(&NetworkTimeTrackerTest::BadDataResponseHandler)); 555 base::Bind(&NetworkTimeTrackerTest::BadDataResponseHandler));
523 EXPECT_TRUE(test_server_->Start()); 556 EXPECT_TRUE(test_server_->Start());
524 base::StringPiece key = {reinterpret_cast<const char*>(kDevKeyPubBytes), 557 base::StringPiece key = {reinterpret_cast<const char*>(kDevKeyPubBytes),
525 sizeof(kDevKeyPubBytes)}; 558 sizeof(kDevKeyPubBytes)};
526 tracker_->SetPublicKeyForTesting(key); 559 tracker_->SetPublicKeyForTesting(key);
527 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); 560 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/"));
528 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); 561 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting());
529 tracker_->WaitForFetchForTesting(123123123); 562 tracker_->WaitForFetchForTesting(123123123);
530 base::Time out_network_time; 563 base::Time out_network_time;
531 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); 564 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
532 EXPECT_EQ(base::TimeDelta::FromMinutes(120), 565 EXPECT_EQ(base::TimeDelta::FromMinutes(120),
533 tracker_->GetTimerDelayForTesting()); 566 tracker_->GetTimerDelayForTesting());
567
568 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1);
569 histograms.ExpectTotalCount(kFetchFailedHistogram, 0);
570 histograms.ExpectTotalCount(kFetchValidHistogram, 1);
571 histograms.ExpectBucketCount(kFetchValidHistogram, false, 1);
534 } 572 }
535 573
536 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkServerError) { 574 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkServerError) {
575 base::HistogramTester histograms;
576 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0);
577 histograms.ExpectTotalCount(kFetchFailedHistogram, 0);
578 histograms.ExpectTotalCount(kFetchValidHistogram, 0);
579
537 test_server_->RegisterRequestHandler( 580 test_server_->RegisterRequestHandler(
538 base::Bind(&NetworkTimeTrackerTest::ServerErrorResponseHandler)); 581 base::Bind(&NetworkTimeTrackerTest::ServerErrorResponseHandler));
539 EXPECT_TRUE(test_server_->Start()); 582 EXPECT_TRUE(test_server_->Start());
540 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); 583 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/"));
541 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); 584 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting());
542 tracker_->WaitForFetchForTesting(123123123); 585 tracker_->WaitForFetchForTesting(123123123);
543 586
544 base::Time out_network_time; 587 base::Time out_network_time;
545 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); 588 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
546 // Should see backoff in the error case. 589 // Should see backoff in the error case.
547 EXPECT_EQ(base::TimeDelta::FromMinutes(120), 590 EXPECT_EQ(base::TimeDelta::FromMinutes(120),
548 tracker_->GetTimerDelayForTesting()); 591 tracker_->GetTimerDelayForTesting());
592
593 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1);
594 histograms.ExpectTotalCount(kFetchFailedHistogram, 1);
595 // There was no network error, so the histogram is recorded as
596 // net::OK, indicating that the connection succeeded but there was a
597 // non-200 HTTP status code.
598 histograms.ExpectBucketCount(kFetchFailedHistogram, net::OK, 1);
599 histograms.ExpectTotalCount(kFetchValidHistogram, 0);
549 } 600 }
550 601
551 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworNetworkError) { 602 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkNetworkError) {
603 base::HistogramTester histograms;
604 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0);
605 histograms.ExpectTotalCount(kFetchFailedHistogram, 0);
606 histograms.ExpectTotalCount(kFetchValidHistogram, 0);
607
552 test_server_->RegisterRequestHandler( 608 test_server_->RegisterRequestHandler(
553 base::Bind(&NetworkTimeTrackerTest::NetworkErrorResponseHandler)); 609 base::Bind(&NetworkTimeTrackerTest::NetworkErrorResponseHandler));
554 EXPECT_TRUE(test_server_->Start()); 610 EXPECT_TRUE(test_server_->Start());
555 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); 611 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/"));
556 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); 612 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting());
557 tracker_->WaitForFetchForTesting(123123123); 613 tracker_->WaitForFetchForTesting(123123123);
558 614
559 base::Time out_network_time; 615 base::Time out_network_time;
560 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); 616 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
561 // Should see backoff in the error case. 617 // Should see backoff in the error case.
562 EXPECT_EQ(base::TimeDelta::FromMinutes(120), 618 EXPECT_EQ(base::TimeDelta::FromMinutes(120),
563 tracker_->GetTimerDelayForTesting()); 619 tracker_->GetTimerDelayForTesting());
620
621 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1);
622 histograms.ExpectTotalCount(kFetchFailedHistogram, 1);
623 histograms.ExpectBucketCount(kFetchFailedHistogram, -net::ERR_EMPTY_RESPONSE,
624 1);
625 histograms.ExpectTotalCount(kFetchValidHistogram, 0);
564 } 626 }
565 627
566 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkLargeResponse) { 628 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkLargeResponse) {
629 base::HistogramTester histograms;
630 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0);
631 histograms.ExpectTotalCount(kFetchFailedHistogram, 0);
632 histograms.ExpectTotalCount(kFetchValidHistogram, 0);
633
567 test_server_->RegisterRequestHandler( 634 test_server_->RegisterRequestHandler(
568 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); 635 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler));
569 EXPECT_TRUE(test_server_->Start()); 636 EXPECT_TRUE(test_server_->Start());
570 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); 637 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/"));
571 638
572 base::Time out_network_time; 639 base::Time out_network_time;
573 640
574 tracker_->SetMaxResponseSizeForTesting(3); 641 tracker_->SetMaxResponseSizeForTesting(3);
575 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); 642 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting());
576 tracker_->WaitForFetchForTesting(123123123); 643 tracker_->WaitForFetchForTesting(123123123);
577 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); 644 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
578 645
646 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1);
647 histograms.ExpectTotalCount(kFetchFailedHistogram, 1);
648 histograms.ExpectTotalCount(kFetchValidHistogram, 0);
649
579 tracker_->SetMaxResponseSizeForTesting(1024); 650 tracker_->SetMaxResponseSizeForTesting(1024);
580 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); 651 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting());
581 tracker_->WaitForFetchForTesting(123123123); 652 tracker_->WaitForFetchForTesting(123123123);
582 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr)); 653 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
654
655 histograms.ExpectTotalCount(kFetchAttemptHistogram, 2);
656 histograms.ExpectTotalCount(kFetchFailedHistogram, 1);
657 histograms.ExpectTotalCount(kFetchValidHistogram, 1);
658 histograms.ExpectBucketCount(kFetchValidHistogram, true, 1);
583 } 659 }
584 660
585 } // namespace network_time 661 } // namespace network_time
OLDNEW
« no previous file with comments | « components/network_time/network_time_tracker.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698