GH #1481, GH #1449: fix broken tests due to changed dns resolution

This commit is contained in:
Guenter Obiltschnig
2016-11-09 12:22:49 +01:00
parent 2c35d50889
commit 696a9de502
23 changed files with 246 additions and 112 deletions

View File

@@ -53,6 +53,7 @@ POCO_DECLARE_EXCEPTION(Net_API, NTPException, NetException)
POCO_DECLARE_EXCEPTION(Net_API, HTMLFormException, NetException)
POCO_DECLARE_EXCEPTION(Net_API, WebSocketException, NetException)
POCO_DECLARE_EXCEPTION(Net_API, UnsupportedFamilyException, NetException)
POCO_DECLARE_EXCEPTION(Net_API, AddressFamilyMismatchException, NetException)
} } // namespace Poco::Net

View File

@@ -58,6 +58,10 @@ public:
SocketAddress();
/// Creates a wildcard (all zero) IPv4 SocketAddress.
explicit SocketAddress(Family family);
/// Creates a SocketAddress with unspecified (wildcard) IP address
/// of the given family.
SocketAddress(const IPAddress& hostAddress, Poco::UInt16 portNumber);
/// Creates a SocketAddress from an IP address and given port number.
@@ -65,12 +69,27 @@ public:
/// Creates a SocketAddress with unspecified (wildcard) IP address
/// and given port number.
SocketAddress(Family family, Poco::UInt16 port);
/// Creates a SocketAddress with unspecified (wildcard) IP address
/// of the given family, and given port number.
SocketAddress(const std::string& hostAddress, Poco::UInt16 portNumber);
/// Creates a SocketAddress from an IP address and given port number.
///
/// The IP address must either be a domain name, or it must
/// be in dotted decimal (IPv4) or hex string (IPv6) format.
SocketAddress(Family family, const std::string& hostAddress, Poco::UInt16 portNumber);
/// Creates a SocketAddress from an IP address and given port number.
///
/// The IP address must either be a domain name, or it must
/// be in dotted decimal (IPv4) or hex string (IPv6) format.
///
/// If a domain name is given in hostAddress, it is resolved and the address
/// matching the given family is used. If no address matching the given family
/// is found, or the IP address given in hostAddress does not match the given
/// family, an AddressFamilyMismatchException is thrown.
SocketAddress(const std::string& hostAddress, const std::string& portNumber);
/// Creates a SocketAddress from an IP address and the
/// service name or port number.
@@ -81,6 +100,21 @@ public:
/// The given port must either be a decimal port number, or
/// a service name.
SocketAddress(Family family, const std::string& hostAddress, const std::string& portNumber);
/// Creates a SocketAddress from an IP address and the
/// service name or port number.
///
/// The IP address must either be a domain name, or it must
/// be in dotted decimal (IPv4) or hex string (IPv6) format.
///
/// The given port must either be a decimal port number, or
/// a service name.
///
/// If a domain name is given in hostAddress, it is resolved and the address
/// matching the given family is used. If no address matching the given family
/// is found, or the IP address given in hostAddress does not match the given
/// family, an AddressFamilyMismatchException is thrown.
explicit SocketAddress(const std::string& hostAndPort);
/// Creates a SocketAddress from an IP address or host name and the
/// port number/service name. Host name/address and port number must
@@ -156,6 +190,7 @@ public:
protected:
void init(const IPAddress& hostAddress, Poco::UInt16 portNumber);
void init(const std::string& hostAddress, Poco::UInt16 portNumber);
void init(Family family, const std::string& hostAddress, Poco::UInt16 portNumber);
void init(Family family, const std::string& address);
void init(const std::string& hostAndPort);
Poco::UInt16 resolveService(const std::string& service);

View File

@@ -49,7 +49,8 @@ POCO_IMPLEMENT_EXCEPTION(ICMPException, NetException, "ICMP Exception")
POCO_IMPLEMENT_EXCEPTION(NTPException, NetException, "NTP Exception")
POCO_IMPLEMENT_EXCEPTION(HTMLFormException, NetException, "HTML Form Exception")
POCO_IMPLEMENT_EXCEPTION(WebSocketException, NetException, "WebSocket Exception")
POCO_IMPLEMENT_EXCEPTION(UnsupportedFamilyException, NetException, "Unknown or unsupported socket family.")
POCO_IMPLEMENT_EXCEPTION(UnsupportedFamilyException, NetException, "Unknown or unsupported socket family")
POCO_IMPLEMENT_EXCEPTION(AddressFamilyMismatchException, NetException, "Address family mismatch")
} } // namespace Poco::Net

View File

