Skip to content

Commit a3e2b3e

Browse files
committedFeb 15, 2015
Fix unit test if there isn't a localhost address (for example FreeBSD jails)
1 parent 3b6b943 commit a3e2b3e

File tree

1 file changed

+35
-5
lines changed

1 file changed

+35
-5
lines changed
 

Diff for: ‎src/test.cpp

+35-5
Original file line numberDiff line numberDiff line change
@@ -1669,9 +1669,24 @@ struct TestSocket: public TestBase
16691669
void Run()
16701670
{
16711671
const int port = 30003;
1672-
Address address(0,0,0,0, port);
1672+
Address address(0, 0, 0, 0, port);
1673+
Address bind_addr(0, 0, 0, 0, port);
16731674
Address address6((IPv6AddressBytes*) NULL, port);
16741675

1676+
/*
1677+
* Try to use the bind_address for servers with no localhost address
1678+
* For example: FreeBSD jails
1679+
*/
1680+
std::string bind_str = g_settings->get("bind_address");
1681+
try {
1682+
bind_addr.Resolve(bind_str.c_str());
1683+
1684+
if (!bind_addr.isIPv6()) {
1685+
address = bind_addr;
1686+
}
1687+
} catch (ResolveError &e) {
1688+
}
1689+
16751690
// IPv6 socket test
16761691
if (g_settings->getBool("enable_ipv6")) {
16771692
UDPSocket socket6;
@@ -1709,7 +1724,7 @@ struct TestSocket: public TestBase
17091724
UASSERT(memcmp(sender.getAddress6().sin6_addr.s6_addr,
17101725
Address(&bytes, 0).getAddress6().sin6_addr.s6_addr, 16) == 0);
17111726
}
1712-
catch (SendFailedException e) {
1727+
catch (SendFailedException &e) {
17131728
errorstream << "IPv6 support enabled but not available!"
17141729
<< std::endl;
17151730
}
@@ -1722,7 +1737,15 @@ struct TestSocket: public TestBase
17221737
socket.Bind(address);
17231738

17241739
const char sendbuffer[] = "hello world!";
1725-
socket.Send(Address(127, 0, 0 ,1, port), sendbuffer, sizeof(sendbuffer));
1740+
/*
1741+
* If there is a bind address, use it.
1742+
* It's useful in container environments
1743+
*/
1744+
if (address != Address(0, 0, 0, 0, port)) {
1745+
socket.Send(address, sendbuffer, sizeof(sendbuffer));
1746+
}
1747+
else
1748+
socket.Send(Address(127, 0, 0 ,1, port), sendbuffer, sizeof(sendbuffer));
17261749

17271750
sleep_ms(50);
17281751

@@ -1734,8 +1757,15 @@ struct TestSocket: public TestBase
17341757
}
17351758
//FIXME: This fails on some systems
17361759
UASSERT(strncmp(sendbuffer, rcvbuffer, sizeof(sendbuffer)) == 0);
1737-
UASSERT(sender.getAddress().sin_addr.s_addr ==
1738-
Address(127, 0, 0, 1, 0).getAddress().sin_addr.s_addr);
1760+
1761+
if (address != Address(0, 0, 0, 0, port)) {
1762+
UASSERT(sender.getAddress().sin_addr.s_addr ==
1763+
address.getAddress().sin_addr.s_addr);
1764+
}
1765+
else {
1766+
UASSERT(sender.getAddress().sin_addr.s_addr ==
1767+
Address(127, 0, 0, 1, 0).getAddress().sin_addr.s_addr);
1768+
}
17391769
}
17401770
}
17411771
};

0 commit comments

Comments
 (0)
Please sign in to comment.