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> |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 234 TestingPrefServiceSimple pref_service_; | 234 TestingPrefServiceSimple pref_service_; |
| 235 std::unique_ptr<base::FieldTrialList> field_trial_list_; | 235 std::unique_ptr<base::FieldTrialList> field_trial_list_; |
| 236 std::unique_ptr<NetworkTimeTracker> tracker_; | 236 std::unique_ptr<NetworkTimeTracker> tracker_; |
| 237 std::unique_ptr<net::EmbeddedTestServer> test_server_; | 237 std::unique_ptr<net::EmbeddedTestServer> test_server_; |
| 238 std::unique_ptr<base::test::ScopedFeatureList> scoped_feature_list_; | 238 std::unique_ptr<base::test::ScopedFeatureList> scoped_feature_list_; |
| 239 }; | 239 }; |
| 240 | 240 |
| 241 TEST_F(NetworkTimeTrackerTest, Uninitialized) { | 241 TEST_F(NetworkTimeTrackerTest, Uninitialized) { |
| 242 base::Time network_time; | 242 base::Time network_time; |
| 243 base::TimeDelta uncertainty; | 243 base::TimeDelta uncertainty; |
| 244 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC, | 244 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC_ATTEMPT, |
| 245 tracker_->GetNetworkTime(&network_time, &uncertainty)); | 245 tracker_->GetNetworkTime(&network_time, &uncertainty)); |
| 246 } | 246 } |
| 247 | 247 |
| 248 TEST_F(NetworkTimeTrackerTest, LongPostingDelay) { | 248 TEST_F(NetworkTimeTrackerTest, LongPostingDelay) { |
| 249 // The request arrives at the server, which records the time. Advance the | 249 // The request arrives at the server, which records the time. Advance the |
| 250 // clock to simulate the latency of sending the reply, which we'll say for | 250 // clock to simulate the latency of sending the reply, which we'll say for |
| 251 // convenience is half the total latency. | 251 // convenience is half the total latency. |
| 252 base::Time in_network_time = clock_->Now(); | 252 base::Time in_network_time = clock_->Now(); |
| 253 AdvanceBoth(latency_ / 2); | 253 AdvanceBoth(latency_ / 2); |
| 254 | 254 |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 465 double local, network; | 465 double local, network; |
| 466 const base::DictionaryValue* saved_prefs = | 466 const base::DictionaryValue* saved_prefs = |
| 467 pref_service_.GetDictionary(prefs::kNetworkTimeMapping); | 467 pref_service_.GetDictionary(prefs::kNetworkTimeMapping); |
| 468 saved_prefs->GetDouble("local", &local); | 468 saved_prefs->GetDouble("local", &local); |
| 469 saved_prefs->GetDouble("network", &network); | 469 saved_prefs->GetDouble("network", &network); |
| 470 base::DictionaryValue prefs; | 470 base::DictionaryValue prefs; |
| 471 prefs.SetDouble("local", local); | 471 prefs.SetDouble("local", local); |
| 472 prefs.SetDouble("network", network); | 472 prefs.SetDouble("network", network); |
| 473 pref_service_.Set(prefs::kNetworkTimeMapping, prefs); | 473 pref_service_.Set(prefs::kNetworkTimeMapping, prefs); |
| 474 Reset(); | 474 Reset(); |
| 475 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC, | 475 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC_ATTEMPT, |
| 476 tracker_->GetNetworkTime(&out_network_time, nullptr)); | 476 tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 477 } | 477 } |
| 478 | 478 |
| 479 TEST_F(NetworkTimeTrackerTest, SerializeWithLongDelay) { | 479 TEST_F(NetworkTimeTrackerTest, SerializeWithLongDelay) { |
| 480 // Test that if the serialized data are more than a week old, they are | 480 // Test that if the serialized data are more than a week old, they are |
| 481 // discarded. | 481 // discarded. |
| 482 base::Time in_network_time = clock_->Now() - base::TimeDelta::FromDays(90); | 482 base::Time in_network_time = clock_->Now() - base::TimeDelta::FromDays(90); |
| 483 UpdateNetworkTime(in_network_time - latency_ / 2, resolution_, latency_, | 483 UpdateNetworkTime(in_network_time - latency_ / 2, resolution_, latency_, |
| 484 tick_clock_->NowTicks()); | 484 tick_clock_->NowTicks()); |
| 485 base::Time out_network_time; | 485 base::Time out_network_time; |
| 486 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE, | 486 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE, |
| 487 tracker_->GetNetworkTime(&out_network_time, nullptr)); | 487 tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 488 AdvanceBoth(base::TimeDelta::FromDays(8)); | 488 AdvanceBoth(base::TimeDelta::FromDays(8)); |
| 489 Reset(); | 489 Reset(); |
| 490 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC, | 490 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC_ATTEMPT, |
| 491 tracker_->GetNetworkTime(&out_network_time, nullptr)); | 491 tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 492 } | 492 } |
| 493 | 493 |
| 494 TEST_F(NetworkTimeTrackerTest, SerializeWithTickClockAdvance) { | 494 TEST_F(NetworkTimeTrackerTest, SerializeWithTickClockAdvance) { |
| 495 // Test that serialized data are discarded if the wall clock and tick clock | 495 // Test that serialized data are discarded if the wall clock and tick clock |
| 496 // have not advanced consistently since data were serialized. | 496 // have not advanced consistently since data were serialized. |
| 497 base::Time in_network_time = clock_->Now() - base::TimeDelta::FromDays(90); | 497 base::Time in_network_time = clock_->Now() - base::TimeDelta::FromDays(90); |
| 498 UpdateNetworkTime(in_network_time - latency_ / 2, resolution_, latency_, | 498 UpdateNetworkTime(in_network_time - latency_ / 2, resolution_, latency_, |
| 499 tick_clock_->NowTicks()); | 499 tick_clock_->NowTicks()); |
| 500 base::Time out_network_time; | 500 base::Time out_network_time; |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 521 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_SYNC_LOST, | 521 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_SYNC_LOST, |
| 522 tracker_->GetNetworkTime(&out_network_time, nullptr)); | 522 tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 523 } | 523 } |
| 524 | 524 |
| 525 TEST_F(NetworkTimeTrackerTest, UpdateFromNetwork) { | 525 TEST_F(NetworkTimeTrackerTest, UpdateFromNetwork) { |
| 526 base::HistogramTester histograms; | 526 base::HistogramTester histograms; |
| 527 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | 527 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); |
| 528 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | 528 histograms.ExpectTotalCount(kFetchValidHistogram, 0); |
| 529 | 529 |
| 530 base::Time out_network_time; | 530 base::Time out_network_time; |
| 531 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC, | 531 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC_ATTEMPT, |
| 532 tracker_->GetNetworkTime(&out_network_time, nullptr)); | 532 tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 533 // First query should happen soon. | 533 // First query should happen soon. |
| 534 EXPECT_EQ(base::TimeDelta::FromMinutes(0), | 534 EXPECT_EQ(base::TimeDelta::FromMinutes(0), |
| 535 tracker_->GetTimerDelayForTesting()); | 535 tracker_->GetTimerDelayForTesting()); |
| 536 | 536 |
| 537 test_server_->RegisterRequestHandler( | 537 test_server_->RegisterRequestHandler( |
| 538 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); | 538 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); |
| 539 EXPECT_TRUE(test_server_->Start()); | 539 EXPECT_TRUE(test_server_->Start()); |
| 540 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 540 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 541 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 541 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 598 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | 598 histograms.ExpectTotalCount(kFetchValidHistogram, 0); |
| 599 | 599 |
| 600 test_server_->RegisterRequestHandler( | 600 test_server_->RegisterRequestHandler( |
| 601 base::Bind(&NetworkTimeTrackerTest::BadSignatureResponseHandler)); | 601 base::Bind(&NetworkTimeTrackerTest::BadSignatureResponseHandler)); |
| 602 EXPECT_TRUE(test_server_->Start()); | 602 EXPECT_TRUE(test_server_->Start()); |
| 603 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 603 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 604 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 604 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 605 tracker_->WaitForFetchForTesting(123123123); | 605 tracker_->WaitForFetchForTesting(123123123); |
| 606 | 606 |
| 607 base::Time out_network_time; | 607 base::Time out_network_time; |
| 608 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC, | 608 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SUCCESSFUL_SYNC, |
| 609 tracker_->GetNetworkTime(&out_network_time, nullptr)); | 609 tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 610 EXPECT_EQ(base::TimeDelta::FromMinutes(120), | 610 EXPECT_EQ(base::TimeDelta::FromMinutes(120), |
| 611 tracker_->GetTimerDelayForTesting()); | 611 tracker_->GetTimerDelayForTesting()); |
| 612 | 612 |
| 613 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | 613 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); |
| 614 histograms.ExpectTotalCount(kFetchValidHistogram, 1); | 614 histograms.ExpectTotalCount(kFetchValidHistogram, 1); |
| 615 histograms.ExpectBucketCount(kFetchValidHistogram, false, 1); | 615 histograms.ExpectBucketCount(kFetchValidHistogram, false, 1); |
| 616 } | 616 } |
| 617 | 617 |
| 618 static const uint8_t kDevKeyPubBytes[] = { | 618 static const uint8_t kDevKeyPubBytes[] = { |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 633 test_server_->RegisterRequestHandler( | 633 test_server_->RegisterRequestHandler( |
| 634 base::Bind(&NetworkTimeTrackerTest::BadDataResponseHandler)); | 634 base::Bind(&NetworkTimeTrackerTest::BadDataResponseHandler)); |
| 635 EXPECT_TRUE(test_server_->Start()); | 635 EXPECT_TRUE(test_server_->Start()); |
| 636 base::StringPiece key = {reinterpret_cast<const char*>(kDevKeyPubBytes), | 636 base::StringPiece key = {reinterpret_cast<const char*>(kDevKeyPubBytes), |
| 637 sizeof(kDevKeyPubBytes)}; | 637 sizeof(kDevKeyPubBytes)}; |
| 638 tracker_->SetPublicKeyForTesting(key); | 638 tracker_->SetPublicKeyForTesting(key); |
| 639 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 639 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 640 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 640 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 641 tracker_->WaitForFetchForTesting(123123123); | 641 tracker_->WaitForFetchForTesting(123123123); |
| 642 base::Time out_network_time; | 642 base::Time out_network_time; |
| 643 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC, | 643 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SUCCESSFUL_SYNC, |
| 644 tracker_->GetNetworkTime(&out_network_time, nullptr)); | 644 tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 645 EXPECT_EQ(base::TimeDelta::FromMinutes(120), | 645 EXPECT_EQ(base::TimeDelta::FromMinutes(120), |
| 646 tracker_->GetTimerDelayForTesting()); | 646 tracker_->GetTimerDelayForTesting()); |
| 647 | 647 |
| 648 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | 648 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); |
| 649 histograms.ExpectTotalCount(kFetchValidHistogram, 1); | 649 histograms.ExpectTotalCount(kFetchValidHistogram, 1); |
| 650 histograms.ExpectBucketCount(kFetchValidHistogram, false, 1); | 650 histograms.ExpectBucketCount(kFetchValidHistogram, false, 1); |
| 651 } | 651 } |
| 652 | 652 |
| 653 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkServerError) { | 653 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkServerError) { |
| 654 base::HistogramTester histograms; | 654 base::HistogramTester histograms; |
| 655 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | 655 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); |
| 656 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | 656 histograms.ExpectTotalCount(kFetchValidHistogram, 0); |
| 657 | 657 |
| 658 test_server_->RegisterRequestHandler( | 658 test_server_->RegisterRequestHandler( |
| 659 base::Bind(&NetworkTimeTrackerTest::ServerErrorResponseHandler)); | 659 base::Bind(&NetworkTimeTrackerTest::ServerErrorResponseHandler)); |
| 660 EXPECT_TRUE(test_server_->Start()); | 660 EXPECT_TRUE(test_server_->Start()); |
| 661 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 661 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 662 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 662 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 663 tracker_->WaitForFetchForTesting(123123123); | 663 tracker_->WaitForFetchForTesting(123123123); |
| 664 | 664 |
| 665 base::Time out_network_time; | 665 base::Time out_network_time; |
| 666 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC, | 666 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SUCCESSFUL_SYNC, |
| 667 tracker_->GetNetworkTime(&out_network_time, nullptr)); | 667 tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 668 // Should see backoff in the error case. | 668 // Should see backoff in the error case. |
| 669 EXPECT_EQ(base::TimeDelta::FromMinutes(120), | 669 EXPECT_EQ(base::TimeDelta::FromMinutes(120), |
| 670 tracker_->GetTimerDelayForTesting()); | 670 tracker_->GetTimerDelayForTesting()); |
| 671 | 671 |
| 672 histograms.ExpectTotalCount(kFetchFailedHistogram, 1); | 672 histograms.ExpectTotalCount(kFetchFailedHistogram, 1); |
| 673 // There was no network error, so the histogram is recorded as | 673 // There was no network error, so the histogram is recorded as |
| 674 // net::OK, indicating that the connection succeeded but there was a | 674 // net::OK, indicating that the connection succeeded but there was a |
| 675 // non-200 HTTP status code. | 675 // non-200 HTTP status code. |
| 676 histograms.ExpectBucketCount(kFetchFailedHistogram, net::OK, 1); | 676 histograms.ExpectBucketCount(kFetchFailedHistogram, net::OK, 1); |
| 677 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | 677 histograms.ExpectTotalCount(kFetchValidHistogram, 0); |
| 678 } | 678 } |
| 679 | 679 |
| 680 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkNetworkError) { | 680 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkNetworkError) { |
| 681 base::HistogramTester histograms; | 681 base::HistogramTester histograms; |
| 682 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | 682 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); |
| 683 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | 683 histograms.ExpectTotalCount(kFetchValidHistogram, 0); |
| 684 | 684 |
| 685 test_server_->RegisterRequestHandler( | 685 test_server_->RegisterRequestHandler( |
| 686 base::Bind(&NetworkTimeTrackerTest::NetworkErrorResponseHandler)); | 686 base::Bind(&NetworkTimeTrackerTest::NetworkErrorResponseHandler)); |
| 687 EXPECT_TRUE(test_server_->Start()); | 687 EXPECT_TRUE(test_server_->Start()); |
| 688 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 688 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 689 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 689 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 690 tracker_->WaitForFetchForTesting(123123123); | 690 tracker_->WaitForFetchForTesting(123123123); |
| 691 | 691 |
| 692 base::Time out_network_time; | 692 base::Time out_network_time; |
| 693 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC, | 693 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SUCCESSFUL_SYNC, |
| 694 tracker_->GetNetworkTime(&out_network_time, nullptr)); | 694 tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 695 // Should see backoff in the error case. | 695 // Should see backoff in the error case. |
| 696 EXPECT_EQ(base::TimeDelta::FromMinutes(120), | 696 EXPECT_EQ(base::TimeDelta::FromMinutes(120), |
| 697 tracker_->GetTimerDelayForTesting()); | 697 tracker_->GetTimerDelayForTesting()); |
| 698 | 698 |
| 699 histograms.ExpectTotalCount(kFetchFailedHistogram, 1); | 699 histograms.ExpectTotalCount(kFetchFailedHistogram, 1); |
| 700 histograms.ExpectBucketCount(kFetchFailedHistogram, -net::ERR_EMPTY_RESPONSE, | 700 histograms.ExpectBucketCount(kFetchFailedHistogram, -net::ERR_EMPTY_RESPONSE, |
| 701 1); | 701 1); |
| 702 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | 702 histograms.ExpectTotalCount(kFetchValidHistogram, 0); |
| 703 } | 703 } |
| 704 | 704 |
| 705 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkLargeResponse) { | 705 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkLargeResponse) { |
| 706 base::HistogramTester histograms; | 706 base::HistogramTester histograms; |
| 707 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | 707 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); |
| 708 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | 708 histograms.ExpectTotalCount(kFetchValidHistogram, 0); |
| 709 | 709 |
| 710 test_server_->RegisterRequestHandler( | 710 test_server_->RegisterRequestHandler( |
| 711 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); | 711 base::Bind(&NetworkTimeTrackerTest::GoodTimeResponseHandler)); |
| 712 EXPECT_TRUE(test_server_->Start()); | 712 EXPECT_TRUE(test_server_->Start()); |
| 713 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | 713 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); |
| 714 | 714 |
| 715 base::Time out_network_time; | 715 base::Time out_network_time; |
| 716 | 716 |
| 717 tracker_->SetMaxResponseSizeForTesting(3); | 717 tracker_->SetMaxResponseSizeForTesting(3); |
| 718 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 718 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 719 tracker_->WaitForFetchForTesting(123123123); | 719 tracker_->WaitForFetchForTesting(123123123); |
| 720 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SYNC, | 720 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SUCCESSFUL_SYNC, |
| 721 tracker_->GetNetworkTime(&out_network_time, nullptr)); | 721 tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 722 | 722 |
| 723 histograms.ExpectTotalCount(kFetchFailedHistogram, 1); | 723 histograms.ExpectTotalCount(kFetchFailedHistogram, 1); |
| 724 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | 724 histograms.ExpectTotalCount(kFetchValidHistogram, 0); |
| 725 | 725 |
| 726 tracker_->SetMaxResponseSizeForTesting(1024); | 726 tracker_->SetMaxResponseSizeForTesting(1024); |
| 727 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | 727 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); |
| 728 tracker_->WaitForFetchForTesting(123123123); | 728 tracker_->WaitForFetchForTesting(123123123); |
| 729 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE, | 729 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_AVAILABLE, |
| 730 tracker_->GetNetworkTime(&out_network_time, nullptr)); | 730 tracker_->GetNetworkTime(&out_network_time, nullptr)); |
| 731 | 731 |
| 732 histograms.ExpectTotalCount(kFetchFailedHistogram, 1); | 732 histograms.ExpectTotalCount(kFetchFailedHistogram, 1); |
| 733 histograms.ExpectTotalCount(kFetchValidHistogram, 1); | 733 histograms.ExpectTotalCount(kFetchValidHistogram, 1); |
| 734 histograms.ExpectBucketCount(kFetchValidHistogram, true, 1); | 734 histograms.ExpectBucketCount(kFetchValidHistogram, true, 1); |
| 735 } | 735 } |
| 736 | 736 |
| 737 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkFirstSyncPending) { | |
| 738 base::HistogramTester histograms; | |
| 739 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | |
| 740 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | |
| 741 | |
| 742 test_server_->RegisterRequestHandler( | |
| 743 base::Bind(&NetworkTimeTrackerTest::BadDataResponseHandler)); | |
| 744 EXPECT_TRUE(test_server_->Start()); | |
| 745 base::StringPiece key = {reinterpret_cast<const char*>(kDevKeyPubBytes), | |
| 746 sizeof(kDevKeyPubBytes)}; | |
| 747 tracker_->SetPublicKeyForTesting(key); | |
| 748 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | |
| 749 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | |
| 750 | |
| 751 // Do not wait for the fetch to complete; ask for the network time | |
| 752 // immediately while the request is still pending.. | |
|
mab
2016/10/14 06:35:02
Nit: ..
estark
2016/10/14 07:23:46
Done.
| |
| 753 base::Time out_network_time; | |
| 754 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_FIRST_SYNC_PENDING, | |
| 755 tracker_->GetNetworkTime(&out_network_time, nullptr)); | |
| 756 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | |
| 757 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | |
| 758 | |
| 759 tracker_->WaitForFetchForTesting(123123123); | |
| 760 } | |
| 761 | |
| 762 TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkSubseqeuntSyncPending) { | |
| 763 base::HistogramTester histograms; | |
| 764 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | |
| 765 histograms.ExpectTotalCount(kFetchValidHistogram, 0); | |
| 766 | |
| 767 test_server_->RegisterRequestHandler( | |
| 768 base::Bind(&NetworkTimeTrackerTest::BadDataResponseHandler)); | |
| 769 EXPECT_TRUE(test_server_->Start()); | |
| 770 base::StringPiece key = {reinterpret_cast<const char*>(kDevKeyPubBytes), | |
| 771 sizeof(kDevKeyPubBytes)}; | |
| 772 tracker_->SetPublicKeyForTesting(key); | |
| 773 tracker_->SetTimeServerURLForTesting(test_server_->GetURL("/")); | |
| 774 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | |
| 775 tracker_->WaitForFetchForTesting(123123123); | |
| 776 | |
| 777 base::Time out_network_time; | |
| 778 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_NO_SUCCESSFUL_SYNC, | |
| 779 tracker_->GetNetworkTime(&out_network_time, nullptr)); | |
| 780 | |
| 781 // After one sync attempt failed, kick off another one, and ask for | |
| 782 // the network time while it is still pending. | |
| 783 EXPECT_TRUE(tracker_->QueryTimeServiceForTesting()); | |
| 784 EXPECT_EQ(NetworkTimeTracker::NETWORK_TIME_SUBSEQUENT_SYNC_PENDING, | |
| 785 tracker_->GetNetworkTime(&out_network_time, nullptr)); | |
| 786 histograms.ExpectTotalCount(kFetchFailedHistogram, 0); | |
| 787 histograms.ExpectTotalCount(kFetchValidHistogram, 1); | |
| 788 histograms.ExpectBucketCount(kFetchValidHistogram, false, 1); | |
| 789 | |
| 790 tracker_->WaitForFetchForTesting(123123123); | |
| 791 } | |
| 792 | |
| 737 } // namespace network_time | 793 } // namespace network_time |
| OLD | NEW |