@@ -101,6 +101,7 @@ void ServerSocket::bind(Poco::UInt16 port, bool reuseAddress, bool reusePort)
impl()->bind(address, reuseAddress, reusePort);
}
void ServerSocket::bind6(const SocketAddress& address, bool reuseAddress, bool ipV6Only)
{
impl()->bind6(address, reuseAddress, ipV6Only);
@@ -112,6 +113,7 @@ void ServerSocket::bind6(const SocketAddress& address, bool reuseAddress, bool r
impl()->bind6(address, reuseAddress, reusePort, ipV6Only);
}
void ServerSocket::bind6(Poco::UInt16 port, bool reuseAddress, bool ipV6Only)
{
#if defined(POCO_HAVE_IPv6)
@@ -135,6 +137,7 @@ void ServerSocket::bind6(Poco::UInt16 port, bool reuseAddress, bool reusePort, b
#endif // POCO_HAVE_IPv6
}
void ServerSocket::listen(int backlog)
{
impl()->listen(backlog);

View File

@@ -77,6 +77,12 @@ SocketAddress::SocketAddress()
}
SocketAddress::SocketAddress(Family fam)
{
init(IPAddress(fam), 0);
}
SocketAddress::SocketAddress(const IPAddress& hostAddress, Poco::UInt16 portNumber)
{
init(hostAddress, portNumber);
@@ -89,21 +95,39 @@ SocketAddress::SocketAddress(Poco::UInt16 portNumber)
}
SocketAddress::SocketAddress(Family fam, Poco::UInt16 portNumber)
{
init(IPAddress(fam), portNumber);
}
SocketAddress::SocketAddress(const std::string& hostAddress, Poco::UInt16 portNumber)
{
init(hostAddress, portNumber);
}
SocketAddress::SocketAddress(Family fam, const std::string& hostAddress, Poco::UInt16 portNumber)
{
init(fam, hostAddress, portNumber);
}
SocketAddress::SocketAddress(const std::string& hostAddress, const std::string& portNumber)
{
init(hostAddress, resolveService(portNumber));
}
SocketAddress::SocketAddress(Family family, const std::string& addr)
SocketAddress::SocketAddress(Family fam, const std::string& hostAddress, const std::string& portNumber)
{
init(family, addr);
init(fam, hostAddress, resolveService(portNumber));
}
SocketAddress::SocketAddress(Family fam, const std::string& addr)
{
init(fam, addr);
}
@@ -261,6 +285,35 @@ void SocketAddress::init(const std::string& hostAddress, Poco::UInt16 portNumber
}
void SocketAddress::init(Family fam, const std::string& hostAddress, Poco::UInt16 portNumber)
{
IPAddress ip;
if (IPAddress::tryParse(hostAddress, ip))
{
if (ip.family() != fam) throw AddressFamilyMismatchException(hostAddress);
init(ip, portNumber);
}
else
{
HostEntry he = DNS::hostByName(hostAddress);
HostEntry::AddressList addresses = he.addresses();
if (addresses.size() > 0)
{
for (HostEntry::AddressList::const_iterator it = addresses.begin(); it != addresses.end(); ++it)
{
if (it->family() == fam)
{
init(*it, portNumber);
return;
}
}
throw AddressFamilyMismatchException(hostAddress);
}
else throw HostNotFoundException("No address found for host", hostAddress);
}
}
void SocketAddress::init(Family fam, const std::string& address)
{
#if defined(POCO_OS_FAMILY_UNIX)
@@ -271,8 +324,29 @@ void SocketAddress::init(Family fam, const std::string& address)
else
#endif
{
init(address);
if (fam != family()) throw Poco::InvalidArgumentException("address does not fit family");
std::string host;
std::string port;
std::string::const_iterator it = address.begin();
std::string::const_iterator end = address.end();
if (*it == '[')
{
++it;
while (it != end && *it != ']') host += *it++;
if (it == end) throw InvalidArgumentException("Malformed IPv6 address");
++it;
}
else
{
while (it != end && *it != ':') host += *it++;
}
if (it != end && *it == ':')
{
++it;
while (it != end) port += *it++;
}
else throw InvalidArgumentException("Missing port number");
init(fam, host, resolveService(port));
}
}

View File

@@ -274,6 +274,7 @@ void WebSocketImpl::bind6(const SocketAddress& address, bool reuseAddress, bool
throw Poco::InvalidAccessException("Cannot bind6() a WebSocketImpl");
}
void WebSocketImpl::listen(int backlog)
{
throw Poco::InvalidAccessException("Cannot listen() on a WebSocketImpl");

View File

@@ -39,20 +39,20 @@ DNSTest::~DNSTest()
void DNSTest::testHostByName()
{
HostEntry he1 = DNS::hostByName("aliastest.appinf.com");
HostEntry he1 = DNS::hostByName("aliastest.pocoproject.org");
// different systems report different canonical names, unfortunately.
assert (he1.name() == "dnstest.appinf.com" || he1.name() == "aliastest.appinf.com");
assert (he1.name() == "dnstest.pocoproject.org" || he1.name() == "aliastest.pocoproject.org");
#if !defined(POCO_HAVE_ADDRINFO)
// getaddrinfo() does not report any aliases
assert (!he1.aliases().empty());
assert (he1.aliases()[0] == "aliastest.appinf.com");
assert (he1.aliases()[0] == "aliastest.pocoproject.org");
#endif
assert (he1.addresses().size() >= 1);
assert (he1.addresses()[0].toString() == "1.2.3.4");
try
{
HostEntry he1 = DNS::hostByName("nohost.appinf.com");
HostEntry he1 = DNS::hostByName("nohost.pocoproject.org");
fail("host not found - must throw");
}
catch (HostNotFoundException&)

View File

@@ -51,7 +51,7 @@ void DatagramSocketTest::testEcho()
UDPEchoServer echoServer;
DatagramSocket ss;
char buffer[256];
ss.connect(SocketAddress("localhost", echoServer.port()));
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
int n = ss.sendBytes("hello", 5);
assert (n == 5);
n = ss.receiveBytes(buffer, sizeof(buffer));
@@ -63,9 +63,9 @@ void DatagramSocketTest::testEcho()
void DatagramSocketTest::testSendToReceiveFrom()
{
UDPEchoServer echoServer(SocketAddress("localhost", 0));
UDPEchoServer echoServer(SocketAddress("127.0.0.1", 0));
DatagramSocket ss(SocketAddress::IPv4);
int n = ss.sendTo("hello", 5, SocketAddress("localhost", echoServer.port()));
int n = ss.sendTo("hello", 5, SocketAddress("127.0.0.1", echoServer.port()));
assert (n == 5);
char buffer[256];
SocketAddress sa;
@@ -83,7 +83,7 @@ void DatagramSocketTest::testUnbound()
UDPEchoServer echoServer;
DatagramSocket ss;
char buffer[256];
ss.connect(SocketAddress("localhost", echoServer.port()));
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
int n = ss.sendBytes("hello", 5);
assert (n == 5);
n = ss.receiveBytes(buffer, sizeof(buffer));

View File

@@ -37,7 +37,7 @@ void DialogSocketTest::testDialogSocket()
{
EchoServer echoServer;
DialogSocket ds;
ds.connect(SocketAddress("localhost", echoServer.port()));
ds.connect(SocketAddress("127.0.0.1", echoServer.port()));
ds.sendMessage("Hello, world!");
std::string str;

View File

@@ -94,7 +94,7 @@ void FTPClientSessionTest::testLogin1()
{
DialogServer server;
server.addResponse("220 localhost FTP ready");
FTPClientSession session("localhost", server.port());
FTPClientSession session("127.0.0.1", server.port());
assert (session.isOpen());
assert (!session.isLoggedIn());
login(server, session);
@@ -125,7 +125,7 @@ void FTPClientSessionTest::testLogin2()
server.addResponse("230 Welcome");
server.addResponse("200 Type set to I");
Poco::UInt16 serverPort = server.port();
FTPClientSession session("localhost", serverPort, "user", "password");
FTPClientSession session("127.0.0.1", serverPort, "user", "password");
assert (session.isOpen());
assert (session.isLoggedIn());
server.addResponse("221 Good Bye");
@@ -139,7 +139,7 @@ void FTPClientSessionTest::testLogin2()
server.addResponse("331 Password required");
server.addResponse("230 Welcome");
server.addResponse("200 Type set to I");
session.open("localhost", serverPort, "user", "password");
session.open("127.0.0.1", serverPort, "user", "password");
assert (session.isOpen());
assert (session.isLoggedIn());
server.addResponse("221 Good Bye");
@@ -159,7 +159,7 @@ void FTPClientSessionTest::testLogin3()
FTPClientSession session;
assert (!session.isOpen());
assert (!session.isLoggedIn());
session.open("localhost", server.port(), "user", "password");
session.open("127.0.0.1", server.port(), "user", "password");
server.addResponse("221 Good Bye");
session.close();
assert (!session.isOpen());
@@ -172,7 +172,7 @@ void FTPClientSessionTest::testLoginFailed1()
{
DialogServer server;
server.addResponse("421 localhost FTP not ready");
FTPClientSession session("localhost", server.port());
FTPClientSession session("127.0.0.1", server.port());
try
{
session.login("user", "password");
@@ -192,7 +192,7 @@ void FTPClientSessionTest::testLoginFailed2()
server.addResponse("220 localhost FTP ready");
server.addResponse("331 Password required");
server.addResponse("530 Login incorrect");
FTPClientSession session("localhost", server.port());
FTPClientSession session("127.0.0.1", server.port());
try
{
session.login("user", "password");
@@ -213,7 +213,7 @@ void FTPClientSessionTest::testCommands()
server.addResponse("331 Password required");
server.addResponse("230 Welcome");
server.addResponse("200 Type set to I");
FTPClientSession session("localhost", server.port());
FTPClientSession session("127.0.0.1", server.port());
session.login("user", "password");
std::string cmd = server.popCommand();
assert (cmd == "USER user");
@@ -342,7 +342,7 @@ void FTPClientSessionTest::testDownloadPORT()
server.addResponse("331 Password required");
server.addResponse("230 Welcome");
server.addResponse("200 Type set to I");
FTPClientSession session("localhost", server.port());
FTPClientSession session("127.0.0.1", server.port());
session.setPassive(false);
session.login("user", "password");
server.clearCommands();
@@ -373,7 +373,7 @@ void FTPClientSessionTest::testDownloadPORT()
cmd = server.popCommandWait();
assert (cmd == "RETR test.txt");
SocketAddress sa("localhost", (Poco::UInt16) port);
SocketAddress sa("127.0.0.1", (Poco::UInt16) port);
DialogSocket dataSock;
dataSock.connect(sa);
@@ -397,7 +397,7 @@ void FTPClientSessionTest::testDownloadEPRT()
server.addResponse("331 Password required");
server.addResponse("230 Welcome");
server.addResponse("200 Type set to I");
FTPClientSession session("localhost", server.port());
FTPClientSession session("127.0.0.1", server.port());
session.setPassive(false);
session.login("user", "password");
server.clearCommands();
@@ -421,7 +421,7 @@ void FTPClientSessionTest::testDownloadEPRT()
cmd = server.popCommandWait();
assert (cmd == "RETR test.txt");
SocketAddress sa("localhost", (Poco::UInt16) port);
SocketAddress sa("127.0.0.1", (Poco::UInt16) port);
DialogSocket dataSock;
dataSock.connect(sa);
@@ -445,7 +445,7 @@ void FTPClientSessionTest::testDownloadPASV()
server.addResponse("331 Password required");
server.addResponse("230 Welcome");
server.addResponse("200 Type set to I");
FTPClientSession session("localhost", server.port());
FTPClientSession session("127.0.0.1", server.port());
session.login("user", "password");
server.clearCommands();
@@ -478,7 +478,7 @@ void FTPClientSessionTest::testDownloadEPSV()
server.addResponse("331 Password required");
server.addResponse("230 Welcome");
server.addResponse("200 Type set to I");
FTPClientSession session("localhost", server.port());
FTPClientSession session("127.0.0.1", server.port());
session.login("user", "password");
server.clearCommands();
@@ -513,7 +513,7 @@ void FTPClientSessionTest::testUpload()
server.addResponse("331 Password required");
server.addResponse("230 Welcome");
server.addResponse("200 Type set to I");
FTPClientSession session("localhost", server.port());
FTPClientSession session("127.0.0.1", server.port());
session.login("user", "password");
server.clearCommands();
@@ -546,7 +546,7 @@ void FTPClientSessionTest::testList()
server.addResponse("331 Password required");
server.addResponse("230 Welcome");
server.addResponse("200 Type set to I");
FTPClientSession session("localhost", server.port());
FTPClientSession session("127.0.0.1", server.port());
session.login("user", "password");
server.clearCommands();

View File

@@ -77,7 +77,7 @@ void FTPStreamFactoryTest::testDownload()
URI uri;
uri.setScheme("ftp");
uri.setHost("localhost");
uri.setHost("127.0.0.1");
uri.setPort(server.port());
uri.setPath("/test.txt;type=a");
FTPStreamFactory sf;
@@ -115,7 +115,7 @@ void FTPStreamFactoryTest::testList()
URI uri;
uri.setScheme("ftp");
uri.setHost("localhost");
uri.setHost("127.0.0.1");
uri.setPort(server.port());
uri.setPath("/usr/guest/data;type=d");
FTPStreamFactory sf;
@@ -152,7 +152,7 @@ void FTPStreamFactoryTest::testUserInfo()
URI uri;
uri.setScheme("ftp");
uri.setHost("localhost");
uri.setHost("127.0.0.1");
uri.setPort(server.port());
uri.setPath("/test.txt;type=a");
uri.setUserInfo("user:secret");
@@ -191,7 +191,7 @@ void FTPStreamFactoryTest::testPasswordProvider()
URI uri;
uri.setScheme("ftp");
uri.setHost("localhost");
uri.setHost("127.0.0.1");
uri.setPort(server.port());
uri.setPath("/test.txt;type=a");
uri.setUserInfo("user");
@@ -218,7 +218,7 @@ void FTPStreamFactoryTest::testMissingPasswordProvider()
URI uri;
uri.setScheme("ftp");
uri.setHost("localhost");
uri.setHost("127.0.0.1");
uri.setPort(server.port());
uri.setPath("/test.txt;type=a");
uri.setUserInfo("user");

View File

@@ -43,7 +43,7 @@ HTTPClientSessionTest::~HTTPClientSessionTest()
void HTTPClientSessionTest::testGetSmall()
{
HTTPTestServer srv;
HTTPClientSession s("localhost", srv.port());
HTTPClientSession s("127.0.0.1", srv.port());
HTTPRequest request(HTTPRequest::HTTP_GET, "/small");
s.sendRequest(request);
HTTPResponse response;
@@ -59,7 +59,7 @@ void HTTPClientSessionTest::testGetSmall()
void HTTPClientSessionTest::testGetLarge()
{
HTTPTestServer srv;
HTTPClientSession s("localhost", srv.port());
HTTPClientSession s("127.0.0.1", srv.port());
HTTPRequest request(HTTPRequest::HTTP_GET, "/large");
s.sendRequest(request);
HTTPResponse response;
@@ -75,7 +75,7 @@ void HTTPClientSessionTest::testGetLarge()
void HTTPClientSessionTest::testHead()
{
HTTPTestServer srv;
HTTPClientSession s("localhost", srv.port());
HTTPClientSession s("127.0.0.1", srv.port());
HTTPRequest request(HTTPRequest::HTTP_HEAD, "/large");
s.sendRequest(request);
HTTPResponse response;
@@ -90,7 +90,7 @@ void HTTPClientSessionTest::testHead()
void HTTPClientSessionTest::testPostSmallIdentity()
{
HTTPTestServer srv;
HTTPClientSession s("localhost", srv.port());
HTTPClientSession s("127.0.0.1", srv.port());
HTTPRequest request(HTTPRequest::HTTP_POST, "/echo");
std::string body("this is a random request body\r\n0\r\n");
request.setContentLength((int) body.length());
@@ -107,7 +107,7 @@ void HTTPClientSessionTest::testPostSmallIdentity()
void HTTPClientSessionTest::testPostLargeIdentity()
{
HTTPTestServer srv;
HTTPClientSession s("localhost", srv.port());
HTTPClientSession s("127.0.0.1", srv.port());
HTTPRequest request(HTTPRequest::HTTP_POST, "/echo");
std::string body(8000, 'x');
body.append("\r\n0\r\n");
@@ -125,7 +125,7 @@ void HTTPClientSessionTest::testPostLargeIdentity()
void HTTPClientSessionTest::testPostSmallChunked()
{
HTTPTestServer srv;
HTTPClientSession s("localhost", srv.port());
HTTPClientSession s("127.0.0.1", srv.port());
HTTPRequest request(HTTPRequest::HTTP_POST, "/echo");
std::string body("this is a random request body");
request.setChunkedTransferEncoding(true);
@@ -143,7 +143,7 @@ void HTTPClientSessionTest::testPostSmallChunked()
void HTTPClientSessionTest::testPostLargeChunked()
{
HTTPTestServer srv;
HTTPClientSession s("localhost", srv.port());
HTTPClientSession s("127.0.0.1", srv.port());
HTTPRequest request(HTTPRequest::HTTP_POST, "/echo");
std::string body(16000, 'x');
request.setChunkedTransferEncoding(true);
@@ -163,7 +163,7 @@ void HTTPClientSessionTest::testPostLargeChunked()
void HTTPClientSessionTest::testPostSmallClose()
{
HTTPTestServer srv;
HTTPClientSession s("localhost", srv.port());
HTTPClientSession s("127.0.0.1", srv.port());
HTTPRequest request(HTTPRequest::HTTP_POST, "/echo");
std::string body("this is a random request body");
s.sendRequest(request) << body;
@@ -180,7 +180,7 @@ void HTTPClientSessionTest::testPostSmallClose()
void HTTPClientSessionTest::testPostLargeClose()
{
HTTPTestServer srv;
HTTPClientSession s("localhost", srv.port());
HTTPClientSession s("127.0.0.1", srv.port());
HTTPRequest request(HTTPRequest::HTTP_POST, "/echo");
std::string body(8000, 'x');
s.sendRequest(request) << body;
@@ -197,7 +197,7 @@ void HTTPClientSessionTest::testPostLargeClose()
void HTTPClientSessionTest::testKeepAlive()
{
HTTPTestServer srv;
HTTPClientSession s("localhost", srv.port());
HTTPClientSession s("127.0.0.1", srv.port());
s.setKeepAlive(true);
HTTPRequest request(HTTPRequest::HTTP_HEAD, "/keepAlive", HTTPMessage::HTTP_1_1);
s.sendRequest(request);
@@ -246,7 +246,7 @@ void HTTPClientSessionTest::testProxy()
{
HTTPTestServer srv;
HTTPClientSession s("www.somehost.com");
s.setProxy("localhost", srv.port());
s.setProxy("127.0.0.1", srv.port());
HTTPRequest request(HTTPRequest::HTTP_GET, "/large");
s.sendRequest(request);
HTTPResponse response;
@@ -263,7 +263,7 @@ void HTTPClientSessionTest::testProxyAuth()
{
HTTPTestServer srv;
HTTPClientSession s("www.somehost.com");
s.setProxy("localhost", srv.port());
s.setProxy("127.0.0.1", srv.port());
s.setProxyCredentials("user", "pass");
HTTPRequest request(HTTPRequest::HTTP_GET, "/large");
s.sendRequest(request);
@@ -286,7 +286,7 @@ void HTTPClientSessionTest::testBypassProxy()
proxyConfig.port = 80;
proxyConfig.nonProxyHosts = "localhost|127\\.0\\.0\\.1";
HTTPClientSession s1("localhost", 80);
HTTPClientSession s1("127.0.0.1", 80);
s1.setProxyConfig(proxyConfig);
assert (s1.bypassProxy());
@@ -303,7 +303,7 @@ void HTTPClientSessionTest::testBypassProxy()
void HTTPClientSessionTest::testExpectContinue()
{
HTTPTestServer srv;
HTTPClientSession s("localhost", srv.port());
HTTPClientSession s("127.0.0.1", srv.port());
HTTPRequest request(HTTPRequest::HTTP_POST, "/expect");
std::string body("this is a random request body\r\n0\r\n");
request.setContentLength((int) body.length());
@@ -324,7 +324,7 @@ void HTTPClientSessionTest::testExpectContinue()
void HTTPClientSessionTest::testExpectContinueFail()
{
HTTPTestServer srv;
HTTPClientSession s("localhost", srv.port());
HTTPClientSession s("127.0.0.1", srv.port());
HTTPRequest request(HTTPRequest::HTTP_POST, "/fail");
std::string body("this is a random request body\r\n0\r\n");
request.setContentLength((int) body.length());

View File

@@ -146,7 +146,7 @@ void HTTPServerTest::testIdentityRequest()
HTTPServer srv(new RequestHandlerFactory, svs, pParams);
srv.start();
HTTPClientSession cs("localhost", svs.address().port());
HTTPClientSession cs("127.0.0.1", svs.address().port());
std::string body(5000, 'x');
HTTPRequest request("POST", "/echoBody");
request.setContentLength((int) body.length());
@@ -169,7 +169,7 @@ void HTTPServerTest::testPutIdentityRequest()
HTTPServer srv(new RequestHandlerFactory, svs, pParams);
srv.start();
HTTPClientSession cs("localhost", svs.address().port());
HTTPClientSession cs("127.0.0.1", svs.address().port());
std::string body(5000, 'x');
HTTPRequest request("PUT", "/echoBody");
request.setContentLength((int) body.length());
@@ -192,7 +192,7 @@ void HTTPServerTest::testChunkedRequest()
HTTPServer srv(new RequestHandlerFactory, svs, pParams);
srv.start();
HTTPClientSession cs("localhost", svs.address().port());
HTTPClientSession cs("127.0.0.1", svs.address().port());
std::string body(5000, 'x');
HTTPRequest request("POST", "/echoBody");
request.setContentType("text/plain");
@@ -216,7 +216,7 @@ void HTTPServerTest::testClosedRequest()
HTTPServer srv(new RequestHandlerFactory, svs, pParams);
srv.start();
HTTPClientSession cs("localhost", svs.address().port());
HTTPClientSession cs("127.0.0.1", svs.address().port());
std::string body(5000, 'x');
HTTPRequest request("POST", "/echoBody");
request.setContentType("text/plain");
@@ -236,7 +236,7 @@ void HTTPServerTest::testIdentityRequestKeepAlive()
HTTPServer srv(new RequestHandlerFactory, 8008);
srv.start();
HTTPClientSession cs("localhost", srv.socket().address().port());
HTTPClientSession cs("127.0.0.1", srv.socket().address().port());
cs.setKeepAlive(true);
std::string body(5000, 'x');
HTTPRequest request("POST", "/echoBody", HTTPMessage::HTTP_1_1);
@@ -267,7 +267,7 @@ void HTTPServerTest::testChunkedRequestKeepAlive()
HTTPServer srv(new RequestHandlerFactory, 8009);
srv.start();
HTTPClientSession cs("localhost", srv.socket().address().port());
HTTPClientSession cs("127.0.0.1", srv.socket().address().port());
cs.setKeepAlive(true);
std::string body(5000, 'x');
HTTPRequest request("POST", "/echoBody", HTTPMessage::HTTP_1_1);
@@ -299,7 +299,7 @@ void HTTPServerTest::testClosedRequestKeepAlive()
HTTPServer srv(new RequestHandlerFactory, 8010);
srv.start();
HTTPClientSession cs("localhost", srv.socket().address().port());
HTTPClientSession cs("127.0.0.1", srv.socket().address().port());
std::string body(5000, 'x');
HTTPRequest request("POST", "/echoBody");
request.setContentType("text/plain");
@@ -324,7 +324,7 @@ void HTTPServerTest::testMaxKeepAlive()
HTTPServer srv(new RequestHandlerFactory, svs, pParams);
srv.start();
HTTPClientSession cs("localhost", svs.address().port());
HTTPClientSession cs("127.0.0.1", svs.address().port());
cs.setKeepAlive(true);
HTTPRequest request("POST", "/echoBody", HTTPMessage::HTTP_1_1);
request.setContentType("text/plain");
@@ -380,7 +380,7 @@ void HTTPServerTest::testKeepAliveTimeout()
HTTPServer srv(new RequestHandlerFactory, svs, pParams);
srv.start();
HTTPClientSession cs("localhost", svs.address().port());
HTTPClientSession cs("127.0.0.1", svs.address().port());
cs.setKeepAlive(true);
cs.setKeepAliveTimeout(Poco::Timespan(2, 0));
HTTPRequest request("POST", "/echoBody", HTTPMessage::HTTP_1_1);
@@ -424,7 +424,7 @@ void HTTPServerTest::test100Continue()
HTTPServer srv(new RequestHandlerFactory, svs, pParams);
srv.start();
HTTPClientSession cs("localhost", svs.address().port());
HTTPClientSession cs("127.0.0.1", svs.address().port());
std::string body(5000, 'x');
HTTPRequest request("POST", "/echoBody");
request.setContentLength((int) body.length());
@@ -448,7 +448,7 @@ void HTTPServerTest::testRedirect()
HTTPServer srv(new RequestHandlerFactory, svs, pParams);
srv.start();
HTTPClientSession cs("localhost", svs.address().port());
HTTPClientSession cs("127.0.0.1", svs.address().port());
HTTPRequest request("GET", "/redirect");
cs.sendRequest(request);
HTTPResponse response;
@@ -468,7 +468,7 @@ void HTTPServerTest::testAuth()
HTTPServer srv(new RequestHandlerFactory, svs, pParams);
srv.start();
HTTPClientSession cs("localhost", svs.address().port());
HTTPClientSession cs("127.0.0.1", svs.address().port());
HTTPRequest request("GET", "/auth");
cs.sendRequest(request);
HTTPResponse response;
@@ -488,7 +488,7 @@ void HTTPServerTest::testNotImpl()
HTTPServer srv(new RequestHandlerFactory, svs, pParams);
srv.start();
HTTPClientSession cs("localhost", svs.address().port());
HTTPClientSession cs("127.0.0.1", svs.address().port());
HTTPRequest request("GET", "/notImpl");
cs.sendRequest(request);
HTTPResponse response;
@@ -507,7 +507,7 @@ void HTTPServerTest::testBuffer()
HTTPServer srv(new RequestHandlerFactory, svs, pParams);
srv.start();
HTTPClientSession cs("localhost", svs.address().port());
HTTPClientSession cs("127.0.0.1", svs.address().port());
HTTPRequest request("GET", "/buffer");
cs.sendRequest(request);
HTTPResponse response;

View File

@@ -48,9 +48,9 @@ ICMPClientTest::~ICMPClientTest()
void ICMPClientTest::testPing()
{
assert(ICMPClient::pingIPv4("localhost") > 0);
assert(ICMPClient::pingIPv4("127.0.0.1") > 0);
assert(_icmpClient.ping("localhost") > 0);
assert(_icmpClient.ping("127.0.0.1") > 0);
assert(_icmpClient.ping("www.appinf.com", 4) > 0);
// warning: may fail depending on the existence of the addresses at test site

View File

@@ -42,7 +42,7 @@ void POP3ClientSessionTest::testLogin()
server.addResponse("+OK USER");
server.addResponse("+OK PASS");
server.addResponse("+OK QUIT");
POP3ClientSession session("localhost", server.port());
POP3ClientSession session("127.0.0.1", server.port());
session.login("user", "secret");
std::string cmd = server.popCommand();
assert (cmd == "USER user");
@@ -61,7 +61,7 @@ void POP3ClientSessionTest::testLoginFail()
server.addResponse("+OK USER");
server.addResponse("-ERR PASS");
server.addResponse("+OK QUIT");
POP3ClientSession session("localhost", server.port());
POP3ClientSession session("127.0.0.1", server.port());
try
{
session.login("user", "secret");
@@ -82,7 +82,7 @@ void POP3ClientSessionTest::testMessageCount()
server.addResponse("+OK PASS");
server.addResponse("+OK 42 12345");
server.addResponse("+OK QUIT");
POP3ClientSession session("localhost", server.port());
POP3ClientSession session("127.0.0.1", server.port());
session.login("user", "secret");
server.clearCommands();
int n = session.messageCount();
@@ -107,7 +107,7 @@ void POP3ClientSessionTest::testList()
".\r\n"
);
server.addResponse("+OK QUIT");
POP3ClientSession session("localhost", server.port());
POP3ClientSession session("127.0.0.1", server.port());
session.login("user", "secret");
server.clearCommands();
std::vector<POP3ClientSession::MessageInfo> infos;
@@ -146,7 +146,7 @@ void POP3ClientSessionTest::testRetrieveMessage()
".\r\n"
);
server.addResponse("+OK QUIT");
POP3ClientSession session("localhost", server.port());
POP3ClientSession session("127.0.0.1", server.port());
session.login("user", "secret");
server.clearCommands();
MailMessage message;
@@ -182,7 +182,7 @@ void POP3ClientSessionTest::testRetrieveHeader()
"."
);
server.addResponse("+OK QUIT");
POP3ClientSession session("localhost", server.port());
POP3ClientSession session("127.0.0.1", server.port());
session.login("user", "secret");
server.clearCommands();
MessageHeader header;
@@ -225,7 +225,7 @@ void POP3ClientSessionTest::testRetrieveMessages()
"."
);
server.addResponse("+OK QUIT");
POP3ClientSession session("localhost", server.port());
POP3ClientSession session("127.0.0.1", server.port());
session.login("user", "secret");
server.clearCommands();
MessageHeader header;
@@ -261,7 +261,7 @@ void POP3ClientSessionTest::testDeleteMessage()
server.addResponse("+OK PASS");
server.addResponse("+OK DELETED");
server.addResponse("+OK QUIT");
POP3ClientSession session("localhost", server.port());
POP3ClientSession session("127.0.0.1", server.port());
session.login("user", "secret");
server.clearCommands();
session.deleteMessage(42);

View File

@@ -45,7 +45,7 @@ RawSocketTest::~RawSocketTest()
void RawSocketTest::testEchoIPv4()
{
SocketAddress sa("localhost", 0);
SocketAddress sa("127.0.0.1", 0);
RawSocket rs(IPAddress::IPv4);
rs.connect(sa);
@@ -70,7 +70,7 @@ void RawSocketTest::testSendToReceiveFromIPv4()
{
RawSocket rs(IPAddress::IPv4);
int n = rs.sendTo("hello", 5, SocketAddress("localhost", 0));
int n = rs.sendTo("hello", 5, SocketAddress("127.0.0.1", 0));
assert (n == 5);
char buffer[256] = "";

View File

@@ -42,7 +42,7 @@ void SMTPClientSessionTest::testLoginEHLO()
server.addResponse("220 localhost SMTP ready");
server.addResponse("250 Hello localhost");
server.addResponse("221 Bye");
SMTPClientSession session("localhost", server.port());
SMTPClientSession session("127.0.0.1", server.port());
session.login("localhost");
std::string cmd = server.popCommand();
assert (cmd == "EHLO localhost");
@@ -59,7 +59,7 @@ void SMTPClientSessionTest::testLoginHELO()
server.addResponse("500 EHLO not understood");
server.addResponse("250 Hello localhost");
server.addResponse("221 Bye");
SMTPClientSession session("localhost", server.port());
SMTPClientSession session("127.0.0.1", server.port());
session.login("localhost");
std::string cmd = server.popCommand();
assert (cmd == "EHLO localhost");
@@ -76,7 +76,7 @@ void SMTPClientSessionTest::testLoginFailed()
DialogServer server;
server.addResponse("500 No SMTP service here");
server.addResponse("221 Bye");
SMTPClientSession session("localhost", server.port());
SMTPClientSession session("127.0.0.1", server.port());
try
{
session.login("localhost");
@@ -99,7 +99,7 @@ void SMTPClientSessionTest::testSend()
server.addResponse("354 Send data");
server.addResponse("250 OK");
server.addResponse("221 Bye");
SMTPClientSession session("localhost", server.port());
SMTPClientSession session("127.0.0.1", server.port());
session.login("localhost");
MailMessage message;
@@ -153,7 +153,7 @@ void SMTPClientSessionTest::testSendMultiRecipient()
server.addResponse("250 OK");
server.addResponse("250 OK");
server.addResponse("221 Bye");
SMTPClientSession session("localhost", server.port());
SMTPClientSession session("127.0.0.1", server.port());
session.login("localhost");
MailMessage message;
@@ -218,7 +218,7 @@ void SMTPClientSessionTest::testMultiSeparateRecipient()
server.addResponse("250 OK");
server.addResponse("250 OK");
server.addResponse("221 Bye");
SMTPClientSession session("localhost", server.port());
SMTPClientSession session("127.0.0.1", server.port());
session.login("localhost");
MailMessage message;
@@ -285,7 +285,7 @@ void SMTPClientSessionTest::testSendFailed()
server.addResponse("354 Send data");
server.addResponse("500 Error");
server.addResponse("221 Bye");
SMTPClientSession session("localhost", server.port());
SMTPClientSession session("127.0.0.1", server.port());
session.login("localhost");
MailMessage message;

View File

@@ -23,6 +23,7 @@ using Poco::Net::InvalidAddressException;
using Poco::Net::HostNotFoundException;
using Poco::Net::ServiceNotFoundException;
using Poco::Net::NoAddressFoundException;
using Poco::Net::AddressFamilyMismatchException;
using Poco::InvalidArgumentException;
@@ -68,7 +69,7 @@ void SocketAddressTest::testSocketAddress()
{
}
SocketAddress sa4("www.appinf.com", 80);
SocketAddress sa4("pocoproject.org", 80);
assert (sa4.host().toString() == "162.209.7.4");
assert (sa4.port() == 80);
@@ -118,6 +119,24 @@ void SocketAddressTest::testSocketAddress()
catch (InvalidArgumentException&)
{
}
SocketAddress sa10("www6.pocoproject.org", 80);
assert (sa10.host().toString() == "162.209.7.4" || sa10.host().toString() == "[2001:4801:7819:74:be76:4eff:fe10:6b73]");
SocketAddress sa11(SocketAddress::IPv4, "www6.pocoproject.org", 80);
assert (sa11.host().toString() == "162.209.7.4");
#ifdef POCO_HAVE_IPv6
try
{
SocketAddress sa12(SocketAddress::IPv6, "www6.pocoproject.org", 80);
assert (sa12.host().toString() == "[2001:4801:7819:74:be76:4eff:fe10:6b73]");
}
catch (AddressFamilyMismatchException&)
{
// may happen if no IPv6 address is configured on the system
}
#endif
}

View File

@@ -314,7 +314,7 @@ void SocketReactorTest::testSocketReactor()
ServerSocket ss(ssa);
SocketReactor reactor;
SocketAcceptor<EchoServiceHandler> acceptor(ss, reactor);
SocketAddress sa("localhost", ss.address().port());
SocketAddress sa("127.0.0.1", ss.address().port());
SocketConnector<ClientServiceHandler> connector(sa, reactor);
ClientServiceHandler::setOnce(true);
ClientServiceHandler::resetData();
@@ -334,7 +334,7 @@ void SocketReactorTest::testSetSocketReactor()
SocketReactor reactor;
SocketAcceptor<EchoServiceHandler> acceptor(ss);
acceptor.setReactor(reactor);
SocketAddress sa("localhost", ss.address().port());
SocketAddress sa("127.0.0.1", ss.address().port());
SocketConnector<ClientServiceHandler> connector(sa, reactor);
ClientServiceHandler::setOnce(true);
ClientServiceHandler::resetData();
@@ -353,7 +353,7 @@ void SocketReactorTest::testParallelSocketReactor()
ServerSocket ss(ssa);
SocketReactor reactor;
ParallelSocketAcceptor<EchoServiceHandler, SocketReactor> acceptor(ss, reactor);
SocketAddress sa("localhost", ss.address().port());
SocketAddress sa("127.0.0.1", ss.address().port());
SocketConnector<ClientServiceHandler> connector1(sa, reactor);
SocketConnector<ClientServiceHandler> connector2(sa, reactor);
SocketConnector<ClientServiceHandler> connector3(sa, reactor);
@@ -390,7 +390,7 @@ void SocketReactorTest::testSocketConnectorTimeout()
SocketAddress ssa;
ServerSocket ss(ssa);
SocketReactor reactor;
SocketAddress sa("localhost", ss.address().port());
SocketAddress sa("127.0.0.1", ss.address().port());
SocketConnector<ClientServiceHandler> connector(sa, reactor);
reactor.run();
assert (ClientServiceHandler::timeout());

View File

@@ -49,7 +49,7 @@ void SocketStreamTest::testStreamEcho()
{
EchoServer echoServer;
StreamSocket ss;
ss.connect(SocketAddress("localhost", echoServer.port()));
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
SocketStream str(ss);
str << "hello";
assert (str.good());
@@ -72,7 +72,7 @@ void SocketStreamTest::testLargeStreamEcho()
const int msgSize = 64000;
EchoServer echoServer;
StreamSocket ss;
ss.connect(SocketAddress("localhost", echoServer.port()));
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
SocketStream str(ss);
ss.setSendBufferSize(msgSize);
ss.setReceiveBufferSize(msgSize);
@@ -100,7 +100,7 @@ void SocketStreamTest::testEOF()
{
EchoServer echoServer;
ss.connect(SocketAddress("localhost", echoServer.port()));
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
str << "hello";
assert (str.good());
str.flush();

View File

@@ -55,7 +55,7 @@ void SocketTest::testEcho()
{
EchoServer echoServer;
StreamSocket ss;
ss.connect(SocketAddress("localhost", echoServer.port()));
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
int n = ss.sendBytes("hello", 5);
assert (n == 5);
char buffer[256];
@@ -70,7 +70,7 @@ void SocketTest::testPoll()
{
EchoServer echoServer;
StreamSocket ss;
ss.connect(SocketAddress("localhost", echoServer.port()));
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
Stopwatch sw;
sw.start();
Timespan timeout(1000000);
@@ -95,7 +95,7 @@ void SocketTest::testAvailable()
{
EchoServer echoServer;
StreamSocket ss;
ss.connect(SocketAddress("localhost", echoServer.port()));
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
Timespan timeout(1000000);
ss.sendBytes("hello", 5);
char buffer[256];
@@ -135,7 +135,7 @@ void SocketTest::testFIFOBuffer()
EchoServer echoServer;
StreamSocket ss;
ss.connect(SocketAddress("localhost", echoServer.port()));
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
int n = ss.sendBytes(f);
assert (n == 5);
assert(1 == _notToReadable);
@@ -172,7 +172,7 @@ void SocketTest::testConnect()
serv.listen();
StreamSocket ss;
Timespan timeout(250000);
ss.connect(SocketAddress("localhost", serv.address().port()), timeout);
ss.connect(SocketAddress("127.0.0.1", serv.address().port()), timeout);
}
@@ -187,7 +187,7 @@ void SocketTest::testConnectRefused()
Timespan timeout(250000);
try
{
ss.connect(SocketAddress("localhost", port));
ss.connect(SocketAddress("127.0.0.1", port));
fail("connection refused - must throw");
}
catch (ConnectionRefusedException&)
@@ -207,7 +207,7 @@ void SocketTest::testConnectRefusedNB()
Timespan timeout(2, 0);
try
{
ss.connect(SocketAddress("localhost", port), timeout);
ss.connect(SocketAddress("127.0.0.1", port), timeout);
fail("connection refused - must throw");
}
catch (TimeoutException&)
@@ -223,7 +223,7 @@ void SocketTest::testNonBlocking()
{
EchoServer echoServer;
StreamSocket ss;
ss.connect(SocketAddress("localhost", echoServer.port()));
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
ss.setBlocking(false);
Timespan timeout(1000000);
@@ -247,7 +247,7 @@ void SocketTest::testAddress()
serv.bind(SocketAddress());
serv.listen();
StreamSocket ss;
ss.connect(SocketAddress("localhost", serv.address().port()));
ss.connect(SocketAddress("127.0.0.1", serv.address().port()));
StreamSocket css = serv.acceptConnection();
assert (css.peerAddress().host() == ss.address().host());
assert (css.peerAddress().port() == ss.address().port());
@@ -309,7 +309,7 @@ void SocketTest::testTimeout()
{
EchoServer echoServer;
StreamSocket ss;
ss.connect(SocketAddress("localhost", echoServer.port()));
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
Timespan timeout0 = ss.getReceiveTimeout();
Timespan timeout(250000);
@@ -347,7 +347,7 @@ void SocketTest::testTimeout()
void SocketTest::testBufferSize()
{
EchoServer echoServer;
SocketAddress sa("localhost", 1234);
SocketAddress sa("127.0.0.1", 1234);
StreamSocket ss(sa.family());
int osz = ss.getSendBufferSize();
@@ -371,7 +371,7 @@ void SocketTest::testOptions()
{
EchoServer echoServer;
StreamSocket ss;
ss.connect(SocketAddress("localhost", echoServer.port()));
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
ss.setLinger(true, 20);
bool f;
@@ -405,7 +405,7 @@ void SocketTest::testSelect()
EchoServer echoServer;
StreamSocket ss;
ss.connect(SocketAddress("localhost", echoServer.port()));
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
Socket::SocketList readList;
Socket::SocketList writeList;
@@ -442,8 +442,8 @@ void SocketTest::testSelect2()
EchoServer echoServer1;
EchoServer echoServer2;
StreamSocket ss1(SocketAddress("localhost", echoServer1.port()));
StreamSocket ss2(SocketAddress("localhost", echoServer2.port()));
StreamSocket ss1(SocketAddress("127.0.0.1", echoServer1.port()));
StreamSocket ss2(SocketAddress("127.0.0.1", echoServer2.port()));
Socket::SocketList readList;
Socket::SocketList writeList;

View File

@@ -84,7 +84,7 @@ void TCPServerTest::testOneConnection()
assert (srv.queuedConnections() == 0);
assert (srv.totalConnections() == 0);
SocketAddress sa("localhost", srv.socket().address().port());
SocketAddress sa("127.0.0.1", srv.socket().address().port());
StreamSocket ss1(sa);
std::string data("hello, world");
ss1.sendBytes(data.data(), (int) data.size());
@@ -111,7 +111,7 @@ void TCPServerTest::testTwoConnections()
assert (srv.queuedConnections() == 0);
assert (srv.totalConnections() == 0);
SocketAddress sa("localhost", srv.socket().address().port());
SocketAddress sa("127.0.0.1", srv.socket().address().port());
StreamSocket ss1(sa);
StreamSocket ss2(sa);
std::string data("hello, world");
@@ -159,7 +159,7 @@ void TCPServerTest::testMultiConnections()
assert (srv.queuedConnections() == 0);
assert (srv.totalConnections() == 0);
SocketAddress sa("localhost", svs.address().port());
SocketAddress sa("127.0.0.1", svs.address().port());
StreamSocket ss1(sa);
StreamSocket ss2(sa);
StreamSocket ss3(sa);

View File

@@ -119,7 +119,7 @@ void WebSocketTest::testWebSocket()
Poco::Thread::sleep(200);
HTTPClientSession cs("localhost", ss.address().port());
HTTPClientSession cs("127.0.0.1", ss.address().port());
HTTPRequest request(HTTPRequest::HTTP_GET, "/ws", HTTPRequest::HTTP_1_1);
HTTPResponse response;
WebSocket ws(cs, request, response);
@@ -200,7 +200,7 @@ void WebSocketTest::testWebSocketLarge()
Poco::Thread::sleep(200);
HTTPClientSession cs("localhost", ss.address().port());
HTTPClientSession cs("127.0.0.1", ss.address().port());
HTTPRequest request(HTTPRequest::HTTP_GET, "/ws", HTTPRequest::HTTP_1_1);
HTTPResponse response;
WebSocket ws(cs, request, response);
@@ -232,7 +232,7 @@ void WebSocketTest::testOneLargeFrame(int msgSize)
Poco::Thread::sleep(200);
HTTPClientSession cs("localhost", ss.address().port());
HTTPClientSession cs("127.0.0.1", ss.address().port());
HTTPRequest request(HTTPRequest::HTTP_GET, "/ws", HTTPRequest::HTTP_1_1);
HTTPResponse response;
WebSocket ws(cs, request, response);