Index: net/dns/dns_session_unittest.cc |
diff --git a/net/dns/dns_session_unittest.cc b/net/dns/dns_session_unittest.cc |
deleted file mode 100644 |
index 67080cad3e2f3e9c347a0f924ef292cb14f56c25..0000000000000000000000000000000000000000 |
--- a/net/dns/dns_session_unittest.cc |
+++ /dev/null |
@@ -1,249 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "net/dns/dns_session.h" |
- |
-#include <list> |
- |
-#include "base/bind.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/rand_util.h" |
-#include "base/stl_util.h" |
-#include "net/base/net_log.h" |
-#include "net/dns/dns_protocol.h" |
-#include "net/dns/dns_socket_pool.h" |
-#include "net/socket/socket_test_util.h" |
-#include "net/socket/ssl_client_socket.h" |
-#include "net/socket/stream_socket.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace net { |
- |
-namespace { |
- |
-class TestClientSocketFactory : public ClientSocketFactory { |
- public: |
- ~TestClientSocketFactory() override; |
- |
- scoped_ptr<DatagramClientSocket> CreateDatagramClientSocket( |
- DatagramSocket::BindType bind_type, |
- const RandIntCallback& rand_int_cb, |
- net::NetLog* net_log, |
- const net::NetLog::Source& source) override; |
- |
- scoped_ptr<StreamSocket> CreateTransportClientSocket( |
- const AddressList& addresses, |
- NetLog*, |
- const NetLog::Source&) override { |
- NOTIMPLEMENTED(); |
- return scoped_ptr<StreamSocket>(); |
- } |
- |
- scoped_ptr<SSLClientSocket> CreateSSLClientSocket( |
- scoped_ptr<ClientSocketHandle> transport_socket, |
- const HostPortPair& host_and_port, |
- const SSLConfig& ssl_config, |
- const SSLClientSocketContext& context) override { |
- NOTIMPLEMENTED(); |
- return scoped_ptr<SSLClientSocket>(); |
- } |
- |
- void ClearSSLSessionCache() override { NOTIMPLEMENTED(); } |
- |
- private: |
- std::list<SocketDataProvider*> data_providers_; |
-}; |
- |
-struct PoolEvent { |
- enum { ALLOCATE, FREE } action; |
- unsigned server_index; |
-}; |
- |
-class DnsSessionTest : public testing::Test { |
- public: |
- void OnSocketAllocated(unsigned server_index); |
- void OnSocketFreed(unsigned server_index); |
- |
- protected: |
- void Initialize(unsigned num_servers); |
- scoped_ptr<DnsSession::SocketLease> Allocate(unsigned server_index); |
- bool DidAllocate(unsigned server_index); |
- bool DidFree(unsigned server_index); |
- bool NoMoreEvents(); |
- |
- DnsConfig config_; |
- scoped_ptr<TestClientSocketFactory> test_client_socket_factory_; |
- scoped_refptr<DnsSession> session_; |
- NetLog::Source source_; |
- |
- private: |
- bool ExpectEvent(const PoolEvent& event); |
- std::list<PoolEvent> events_; |
-}; |
- |
-class MockDnsSocketPool : public DnsSocketPool { |
- public: |
- MockDnsSocketPool(ClientSocketFactory* factory, DnsSessionTest* test) |
- : DnsSocketPool(factory), test_(test) { } |
- |
- ~MockDnsSocketPool() override {} |
- |
- void Initialize(const std::vector<IPEndPoint>* nameservers, |
- NetLog* net_log) override { |
- InitializeInternal(nameservers, net_log); |
- } |
- |
- scoped_ptr<DatagramClientSocket> AllocateSocket( |
- unsigned server_index) override { |
- test_->OnSocketAllocated(server_index); |
- return CreateConnectedSocket(server_index); |
- } |
- |
- void FreeSocket(unsigned server_index, |
- scoped_ptr<DatagramClientSocket> socket) override { |
- test_->OnSocketFreed(server_index); |
- } |
- |
- private: |
- DnsSessionTest* test_; |
-}; |
- |
-void DnsSessionTest::Initialize(unsigned num_servers) { |
- CHECK(num_servers < 256u); |
- config_.nameservers.clear(); |
- IPAddressNumber dns_ip; |
- bool rv = ParseIPLiteralToNumber("192.168.1.0", &dns_ip); |
- EXPECT_TRUE(rv); |
- for (unsigned char i = 0; i < num_servers; ++i) { |
- dns_ip[3] = i; |
- IPEndPoint dns_endpoint(dns_ip, dns_protocol::kDefaultPort); |
- config_.nameservers.push_back(dns_endpoint); |
- } |
- |
- test_client_socket_factory_.reset(new TestClientSocketFactory()); |
- |
- DnsSocketPool* dns_socket_pool = |
- new MockDnsSocketPool(test_client_socket_factory_.get(), this); |
- |
- session_ = new DnsSession(config_, |
- scoped_ptr<DnsSocketPool>(dns_socket_pool), |
- base::Bind(&base::RandInt), |
- NULL /* NetLog */); |
- |
- events_.clear(); |
-} |
- |
-scoped_ptr<DnsSession::SocketLease> DnsSessionTest::Allocate( |
- unsigned server_index) { |
- return session_->AllocateSocket(server_index, source_); |
-} |
- |
-bool DnsSessionTest::DidAllocate(unsigned server_index) { |
- PoolEvent expected_event = { PoolEvent::ALLOCATE, server_index }; |
- return ExpectEvent(expected_event); |
-} |
- |
-bool DnsSessionTest::DidFree(unsigned server_index) { |
- PoolEvent expected_event = { PoolEvent::FREE, server_index }; |
- return ExpectEvent(expected_event); |
-} |
- |
-bool DnsSessionTest::NoMoreEvents() { |
- return events_.empty(); |
-} |
- |
-void DnsSessionTest::OnSocketAllocated(unsigned server_index) { |
- PoolEvent event = { PoolEvent::ALLOCATE, server_index }; |
- events_.push_back(event); |
-} |
- |
-void DnsSessionTest::OnSocketFreed(unsigned server_index) { |
- PoolEvent event = { PoolEvent::FREE, server_index }; |
- events_.push_back(event); |
-} |
- |
-bool DnsSessionTest::ExpectEvent(const PoolEvent& expected) { |
- if (events_.empty()) { |
- return false; |
- } |
- |
- const PoolEvent actual = events_.front(); |
- if ((expected.action != actual.action) |
- || (expected.server_index != actual.server_index)) { |
- return false; |
- } |
- events_.pop_front(); |
- |
- return true; |
-} |
- |
-scoped_ptr<DatagramClientSocket> |
-TestClientSocketFactory::CreateDatagramClientSocket( |
- DatagramSocket::BindType bind_type, |
- const RandIntCallback& rand_int_cb, |
- net::NetLog* net_log, |
- const net::NetLog::Source& source) { |
- // We're not actually expecting to send or receive any data, so use the |
- // simplest SocketDataProvider with no data supplied. |
- SocketDataProvider* data_provider = new StaticSocketDataProvider(); |
- data_providers_.push_back(data_provider); |
- scoped_ptr<MockUDPClientSocket> socket( |
- new MockUDPClientSocket(data_provider, net_log)); |
- data_provider->set_socket(socket.get()); |
- return socket.Pass(); |
-} |
- |
-TestClientSocketFactory::~TestClientSocketFactory() { |
- STLDeleteElements(&data_providers_); |
-} |
- |
-TEST_F(DnsSessionTest, AllocateFree) { |
- scoped_ptr<DnsSession::SocketLease> lease1, lease2; |
- |
- Initialize(2); |
- EXPECT_TRUE(NoMoreEvents()); |
- |
- lease1 = Allocate(0); |
- EXPECT_TRUE(DidAllocate(0)); |
- EXPECT_TRUE(NoMoreEvents()); |
- |
- lease2 = Allocate(1); |
- EXPECT_TRUE(DidAllocate(1)); |
- EXPECT_TRUE(NoMoreEvents()); |
- |
- lease1.reset(); |
- EXPECT_TRUE(DidFree(0)); |
- EXPECT_TRUE(NoMoreEvents()); |
- |
- lease2.reset(); |
- EXPECT_TRUE(DidFree(1)); |
- EXPECT_TRUE(NoMoreEvents()); |
-} |
- |
-// Expect default calculated timeout to be within 10ms of in DnsConfig. |
-TEST_F(DnsSessionTest, HistogramTimeoutNormal) { |
- Initialize(2); |
- base::TimeDelta timeoutDelta = session_->NextTimeout(0, 0) - config_.timeout; |
- EXPECT_LT(timeoutDelta.InMilliseconds(), 10); |
-} |
- |
-// Expect short calculated timeout to be within 10ms of in DnsConfig. |
-TEST_F(DnsSessionTest, HistogramTimeoutShort) { |
- config_.timeout = base::TimeDelta::FromMilliseconds(15); |
- Initialize(2); |
- base::TimeDelta timeoutDelta = session_->NextTimeout(0, 0) - config_.timeout; |
- EXPECT_LT(timeoutDelta.InMilliseconds(), 10); |
-} |
- |
-// Expect long calculated timeout to be equal to one in DnsConfig. |
-TEST_F(DnsSessionTest, HistogramTimeoutLong) { |
- config_.timeout = base::TimeDelta::FromSeconds(15); |
- Initialize(2); |
- base::TimeDelta timeout = session_->NextTimeout(0, 0); |
- EXPECT_EQ(config_.timeout.InMilliseconds(), timeout.InMilliseconds()); |
-} |
- |
-} // namespace |
- |
-} // namespace net |