1 /***************************************************************************
2 * Copyright (C) 2004 by Intra2net AG *
5 ***************************************************************************/
19 #include <cppunit/extensions/TestFactoryRegistry.h>
20 #include <cppunit/ui/text/TestRunner.h>
21 #include <cppunit/extensions/HelperMacros.h>
23 #include <socket_client.hxx>
24 #include <socket_server.hxx>
27 using namespace libt2n;
28 using namespace CppUnit;
31 class test_comm : public TestFixture
33 CPPUNIT_TEST_SUITE(test_comm);
35 CPPUNIT_TEST(UnixCommToServer);
36 CPPUNIT_TEST(UnixCommToServerAndBack);
37 CPPUNIT_TEST(UnixCommToServerAndBackBig);
38 CPPUNIT_TEST(IPCommToServer);
39 CPPUNIT_TEST(IPCommToServerAndBack);
40 CPPUNIT_TEST(IPCommToServerAndBackBig);
42 CPPUNIT_TEST_SUITE_END();
53 // make sure the server-child is dead before the next test runs
54 kill(child_pid,SIGKILL);
58 void UnixCommToServer()
62 switch(child_pid=fork())
66 CPPUNIT_FAIL("fork error");
72 // wait till server is up
74 socket_client_connection sc("./socket");
76 // don't call atexit and stuff
83 socket_server ss("./socket");
85 time_t t0 = time(NULL);
88 while (time(NULL) < t0 + 10 )
90 ss.fill_buffer(1000000);
92 if(ss.get_packet(data))
97 CPPUNIT_ASSERT_EQUAL(string("hello"),data);
100 void UnixCommToServerAndBack()
102 switch(child_pid=fork())
106 CPPUNIT_FAIL("fork error");
112 socket_server ss("./socket");
113 ss.set_logging(&cerr,debug);
115 time_t t0 = time(NULL);
118 while (time(NULL) < t0 + 10 )
120 ss.fill_buffer(1000000);
125 if(ss.get_packet(data,cid))
127 server_connection* con=ss.get_connection(cid);
138 // don't call atexit and stuff
147 // wait till server is up
149 socket_client_connection sc("./socket");
153 sc.fill_buffer(1000000);
156 CPPUNIT_ASSERT_EQUAL(string("DEF"),data);
160 sc.fill_buffer(1000000);
163 CPPUNIT_ASSERT_EQUAL(string("xyz"),data);
170 void UnixCommToServerAndBackBig()
172 switch(child_pid=fork())
176 CPPUNIT_FAIL("fork error");
182 socket_server ss("./socket");
183 ss.set_logging(&cerr,debug);
185 time_t t0 = time(NULL);
188 while (time(NULL) < t0 + 10 )
190 ss.fill_buffer(1000000);
195 if(ss.get_packet(data,cid))
197 server_connection* con=ss.get_connection(cid);
202 con->write(string().insert(0,100*1024,'y'));
205 std::cerr << "child: OVER" << std::endl;
206 // don't call atexit and stuff
215 // wait till server is up
217 socket_client_connection sc("./socket");
219 sc.write(string().insert(0,100*1024,'x'));
221 while (!sc.get_packet(data))
222 sc.fill_buffer(1000000);
224 CPPUNIT_ASSERT_EQUAL(string().insert(0,100*1024,'y'),data);
231 void IPCommToServer()
235 switch(child_pid=fork())
239 CPPUNIT_FAIL("fork error");
245 // wait till server is up
247 socket_client_connection sc(6666);
249 // don't call atexit and stuff
256 socket_server ss(6666);
258 time_t t0 = time(NULL);
261 while (time(NULL) < t0 + 10 )
263 ss.fill_buffer(1000000);
265 if(ss.get_packet(data))
270 CPPUNIT_ASSERT_EQUAL(string("hello"),data);
273 void IPCommToServerAndBack()
275 switch(child_pid=fork())
279 CPPUNIT_FAIL("fork error");
285 socket_server ss(6666);
286 ss.set_logging(&cerr,debug);
288 time_t t0 = time(NULL);
291 while (time(NULL) < t0 + 10 )
293 ss.fill_buffer(1000000);
298 if(ss.get_packet(data,cid))
300 server_connection* con=ss.get_connection(cid);
311 // don't call atexit and stuff
320 // wait till server is up
322 socket_client_connection sc(6666);
325 sc.fill_buffer(1000000);
328 CPPUNIT_ASSERT_EQUAL(string("DEF"),data);
332 sc.fill_buffer(1000000);
335 CPPUNIT_ASSERT_EQUAL(string("xyz"),data);
343 void IPCommToServerAndBackBig()
345 switch(child_pid=fork())
349 CPPUNIT_FAIL("fork error");
355 socket_server ss(6666);
356 ss.set_logging(&cerr,debug);
358 time_t t0 = time(NULL);
361 while (time(NULL) < t0 + 10 )
363 ss.fill_buffer(1000000);
368 if(ss.get_packet(data,cid))
370 server_connection* con=ss.get_connection(cid);
372 socket_handler* alias= dynamic_cast< socket_handler* >(con);
377 alias->set_write_block_size( 4093 );
378 con->write(string().insert(0,2048*1024,'y'));
381 // don't call atexit and stuff
390 // wait till server is up
392 socket_client_connection sc(6666);
394 sc.write(string().insert(0,100*1024,'x'));
396 while (!sc.get_packet(data))
397 sc.fill_buffer(1000000);
399 CPPUNIT_ASSERT_EQUAL(string().insert(0,2048*1024,'y'),data);
404 } // eo IPCommToServerAndBackBig()
407 CPPUNIT_TEST_SUITE_REGISTRATION(test_comm);