Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 kFetchSucceededHistogram[] = | |
| 39 "NetworkTimeTracker.UpdateTimeFetchSucceeded"; | |
| 40 const char kFetchValidHistogram[] = "NetworkTimeTracker.UpdateTimeFetchValid"; | |
| 41 } // namespace | |
| 42 | |
| 33 class NetworkTimeTrackerTest : public testing::Test { | 43 class NetworkTimeTrackerTest : public testing::Test { |
| 34 public: | 44 public: |
| 35 ~NetworkTimeTrackerTest() override {} | 45 ~NetworkTimeTrackerTest() override {} |
| 36 | 46 |
| 37 NetworkTimeTrackerTest() | 47 NetworkTimeTrackerTest() |
| 38 : io_thread_("IO thread"), | 48 : io_thread_("IO thread"), |
| 39 clock_(new base::SimpleTestClock), | 49 clock_(new base::SimpleTestClock), |
| 40 tick_clock_(new base::SimpleTestTickClock), | 50 tick_clock_(new base::SimpleTestTickClock), |
| 41 test_server_(new net::EmbeddedTestServer) { | 51 test_server_(new net::EmbeddedTestServer) { |
| 42 base::Thread::Options thread_options; | 52 base::Thread::Options thread_options; |
| (...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 427 tick_clock_->NowTicks()); | 437 tick_clock_->NowTicks()); |
| 428 | 438 |
| 429 base::Time out_network_time; | 439 base::Time out_network_time; |
| 430 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 440 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 431 clock_->Advance(base::TimeDelta::FromDays(1)); | 441 clock_->Advance(base::TimeDelta::FromDays(1)); |
| 432 Reset(); | 442 Reset(); |
| 433 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 443 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 434 } | 444 } |
| 435 | 445 |
| 436 TEST_F(NetworkTimeTrackerTest, UpdateFromNetwork) { | 446 TEST_F(NetworkTimeTrackerTest, UpdateFromNetwork) { |
| 447 base::HistogramTester histograms; | |
| 448 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0); | |
| 449 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | |
| 450 histograms.ExpectTotalCount(kFetchSucceededHistogram, 0); | |
| 451 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | |
| 452 | |
| 437 base::Time out_network_time; | 453 base::Time out_network_time; |
| 438 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 454 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 439 // First query should happen soon. | 455 // First query should happen soon. |
| 440 EXPECT_EQ(base::TimeDelta::FromMinutes(0), | 456 EXPECT_EQ(base::TimeDelta::FromMinutes(0), |
| 441 tracker_->GetTimerDelayForTesting()); | 457 tracker_->GetTimerDelayForTesting()); |
| 442 | 458 |
| 443 test_server_->RegisterRequestHandler( | 459 test_server_->RegisterRequestHandler( |
| 444 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); | 460 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); |
| 445 EXPECT_TRUE(test_server_->Start()); | 461 EXPECT_TRUE(test_server_->Start()); |
| 446 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 462 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 447 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 463 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 448 tracker_->WaitForFetchForTesting(123123123); | 464 tracker_->WaitForFetchForTesting(123123123); |
| 449 | 465 |
| 450 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 466 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 451 EXPECT_EQ(base::Time::UnixEpoch() + | 467 EXPECT_EQ(base::Time::UnixEpoch() + |
| 452 base::TimeDelta::FromMilliseconds(1461621971825), | 468 base::TimeDelta::FromMilliseconds(1461621971825), |
| 453 out_network_time); | 469 out_network_time); |
| 454 // Should see no backoff in the success case. | 470 // Should see no backoff in the success case. |
| 455 EXPECT_EQ(base::TimeDelta::FromMinutes(60), | 471 EXPECT_EQ(base::TimeDelta::FromMinutes(60), |
| 456 tracker_->GetTimerDelayForTesting()); | 472 tracker_->GetTimerDelayForTesting()); |
| 473 | |
| 474 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1); | |
| 475 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | |
| 476 histograms.ExpectTotalCount(kFetchSucceededHistogram, 1); | |
| 477 histograms.ExpectTotalCount(kFetchValidHistogram, 1); | |
| 457 } | 478 } |
| 458 | 479 |
| 459 TEST_F(NetworkTimeTrackerTest, NoNetworkQueryWhileSynced) { | 480 TEST_F(NetworkTimeTrackerTest, NoNetworkQueryWhileSynced) { |
| 460 test_server_->RegisterRequestHandler( | 481 test_server_->RegisterRequestHandler( |
| 461 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); | 482 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); |
| 462 EXPECT_TRUE(test_server_->Start()); | 483 EXPECT_TRUE(test_server_->Start()); |
| 463 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 484 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 464 | 485 |
| 465 SetNetworkQueriesWithVariationsService(true, 0.0); | 486 SetNetworkQueriesWithVariationsService(true, 0.0); |
| 466 base::Time in_network_time = clock_->Now(); | 487 base::Time in_network_time = clock_->Now(); |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 487 EXPECT_EQ(base::TimeDelta::FromMinutes(6), | 508 EXPECT_EQ(base::TimeDelta::FromMinutes(6), |
| 488 tracker_->GetTimerDelayForTesting()); | 509 tracker_->GetTimerDelayForTesting()); |
| 489 | 510 |
| 490 // Enable time queries and check that a query is sent. | 511 // Enable time queries and check that a query is sent. |
| 491 SetNetworkQueriesWithVariationsService(true, 0.0); | 512 SetNetworkQueriesWithVariationsService(true, 0.0); |
| 492 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 513 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 493 tracker_->WaitForFetchForTesting(123123123); | 514 tracker_->WaitForFetchForTesting(123123123); |
| 494 } | 515 } |
| 495 | 516 |
| 496 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkBadSignature) { | 517 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkBadSignature) { |
| 518 base::HistogramTester histograms; | |
| 519 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0); | |
| 520 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | |
| 521 histograms.ExpectTotalCount(kFetchSucceededHistogram, 0); | |
| 522 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | |
| 523 | |
| 497 test_server_->RegisterRequestHandler( | 524 test_server_->RegisterRequestHandler( |
| 498 base::Bind(&NetworkTimeTrackerTest::BadSignatureResponseHandler)); | 525 base::Bind(&NetworkTimeTrackerTest::BadSignatureResponseHandler)); |
| 499 EXPECT_TRUE(test_server_->Start()); | 526 EXPECT_TRUE(test_server_->Start()); |
| 500 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 527 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 501 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 528 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 502 tracker_->WaitForFetchForTesting(123123123); | 529 tracker_->WaitForFetchForTesting(123123123); |
| 503 | 530 |
| 504 base::Time out_network_time; | 531 base::Time out_network_time; |
| 505 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 532 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 506 EXPECT_EQ(base::TimeDelta::FromMinutes(120), | 533 EXPECT_EQ(base::TimeDelta::FromMinutes(120), |
| 507 tracker_->GetTimerDelayForTesting()); | 534 tracker_->GetTimerDelayForTesting()); |
| 535 | |
| 536 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1); | |
| 537 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | |
| 538 histograms.ExpectTotalCount(kFetchSucceededHistogram, 1); | |
| 539 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | |
| 508 } | 540 } |
| 509 | 541 |
| 510 static const uint8_t kDevKeyPubBytes[] = { | 542 static const uint8_t kDevKeyPubBytes[] = { |
| 511 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, | 543 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, | 544 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, | 545 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, | 546 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, | 547 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, | 548 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, | 549 0x45, 0x34, 0x5f, 0x36, 0x85, 0x2f, 0xb9, 0x53, 0x00, 0x5d, 0x86, 0xe7, |
| 518 0x04, 0x16, 0xe2, 0x3d, 0x21, 0x76, 0x2b}; | 550 0x04, 0x16, 0xe2, 0x3d, 0x21, 0x76, 0x2b}; |
| 519 | 551 |
| 520 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkBadData) { | 552 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkBadData) { |
| 553 base::HistogramTester histograms; | |
| 554 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0); | |
| 555 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | |
| 556 histograms.ExpectTotalCount(kFetchSucceededHistogram, 0); | |
| 557 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | |
| 558 | |
| 521 test_server_->RegisterRequestHandler( | 559 test_server_->RegisterRequestHandler( |
| 522 base::Bind(&NetworkTimeTrackerTest::BadDataResponseHandler)); | 560 base::Bind(&NetworkTimeTrackerTest::BadDataResponseHandler)); |
| 523 EXPECT_TRUE(test_server_->Start()); | 561 EXPECT_TRUE(test_server_->Start()); |
| 524 base::StringPiece key = {reinterpret_cast<const char*>(kDevKeyPubBytes), | 562 base::StringPiece key = {reinterpret_cast<const char*>(kDevKeyPubBytes), |
| 525 sizeof(kDevKeyPubBytes)}; | 563 sizeof(kDevKeyPubBytes)}; |
| 526 tracker_->SetPublicKeyForTesting(key); | 564 tracker_->SetPublicKeyForTesting(key); |
| 527 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 565 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 528 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 566 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 529 tracker_->WaitForFetchForTesting(123123123); | 567 tracker_->WaitForFetchForTesting(123123123); |
| 530 base::Time out_network_time; | 568 base::Time out_network_time; |
| 531 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 569 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 532 EXPECT_EQ(base::TimeDelta::FromMinutes(120), | 570 EXPECT_EQ(base::TimeDelta::FromMinutes(120), |
| 533 tracker_->GetTimerDelayForTesting()); | 571 tracker_->GetTimerDelayForTesting()); |
| 572 | |
| 573 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1); | |
| 574 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | |
| 575 histograms.ExpectTotalCount(kFetchSucceededHistogram, 1); | |
| 576 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | |
| 534 } | 577 } |
| 535 | 578 |
| 536 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkServerError) { | 579 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkServerError) { |
| 580 base::HistogramTester histograms; | |
| 581 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0); | |
| 582 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | |
| 583 histograms.ExpectTotalCount(kFetchSucceededHistogram, 0); | |
| 584 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | |
| 585 | |
| 537 test_server_->RegisterRequestHandler( | 586 test_server_->RegisterRequestHandler( |
| 538 base::Bind(&NetworkTimeTrackerTest::ServerErrorResponseHandler)); | 587 base::Bind(&NetworkTimeTrackerTest::ServerErrorResponseHandler)); |
| 539 EXPECT_TRUE(test_server_->Start()); | 588 EXPECT_TRUE(test_server_->Start()); |
| 540 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 589 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 541 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 590 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 542 tracker_->WaitForFetchForTesting(123123123); | 591 tracker_->WaitForFetchForTesting(123123123); |
| 543 | 592 |
| 544 base::Time out_network_time; | 593 base::Time out_network_time; |
| 545 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 594 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 546 // Should see backoff in the error case. | 595 // Should see backoff in the error case. |
| 547 EXPECT_EQ(base::TimeDelta::FromMinutes(120), | 596 EXPECT_EQ(base::TimeDelta::FromMinutes(120), |
| 548 tracker_->GetTimerDelayForTesting()); | 597 tracker_->GetTimerDelayForTesting()); |
| 598 | |
| 599 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1); | |
| 600 histograms.ExpectTotalCount(kFetchFailedHistogram, 1); | |
| 601 histograms.ExpectBucketCount(kFetchFailedHistogram, net::OK, 1); | |
|
mab
2016/07/28 06:58:55
Why is this net::OK for an error response?
estark
2016/07/28 18:27:58
net::OK because there was no network error, just a
| |
| 602 histograms.ExpectTotalCount(kFetchSucceededHistogram, 0); | |
| 603 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | |
| 549 } | 604 } |
| 550 | 605 |
| 551 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworNetworkError) { | 606 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkNetworkError) { |
| 607 base::HistogramTester histograms; | |
| 608 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0); | |
| 609 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | |
| 610 histograms.ExpectTotalCount(kFetchSucceededHistogram, 0); | |
| 611 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | |
| 612 | |
| 552 test_server_->RegisterRequestHandler( | 613 test_server_->RegisterRequestHandler( |
| 553 base::Bind(&NetworkTimeTrackerTest::NetworkErrorResponseHandler)); | 614 base::Bind(&NetworkTimeTrackerTest::NetworkErrorResponseHandler)); |
| 554 EXPECT_TRUE(test_server_->Start()); | 615 EXPECT_TRUE(test_server_->Start()); |
| 555 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 616 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 556 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 617 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 557 tracker_->WaitForFetchForTesting(123123123); | 618 tracker_->WaitForFetchForTesting(123123123); |
| 558 | 619 |
| 559 base::Time out_network_time; | 620 base::Time out_network_time; |
| 560 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 621 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 561 // Should see backoff in the error case. | 622 // Should see backoff in the error case. |
| 562 EXPECT_EQ(base::TimeDelta::FromMinutes(120), | 623 EXPECT_EQ(base::TimeDelta::FromMinutes(120), |
| 563 tracker_->GetTimerDelayForTesting()); | 624 tracker_->GetTimerDelayForTesting()); |
| 625 | |
| 626 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1); | |
| 627 histograms.ExpectTotalCount(kFetchFailedHistogram, 1); | |
| 628 histograms.ExpectBucketCount(kFetchFailedHistogram, -net::ERR_EMPTY_RESPONSE, | |
| 629 1); | |
| 630 histograms.ExpectTotalCount(kFetchSucceededHistogram, 0); | |
| 631 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | |
| 564 } | 632 } |
| 565 | 633 |
| 566 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkLargeResponse) { | 634 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkLargeResponse) { |
| 635 base::HistogramTester histograms; | |
| 636 histograms.ExpectTotalCount(kFetchAttemptHistogram, 0); | |
| 637 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | |
| 638 histograms.ExpectTotalCount(kFetchSucceededHistogram, 0); | |
| 639 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | |
| 640 | |
| 567 test_server_->RegisterRequestHandler( | 641 test_server_->RegisterRequestHandler( |
| 568 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); | 642 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); |
| 569 EXPECT_TRUE(test_server_->Start()); | 643 EXPECT_TRUE(test_server_->Start()); |
| 570 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 644 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 571 | 645 |
| 572 base::Time out_network_time; | 646 base::Time out_network_time; |
| 573 | 647 |
| 574 tracker_->SetMaxResponseSizeForTesting(3); | 648 tracker_->SetMaxResponseSizeForTesting(3); |
| 575 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 649 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 576 tracker_->WaitForFetchForTesting(123123123); | 650 tracker_->WaitForFetchForTesting(123123123); |
| 577 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 651 EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 578 | 652 |
| 653 histograms.ExpectTotalCount(kFetchAttemptHistogram, 1); | |
| 654 histograms.ExpectTotalCount(kFetchFailedHistogram, 1); | |
| 655 histograms.ExpectTotalCount(kFetchSucceededHistogram, 0); | |
| 656 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | |
| 657 | |
| 579 tracker_->SetMaxResponseSizeForTesting(1024); | 658 tracker_->SetMaxResponseSizeForTesting(1024); |
| 580 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 659 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 581 tracker_->WaitForFetchForTesting(123123123); | 660 tracker_->WaitForFetchForTesting(123123123); |
| 582 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr)); | 661 EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 662 | |
| 663 histograms.ExpectTotalCount(kFetchAttemptHistogram, 2); | |
| 664 histograms.ExpectTotalCount(kFetchFailedHistogram, 1); | |
| 665 histograms.ExpectTotalCount(kFetchSucceededHistogram, 1); | |
| 666 histograms.ExpectTotalCount(kFetchValidHistogram, 1); | |
| 583 } | 667 } |
| 584 | 668 |
| 585 } // namespace network_time | 669 } // namespace network_time |
| OLD | NEW |