libt2n: (tomj) don't use std::auto_ptr in command_client, the pointer will get lost...
[libt2n] / test / callback.cpp
index 9d4c7d1..257da83 100644 (file)
@@ -44,6 +44,8 @@ class test_callback : public TestFixture
 
     std::vector<bool> callback_done;
 
+    pid_t child_pid;
+
     public:
 
     void setUp()
@@ -54,6 +56,10 @@ class test_callback : public TestFixture
     void tearDown()
     {
         callback_done.clear();
+
+        // make sure the server-child is dead before the next test runs
+        kill(child_pid,SIGKILL);
+        sleep(1);
     }
 
     void callback_func(callback_event_type ev, int conn_id)
@@ -67,9 +73,7 @@ class test_callback : public TestFixture
 
     void ServerNewConnCallback()
     {
-        pid_t pid;
-
-        switch(pid=fork())
+        switch(child_pid=fork())
         {
             case -1:
             {
@@ -128,9 +132,7 @@ class test_callback : public TestFixture
 
     void ServerConnClosedCallback()
     {
-        pid_t pid;
-
-        switch(pid=fork())
+        switch(child_pid=fork())
         {
             case -1:
             {
@@ -189,9 +191,7 @@ class test_callback : public TestFixture
 
     void ServerConnDeletedCallback()
     {
-        pid_t pid;
-
-        switch(pid=fork())
+        switch(child_pid=fork())
         {
             case -1:
             {
@@ -253,9 +253,7 @@ class test_callback : public TestFixture
 
     void ServerCallbackOrder()
     {
-        pid_t pid;
-
-        switch(pid=fork())
+        switch(child_pid=fork())
         {
             case -1:
             {
@@ -297,7 +295,7 @@ class test_callback : public TestFixture
 
                 bool got_1=false;
 
-                for (int i=0; i < 4; i++)
+                for (int i=0; i < 5; i++)
                 {
                     ss.fill_buffer(500000);
 
@@ -314,8 +312,8 @@ class test_callback : public TestFixture
                 }
                 ss.cleanup();
 
-                CPPUNIT_ASSERT_EQUAL(true,static_cast<bool>(callback_done[connection_closed]));
-                CPPUNIT_ASSERT_EQUAL(false,static_cast<bool>(callback_done[connection_deleted]));
+                CPPUNIT_ASSERT_EQUAL_MESSAGE("closed done",true,static_cast<bool>(callback_done[connection_closed]));
+                CPPUNIT_ASSERT_EQUAL_MESSAGE("not deleted yet",false,static_cast<bool>(callback_done[connection_deleted]));
 
                 for (int i=0; i < 4; i++)
                 {
@@ -328,17 +326,15 @@ class test_callback : public TestFixture
                 }
                 ss.cleanup();
 
-                CPPUNIT_ASSERT_EQUAL(true,static_cast<bool>(callback_done[connection_closed]));
-                CPPUNIT_ASSERT_EQUAL(true,static_cast<bool>(callback_done[connection_deleted]));
+                CPPUNIT_ASSERT_EQUAL_MESSAGE("closed done (2)",true,static_cast<bool>(callback_done[connection_closed]));
+                CPPUNIT_ASSERT_EQUAL_MESSAGE("deleted done",true,static_cast<bool>(callback_done[connection_deleted]));
             }
         }
     }
 
     void ClientConnClosedCallback()
     {
-        pid_t pid;
-
-        switch(pid=fork())
+        switch(child_pid=fork())
         {
             case -1:
             {
@@ -390,9 +386,7 @@ class test_callback : public TestFixture
 
     void ClientConnDeletedCallback()
     {
-        pid_t pid;
-
-        switch(pid=fork())
+        switch(child_pid=fork())
         {
             case -1:
             {