CPPUNIT_TEST_SUITE_END();
+ pid_t child_pid;
+
public:
void setUp()
- {
-}
+ { }
void tearDown()
- { }
+ {
+ // make sure the server-child is dead before the next test runs
+ kill(child_pid,SIGKILL);
+ sleep(1);
+ }
void SimpleCmd()
{
- pid_t pid;
-
- switch(pid=fork())
+ switch(child_pid=fork())
{
case -1:
{
case 0:
// child
{
- socket_server ss("./socket");
- command_server cs(ss);
+ try
+ {
+ socket_server ss("./socket");
+ command_server cs(ss);
- // max 10 sec
- for (int i=0; i < 10; i++)
- cs.handle(1000000);
+ // max 10 sec
+ for (int i=0; i < 10; i++)
+ cs.handle(1000000);
+ } catch(...)
+ {
+ std::cerr << "exception in child. ignoring\n";
+ }
// don't call atexit and stuff
_exit(0);
CPPUNIT_ASSERT_EQUAL(string("hello, testfunc() was here"),ret);
}
}
- kill(pid,SIGKILL);
}
void SimpleException()
{
- pid_t pid;
-
- switch(pid=fork())
+ switch(child_pid=fork())
{
case -1:
{
case 0:
// child
{
- socket_server ss("./socket");
- command_server cs(ss);
+ try
+ {
+ socket_server ss("./socket");
+ command_server cs(ss);
- // max 10 sec
- for (int i=0; i < 10; i++)
- cs.handle(1000000);
+ // max 10 sec
+ for (int i=0; i < 10; i++)
+ cs.handle(1000000);
+ } catch(...)
+ {
+ std::cerr << "exception in child. ignoring\n";
+ }
// don't call atexit and stuff
_exit(0);
{ throw; }
CPPUNIT_ASSERT_EQUAL(string("throw me around"),ret);
-
- kill(pid,SIGKILL);
}
}
}
void BigReturn()
{
- pid_t pid;
-
- switch(pid=fork())
+ switch(child_pid=fork())
{
case -1:
{
case 0:
// child
{
- socket_server ss("./socket");
- command_server cs(ss);
+ try
+ {
+ socket_server ss("./socket");
+ command_server cs(ss);
- // max 10 sec
- for (int i=0; i < 10; i++)
- cs.handle(1000000);
+ // max 10 sec
+ for (int i=0; i < 10; i++)
+ cs.handle(1000000);
+ } catch(...)
+ {
+ std::cerr << "exception in child. ignoring\n";
+ }
// don't call atexit and stuff
_exit(0);
string ret=dynamic_cast<testfunc_res*>(rc.get_result())->get_data();
CPPUNIT_ASSERT_EQUAL(string().insert(0,100*1024,'x'),ret);
-
- kill(pid,SIGKILL);
}
}
}
void BigParameter()
{
- pid_t pid;
-
- switch(pid=fork())
+ switch(child_pid=fork())
{
case -1:
{
case 0:
// child
{
- socket_server ss("./socket");
- command_server cs(ss);
+ try
+ {
+ socket_server ss("./socket");
+ command_server cs(ss);
- // max 10 sec
- for (int i=0; i < 10; i++)
- cs.handle(1000000);
+ // max 60 sec - we need atleast 28 handle calls to transfer the buffer
+ for (int i=0; i < 60; i++) {
+ cs.handle(1000000);
+ }
+ } catch(...)
+ {
+ std::cerr << "exception in child. ignoring\n";
+ }
// don't call atexit and stuff
_exit(0);
string ret=dynamic_cast<testfunc_res*>(rc.get_result())->get_data();
CPPUNIT_ASSERT_EQUAL(string().insert(0,100*1024,'y')+", testfunc() was here",ret);
-
- kill(pid,SIGKILL);
}
}
}