mirror of
https://github.com/pocoproject/poco.git
synced 2025-11-23 13:32:11 +01:00
merge Unix Domain Sockets support and other changes from develop
This commit is contained in:
@@ -37,20 +37,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&)
|
||||
|
||||
@@ -49,7 +49,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));
|
||||
@@ -61,9 +61,9 @@ void DatagramSocketTest::testEcho()
|
||||
|
||||
void DatagramSocketTest::testSendToReceiveFrom()
|
||||
{
|
||||
UDPEchoServer echoServer(SocketAddress("localhost", 0));
|
||||
DatagramSocket ss;
|
||||
int n = ss.sendTo("hello", 5, SocketAddress("localhost", echoServer.port()));
|
||||
UDPEchoServer echoServer(SocketAddress("127.0.0.1", 0));
|
||||
DatagramSocket ss(SocketAddress::IPv4);
|
||||
int n = ss.sendTo("hello", 5, SocketAddress("127.0.0.1", echoServer.port()));
|
||||
assert (n == 5);
|
||||
char buffer[256];
|
||||
SocketAddress sa;
|
||||
@@ -76,6 +76,21 @@ void DatagramSocketTest::testSendToReceiveFrom()
|
||||
}
|
||||
|
||||
|
||||
void DatagramSocketTest::testUnbound()
|
||||
{
|
||||
UDPEchoServer echoServer;
|
||||
DatagramSocket ss;
|
||||
char buffer[256];
|
||||
ss.connect(SocketAddress("127.0.0.1", echoServer.port()));
|
||||
int n = ss.sendBytes("hello", 5);
|
||||
assert (n == 5);
|
||||
n = ss.receiveBytes(buffer, sizeof(buffer));
|
||||
assert (n == 5);
|
||||
assert (std::string(buffer, n) == "hello");
|
||||
ss.close();
|
||||
}
|
||||
|
||||
|
||||
void DatagramSocketTest::testBroadcast()
|
||||
{
|
||||
UDPEchoServer echoServer;
|
||||
@@ -134,6 +149,7 @@ CppUnit::Test* DatagramSocketTest::suite()
|
||||
|
||||
CppUnit_addTest(pSuite, DatagramSocketTest, testEcho);
|
||||
CppUnit_addTest(pSuite, DatagramSocketTest, testSendToReceiveFrom);
|
||||
CppUnit_addTest(pSuite, DatagramSocketTest, testUnbound);
|
||||
#if (POCO_OS != POCO_OS_FREE_BSD) // works only with local net bcast and very randomly
|
||||
CppUnit_addTest(pSuite, DatagramSocketTest, testBroadcast);
|
||||
#endif
|
||||
|
||||
@@ -26,6 +26,7 @@ public:
|
||||
|
||||
void testEcho();
|
||||
void testSendToReceiveFrom();
|
||||
void testUnbound();
|
||||
void testBroadcast();
|
||||
|
||||
void setUp();
|
||||
|
||||
@@ -35,7 +35,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;
|
||||
|
||||
@@ -30,6 +30,16 @@ EchoServer::EchoServer():
|
||||
}
|
||||
|
||||
|
||||
EchoServer::EchoServer(const Poco::Net::SocketAddress& address):
|
||||
_socket(address),
|
||||
_thread("EchoServer"),
|
||||
_stop(false)
|
||||
{
|
||||
_thread.start(*this);
|
||||
_ready.wait();
|
||||
}
|
||||
|
||||
|
||||
EchoServer::~EchoServer()
|
||||
{
|
||||
_stop = true;
|
||||
|
||||
@@ -27,6 +27,9 @@ public:
|
||||
EchoServer();
|
||||
/// Creates the EchoServer.
|
||||
|
||||
EchoServer(const Poco::Net::SocketAddress& address);
|
||||
/// Creates the EchoServer using the given address.
|
||||
|
||||
~EchoServer();
|
||||
/// Destroys the EchoServer.
|
||||
|
||||
|
||||
@@ -92,7 +92,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);
|
||||
@@ -123,7 +123,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");
|
||||
@@ -137,7 +137,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");
|
||||
@@ -157,7 +157,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());
|
||||
@@ -170,7 +170,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");
|
||||
@@ -190,7 +190,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");
|
||||
@@ -211,7 +211,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");
|
||||
@@ -340,7 +340,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();
|
||||
@@ -371,7 +371,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);
|
||||
|
||||
@@ -395,7 +395,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();
|
||||
@@ -419,7 +419,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);
|
||||
|
||||
@@ -443,7 +443,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();
|
||||
|
||||
@@ -476,7 +476,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();
|
||||
|
||||
@@ -511,7 +511,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();
|
||||
|
||||
@@ -544,7 +544,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();
|
||||
|
||||
|
||||
@@ -75,7 +75,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;
|
||||
@@ -116,7 +116,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;
|
||||
@@ -157,7 +157,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");
|
||||
@@ -200,7 +200,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");
|
||||
@@ -231,7 +231,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");
|
||||
|
||||
@@ -161,6 +161,29 @@ void HTMLFormTest::testReadUrlGET()
|
||||
}
|
||||
|
||||
|
||||
void HTMLFormTest::testReadUrlGETMultiple()
|
||||
{
|
||||
HTTPRequest req("GET", "/form.cgi?field1=value1&field1=value%202&field1=value%3D3&field1=value%264");
|
||||
HTMLForm form(req);
|
||||
assert (form.size() == 4);
|
||||
|
||||
HTMLForm::ConstIterator it = form.find("field1");
|
||||
assert (it != form.end());
|
||||
assert (it->first == "field1" && it->second == "value1");
|
||||
++it;
|
||||
assert (it != form.end());
|
||||
assert (it->first == "field1" && it->second == "value 2");
|
||||
++it;
|
||||
assert (it != form.end());
|
||||
assert (it->first == "field1" && it->second == "value=3");
|
||||
++it;
|
||||
assert (it != form.end());
|
||||
assert (it->first == "field1" && it->second == "value&4");
|
||||
++it;
|
||||
assert (it == form.end());
|
||||
}
|
||||
|
||||
|
||||
void HTMLFormTest::testReadUrlPOST()
|
||||
{
|
||||
HTTPRequest req("POST", "/form.cgi?field0=value0");
|
||||
@@ -293,6 +316,21 @@ void HTMLFormTest::testSubmit3()
|
||||
}
|
||||
|
||||
|
||||
void HTMLFormTest::testSubmit4()
|
||||
{
|
||||
HTMLForm form;
|
||||
form.add("field1", "value1");
|
||||
form.add("field1", "value 2");
|
||||
form.add("field1", "value=3");
|
||||
form.add("field1", "value&4");
|
||||
|
||||
HTTPRequest req("GET", "/form.cgi");
|
||||
form.prepareSubmit(req);
|
||||
|
||||
assert (req.getURI() == "/form.cgi?field1=value1&field1=value%202&field1=value%3D3&field1=value%264");
|
||||
}
|
||||
|
||||
|
||||
void HTMLFormTest::testFieldLimitUrl()
|
||||
{
|
||||
HTTPRequest req("GET", "/form.cgi?field1=value1&field2=value%202&field3=value%3D3&field4=value%264");
|
||||
@@ -369,6 +407,7 @@ CppUnit::Test* HTMLFormTest::suite()
|
||||
CppUnit_addTest(pSuite, HTMLFormTest, testWriteUrl);
|
||||
CppUnit_addTest(pSuite, HTMLFormTest, testWriteMultipart);
|
||||
CppUnit_addTest(pSuite, HTMLFormTest, testReadUrlGET);
|
||||
CppUnit_addTest(pSuite, HTMLFormTest, testReadUrlGETMultiple);
|
||||
CppUnit_addTest(pSuite, HTMLFormTest, testReadUrlPOST);
|
||||
CppUnit_addTest(pSuite, HTMLFormTest, testReadUrlPUT);
|
||||
CppUnit_addTest(pSuite, HTMLFormTest, testReadUrlBOM);
|
||||
@@ -376,6 +415,7 @@ CppUnit::Test* HTMLFormTest::suite()
|
||||
CppUnit_addTest(pSuite, HTMLFormTest, testSubmit1);
|
||||
CppUnit_addTest(pSuite, HTMLFormTest, testSubmit2);
|
||||
CppUnit_addTest(pSuite, HTMLFormTest, testSubmit3);
|
||||
CppUnit_addTest(pSuite, HTMLFormTest, testSubmit4);
|
||||
CppUnit_addTest(pSuite, HTMLFormTest, testFieldLimitUrl);
|
||||
CppUnit_addTest(pSuite, HTMLFormTest, testFieldLimitMultipart);
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ public:
|
||||
void testWriteUrl();
|
||||
void testWriteMultipart();
|
||||
void testReadUrlGET();
|
||||
void testReadUrlGETMultiple();
|
||||
void testReadUrlPOST();
|
||||
void testReadUrlPUT();
|
||||
void testReadUrlBOM();
|
||||
@@ -34,6 +35,7 @@ public:
|
||||
void testSubmit1();
|
||||
void testSubmit2();
|
||||
void testSubmit3();
|
||||
void testSubmit4();
|
||||
void testFieldLimitUrl();
|
||||
void testFieldLimitMultipart();
|
||||
|
||||
|
||||
@@ -41,7 +41,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;
|
||||
@@ -57,7 +57,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;
|
||||
@@ -73,7 +73,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;
|
||||
@@ -88,7 +88,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());
|
||||
@@ -105,7 +105,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");
|
||||
@@ -123,7 +123,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);
|
||||
@@ -141,7 +141,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);
|
||||
@@ -161,7 +161,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;
|
||||
@@ -178,7 +178,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;
|
||||
@@ -195,7 +195,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);
|
||||
@@ -244,7 +244,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;
|
||||
@@ -261,7 +261,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);
|
||||
@@ -284,7 +284,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());
|
||||
|
||||
@@ -298,6 +298,47 @@ void HTTPClientSessionTest::testBypassProxy()
|
||||
}
|
||||
|
||||
|
||||
void HTTPClientSessionTest::testExpectContinue()
|
||||
{
|
||||
HTTPTestServer srv;
|
||||
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());
|
||||
request.setExpectContinue(true);
|
||||
s.sendRequest(request) << body;
|
||||
HTTPResponse response;
|
||||
assert (s.peekResponse(response));
|
||||
assert (response.getStatus() == HTTPResponse::HTTP_CONTINUE);
|
||||
std::istream& rs = s.receiveResponse(response);
|
||||
assert (response.getStatus() == HTTPResponse::HTTP_OK);
|
||||
assert (response.getContentLength() == body.length());
|
||||
std::ostringstream ostr;
|
||||
StreamCopier::copyStream(rs, ostr);
|
||||
assert (ostr.str() == body);
|
||||
}
|
||||
|
||||
|
||||
void HTTPClientSessionTest::testExpectContinueFail()
|
||||
{
|
||||
HTTPTestServer srv;
|
||||
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());
|
||||
request.setExpectContinue(true);
|
||||
s.sendRequest(request) << body;
|
||||
HTTPResponse response;
|
||||
assert (!s.peekResponse(response));
|
||||
assert (response.getStatus() == HTTPResponse::HTTP_BAD_REQUEST);
|
||||
std::istream& rs = s.receiveResponse(response);
|
||||
assert (response.getStatus() == HTTPResponse::HTTP_BAD_REQUEST);
|
||||
std::ostringstream ostr;
|
||||
StreamCopier::copyStream(rs, ostr);
|
||||
assert (ostr.str().empty());
|
||||
}
|
||||
|
||||
|
||||
void HTTPClientSessionTest::setUp()
|
||||
{
|
||||
}
|
||||
@@ -325,6 +366,8 @@ CppUnit::Test* HTTPClientSessionTest::suite()
|
||||
CppUnit_addTest(pSuite, HTTPClientSessionTest, testProxy);
|
||||
CppUnit_addTest(pSuite, HTTPClientSessionTest, testProxyAuth);
|
||||
CppUnit_addTest(pSuite, HTTPClientSessionTest, testBypassProxy);
|
||||
CppUnit_addTest(pSuite, HTTPClientSessionTest, testExpectContinue);
|
||||
CppUnit_addTest(pSuite, HTTPClientSessionTest, testExpectContinueFail);
|
||||
|
||||
return pSuite;
|
||||
}
|
||||
|
||||
@@ -37,6 +37,8 @@ public:
|
||||
void testProxy();
|
||||
void testProxyAuth();
|
||||
void testBypassProxy();
|
||||
void testExpectContinue();
|
||||
void testExpectContinueFail();
|
||||
|
||||
void setUp();
|
||||
void tearDown();
|
||||
|
||||
@@ -196,8 +196,8 @@ void HTTPResponseTest::testCookies()
|
||||
cookies.clear();
|
||||
response2.getCookies(cookies);
|
||||
assert (cookies.size() == 2);
|
||||
assert (((cookies[0].getName() == "name1") && (cookies[1].getName() == "name2")) ||
|
||||
((cookies[0].getName() == "name2") && (cookies[1].getName() == "name1")));
|
||||
assert (cookies[0].getName() == "name1" && cookies[1].getName() == "name2"
|
||||
|| cookies[0].getName() == "name2" && cookies[1].getName() == "name1");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -144,7 +144,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());
|
||||
@@ -167,7 +167,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());
|
||||
@@ -190,7 +190,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");
|
||||
@@ -214,7 +214,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");
|
||||
@@ -234,7 +234,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);
|
||||
@@ -265,7 +265,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);
|
||||
@@ -297,7 +297,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");
|
||||
@@ -322,7 +322,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");
|
||||
@@ -378,7 +378,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);
|
||||
@@ -422,7 +422,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());
|
||||
@@ -446,7 +446,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;
|
||||
@@ -466,7 +466,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;
|
||||
@@ -486,7 +486,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;
|
||||
@@ -505,7 +505,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;
|
||||
|
||||
@@ -42,7 +42,7 @@ void HTTPStreamFactoryTest::testNoRedirect()
|
||||
{
|
||||
HTTPTestServer server;
|
||||
HTTPStreamFactory factory;
|
||||
URI uri("http://localhost/large");
|
||||
URI uri("http://127.0.0.1/large");
|
||||
uri.setPort(server.port());
|
||||
#ifndef POCO_ENABLE_CPP11
|
||||
std::auto_ptr<std::istream> pStr(factory.open(uri));
|
||||
@@ -59,7 +59,7 @@ void HTTPStreamFactoryTest::testEmptyPath()
|
||||
{
|
||||
HTTPTestServer server;
|
||||
HTTPStreamFactory factory;
|
||||
URI uri("http://localhost");
|
||||
URI uri("http://127.0.0.1");
|
||||
uri.setPort(server.port());
|
||||
#ifndef POCO_ENABLE_CPP11
|
||||
std::auto_ptr<std::istream> pStr(factory.open(uri));
|
||||
@@ -77,7 +77,7 @@ void HTTPStreamFactoryTest::testRedirect()
|
||||
HTTPTestServer server;
|
||||
Poco::URIStreamOpener opener;
|
||||
opener.registerStreamFactory("http", new HTTPStreamFactory);
|
||||
URI uri("http://localhost/redirect");
|
||||
URI uri("http://127.0.0.1/redirect");
|
||||
uri.setPort(server.port());
|
||||
#ifndef POCO_ENABLE_CPP11
|
||||
std::auto_ptr<std::istream> pStr(opener.open(uri));
|
||||
@@ -93,7 +93,7 @@ void HTTPStreamFactoryTest::testRedirect()
|
||||
void HTTPStreamFactoryTest::testProxy()
|
||||
{
|
||||
HTTPTestServer server;
|
||||
HTTPStreamFactory factory("localhost", server.port());
|
||||
HTTPStreamFactory factory("127.0.0.1", server.port());
|
||||
URI uri("http://www.somehost.com/large");
|
||||
#ifndef POCO_ENABLE_CPP11
|
||||
std::auto_ptr<std::istream> pStr(factory.open(uri));
|
||||
@@ -110,7 +110,7 @@ void HTTPStreamFactoryTest::testError()
|
||||
{
|
||||
HTTPTestServer server;
|
||||
HTTPStreamFactory factory;
|
||||
URI uri("http://localhost/notfound");
|
||||
URI uri("http://127.0.0.1/notfound");
|
||||
uri.setPort(server.port());
|
||||
try
|
||||
{
|
||||
|
||||
@@ -140,6 +140,37 @@ std::string HTTPTestServer::handleRequest() const
|
||||
if (_lastRequest.substr(0, 3) == "GET")
|
||||
response.append(body);
|
||||
}
|
||||
else if (_lastRequest.substr(0, 12) == "POST /expect")
|
||||
{
|
||||
std::string::size_type pos = _lastRequest.find("\r\n\r\n");
|
||||
pos += 4;
|
||||
std::string body = _lastRequest.substr(pos);
|
||||
response.append("HTTP/1.1 100 Continue\r\n\r\n");
|
||||
response.append("HTTP/1.1 200 OK\r\n");
|
||||
response.append("Content-Type: text/plain\r\n");
|
||||
if (_lastRequest.find("Content-Length") != std::string::npos)
|
||||
{
|
||||
response.append("Content-Length: ");
|
||||
response.append(NumberFormatter::format((int) body.size()));
|
||||
response.append("\r\n");
|
||||
}
|
||||
else if (_lastRequest.find("chunked") != std::string::npos)
|
||||
{
|
||||
response.append("Transfer-Encoding: chunked\r\n");
|
||||
}
|
||||
response.append("Connection: Close\r\n");
|
||||
response.append("\r\n");
|
||||
response.append(body);
|
||||
}
|
||||
else if (_lastRequest.substr(0, 10) == "POST /fail")
|
||||
{
|
||||
std::string::size_type pos = _lastRequest.find("\r\n\r\n");
|
||||
pos += 4;
|
||||
std::string body = _lastRequest.substr(pos);
|
||||
response.append("HTTP/1.1 400 Bad Request\r\n");
|
||||
response.append("Connection: Close\r\n");
|
||||
response.append("\r\n");
|
||||
}
|
||||
else if (_lastRequest.substr(0, 4) == "POST")
|
||||
{
|
||||
std::string::size_type pos = _lastRequest.find("\r\n\r\n");
|
||||
|
||||
@@ -46,9 +46,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
|
||||
|
||||
@@ -429,6 +429,42 @@ void MailMessageTest::testReadMultiPart()
|
||||
}
|
||||
|
||||
|
||||
void MailMessageTest::testReadMultiPartWithAttachmentNames()
|
||||
{
|
||||
std::istringstream istr(
|
||||
"Content-Type: multipart/mixed; boundary=MIME_boundary_01234567\r\n"
|
||||
"Date: Thu, 1 Jan 1970 00:00:00 GMT\r\n"
|
||||
"From: poco@appinf.com\r\n"
|
||||
"Mime-Version: 1.0\r\n"
|
||||
"Subject: Test Message\r\n"
|
||||
"To: John Doe <john.doe@no.where>\r\n"
|
||||
"\r\n"
|
||||
"\r\n"
|
||||
"--MIME_boundary_01234567\r\n"
|
||||
"Content-Disposition: inline\r\n"
|
||||
"Content-Transfer-Encoding: 8bit\r\n"
|
||||
"Content-Type: text/plain\r\n"
|
||||
"\r\n"
|
||||
"Hello World!\r\n"
|
||||
"\r\n"
|
||||
"--MIME_boundary_01234567\r\n"
|
||||
"Content-Disposition: attachment; filename=sample.dat\r\n"
|
||||
"Content-Transfer-Encoding: base64\r\n"
|
||||
"Content-Type: application/octet-stream; name=sample\r\n"
|
||||
"\r\n"
|
||||
"VGhpcyBpcyBzb21lIGJpbmFyeSBkYXRhLiBSZWFsbHku\r\n"
|
||||
"--MIME_boundary_01234567--\r\n"
|
||||
);
|
||||
|
||||
MailMessage message;
|
||||
message.read(istr);
|
||||
|
||||
assert (message.parts().size() == 2);
|
||||
assert (message.parts()[1].name == "sample");
|
||||
assert (message.parts()[1].pSource->filename() == "sample.dat");
|
||||
}
|
||||
|
||||
|
||||
void MailMessageTest::testReadMultiPartDefaultTransferEncoding()
|
||||
{
|
||||
std::istringstream istr(
|
||||
|
||||
@@ -35,6 +35,7 @@ public:
|
||||
void testReadQP();
|
||||
void testRead8Bit();
|
||||
void testReadMultiPart();
|
||||
void testReadMultiPartWithAttachmentNames();
|
||||
void testReadMultiPartDefaultTransferEncoding();
|
||||
void testEncodeWord();
|
||||
|
||||
|
||||
@@ -360,6 +360,23 @@ void MessageHeaderTest::testFieldLimit()
|
||||
}
|
||||
|
||||
|
||||
void MessageHeaderTest::testDecodeWord()
|
||||
{
|
||||
std::string coded("this is pure ASCII");
|
||||
std::string decoded = MessageHeader::decodeWord(coded, "ISO-8859-1");
|
||||
assert(decoded == coded);
|
||||
|
||||
coded = "(=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)";
|
||||
decoded = MessageHeader::decodeWord(coded, "ISO-8859-1");
|
||||
assert(decoded == "(a b)");
|
||||
|
||||
coded = "Hello =?UTF-8?B?RnJhbmNpcw==?=, good bye";
|
||||
decoded = MessageHeader::decodeWord(coded, "ISO-8859-1");
|
||||
assert(decoded == "Hello Francis, good bye");
|
||||
}
|
||||
|
||||
|
||||
|
||||
void MessageHeaderTest::setUp()
|
||||
{
|
||||
}
|
||||
@@ -390,6 +407,7 @@ CppUnit::Test* MessageHeaderTest::suite()
|
||||
CppUnit_addTest(pSuite, MessageHeaderTest, testSplitElements);
|
||||
CppUnit_addTest(pSuite, MessageHeaderTest, testSplitParameters);
|
||||
CppUnit_addTest(pSuite, MessageHeaderTest, testFieldLimit);
|
||||
CppUnit_addTest(pSuite, MessageHeaderTest, testDecodeWord);
|
||||
|
||||
return pSuite;
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ public:
|
||||
void testSplitElements();
|
||||
void testSplitParameters();
|
||||
void testFieldLimit();
|
||||
void testDecodeWord();
|
||||
|
||||
void setUp();
|
||||
void tearDown();
|
||||
|
||||
@@ -48,7 +48,7 @@ MulticastSocketTest::~MulticastSocketTest()
|
||||
void MulticastSocketTest::testMulticast()
|
||||
{
|
||||
MulticastEchoServer echoServer;
|
||||
MulticastSocket ms;
|
||||
MulticastSocket ms(SocketAddress::IPv4);
|
||||
int n = ms.sendTo("hello", 5, echoServer.group());
|
||||
assert (n == 5);
|
||||
char buffer[256];
|
||||
|
||||
@@ -63,11 +63,11 @@ void NetworkInterfaceTest::testMap()
|
||||
std::cout << std::endl << "----------" << std::endl;
|
||||
std::cout << "Address " << counter << std::endl;
|
||||
std::cout << "----------" << std::endl;
|
||||
std::cout << "Address: " << ipIt->get<NetworkInterface::IP_ADDRESS>().toString() << std::endl;
|
||||
std::cout << "Address: " << ipIt->get<NetworkInterface::IP_ADDRESS>() << std::endl;
|
||||
IPAddress addr = ipIt->get<NetworkInterface::SUBNET_MASK>();
|
||||
if (!addr.isWildcard()) std::cout << "Subnet: " << addr.toString() << " (/" << addr.prefixLength() << ")" << std::endl;
|
||||
if (!addr.isWildcard()) std::cout << "Subnet: " << addr << " (/" << addr.prefixLength() << ")" << std::endl;
|
||||
addr = ipIt->get<NetworkInterface::BROADCAST_ADDRESS>();
|
||||
if (!addr.isWildcard()) std::cout << "Broadcast: " << addr.toString() << std::endl;
|
||||
if (!addr.isWildcard()) std::cout << "Broadcast: " << addr << std::endl;
|
||||
}
|
||||
|
||||
std::cout << "=============" << std::endl << std::endl;
|
||||
@@ -98,11 +98,11 @@ void NetworkInterfaceTest::testList()
|
||||
List::const_iterator ipEnd = ipList.end();
|
||||
for (int counter = 0; ipIt != ipEnd; ++ipIt, ++counter)
|
||||
{
|
||||
std::cout << "IP Address: " << ipIt->get<NetworkInterface::IP_ADDRESS>().toString() << std::endl;
|
||||
std::cout << "IP Address: " << ipIt->get<NetworkInterface::IP_ADDRESS>() << std::endl;
|
||||
IPAddress addr = ipIt->get<NetworkInterface::SUBNET_MASK>();
|
||||
if (!addr.isWildcard()) std::cout << "Subnet: " << ipIt->get<NetworkInterface::SUBNET_MASK>().toString() << " (/" << ipIt->get<NetworkInterface::SUBNET_MASK>().prefixLength() << ")" << std::endl;
|
||||
if (!addr.isWildcard()) std::cout << "Subnet: " << ipIt->get<NetworkInterface::SUBNET_MASK>() << " (/" << ipIt->get<NetworkInterface::SUBNET_MASK>().prefixLength() << ")" << std::endl;
|
||||
addr = ipIt->get<NetworkInterface::BROADCAST_ADDRESS>();
|
||||
if (!addr.isWildcard()) std::cout << "Broadcast: " << ipIt->get<NetworkInterface::BROADCAST_ADDRESS>().toString() << std::endl;
|
||||
if (!addr.isWildcard()) std::cout << "Broadcast: " << ipIt->get<NetworkInterface::BROADCAST_ADDRESS>() << std::endl;
|
||||
}
|
||||
|
||||
std::cout << "==============" << std::endl << std::endl;
|
||||
@@ -178,7 +178,7 @@ void NetworkInterfaceTest::testMapIpOnly()
|
||||
{
|
||||
assert(it->second.supportsIPv4() || it->second.supportsIPv6());
|
||||
std::cout << "Interface: (" << it->second.index() << ")" << std::endl;
|
||||
std::cout << "Address: " << it->second.address().toString() << std::endl;
|
||||
std::cout << "Address: " << it->second.address() << std::endl;
|
||||
NetworkInterface::MACAddress mac(it->second.macAddress());
|
||||
if (!mac.empty() && (it->second.type() != NetworkInterface::NI_TYPE_SOFTWARE_LOOPBACK))
|
||||
std::cout << "MAC Address:" << mac << std::endl;
|
||||
|
||||
@@ -40,7 +40,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");
|
||||
@@ -59,7 +59,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");
|
||||
@@ -80,7 +80,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();
|
||||
@@ -105,7 +105,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;
|
||||
@@ -144,7 +144,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;
|
||||
@@ -180,7 +180,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;
|
||||
@@ -223,7 +223,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;
|
||||
@@ -259,7 +259,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);
|
||||
|
||||
@@ -43,7 +43,7 @@ RawSocketTest::~RawSocketTest()
|
||||
|
||||
void RawSocketTest::testEchoIPv4()
|
||||
{
|
||||
SocketAddress sa("localhost", 0);
|
||||
SocketAddress sa("127.0.0.1", 0);
|
||||
RawSocket rs(IPAddress::IPv4);
|
||||
rs.connect(sa);
|
||||
|
||||
@@ -68,7 +68,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] = "";
|
||||
|
||||
@@ -40,7 +40,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");
|
||||
@@ -57,7 +57,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");
|
||||
@@ -74,7 +74,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");
|
||||
@@ -97,7 +97,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;
|
||||
@@ -151,7 +151,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;
|
||||
@@ -216,7 +216,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;
|
||||
@@ -283,7 +283,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;
|
||||
|
||||
@@ -21,6 +21,7 @@ using Poco::Net::InvalidAddressException;
|
||||
using Poco::Net::HostNotFoundException;
|
||||
using Poco::Net::ServiceNotFoundException;
|
||||
using Poco::Net::NoAddressFoundException;
|
||||
using Poco::Net::AddressFamilyMismatchException;
|
||||
using Poco::InvalidArgumentException;
|
||||
|
||||
|
||||
@@ -41,8 +42,11 @@ void SocketAddressTest::testSocketAddress()
|
||||
assert (wild.port() == 0);
|
||||
|
||||
SocketAddress sa1("192.168.1.100", 100);
|
||||
assert (sa1.af() == AF_INET);
|
||||
assert (sa1.family() == SocketAddress::IPv4);
|
||||
assert (sa1.host().toString() == "192.168.1.100");
|
||||
assert (sa1.port() == 100);
|
||||
assert (sa1.toString() == "192.168.1.100:100");
|
||||
|
||||
SocketAddress sa2("192.168.1.100", "100");
|
||||
assert (sa2.host().toString() == "192.168.1.100");
|
||||
@@ -63,7 +67,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);
|
||||
|
||||
@@ -113,6 +117,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
|
||||
}
|
||||
|
||||
|
||||
@@ -133,6 +155,42 @@ void SocketAddressTest::testSocketRelationals()
|
||||
void SocketAddressTest::testSocketAddress6()
|
||||
{
|
||||
#ifdef POCO_HAVE_IPv6
|
||||
SocketAddress sa1("FE80::E6CE:8FFF:FE4A:EDD0", 100);
|
||||
assert (sa1.af() == AF_INET6);
|
||||
assert (sa1.family() == SocketAddress::IPv6);
|
||||
assert (sa1.host().toString() == "fe80::e6ce:8fff:fe4a:edd0");
|
||||
assert (sa1.port() == 100);
|
||||
assert (sa1.toString() == "[fe80::e6ce:8fff:fe4a:edd0]:100");
|
||||
|
||||
SocketAddress sa2("[FE80::E6CE:8FFF:FE4A:EDD0]:100");
|
||||
assert (sa2.af() == AF_INET6);
|
||||
assert (sa2.family() == SocketAddress::IPv6);
|
||||
assert (sa2.host().toString() == "fe80::e6ce:8fff:fe4a:edd0");
|
||||
assert (sa2.port() == 100);
|
||||
assert (sa2.toString() == "[fe80::e6ce:8fff:fe4a:edd0]:100");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void SocketAddressTest::testSocketAddressUnixLocal()
|
||||
{
|
||||
#ifdef POCO_OS_FAMILY_UNIX
|
||||
SocketAddress sa1(SocketAddress::UNIX_LOCAL, "/tmp/sock1");
|
||||
assert (sa1.af() == AF_UNIX);
|
||||
assert (sa1.family() == SocketAddress::UNIX_LOCAL);
|
||||
assert (sa1.toString() == "/tmp/sock1");
|
||||
|
||||
SocketAddress sa2(SocketAddress::UNIX_LOCAL, "/tmp/sock2");
|
||||
assert (sa1 != sa2);
|
||||
assert (sa1 < sa2);
|
||||
|
||||
SocketAddress sa3(SocketAddress::UNIX_LOCAL, "/tmp/sock1");
|
||||
assert (sa1 == sa3);
|
||||
assert (!(sa1 < sa3));
|
||||
|
||||
SocketAddress sa4("/tmp/sock1");
|
||||
assert (sa1 == sa4);
|
||||
assert (sa4.toString() == "/tmp/sock1");
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -154,6 +212,7 @@ CppUnit::Test* SocketAddressTest::suite()
|
||||
CppUnit_addTest(pSuite, SocketAddressTest, testSocketAddress);
|
||||
CppUnit_addTest(pSuite, SocketAddressTest, testSocketRelationals);
|
||||
CppUnit_addTest(pSuite, SocketAddressTest, testSocketAddress6);
|
||||
CppUnit_addTest(pSuite, SocketAddressTest, testSocketAddressUnixLocal);
|
||||
|
||||
return pSuite;
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ public:
|
||||
void testSocketAddress();
|
||||
void testSocketRelationals();
|
||||
void testSocketAddress6();
|
||||
void testSocketAddressUnixLocal();
|
||||
|
||||
void setUp();
|
||||
void tearDown();
|
||||
|
||||
@@ -312,7 +312,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();
|
||||
@@ -332,7 +332,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();
|
||||
@@ -351,7 +351,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);
|
||||
@@ -388,7 +388,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());
|
||||
|
||||
@@ -47,7 +47,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());
|
||||
@@ -70,7 +70,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);
|
||||
@@ -98,7 +98,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();
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "Poco/Buffer.h"
|
||||
#include "Poco/FIFOBuffer.h"
|
||||
#include "Poco/Delegate.h"
|
||||
#include "Poco/File.h"
|
||||
#include <iostream>
|
||||
|
||||
|
||||
@@ -52,7 +53,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];
|
||||
@@ -67,7 +68,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);
|
||||
@@ -92,7 +93,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];
|
||||
@@ -132,7 +133,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);
|
||||
@@ -169,7 +170,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);
|
||||
}
|
||||
|
||||
|
||||
@@ -184,7 +185,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&)
|
||||
@@ -204,7 +205,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&)
|
||||
@@ -220,7 +221,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);
|
||||
@@ -244,7 +245,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());
|
||||
@@ -306,7 +307,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);
|
||||
@@ -344,7 +345,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();
|
||||
@@ -368,7 +369,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;
|
||||
@@ -402,7 +403,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;
|
||||
@@ -439,8 +440,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;
|
||||
@@ -499,6 +500,28 @@ void SocketTest::testSelect3()
|
||||
}
|
||||
|
||||
|
||||
void SocketTest::testEchoUnixLocal()
|
||||
{
|
||||
#if defined(POCO_OS_FAMILY_UNIX)
|
||||
Poco::File socketFile("/tmp/SocketTest.sock");
|
||||
if (socketFile.exists()) socketFile.remove();
|
||||
SocketAddress localAddr(SocketAddress::UNIX_LOCAL, socketFile.path());
|
||||
EchoServer echoServer(localAddr);
|
||||
StreamSocket ss(SocketAddress::UNIX_LOCAL);
|
||||
ss.connect(localAddr);
|
||||
int n = ss.sendBytes("hello", 5);
|
||||
assert (n == 5);
|
||||
char buffer[256];
|
||||
n = ss.receiveBytes(buffer, sizeof(buffer));
|
||||
assert (n == 5);
|
||||
assert (std::string(buffer, n) == "hello");
|
||||
ss.close();
|
||||
socketFile.remove();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
void SocketTest::onReadable(bool& b)
|
||||
{
|
||||
if (b) ++_notToReadable;
|
||||
@@ -547,6 +570,7 @@ CppUnit::Test* SocketTest::suite()
|
||||
CppUnit_addTest(pSuite, SocketTest, testSelect);
|
||||
CppUnit_addTest(pSuite, SocketTest, testSelect2);
|
||||
CppUnit_addTest(pSuite, SocketTest, testSelect3);
|
||||
CppUnit_addTest(pSuite, SocketTest, testEchoUnixLocal);
|
||||
|
||||
return pSuite;
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ public:
|
||||
void testSelect();
|
||||
void testSelect2();
|
||||
void testSelect3();
|
||||
void testEchoUnixLocal();
|
||||
|
||||
void setUp();
|
||||
void tearDown();
|
||||
|
||||
@@ -123,7 +123,7 @@ SyslogTest::~SyslogTest()
|
||||
void SyslogTest::testListener()
|
||||
{
|
||||
Poco::AutoPtr<RemoteSyslogChannel> channel = new RemoteSyslogChannel();
|
||||
channel->setProperty("loghost", "localhost:51400");
|
||||
channel->setProperty("loghost", "127.0.0.1:51400");
|
||||
channel->open();
|
||||
Poco::AutoPtr<RemoteSyslogListener> listener = new RemoteSyslogListener(51400);
|
||||
listener->open();
|
||||
@@ -148,7 +148,7 @@ void SyslogTest::testListener()
|
||||
void SyslogTest::testChannelOpenClose()
|
||||
{
|
||||
Poco::AutoPtr<RemoteSyslogChannel> channel = new RemoteSyslogChannel();
|
||||
channel->setProperty("loghost", "localhost:51400");
|
||||
channel->setProperty("loghost", "127.0.0.1:51400");
|
||||
channel->open();
|
||||
Poco::AutoPtr<RemoteSyslogListener> listener = new RemoteSyslogListener(51400);
|
||||
listener->open();
|
||||
@@ -187,7 +187,7 @@ void SyslogTest::testChannelOpenClose()
|
||||
void SyslogTest::testOldBSD()
|
||||
{
|
||||
Poco::AutoPtr<RemoteSyslogChannel> channel = new RemoteSyslogChannel();
|
||||
channel->setProperty("loghost", "localhost:51400");
|
||||
channel->setProperty("loghost", "127.0.0.1:51400");
|
||||
channel->setProperty("format", "bsd");
|
||||
channel->open();
|
||||
Poco::AutoPtr<RemoteSyslogListener> listener = new RemoteSyslogListener(51400);
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
|
||||
using Poco::Net::TCPServer;
|
||||
using Poco::Net::TCPServerConnectionFilter;
|
||||
using Poco::Net::TCPServerConnection;
|
||||
using Poco::Net::TCPServerConnectionFactory;
|
||||
using Poco::Net::TCPServerConnectionFactoryImpl;
|
||||
@@ -60,6 +61,15 @@ namespace
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
class RejectFilter: public TCPServerConnectionFilter
|
||||
{
|
||||
public:
|
||||
bool accept(const StreamSocket&)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -82,7 +92,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());
|
||||
@@ -109,7 +119,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");
|
||||
@@ -157,7 +167,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);
|
||||
@@ -231,7 +241,9 @@ void TCPServerTest::testMultiConnections()
|
||||
assert (srv.currentConnections() == 0);
|
||||
}
|
||||
|
||||
void TCPServerTest::testThreadCapacity(){
|
||||
|
||||
void TCPServerTest::testThreadCapacity()
|
||||
{
|
||||
ServerSocket svs(0);
|
||||
TCPServerParams* pParams = new TCPServerParams;
|
||||
pParams->setMaxThreads(64);
|
||||
@@ -241,6 +253,29 @@ void TCPServerTest::testThreadCapacity(){
|
||||
}
|
||||
|
||||
|
||||
void TCPServerTest::testFilter()
|
||||
{
|
||||
TCPServer srv(new TCPServerConnectionFactoryImpl<EchoConnection>());
|
||||
srv.setConnectionFilter(new RejectFilter);
|
||||
srv.start();
|
||||
assert (srv.currentConnections() == 0);
|
||||
assert (srv.currentThreads() == 0);
|
||||
assert (srv.queuedConnections() == 0);
|
||||
assert (srv.totalConnections() == 0);
|
||||
|
||||
SocketAddress sa("127.0.0.1", srv.socket().address().port());
|
||||
StreamSocket ss(sa);
|
||||
|
||||
char buffer[256];
|
||||
int n = ss.receiveBytes(buffer, sizeof(buffer));
|
||||
|
||||
assert (n == 0);
|
||||
assert (srv.currentConnections() == 0);
|
||||
assert (srv.currentThreads() == 0);
|
||||
assert (srv.queuedConnections() == 0);
|
||||
assert (srv.totalConnections() == 0);
|
||||
}
|
||||
|
||||
|
||||
void TCPServerTest::setUp()
|
||||
{
|
||||
@@ -260,6 +295,7 @@ CppUnit::Test* TCPServerTest::suite()
|
||||
CppUnit_addTest(pSuite, TCPServerTest, testTwoConnections);
|
||||
CppUnit_addTest(pSuite, TCPServerTest, testMultiConnections);
|
||||
CppUnit_addTest(pSuite, TCPServerTest, testThreadCapacity);
|
||||
CppUnit_addTest(pSuite, TCPServerTest, testFilter);
|
||||
|
||||
return pSuite;
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ public:
|
||||
void testTwoConnections();
|
||||
void testMultiConnections();
|
||||
void testThreadCapacity();
|
||||
void testFilter();
|
||||
|
||||
void setUp();
|
||||
void tearDown();
|
||||
|
||||
@@ -118,7 +118,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);
|
||||
@@ -140,6 +140,13 @@ void WebSocketTest::testWebSocket()
|
||||
assert (n == payload.size());
|
||||
assert (payload.compare(0, payload.size(), buffer, 0, n) == 0);
|
||||
assert (flags == WebSocket::FRAME_TEXT);
|
||||
|
||||
ws.sendFrame(payload.data(), (int) payload.size());
|
||||
Poco::Buffer<char> pocobuffer(0);
|
||||
n = ws.receiveFrame(pocobuffer, flags);
|
||||
assert (n == payload.size());
|
||||
assert (payload.compare(0, payload.size(), pocobuffer.begin(), 0, n) == 0);
|
||||
assert (flags == WebSocket::FRAME_TEXT);
|
||||
}
|
||||
|
||||
for (int i = 125; i < 129; i++)
|
||||
@@ -150,6 +157,13 @@ void WebSocketTest::testWebSocket()
|
||||
assert (n == payload.size());
|
||||
assert (payload.compare(0, payload.size(), buffer, 0, n) == 0);
|
||||
assert (flags == WebSocket::FRAME_TEXT);
|
||||
|
||||
ws.sendFrame(payload.data(), (int) payload.size());
|
||||
Poco::Buffer<char> pocobuffer(0);
|
||||
n = ws.receiveFrame(pocobuffer, flags);
|
||||
assert (n == payload.size());
|
||||
assert (payload.compare(0, payload.size(), pocobuffer.begin(), 0, n) == 0);
|
||||
assert (flags == WebSocket::FRAME_TEXT);
|
||||
}
|
||||
|
||||
payload = "Hello, world!";
|
||||
@@ -185,7 +199,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);
|
||||
@@ -209,6 +223,49 @@ void WebSocketTest::testWebSocketLarge()
|
||||
}
|
||||
|
||||
|
||||
void WebSocketTest::testOneLargeFrame(int msgSize)
|
||||
{
|
||||
Poco::Net::ServerSocket ss(0);
|
||||
Poco::Net::HTTPServer server(new WebSocketRequestHandlerFactory(msgSize), ss, new Poco::Net::HTTPServerParams);
|
||||
server.start();
|
||||
|
||||
Poco::Thread::sleep(200);
|
||||
|
||||
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);
|
||||
ws.setSendBufferSize(msgSize);
|
||||
ws.setReceiveBufferSize(msgSize);
|
||||
std::string payload(msgSize, 'x');
|
||||
|
||||
ws.sendFrame(payload.data(), msgSize);
|
||||
|
||||
Poco::Buffer<char> buffer(msgSize);
|
||||
int flags;
|
||||
int n;
|
||||
|
||||
n = ws.receiveFrame(buffer.begin(), buffer.size(), flags);
|
||||
assert (n == payload.size());
|
||||
assert (payload.compare(0, payload.size(), buffer.begin(), 0, n) == 0);
|
||||
|
||||
ws.sendFrame(payload.data(), msgSize);
|
||||
|
||||
Poco::Buffer<char> pocobuffer(0);
|
||||
|
||||
n = ws.receiveFrame(pocobuffer, flags);
|
||||
assert (n == payload.size());
|
||||
assert (payload.compare(0, payload.size(), pocobuffer.begin(), 0, n) == 0);
|
||||
}
|
||||
|
||||
|
||||
void WebSocketTest::testWebSocketLargeInOneFrame()
|
||||
{
|
||||
testOneLargeFrame(64000);
|
||||
testOneLargeFrame(70000);
|
||||
}
|
||||
|
||||
|
||||
void WebSocketTest::setUp()
|
||||
{
|
||||
}
|
||||
@@ -225,6 +282,7 @@ CppUnit::Test* WebSocketTest::suite()
|
||||
|
||||
CppUnit_addTest(pSuite, WebSocketTest, testWebSocket);
|
||||
CppUnit_addTest(pSuite, WebSocketTest, testWebSocketLarge);
|
||||
CppUnit_addTest(pSuite, WebSocketTest, testWebSocketLargeInOneFrame);
|
||||
|
||||
return pSuite;
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ public:
|
||||
|
||||
void testWebSocket();
|
||||
void testWebSocketLarge();
|
||||
void testWebSocketLargeInOneFrame();
|
||||
|
||||
void setUp();
|
||||
void tearDown();
|
||||
@@ -33,6 +34,7 @@ public:
|
||||
static CppUnit::Test* suite();
|
||||
|
||||
private:
|
||||
void testOneLargeFrame(int msgSize);
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user