| Index: net/dns/dns_transaction_unittest.cc
|
| diff --git a/net/dns/dns_transaction_unittest.cc b/net/dns/dns_transaction_unittest.cc
|
| index f6fb8e5d795e97366097615a7ff281d8980a1d5a..f7c1cab50db72bd85532a85b96ab2a392b6474e9 100644
|
| --- a/net/dns/dns_transaction_unittest.cc
|
| +++ b/net/dns/dns_transaction_unittest.cc
|
| @@ -177,7 +177,7 @@ class TestUDPClientSocket : public MockUDPClientSocket {
|
| // Creates TestUDPClientSockets and keeps endpoints reported via OnConnect.
|
| class TestSocketFactory : public MockClientSocketFactory {
|
| public:
|
| - TestSocketFactory() : create_failing_sockets_(false) {}
|
| + TestSocketFactory() : fail_next_socket_(false) {}
|
| virtual ~TestSocketFactory() {}
|
|
|
| virtual DatagramClientSocket* CreateDatagramClientSocket(
|
| @@ -185,8 +185,10 @@ class TestSocketFactory : public MockClientSocketFactory {
|
| const RandIntCallback& rand_int_cb,
|
| net::NetLog* net_log,
|
| const net::NetLog::Source& source) OVERRIDE {
|
| - if (create_failing_sockets_)
|
| + if (fail_next_socket_) {
|
| + fail_next_socket_ = false;
|
| return new FailingUDPClientSocket(&empty_data_, net_log);
|
| + }
|
| SocketDataProvider* data_provider = mock_data().GetNext();
|
| TestUDPClientSocket* socket = new TestUDPClientSocket(this,
|
| data_provider,
|
| @@ -200,7 +202,7 @@ class TestSocketFactory : public MockClientSocketFactory {
|
| }
|
|
|
| std::vector<IPEndPoint> remote_endpoints_;
|
| - bool create_failing_sockets_;
|
| + bool fail_next_socket_;
|
|
|
| private:
|
| StaticSocketDataProvider empty_data_;
|
| @@ -858,13 +860,27 @@ TEST_F(DnsTransactionTest, SyncSearchQuery) {
|
| }
|
|
|
| TEST_F(DnsTransactionTest, ConnectFailure) {
|
| - socket_factory_->create_failing_sockets_ = true;
|
| + socket_factory_->fail_next_socket_ = true;
|
| transaction_ids_.push_back(0); // Needed to make a DnsUDPAttempt.
|
| TransactionHelper helper0("www.chromium.org", dns_protocol::kTypeA,
|
| ERR_CONNECTION_REFUSED);
|
| EXPECT_TRUE(helper0.Run(transaction_factory_.get()));
|
| }
|
|
|
| +TEST_F(DnsTransactionTest, ConnectFailureFollowedBySuccess) {
|
| + // Retry after server failure.
|
| + config_.attempts = 2;
|
| + ConfigureFactory();
|
| + // First server connection attempt fails.
|
| + transaction_ids_.push_back(0); // Needed to make a DnsUDPAttempt.
|
| + socket_factory_->fail_next_socket_ = true;
|
| + // Second DNS query succeeds.
|
| + AddAsyncQueryAndResponse(0 /* id */, kT0HostName, kT0Qtype,
|
| + kT0ResponseDatagram, arraysize(kT0ResponseDatagram));
|
| + TransactionHelper helper0(kT0HostName, kT0Qtype, kT0RecordCount);
|
| + EXPECT_TRUE(helper0.Run(transaction_factory_.get()));
|
| +}
|
| +
|
| TEST_F(DnsTransactionTest, TCPLookup) {
|
| AddAsyncQueryAndRcode(kT0HostName, kT0Qtype,
|
| dns_protocol::kRcodeNOERROR | dns_protocol::kFlagTC);
|
|
|