X-Git-Url: http://developer.intra2net.com/git/?p=libt2n;a=blobdiff_plain;f=test%2Freentrant.cpp;h=7187ffe0d97af0b3712a5f536b4e6d90de0b7e2c;hp=c08df62681782611bb14cadcf4950e6ecffafa20;hb=56f3994d74dbc36d10bfa83b50b016bf269ac563;hpb=c72238fb7fc6eb081c2a0bc95fff369c760343f4 diff --git a/test/reentrant.cpp b/test/reentrant.cpp index c08df62..7187ffe 100644 --- a/test/reentrant.cpp +++ b/test/reentrant.cpp @@ -47,7 +47,7 @@ string testfunc(const string& str) // call handle, eventually reentrant if (global_server) - global_server->handle(1000); + global_server->handle(10000); return ret; } @@ -124,8 +124,6 @@ class test_reentrant : public TestFixture CPPUNIT_TEST_SUITE_END(); - pid_t child_pid; - public: void setUp() @@ -136,7 +134,7 @@ class test_reentrant : public TestFixture void ReentrantServer() { - switch(child_pid=fork()) + switch(fork()) { case -1: { @@ -154,17 +152,31 @@ class test_reentrant : public TestFixture fork(); fork(); - for (int i=0; i < 100; i++) + try { - socket_client_connection sc("./socket"); - command_client cc(&sc); - - result_container rc; - cc.send_command(new testfunc_cmd("hello"),rc); - - string ret=dynamic_cast(rc.get_result())->get_data(); - - CPPUNIT_ASSERT_EQUAL(string("hello, testfunc() was here"),ret); + for (int i=0; i < 100; i++) + { + socket_client_connection sc("./socket"); + 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\n"; + } + } + } catch (exception &e) + { + cerr << "caught exception: " << e.what() << endl; } // don't call atexit and stuff @@ -174,16 +186,29 @@ class test_reentrant : public TestFixture default: // parent { + // don't kill us on broken pipe + signal(SIGPIPE, SIG_IGN); + socket_server ss("./socket"); command_server cs(ss); global_server=&cs; // max 10 sec - long long maxtime=5000000; + long long maxtime=1000000; while(maxtime > 0) cs.handle(maxtime,&maxtime); - + + // max 10 sec + maxtime=1000000; + while(maxtime > 0) + cs.handle(maxtime,&maxtime); + + // max 10 sec + maxtime=1000000; + while(maxtime > 0) + cs.handle(maxtime,&maxtime); + global_server = NULL; }