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

Unified Diff: components/network_time/network_time_tracker_unittest.cc

Issue 1835823002: network_time_tracker: add temporary time protocol. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: estark review 1 Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: components/network_time/network_time_tracker_unittest.cc
diff --git a/components/network_time/network_time_tracker_unittest.cc b/components/network_time/network_time_tracker_unittest.cc
index 691ebfe3af1941a1497074ed1540b8ce449c5e58..04159373dc7591e91183d3dafc05835f831239e3 100644
--- a/components/network_time/network_time_tracker_unittest.cc
+++ b/components/network_time/network_time_tracker_unittest.cc
@@ -5,10 +5,14 @@
#include "components/network_time/network_time_tracker.h"
#include "base/compiler_specific.h"
+#include "base/message_loop/message_loop.h"
#include "base/test/simple_test_clock.h"
#include "base/test/simple_test_tick_clock.h"
#include "components/network_time/network_time_pref_names.h"
#include "components/prefs/testing_pref_service.h"
+#include "net/http/http_response_headers.h"
+#include "net/url_request/test_url_fetcher_factory.h"
+#include "net/url_request/url_request_test_util.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace network_time {
@@ -18,6 +22,7 @@ class NetworkTimeTrackerTest : public testing::Test {
~NetworkTimeTrackerTest() override {}
void SetUp() override {
+ url_fetcher_factory_.reset(new net::TestURLFetcherFactory());
NetworkTimeTracker::RegisterPrefs(pref_service_.registry());
clock_ = new base::SimpleTestClock();
@@ -28,8 +33,8 @@ class NetworkTimeTrackerTest : public testing::Test {
tracker_.reset(new NetworkTimeTracker(
scoped_ptr<base::Clock>(clock_),
- scoped_ptr<base::TickClock>(tick_clock_),
- &pref_service_));
+ scoped_ptr<base::TickClock>(tick_clock_), &pref_service_,
+ new net::TestURLRequestContextGetter(message_loop_.task_runner())));
// Can not be smaller than 15, it's the NowFromSystemTime() resolution.
resolution_ = base::TimeDelta::FromMilliseconds(17);
@@ -48,8 +53,8 @@ class NetworkTimeTrackerTest : public testing::Test {
tick_clock_= new_tick_clock;
tracker_.reset(new NetworkTimeTracker(
scoped_ptr<base::Clock>(clock_),
- scoped_ptr<base::TickClock>(tick_clock_),
- &pref_service_));
+ scoped_ptr<base::TickClock>(tick_clock_), &pref_service_,
+ new net::TestURLRequestContextGetter(message_loop_.task_runner())));
}
// Updates the notifier's time with the specified parameters.
@@ -69,6 +74,7 @@ class NetworkTimeTrackerTest : public testing::Test {
}
protected:
+ base::MessageLoop message_loop_;
base::TimeDelta resolution_;
base::TimeDelta latency_;
base::TimeDelta adjustment_;
@@ -76,6 +82,7 @@ class NetworkTimeTrackerTest : public testing::Test {
base::SimpleTestTickClock* tick_clock_;
TestingPrefServiceSimple pref_service_;
scoped_ptr<NetworkTimeTracker> tracker_;
+ scoped_ptr<net::TestURLFetcherFactory> url_fetcher_factory_;
};
TEST_F(NetworkTimeTrackerTest, Uninitialized) {
@@ -131,7 +138,7 @@ TEST_F(NetworkTimeTrackerTest, ClockIsWack) {
tick_clock_->NowTicks());
base::Time out_network_time;
- EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, NULL));
+ EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
EXPECT_EQ(in_network_time, out_network_time);
}
@@ -185,7 +192,7 @@ TEST_F(NetworkTimeTrackerTest, SpringForward) {
tick_clock_->Advance(base::TimeDelta::FromSeconds(1));
clock_->Advance(base::TimeDelta::FromDays(1));
base::Time out_network_time;
- EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, NULL));
+ EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
}
TEST_F(NetworkTimeTrackerTest, FallBack) {
@@ -195,7 +202,7 @@ TEST_F(NetworkTimeTrackerTest, FallBack) {
tick_clock_->Advance(base::TimeDelta::FromSeconds(1));
clock_->Advance(base::TimeDelta::FromDays(-1));
base::Time out_network_time;
- EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, NULL));
+ EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
}
TEST_F(NetworkTimeTrackerTest, SuspendAndResume) {
@@ -205,7 +212,7 @@ TEST_F(NetworkTimeTrackerTest, SuspendAndResume) {
tick_clock_->NowTicks());
clock_->Advance(base::TimeDelta::FromHours(1));
base::Time out_network_time;
- EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, NULL));
+ EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
}
TEST_F(NetworkTimeTrackerTest, Serialize) {
@@ -237,7 +244,7 @@ TEST_F(NetworkTimeTrackerTest, DeserializeOldFormat) {
tick_clock_->NowTicks());
base::Time out_network_time;
- EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, NULL));
+ EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
double local, network;
const base::DictionaryValue* saved_prefs =
pref_service_.GetDictionary(prefs::kNetworkTimeMapping);
@@ -248,7 +255,7 @@ TEST_F(NetworkTimeTrackerTest, DeserializeOldFormat) {
prefs.SetDouble("network", network);
pref_service_.Set(prefs::kNetworkTimeMapping, prefs);
Reset();
- EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, NULL));
+ EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
}
TEST_F(NetworkTimeTrackerTest, SerializeWithLongDelay) {
@@ -258,10 +265,10 @@ TEST_F(NetworkTimeTrackerTest, SerializeWithLongDelay) {
UpdateNetworkTime(in_network_time - latency_ / 2, resolution_, latency_,
tick_clock_->NowTicks());
base::Time out_network_time;
- EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, NULL));
+ EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
AdvanceBoth(base::TimeDelta::FromDays(8));
Reset();
- EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, NULL));
+ EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
}
TEST_F(NetworkTimeTrackerTest, SerializeWithTickClockAdvance) {
@@ -271,10 +278,10 @@ TEST_F(NetworkTimeTrackerTest, SerializeWithTickClockAdvance) {
UpdateNetworkTime(in_network_time - latency_ / 2, resolution_, latency_,
tick_clock_->NowTicks());
base::Time out_network_time;
- EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, NULL));
+ EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
tick_clock_->Advance(base::TimeDelta::FromDays(1));
Reset();
- EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, NULL));
+ EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
}
TEST_F(NetworkTimeTrackerTest, SerializeWithWallClockAdvance) {
@@ -285,10 +292,83 @@ TEST_F(NetworkTimeTrackerTest, SerializeWithWallClockAdvance) {
tick_clock_->NowTicks());
base::Time out_network_time;
- EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, NULL));
+ EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
clock_->Advance(base::TimeDelta::FromDays(1));
Reset();
- EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, NULL));
+ EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
+}
+
+TEST_F(NetworkTimeTrackerTest, UpdateFromNetwork) {
+ base::Time out_network_time;
+ EXPECT_EQ(nullptr, url_fetcher_factory_->GetFetcherByID(0));
+ EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
+
+ tracker_->QueryTimeService();
+ net::TestURLFetcher* fetcher = url_fetcher_factory_->GetFetcherByID(0);
+ ASSERT_NE(nullptr, fetcher);
+ EXPECT_EQ("", fetcher->upload_data());
+
+ fetcher->set_response_code(200);
+ fetcher->SetResponseString(
+ "{\"current_time_millis\":1458939575214,\"server_nonce\":8."
+ "18927404567873E115}");
+ fetcher->set_response_headers(new net::HttpResponseHeaders(
+ "x-cup-server-proof: "
+ "304402206f29b656ee23aafc7b6df4cfaa3bf711018cca2cbdbcb366932ae4433286f1f6"
+ "022061ddbd4a6ea0d5d36b9f3a6c2a37b5ba4b5f42065f93cda5ed5e5fb60419bb81:"
+ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n"
+ "ETag: "
+ "W/"
+ "\"304402206f29b656ee23aafc7b6df4cfaa3bf711018cca2cbdbcb366932ae4433286f1"
+ "f6022061ddbd4a6ea0d5d36b9f3a6c2a37b5ba4b5f42065f93cda5ed5e5fb60419bb81:"
+ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n"));
+ fetcher->delegate()->OnURLFetchComplete(fetcher);
+
+ EXPECT_TRUE(tracker_->GetNetworkTime(&out_network_time, nullptr));
+ EXPECT_EQ(base::Time::UnixEpoch() +
+ base::TimeDelta::FromMilliseconds(1458939575214),
+ out_network_time);
+ EXPECT_TRUE(tracker_->query_timer_.IsRunning());
+}
+
+TEST_F(NetworkTimeTrackerTest, NoNetworkQueryWhileSynced) {
+ base::Time in_network_time = clock_->Now();
+ UpdateNetworkTime(in_network_time, resolution_, latency_,
+ tick_clock_->NowTicks());
+
+ tracker_->QueryTimeService();
+ net::TestURLFetcher* fetcher = url_fetcher_factory_->GetFetcherByID(0);
+ EXPECT_EQ(nullptr, fetcher); // No query should be started.
+}
+
+TEST_F(NetworkTimeTrackerTest, UpdateFromNetworkBadSignature) {
+ base::Time out_network_time;
+ EXPECT_EQ(nullptr, url_fetcher_factory_->GetFetcherByID(0));
+ EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
+
+ tracker_->QueryTimeService();
+ net::TestURLFetcher* fetcher = url_fetcher_factory_->GetFetcherByID(0);
+ ASSERT_NE(nullptr, fetcher);
+ EXPECT_EQ("", fetcher->upload_data());
+
+ fetcher->set_response_code(200);
+ fetcher->SetResponseString(
+ "{\"current_time_millis\":1458939575214,\"server_nonce\":8."
+ "18927404567873E115}");
+ fetcher->set_response_headers(new net::HttpResponseHeaders(
+ "x-cup-server-proof: "
+ "304402206f29b656ee23aafc7b6df4cfaa3bf711018cca2cbdbcb366932ae4433286f1f6"
+ "022061ddbd4a6ea0d5d36b9f3a6c2a37b5ba4b5f42065f93cda5ed5e5fb60419bb81:"
+ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\n"
+ "ETag: "
+ "W/"
+ "\"304402206f29b656ee23aafc7b6df4cfaa3bf711018cca2cbdbcb366932ae4433286f1"
+ "f6022061ddbd4a6ea0d5d36b9f3a6c2a37b5ba4b5f42065f93cda5ed5e5fb60419bb81:"
+ "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"\n"));
+ fetcher->delegate()->OnURLFetchComplete(fetcher);
+
+ EXPECT_FALSE(tracker_->GetNetworkTime(&out_network_time, nullptr));
+ EXPECT_TRUE(tracker_->query_timer_.IsRunning());
}
} // namespace network_time

Powered by Google App Engine
This is Rietveld 408576698