Index: net/dns/mdns_client_unittest.cc |
diff --git a/net/dns/mdns_client_unittest.cc b/net/dns/mdns_client_unittest.cc |
index f524a5401c74446e558d0c3e4195a7a11dbbeacd..7ea4ac97448759a91bc3a1853c0374d8943bbe1f 100644 |
--- a/net/dns/mdns_client_unittest.cc |
+++ b/net/dns/mdns_client_unittest.cc |
@@ -372,10 +372,7 @@ class PtrRecordCopyContainer { |
class MDnsTest : public ::testing::Test { |
public: |
- MDnsTest(); |
- virtual ~MDnsTest(); |
virtual void SetUp() OVERRIDE; |
- virtual void TearDown() OVERRIDE; |
void DeleteTransaction(); |
void DeleteBothListeners(); |
void RunFor(base::TimeDelta time_period); |
@@ -392,9 +389,9 @@ class MDnsTest : public ::testing::Test { |
void ExpectPacket(const uint8* packet, unsigned size); |
void SimulatePacketReceive(const uint8* packet, unsigned size); |
- scoped_ptr<MDnsClientImpl> test_client_; |
+ MDnsClientImpl test_client_; |
IPEndPoint mdns_ipv4_endpoint_; |
- StrictMock<MockMDnsSocketFactory>* socket_factory_; |
+ StrictMock<MockMDnsSocketFactory> socket_factory_; |
// Transactions and listeners that can be deleted by class methods for |
// reentrancy tests. |
@@ -412,28 +409,16 @@ class MockListenerDelegate : public MDnsListener::Delegate { |
MOCK_METHOD0(OnCachePurged, void()); |
}; |
-MDnsTest::MDnsTest() { |
- socket_factory_ = new StrictMock<MockMDnsSocketFactory>(); |
- test_client_.reset(new MDnsClientImpl( |
- scoped_ptr<MDnsConnection::SocketFactory>(socket_factory_))); |
-} |
- |
-MDnsTest::~MDnsTest() { |
-} |
- |
void MDnsTest::SetUp() { |
- test_client_->StartListening(); |
-} |
- |
-void MDnsTest::TearDown() { |
+ test_client_.StartListening(&socket_factory_); |
} |
void MDnsTest::SimulatePacketReceive(const uint8* packet, unsigned size) { |
- socket_factory_->SimulateReceive(packet, size); |
+ socket_factory_.SimulateReceive(packet, size); |
} |
void MDnsTest::ExpectPacket(const uint8* packet, unsigned size) { |
- EXPECT_CALL(*socket_factory_, OnSendTo(MakeString(packet, size))) |
+ EXPECT_CALL(socket_factory_, OnSendTo(MakeString(packet, size))) |
.Times(2); |
} |
@@ -467,10 +452,12 @@ TEST_F(MDnsTest, PassiveListeners) { |
PtrRecordCopyContainer record_privet; |
PtrRecordCopyContainer record_printer; |
- scoped_ptr<MDnsListener> listener_privet = test_client_->CreateListener( |
- dns_protocol::kTypePTR, "_privet._tcp.local", &delegate_privet); |
- scoped_ptr<MDnsListener> listener_printer = test_client_->CreateListener( |
- dns_protocol::kTypePTR, "_printer._tcp.local", &delegate_printer); |
+ scoped_ptr<MDnsListener> listener_privet = |
+ test_client_.CreateListener(dns_protocol::kTypePTR, "_privet._tcp.local", |
+ &delegate_privet); |
+ scoped_ptr<MDnsListener> listener_printer = |
+ test_client_.CreateListener(dns_protocol::kTypePTR, "_printer._tcp.local", |
+ &delegate_printer); |
ASSERT_TRUE(listener_privet->Start()); |
ASSERT_TRUE(listener_printer->Start()); |
@@ -509,8 +496,9 @@ TEST_F(MDnsTest, PassiveListenersCacheCleanup) { |
PtrRecordCopyContainer record_privet; |
PtrRecordCopyContainer record_privet2; |
- scoped_ptr<MDnsListener> listener_privet = test_client_->CreateListener( |
- dns_protocol::kTypePTR, "_privet._tcp.local", &delegate_privet); |
+ scoped_ptr<MDnsListener> listener_privet = |
+ test_client_.CreateListener(dns_protocol::kTypePTR, "_privet._tcp.local", |
+ &delegate_privet); |
ASSERT_TRUE(listener_privet->Start()); |
@@ -543,8 +531,9 @@ TEST_F(MDnsTest, MalformedPacket) { |
PtrRecordCopyContainer record_printer; |
- scoped_ptr<MDnsListener> listener_printer = test_client_->CreateListener( |
- dns_protocol::kTypePTR, "_printer._tcp.local", &delegate_printer); |
+ scoped_ptr<MDnsListener> listener_printer = |
+ test_client_.CreateListener(dns_protocol::kTypePTR, "_printer._tcp.local", |
+ &delegate_printer); |
ASSERT_TRUE(listener_printer->Start()); |
@@ -574,7 +563,7 @@ TEST_F(MDnsTest, TransactionWithEmptyCache) { |
ExpectPacket(kQueryPacketPrivet, sizeof(kQueryPacketPrivet)); |
scoped_ptr<MDnsTransaction> transaction_privet = |
- test_client_->CreateTransaction( |
+ test_client_.CreateTransaction( |
dns_protocol::kTypePTR, "_privet._tcp.local", |
MDnsTransaction::QUERY_NETWORK | |
MDnsTransaction::QUERY_CACHE | |
@@ -599,7 +588,7 @@ TEST_F(MDnsTest, TransactionWithEmptyCache) { |
TEST_F(MDnsTest, TransactionCacheOnlyNoResult) { |
scoped_ptr<MDnsTransaction> transaction_privet = |
- test_client_->CreateTransaction( |
+ test_client_.CreateTransaction( |
dns_protocol::kTypePTR, "_privet._tcp.local", |
MDnsTransaction::QUERY_CACHE | |
MDnsTransaction::SINGLE_RESULT, |
@@ -616,9 +605,10 @@ TEST_F(MDnsTest, TransactionCacheOnlyNoResult) { |
TEST_F(MDnsTest, TransactionWithCache) { |
// Listener to force the client to listen |
StrictMock<MockListenerDelegate> delegate_irrelevant; |
- scoped_ptr<MDnsListener> listener_irrelevant = test_client_->CreateListener( |
- dns_protocol::kTypeA, "codereview.chromium.local", |
- &delegate_irrelevant); |
+ scoped_ptr<MDnsListener> listener_irrelevant = |
+ test_client_.CreateListener(dns_protocol::kTypeA, |
+ "codereview.chromium.local", |
+ &delegate_irrelevant); |
ASSERT_TRUE(listener_irrelevant->Start()); |
@@ -632,7 +622,7 @@ TEST_F(MDnsTest, TransactionWithCache) { |
&PtrRecordCopyContainer::SaveWithDummyArg)); |
scoped_ptr<MDnsTransaction> transaction_privet = |
- test_client_->CreateTransaction( |
+ test_client_.CreateTransaction( |
dns_protocol::kTypePTR, "_privet._tcp.local", |
MDnsTransaction::QUERY_NETWORK | |
MDnsTransaction::QUERY_CACHE | |
@@ -651,9 +641,9 @@ TEST_F(MDnsTest, AdditionalRecords) { |
PtrRecordCopyContainer record_privet; |
- scoped_ptr<MDnsListener> listener_privet = test_client_->CreateListener( |
- dns_protocol::kTypePTR, "_privet._tcp.local", |
- &delegate_privet); |
+ scoped_ptr<MDnsListener> listener_privet = |
+ test_client_.CreateListener(dns_protocol::kTypePTR, "_privet._tcp.local", |
+ &delegate_privet); |
ASSERT_TRUE(listener_privet->Start()); |
@@ -674,7 +664,7 @@ TEST_F(MDnsTest, TransactionTimeout) { |
ExpectPacket(kQueryPacketPrivet, sizeof(kQueryPacketPrivet)); |
scoped_ptr<MDnsTransaction> transaction_privet = |
- test_client_->CreateTransaction( |
+ test_client_.CreateTransaction( |
dns_protocol::kTypePTR, "_privet._tcp.local", |
MDnsTransaction::QUERY_NETWORK | |
MDnsTransaction::QUERY_CACHE | |
@@ -696,7 +686,7 @@ TEST_F(MDnsTest, TransactionMultipleRecords) { |
ExpectPacket(kQueryPacketPrivet, sizeof(kQueryPacketPrivet)); |
scoped_ptr<MDnsTransaction> transaction_privet = |
- test_client_->CreateTransaction( |
+ test_client_.CreateTransaction( |
dns_protocol::kTypePTR, "_privet._tcp.local", |
MDnsTransaction::QUERY_NETWORK | |
MDnsTransaction::QUERY_CACHE , |
@@ -733,7 +723,7 @@ TEST_F(MDnsTest, TransactionMultipleRecords) { |
TEST_F(MDnsTest, TransactionReentrantDelete) { |
ExpectPacket(kQueryPacketPrivet, sizeof(kQueryPacketPrivet)); |
- transaction_ = test_client_->CreateTransaction( |
+ transaction_ = test_client_.CreateTransaction( |
dns_protocol::kTypePTR, "_privet._tcp.local", |
MDnsTransaction::QUERY_NETWORK | |
MDnsTransaction::QUERY_CACHE | |
@@ -756,14 +746,14 @@ TEST_F(MDnsTest, TransactionReentrantDelete) { |
TEST_F(MDnsTest, TransactionReentrantDeleteFromCache) { |
StrictMock<MockListenerDelegate> delegate_irrelevant; |
- scoped_ptr<MDnsListener> listener_irrelevant = test_client_->CreateListener( |
+ scoped_ptr<MDnsListener> listener_irrelevant = test_client_.CreateListener( |
dns_protocol::kTypeA, "codereview.chromium.local", |
&delegate_irrelevant); |
ASSERT_TRUE(listener_irrelevant->Start()); |
SimulatePacketReceive(kSamplePacket1, sizeof(kSamplePacket1)); |
- transaction_ = test_client_->CreateTransaction( |
+ transaction_ = test_client_.CreateTransaction( |
dns_protocol::kTypePTR, "_privet._tcp.local", |
MDnsTransaction::QUERY_NETWORK | |
MDnsTransaction::QUERY_CACHE, |
@@ -782,20 +772,22 @@ TEST_F(MDnsTest, TransactionReentrantDeleteFromCache) { |
TEST_F(MDnsTest, TransactionReentrantCacheLookupStart) { |
ExpectPacket(kQueryPacketPrivet, sizeof(kQueryPacketPrivet)); |
- scoped_ptr<MDnsTransaction> transaction1 = test_client_->CreateTransaction( |
- dns_protocol::kTypePTR, "_privet._tcp.local", |
- MDnsTransaction::QUERY_NETWORK | |
- MDnsTransaction::QUERY_CACHE | |
- MDnsTransaction::SINGLE_RESULT, |
- base::Bind(&MDnsTest::MockableRecordCallback, |
- base::Unretained(this))); |
+ scoped_ptr<MDnsTransaction> transaction1 = |
+ test_client_.CreateTransaction( |
+ dns_protocol::kTypePTR, "_privet._tcp.local", |
+ MDnsTransaction::QUERY_NETWORK | |
+ MDnsTransaction::QUERY_CACHE | |
+ MDnsTransaction::SINGLE_RESULT, |
+ base::Bind(&MDnsTest::MockableRecordCallback, |
+ base::Unretained(this))); |
- scoped_ptr<MDnsTransaction> transaction2 = test_client_->CreateTransaction( |
- dns_protocol::kTypePTR, "_printer._tcp.local", |
- MDnsTransaction::QUERY_CACHE | |
- MDnsTransaction::SINGLE_RESULT, |
- base::Bind(&MDnsTest::MockableRecordCallback2, |
- base::Unretained(this))); |
+ scoped_ptr<MDnsTransaction> transaction2 = |
+ test_client_.CreateTransaction( |
+ dns_protocol::kTypePTR, "_printer._tcp.local", |
+ MDnsTransaction::QUERY_CACHE | |
+ MDnsTransaction::SINGLE_RESULT, |
+ base::Bind(&MDnsTest::MockableRecordCallback2, |
+ base::Unretained(this))); |
EXPECT_CALL(*this, MockableRecordCallback2(MDnsTransaction::RESULT_RECORD, |
_)) |
@@ -815,7 +807,7 @@ TEST_F(MDnsTest, TransactionReentrantCacheLookupStart) { |
TEST_F(MDnsTest, GoodbyePacketNotification) { |
StrictMock<MockListenerDelegate> delegate_privet; |
- scoped_ptr<MDnsListener> listener_privet = test_client_->CreateListener( |
+ scoped_ptr<MDnsListener> listener_privet = test_client_.CreateListener( |
dns_protocol::kTypePTR, "_privet._tcp.local", &delegate_privet); |
ASSERT_TRUE(listener_privet->Start()); |
@@ -827,8 +819,9 @@ TEST_F(MDnsTest, GoodbyePacketNotification) { |
TEST_F(MDnsTest, GoodbyePacketRemoval) { |
StrictMock<MockListenerDelegate> delegate_privet; |
- scoped_ptr<MDnsListener> listener_privet = test_client_->CreateListener( |
- dns_protocol::kTypePTR, "_privet._tcp.local", &delegate_privet); |
+ scoped_ptr<MDnsListener> listener_privet = |
+ test_client_.CreateListener(dns_protocol::kTypePTR, "_privet._tcp.local", |
+ &delegate_privet); |
ASSERT_TRUE(listener_privet->Start()); |
EXPECT_CALL(delegate_privet, OnRecordUpdate(MDnsListener::RECORD_ADDED, _)) |
@@ -851,13 +844,13 @@ TEST_F(MDnsTest, GoodbyePacketRemoval) { |
TEST_F(MDnsTest, ListenerReentrantDelete) { |
StrictMock<MockListenerDelegate> delegate_privet; |
- listener1_ = test_client_->CreateListener( |
- dns_protocol::kTypePTR, "_privet._tcp.local", |
- &delegate_privet); |
+ listener1_ = test_client_.CreateListener(dns_protocol::kTypePTR, |
+ "_privet._tcp.local", |
+ &delegate_privet); |
- listener2_ = test_client_->CreateListener( |
- dns_protocol::kTypePTR, "_privet._tcp.local", |
- &delegate_privet); |
+ listener2_ = test_client_.CreateListener(dns_protocol::kTypePTR, |
+ "_privet._tcp.local", |
+ &delegate_privet); |
ASSERT_TRUE(listener1_->Start()); |
@@ -884,8 +877,9 @@ TEST_F(MDnsTest, DoubleRecordDisagreeing) { |
IPAddressNumber address; |
StrictMock<MockListenerDelegate> delegate_privet; |
- scoped_ptr<MDnsListener> listener_privet = test_client_->CreateListener( |
- dns_protocol::kTypeA, "privet.local", &delegate_privet); |
+ scoped_ptr<MDnsListener> listener_privet = |
+ test_client_.CreateListener(dns_protocol::kTypeA, "privet.local", |
+ &delegate_privet); |
ASSERT_TRUE(listener_privet->Start()); |
@@ -901,14 +895,16 @@ TEST_F(MDnsTest, DoubleRecordDisagreeing) { |
TEST_F(MDnsTest, NsecWithListener) { |
StrictMock<MockListenerDelegate> delegate_privet; |
- scoped_ptr<MDnsListener> listener_privet = test_client_->CreateListener( |
- dns_protocol::kTypeA, "_privet._tcp.local", &delegate_privet); |
+ scoped_ptr<MDnsListener> listener_privet = |
+ test_client_.CreateListener(dns_protocol::kTypeA, "_privet._tcp.local", |
+ &delegate_privet); |
// Test to make sure nsec callback is NOT called for PTR |
// (which is marked as existing). |
StrictMock<MockListenerDelegate> delegate_privet2; |
- scoped_ptr<MDnsListener> listener_privet2 = test_client_->CreateListener( |
- dns_protocol::kTypePTR, "_privet._tcp.local", &delegate_privet2); |
+ scoped_ptr<MDnsListener> listener_privet2 = |
+ test_client_.CreateListener(dns_protocol::kTypePTR, "_privet._tcp.local", |
+ &delegate_privet2); |
ASSERT_TRUE(listener_privet->Start()); |
@@ -921,7 +917,7 @@ TEST_F(MDnsTest, NsecWithListener) { |
TEST_F(MDnsTest, NsecWithTransactionFromNetwork) { |
scoped_ptr<MDnsTransaction> transaction_privet = |
- test_client_->CreateTransaction( |
+ test_client_.CreateTransaction( |
dns_protocol::kTypeA, "_privet._tcp.local", |
MDnsTransaction::QUERY_NETWORK | |
MDnsTransaction::QUERY_CACHE | |
@@ -929,8 +925,7 @@ TEST_F(MDnsTest, NsecWithTransactionFromNetwork) { |
base::Bind(&MDnsTest::MockableRecordCallback, |
base::Unretained(this))); |
- EXPECT_CALL(*socket_factory_, OnSendTo(_)) |
- .Times(2); |
+ EXPECT_CALL(socket_factory_, OnSendTo(_)).Times(2); |
ASSERT_TRUE(transaction_privet->Start()); |
@@ -945,8 +940,8 @@ TEST_F(MDnsTest, NsecWithTransactionFromCache) { |
// Force mDNS to listen. |
StrictMock<MockListenerDelegate> delegate_irrelevant; |
scoped_ptr<MDnsListener> listener_irrelevant = |
- test_client_->CreateListener(dns_protocol::kTypePTR, "_privet._tcp.local", |
- &delegate_irrelevant); |
+ test_client_.CreateListener(dns_protocol::kTypePTR, "_privet._tcp.local", |
+ &delegate_irrelevant); |
listener_irrelevant->Start(); |
SimulatePacketReceive(kSamplePacketNsec, |
@@ -956,7 +951,7 @@ TEST_F(MDnsTest, NsecWithTransactionFromCache) { |
MockableRecordCallback(MDnsTransaction::RESULT_NSEC, NULL)); |
scoped_ptr<MDnsTransaction> transaction_privet_a = |
- test_client_->CreateTransaction( |
+ test_client_.CreateTransaction( |
dns_protocol::kTypeA, "_privet._tcp.local", |
MDnsTransaction::QUERY_NETWORK | |
MDnsTransaction::QUERY_CACHE | |
@@ -970,7 +965,7 @@ TEST_F(MDnsTest, NsecWithTransactionFromCache) { |
// valid answer to the query |
scoped_ptr<MDnsTransaction> transaction_privet_ptr = |
- test_client_->CreateTransaction( |
+ test_client_.CreateTransaction( |
dns_protocol::kTypePTR, "_privet._tcp.local", |
MDnsTransaction::QUERY_NETWORK | |
MDnsTransaction::QUERY_CACHE | |
@@ -978,16 +973,16 @@ TEST_F(MDnsTest, NsecWithTransactionFromCache) { |
base::Bind(&MDnsTest::MockableRecordCallback, |
base::Unretained(this))); |
- EXPECT_CALL(*socket_factory_, OnSendTo(_)) |
- .Times(2); |
+ EXPECT_CALL(socket_factory_, OnSendTo(_)).Times(2); |
ASSERT_TRUE(transaction_privet_ptr->Start()); |
} |
TEST_F(MDnsTest, NsecConflictRemoval) { |
StrictMock<MockListenerDelegate> delegate_privet; |
- scoped_ptr<MDnsListener> listener_privet = test_client_->CreateListener( |
- dns_protocol::kTypeA, "_privet._tcp.local", &delegate_privet); |
+ scoped_ptr<MDnsListener> listener_privet = |
+ test_client_.CreateListener(dns_protocol::kTypeA, "_privet._tcp.local", |
+ &delegate_privet); |
ASSERT_TRUE(listener_privet->Start()); |
@@ -1015,27 +1010,20 @@ TEST_F(MDnsTest, NsecConflictRemoval) { |
// Note: These tests assume that the ipv4 socket will always be created first. |
// This is a simplifying assumption based on the way the code works now. |
- |
-class SimpleMockSocketFactory |
- : public MDnsConnection::SocketFactory { |
+class SimpleMockSocketFactory : public MDnsSocketFactory { |
public: |
- SimpleMockSocketFactory() { |
- } |
- virtual ~SimpleMockSocketFactory() { |
- } |
- |
- virtual scoped_ptr<DatagramServerSocket> CreateSocket() OVERRIDE { |
- MockMDnsDatagramServerSocket* socket = sockets_.back(); |
- sockets_.weak_erase(sockets_.end() - 1); |
- return scoped_ptr<DatagramServerSocket>(socket); |
+ virtual void CreateSockets( |
+ ScopedVector<DatagramServerSocket>* sockets) OVERRIDE { |
+ sockets->clear(); |
+ sockets->swap(sockets_); |
} |
- void PushSocket(MockMDnsDatagramServerSocket* socket) { |
+ void PushSocket(DatagramServerSocket* socket) { |
sockets_.push_back(socket); |
} |
private: |
- ScopedVector<MockMDnsDatagramServerSocket> sockets_; |
+ ScopedVector<DatagramServerSocket> sockets_; |
}; |
class MockMDnsConnectionDelegate : public MDnsConnection::Delegate { |
@@ -1057,29 +1045,13 @@ class MDnsConnectionTest : public ::testing::Test { |
protected: |
// Follow successful connection initialization. |
virtual void SetUp() OVERRIDE { |
- socket_ipv4_ = new MockMDnsDatagramServerSocket; |
- socket_ipv6_ = new MockMDnsDatagramServerSocket; |
+ socket_ipv4_ = new MockMDnsDatagramServerSocket(ADDRESS_FAMILY_IPV4); |
+ socket_ipv6_ = new MockMDnsDatagramServerSocket(ADDRESS_FAMILY_IPV6); |
factory_.PushSocket(socket_ipv6_); |
factory_.PushSocket(socket_ipv4_); |
} |
bool InitConnection() { |
- EXPECT_CALL(*socket_ipv4_, AllowAddressReuse()); |
- EXPECT_CALL(*socket_ipv6_, AllowAddressReuse()); |
- |
- EXPECT_CALL(*socket_ipv4_, SetMulticastLoopbackMode(false)); |
- EXPECT_CALL(*socket_ipv6_, SetMulticastLoopbackMode(false)); |
- |
- EXPECT_CALL(*socket_ipv4_, ListenInternal("0.0.0.0:5353")) |
- .WillOnce(Return(OK)); |
- EXPECT_CALL(*socket_ipv6_, ListenInternal("[::]:5353")) |
- .WillOnce(Return(OK)); |
- |
- EXPECT_CALL(*socket_ipv4_, JoinGroupInternal("224.0.0.251")) |
- .WillOnce(Return(OK)); |
- EXPECT_CALL(*socket_ipv6_, JoinGroupInternal("ff02::fb")) |
- .WillOnce(Return(OK)); |
- |
return connection_.Init(&factory_); |
} |