diff options
author | Steve Huston <shuston@riverace.com> | 2002-01-24 23:34:29 +0000 |
---|---|---|
committer | Steve Huston <shuston@riverace.com> | 2002-01-24 23:34:29 +0000 |
commit | 4b9472db9d502231a8a2abb071de6fe16123e6ac (patch) | |
tree | 63b87927141a613d535b78d46b47af8dc539687d /tests/Process_Manager_Test.cpp | |
parent | f1f5af1a452651d203834aabc6635a047194ea0d (diff) | |
download | ATCD-4b9472db9d502231a8a2abb071de6fe16123e6ac.tar.gz |
ChangeLogTag:Thu Jan 24 18:31:49 2002 Steve Huston <shuston@riverace.com>
Diffstat (limited to 'tests/Process_Manager_Test.cpp')
-rw-r--r-- | tests/Process_Manager_Test.cpp | 172 |
1 files changed, 104 insertions, 68 deletions
diff --git a/tests/Process_Manager_Test.cpp b/tests/Process_Manager_Test.cpp index 5b5a9ef1d0e..3f31036d3a8 100644 --- a/tests/Process_Manager_Test.cpp +++ b/tests/Process_Manager_Test.cpp @@ -50,12 +50,11 @@ public: virtual int handle_exit (ACE_Process *proc) { - if (debug_test) - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) Exit_Handler(%s) got %d: %d\n"), - msg_, - int (proc->getpid ()), - int (proc->exit_code ()) )); + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P) Exit_Handler(%s) got %d: %d\n"), + msg_, + int (proc->getpid ()), + int (proc->exit_code ()) )); return 0; } private: @@ -85,10 +84,13 @@ spawn_child (const ACE_TCHAR *argv0, pid_t result = mgr.spawn (opts); - if (debug_test) + if (result != ACE_INVALID_PID) ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) spawned child: %d\n"), + ACE_TEXT ("(%P) spawned child: pid %d\n"), int (result))); + else + ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("spawn failed"))); + return result; } @@ -114,7 +116,7 @@ main (int argc, ACE_TCHAR *argv[]) ACE_OS::sleep (secs ? secs : 1); if (debug_test) ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) about to exit with code %d\n"), + ACE_TEXT ("(%P) about to exit with code %d\n"), secs)); return secs; } @@ -126,7 +128,7 @@ main (int argc, ACE_TCHAR *argv[]) // Try the explicit <ACE_Process_Manager::wait> functions - int result = 0; + int result = 0, test_status = 0; ACE_Process_Manager mgr; mgr.register_handler (new Exit_Handler ("default")); @@ -138,15 +140,22 @@ main (int argc, ACE_TCHAR *argv[]) pid_t child1 = spawn_child (argv[0], mgr, 1); - pid_t result1 = mgr.wait (child1, - &exitcode); - - ACE_ASSERT (result1 == child1); - // ACE_ASSERT (exitcode == 1); - - if (debug_test) + result = mgr.wait (child1, + &exitcode); + + if (result != child1) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("Error: expected to reap child1 (%d); got %d\n"), + child1, + result)); + if (result == ACE_INVALID_PID) + ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("error"))); + test_status = 1; + } + else ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) waited for child %d: %d\n"), + ACE_TEXT ("(%P) waited for child1, pid %d: %d\n"), child1, exitcode)); @@ -158,34 +167,45 @@ main (int argc, ACE_TCHAR *argv[]) pid_t child3 = spawn_child (argv[0], mgr, 4); - pid_t result2 = mgr.wait (child3, - &exitcode); - - ACE_ASSERT (result2 == child3); - // ACE_ASSERT (exitcode == 4); - - if (debug_test) + result = mgr.wait (child3, + &exitcode); + + if (result != child3) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("Error: expected to reap child3 (%d); got %d\n"), + child3, + result)); + if (result == ACE_INVALID_PID) + ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("error"))); + test_status = 1; + } + else ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) waited for child %d: %d\n"), + ACE_TEXT ("(%P) waited for child 3, pid %d: %d\n"), child3, exitcode)); // Now wait for any...should get the one that finished earlier. - pid_t result3 = mgr.wait (0, - &exitcode); - - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) expected to reap %d, got %d\n"), - child2, - result3)); - ACE_ASSERT (result3 == child2); + result = mgr.wait (0, &exitcode); + + if (result != child2) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("Error: expected to reap child2 (%d); got %d\n"), + child2, + result)); + if (result == ACE_INVALID_PID) + ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("error"))); + test_status = 1; + } // ACE_ASSERT (exitcode == 1); - if (debug_test) - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) waited for any child: %d\n"), - exitcode)); + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P) waited for any child, got pid %d: %d\n"), + result, + exitcode)); // -------------------------------------------------- // Try the timed wait functions @@ -194,43 +214,59 @@ main (int argc, ACE_TCHAR *argv[]) pid_t child4 = spawn_child (argv[0], mgr, 1); - pid_t result4 = mgr.wait (0, - ACE_Time_Value (4), - &exitcode); - - ACE_ASSERT (result4 == child4); + result = mgr.wait (0, ACE_Time_Value (4), &exitcode); + + if (result != child4) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("Error: expected to reap child4 (%d); got %d\n"), + child4, + result)); + if (result == ACE_INVALID_PID) + ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("error"))); + test_status = 1; + } // ACE_ASSERT (exitcode == 1); - if (debug_test) - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) waited for any child: %d\n"), - exitcode)); + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P) waited for any child, got pid %d: %d\n"), + result, + exitcode)); // This one should timeout: pid_t child5 = spawn_child (argv[0], mgr, 4); - pid_t result5 = mgr.wait (0, - ACE_Time_Value (1), - &exitcode); - - ACE_ASSERT (result5 == 0); // should have timed out - - if (debug_test) + result = mgr.wait (0, ACE_Time_Value (1), &exitcode); + if (result != 0) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("Error: expected wait to time out; got %d\n"), + result)); + if (result == ACE_INVALID_PID) + ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("error"))); + test_status = 1; + } + else ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) waited for any child: %d\n"), - exitcode)); + ACE_TEXT ("(%P) Correctly timed out wait at child 5\n"))); // Now wait indefinitely to clean up... - result5 = mgr.wait (0, - &exitcode); - - ACE_ASSERT (result5 == child5); - // ACE_ASSERT (exitcode == 4); - - if (debug_test) + result = mgr.wait (0, &exitcode); + + if (result != child5) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("Error: expected to reap child5 pid %d; got %d\n"), + child5, + result)); + if (result == ACE_INVALID_PID) + ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("error"))); + test_status = 1; + } + else ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) waited for child 5 again: %d\n"), + ACE_TEXT ("(%P) waited for child 5 again: %d\n"), exitcode)); // -------------------------------------------------- @@ -250,14 +286,14 @@ main (int argc, ACE_TCHAR *argv[]) ACE_Time_Value how_long (10); + ACE_Reactor::instance ()->owner (ACE_Thread::self ()); ACE_Reactor::instance ()->run_event_loop (how_long); - if (debug_test) - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) done!\n") )); + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P) Reactor loop done!\n") )); ACE_END_TEST; - return result; + return test_status; } #else /* (!ACE_LACKS_FORK || ACE_WIN32) && ACE_HAS_THREADS */ |