parent
0c977dec30
commit
c28aec806b
@ -0,0 +1,119 @@
|
||||
#include <cxxtest/TestSuite.h>
|
||||
|
||||
#include "Fixture.hpp"
|
||||
|
||||
#include "Thread.hpp"
|
||||
#include "TcpConnection.hpp"
|
||||
#include "test_Message.hpp" // SimpleMessage
|
||||
|
||||
#include "SocketClient.hpp"
|
||||
|
||||
class TestTcpConnection : public CxxTest::TestSuite
|
||||
{
|
||||
private:
|
||||
|
||||
class TcpServerThread : public Thread
|
||||
, public TcpConnection
|
||||
{
|
||||
public:
|
||||
|
||||
TcpServerThread(const std::string host,
|
||||
const std::string port,
|
||||
Message *message,
|
||||
const size_t bufferLength = 1024)
|
||||
: TcpConnection(host, port, message, bufferLength)
|
||||
{
|
||||
TRACE;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
void* run( void )
|
||||
{
|
||||
TRACE;
|
||||
|
||||
while (m_isRunning)
|
||||
sleep(1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
}; // TcpServerThread
|
||||
|
||||
class DummyTcpClient : public SocketClient
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
public:
|
||||
|
||||
void testBindToTheSamePort()
|
||||
{
|
||||
TEST_HEADER;
|
||||
|
||||
SimpleMessage message;
|
||||
TcpServerThread tcpServerThread1("localhost", "1234", &message);
|
||||
TcpServerThread tcpServerThread2("localhost", "1234", &message);
|
||||
|
||||
TS_ASSERT_EQUALS(tcpServerThread1.bind(), true);
|
||||
TS_ASSERT_EQUALS(tcpServerThread2.bind(), false);
|
||||
|
||||
TS_ASSERT_EQUALS(tcpServerThread1.disconnect(), false);
|
||||
TS_ASSERT_EQUALS(tcpServerThread2.disconnect(), false);
|
||||
}
|
||||
|
||||
void testListen()
|
||||
{
|
||||
TEST_HEADER;
|
||||
|
||||
SimpleMessage message;
|
||||
TcpServerThread tcpServerThread1("localhost", "1235", &message);
|
||||
|
||||
TS_ASSERT_EQUALS(tcpServerThread1.bind(), true);
|
||||
TS_ASSERT_EQUALS(tcpServerThread1.listen(), true);
|
||||
|
||||
TS_ASSERT_EQUALS(tcpServerThread1.closed(), false);
|
||||
|
||||
TS_ASSERT_EQUALS(tcpServerThread1.disconnect(), true);
|
||||
}
|
||||
|
||||
void testBasicCommunication()
|
||||
{
|
||||
TEST_HEADER;
|
||||
|
||||
SimpleMessage message;
|
||||
std::string host("localhost");
|
||||
std::string service("1234");
|
||||
|
||||
TcpServerThread tcpServerThread1(host, service, &message);
|
||||
|
||||
TS_ASSERT_EQUALS(tcpServerThread1.bind(), true);
|
||||
tcpServerThread1.start();
|
||||
|
||||
TcpConnection conn(host, service, &message);
|
||||
SocketClient socketClient(&conn);
|
||||
|
||||
TS_ASSERT_EQUALS(socketClient.connect(), true );
|
||||
|
||||
// wait for thread creation
|
||||
sleep(1);
|
||||
|
||||
// send message to server
|
||||
std::string msg1("hello");
|
||||
TS_ASSERT_EQUALS(socketClient.send( msg1.c_str(), msg1.length()), true);
|
||||
|
||||
// wait for the complate &handled reply
|
||||
struct timespec tm = {0,1000};
|
||||
while ( !finished && socketClient.isPolling() )
|
||||
nanosleep(&tm, &tm) ;
|
||||
|
||||
socketClient.disconnect();
|
||||
|
||||
TS_ASSERT_EQUALS(tcpServerThread2.bind(), false);
|
||||
|
||||
TS_ASSERT_EQUALS(tcpServerThread1.disconnect(), false);
|
||||
TS_ASSERT_EQUALS(tcpServerThread2.disconnect(), false);
|
||||
}
|
||||
|
||||
};
|
Loading…
Reference in new issue