From: Marcin Siodelski Date: Thu, 2 Mar 2017 11:48:52 +0000 (+0100) Subject: [master] Prevent sporadic TCPAcceptor test failures by using reuse address. X-Git-Tag: trac5137_base X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fe19cac6564c08991107d98e6d01dfda8c68395e;p=thirdparty%2Fkea.git [master] Prevent sporadic TCPAcceptor test failures by using reuse address. This change was okayed on jabber. --- diff --git a/src/lib/asiolink/tests/tcp_acceptor_unittest.cc b/src/lib/asiolink/tests/tcp_acceptor_unittest.cc index 7c57996db7..8edb1b8c65 100644 --- a/src/lib/asiolink/tests/tcp_acceptor_unittest.cc +++ b/src/lib/asiolink/tests/tcp_acceptor_unittest.cc @@ -229,6 +229,12 @@ public: return (endpoint_copy); } + /// @brief Opens TCP acceptor and sets 'reuse address' option. + void acceptorOpen() { + acceptor_.open(endpoint_); + acceptor_.setOption(TestTCPAcceptor::ReuseAddress(true)); + } + /// @brief Starts accepting TCP connections. /// /// This method creates new Acceptor instance and calls accept() to start @@ -324,7 +330,7 @@ TEST_F(TCPAcceptorTest, asyncAccept) { setMaxConnections(10); // Initialize acceptor. - acceptor_.open(endpoint_); + acceptorOpen(); acceptor_.bind(endpoint_); acceptor_.listen(); @@ -387,15 +393,18 @@ TEST_F(TCPAcceptorTest, getNative) { // Initially the descriptor should be invalid (negative). ASSERT_LT(acceptor_.getNative(), 0); // Now open the socket and make sure the returned descriptor is now valid. - ASSERT_NO_THROW(acceptor_.open(endpoint_)); + ASSERT_NO_THROW(acceptorOpen()); EXPECT_GE(acceptor_.getNative(), 0); } +// macOS 10.12.3 has a bug which causes the connections to not enter +// the TIME-WAIT state and they never get closed. +#if !defined (OS_OSX) // Test that TCPAcceptor::close works properly. TEST_F(TCPAcceptorTest, close) { // Initialize acceptor. - acceptor_.open(endpoint_); + acceptorOpen(); acceptor_.bind(endpoint_); acceptor_.listen(); @@ -419,4 +428,6 @@ TEST_F(TCPAcceptorTest, close) { EXPECT_EQ(1, connections_.size()); } +#endif + }