X-Git-Url: http://developer.intra2net.com/git/?p=libt2n;a=blobdiff_plain;f=test%2Freentrant.cpp;h=204e741a6d3d0ce938a7054c78f99acb3f8a310d;hp=c69facc67eddc5a6c488e233a322df7074111f71;hb=307b5e74c506b609d5c407be0943f45255ab5122;hpb=3d9c0861e86edcbfad10b84da332093fd6438f32 diff --git a/test/reentrant.cpp b/test/reentrant.cpp index c69facc..204e741 100644 --- a/test/reentrant.cpp +++ b/test/reentrant.cpp @@ -30,9 +30,8 @@ on this file might be covered by the GNU General Public License. #include #include -#include -#include -#include +#define BOOST_TEST_DYN_LINK +#include #include #include @@ -47,7 +46,6 @@ on this file might be covered by the GNU General Public License. #include using namespace std; -using namespace CppUnit; using namespace libt2n; namespace reentrant @@ -144,111 +142,94 @@ BOOST_CLASS_EXPORT(reentrant::testfunc_res) using namespace reentrant; -class test_reentrant : public TestFixture -{ - CPPUNIT_TEST_SUITE(test_reentrant); - - CPPUNIT_TEST(ReentrantServer); - - CPPUNIT_TEST_SUITE_END(); - - public: +BOOST_AUTO_TEST_SUITE(test_reentrant) - void setUp() - { } - - void tearDown() - { } - - void ReentrantServer() +BOOST_AUTO_TEST_CASE(ReentrantServer) +{ + switch(fork()) { - switch(fork()) + case -1: { - case -1: - { - CPPUNIT_FAIL("fork error"); - break; - } - case 0: - // child - { - // wait till server is up - sleep(2); + BOOST_FAIL("fork error"); + break; + } + case 0: + // child + { + // wait till server is up + sleep(2); - // hammer the server - for (int i = 0; i < fork_count; i++) - fork(); + // hammer the server + for (int i = 0; i < fork_count; i++) + fork(); - try + try + { + for (int i=0; i < requests_per_child; i++) { - for (int i=0; i < requests_per_child; i++) + socket_client_connection sc("./socket"); + // sc.set_logging(&cerr,debug); + command_client cc(&sc); + + result_container rc; + cc.send_command(new testfunc_cmd("hello"),rc); + + testfunc_res *res = dynamic_cast(rc.get_result()); + if (res) { - socket_client_connection sc("./socket"); - // sc.set_logging(&cerr,debug); - command_client cc(&sc); - - result_container rc; - cc.send_command(new testfunc_cmd("hello"),rc); - - testfunc_res *res = dynamic_cast(rc.get_result()); - if (res) - { - string ret = res->get_data(); - if (ret != "hello, testfunc() was here") - std::cout << "ERROR reentrant server testfunc_res failed, res: \"" << ret << "\"\n"; - } - else - { - std::cout << "ERROR result from reentrant server empty (" << rc.get_result() << ")\n"; - } + string ret = res->get_data(); + if (ret != "hello, testfunc() was here") + std::cout << "ERROR reentrant server testfunc_res failed, res: \"" << ret << "\"\n"; + } + else + { + std::cout << "ERROR result from reentrant server empty (" << rc.get_result() << ")\n"; } - } catch (exception &e) - { - cerr << "caught exception: " << e.what() << endl; - } catch(...) - { - std::cerr << "exception in child. ignoring\n"; } - - // don't call atexit and stuff - _exit(0); + } catch (exception &e) + { + cerr << "caught exception: " << e.what() << endl; + } catch(...) + { + std::cerr << "exception in child. ignoring\n"; } - default: - // parent - { - // don't kill us on broken pipe - signal(SIGPIPE, SIG_IGN); + // don't call atexit and stuff + _exit(0); + } - socket_server ss("./socket"); - command_server cs(ss); + default: + // parent + { + // don't kill us on broken pipe + signal(SIGPIPE, SIG_IGN); - global_server=&cs; + socket_server ss("./socket"); + command_server cs(ss); - // Wait until all requests have successed - int safety_check = 0; - while (seen_client_requests < all_requests) - { - ++safety_check; - if (safety_check > 10) { - std::cerr << "reached safety check, aborting.\n"; - break; - } + global_server=&cs; - long long maxtime=1000000; - while(maxtime > 0) - cs.handle(maxtime,&maxtime); + // Wait until all requests have successed + int safety_check = 0; + while (seen_client_requests < all_requests) + { + ++safety_check; + if (safety_check > 10) { + std::cerr << "reached safety check, aborting.\n"; + break; } - global_server = NULL; + long long maxtime=1000000; + while(maxtime > 0) + cs.handle(maxtime,&maxtime); } - // we are still alive, everything is ok - CPPUNIT_ASSERT_EQUAL(all_requests, seen_client_requests); + global_server = NULL; } - } - -}; + // we are still alive, everything is ok + BOOST_CHECK_EQUAL(all_requests, seen_client_requests); + } +} -CPPUNIT_TEST_SUITE_REGISTRATION(test_reentrant); +BOOST_AUTO_TEST_SUITE_END()