/* * sockethandlerTest.cpp * * Created on: Dec 19, 2011 * Author: christian */ #include "sockethandlerTest.h" #include #include /* for socket(), connect(), (), and recv() */ #include /* for sockaddr_in and inet_addr() */ #include #include #include using namespace testing; using namespace am; sockethandlerTest::sockethandlerTest() { } sockethandlerTest::~sockethandlerTest() { } void fdCallBack::connectSocket(int fd, const int16_t events,void * userData) { std::cout<<"Socket connection received and open"<addFDPoll(mSocketConnection,event,buf,NULL); } fdCallBack::fdCallBack(SocketHandler *SocketHandler) :mSocketConnection(0), mSocketHandler(SocketHandler), pSocketDataCallback(this, &fdCallBack::handleSocketData), pSocketConnectionCallback(this, &fdCallBack::connectSocket) { } void am::fdCallBack::handleSocketData(int fd, const int16_t events, void* userdata) { char buffer[3000]; std::string msg; //there is something for us, read it int read=recv(mSocketConnection,buffer,sizeof(buffer),NULL); msg=std::string(buffer,read); if (msg.compare("stopit")==0) { mSocketHandler->stop_listening(); } else if (msg.compare("answer")==0) { std::string answer="myAnswer"; send(mSocketConnection,answer.c_str(),answer.size(),NULL); } } fdCallBack::~fdCallBack() { } am::timerCallBack::timerCallBack(SocketHandler *myHandler) :pTimer1Callback(this, &timerCallBack::timer1Callback), pTimer2Callback(this, &timerCallBack::timer2Callback), pTimer3Callback(this, &timerCallBack::timer3Callback), pTimer4Callback(this, &timerCallBack::timer4Callback), mSocketHandler(myHandler) { } am::timerCallBack::~timerCallBack() { } void am::timerCallBack::timer1Callback(SocketHandler::sh_timerHandle_t handle, void* userData) { std::cout<<"callback1 called"<addTimer(timeout,buf,handle_,NULL); } void am::timerCallBack::timer2Callback(SocketHandler::sh_timerHandle_t handle, void* userData) { std::cout<<"callback2 called"<addTimer(timeout,buf,handle_,NULL); } void am::timerCallBack::timer3Callback(SocketHandler::sh_timerHandle_t handle, void* userData) { std::cout<<"callback3 called"<h_addr_list[0], host->h_length); servAddr.sin_family = AF_INET; servAddr.sin_port = htons(6060); //connect to the socket int k =connect(socketHandle,(struct sockaddr *) &servAddr, sizeof(servAddr)); std::string msg="answer"; //send first the answer message and wait for the reply int p=send(socketHandle,msg.c_str(),msg.size(),NULL); int read=recv(socketHandle,buffer,sizeof(buffer),NULL); msg=std::string(buffer,read); ASSERT_TRUE(msg.compare("myAnswer")==0); msg="stopit"; //now send a message causing the handler to stop and end the loop p=send(socketHandle,msg.c_str(),msg.size(),NULL); pthread_join(serverThread,NULL); } TEST(sockethandlerTest,playWithTimers) { SocketHandler myHandler; timerCallBack testCallback(&myHandler); timespec timeoutTime, timeout2, timeout3, timeout4; timeoutTime.tv_sec=3; timeoutTime.tv_nsec=0; timeout2.tv_nsec=0; timeout2.tv_sec=1; timeout3.tv_nsec=000000000; timeout3.tv_sec=2; timeout4.tv_nsec=0; timeout4.tv_sec=30; TBasicTimerCallback* buf=&testCallback.pTimer1Callback; TBasicTimerCallback* buf2=&testCallback.pTimer2Callback; TBasicTimerCallback* buf3=&testCallback.pTimer3Callback; TBasicTimerCallback* buf4=&testCallback.pTimer4Callback; SocketHandler::sh_timerHandle_t handle; myHandler.addTimer(timeoutTime,buf,handle,NULL); myHandler.addTimer(timeout2,buf2,handle,NULL); myHandler.addTimer(timeout3,buf3,handle,NULL); myHandler.addTimer(timeout4,buf4,handle,NULL); myHandler.start_listenting(); } void sockethandlerTest::SetUp() { } void sockethandlerTest::TearDown() { } int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }