1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
// -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
#include <BALL/CONCEPT/classTest.h>
///////////////////////////
#include <BALL/SYSTEM/networking.h>
///////////////////////////
using namespace BALL;
class SimpleTCPServerTestThread
: public TCPServerThread
{
public:
SimpleTCPServerTestThread(Size port, bool async, bool restart)
: TCPServerThread(port, async, restart),
sent_async("HelloAsync!"),
sent_sync("HelloSync!")
{}
void handleConnection()
{
getline(connected_stream_, received);
connected_stream_ << sent_sync << std::endl;
}
void handleAsyncConnection()
{
getline(connected_stream_, received);
connected_stream_ << sent_async << std::endl;
}
String received;
String sent_async;
String sent_sync;
};
START_TEST(Socket)
using namespace BALL;
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
CHECK([EXTRA] simple asynchronous socket transmission to/from threaded server)
SimpleTCPServerTestThread server(0, true, false);
server.start();
Size port = server.getPort();
// starting up can take a few moments, so we wait up
Size retries = 0;
while ((port == 0) && (retries < 20))
{
SLEEP_FOR_MSECS((retries + 1) * 200);
port = server.getPort();
++retries;
}
TEST_NOT_EQUAL(port, 0);
if (port > 0)
{
String sent("Hello, world!");
TCPIOStream stream("localhost", port);
stream << sent << std::endl;
String received;
stream >> received;
SLEEP_FOR_MSECS(10);
TEST_EQUAL(sent, server.received);
TEST_EQUAL(received, server.sent_async);
}
server.deactivate();
server.terminate();
server.wait();
RESULT
CHECK([EXTRA] simple synchronous socket transmission to/from threaded server)
SimpleTCPServerTestThread server(0, false, false);
server.start();
Size port = server.getPort();
// starting up can take a few moments, so we wait up
Size retries = 0;
while ((port == 0) && (retries < 20))
{
SLEEP_FOR_MSECS((retries + 1) * 200);
port = server.getPort();
++retries;
}
TEST_NOT_EQUAL(port, 0);
if (port > 0)
{
String sent("Hello, world!");
TCPIOStream stream("localhost", port);
stream << sent << std::endl;
String received;
stream >> received;
SLEEP_FOR_MSECS(10);
TEST_EQUAL(sent, server.received);
TEST_EQUAL(received, server.sent_sync);
}
server.deactivate();
server.terminate();
server.wait();
RESULT
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
END_TEST
|