diff options
Diffstat (limited to 'TAO/tests/Reliable_Oneways/client.cpp')
-rw-r--r-- | TAO/tests/Reliable_Oneways/client.cpp | 445 |
1 files changed, 0 insertions, 445 deletions
diff --git a/TAO/tests/Reliable_Oneways/client.cpp b/TAO/tests/Reliable_Oneways/client.cpp deleted file mode 100644 index 1fd46befc7c..00000000000 --- a/TAO/tests/Reliable_Oneways/client.cpp +++ /dev/null @@ -1,445 +0,0 @@ -// $Id$ - -#include "TestC.h" -#include "tao/Messaging.h" -#include "ace/Get_Opt.h" - -ACE_RCSID(Reliable_Oneways, client, "$Id$") - -const char *ior = "file://test.ior"; -int test_sync_with_target = 0; -int test_sync_with_server = 0; -int test_sync_with_transport = 0; -int test_sync_none = 0; -int iterations = 1000; - -const int ALIVE = 0; -const int DESTROYED = 1; -const int SHUTDOWN = 2; -int server_status = ALIVE; - -int successful_calls = 0; -int failed_calls = 0; - -int -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "k:i:ntsr"); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'k': - ior = get_opts.optarg; - break; - - case 'i': - iterations = ACE_OS::atoi (get_opts.optarg); - break; - - case 'n': - test_sync_none = 1; - break; - - case 't': - test_sync_with_transport = 1; - break; - - case 's': - test_sync_with_server = 1; - break; - - case 'r': - test_sync_with_target = 1; - break; - - case '?': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s " - "-k <ior> " - "-n -t -s -r " - "\n", - argv [0]), - -1); - } - // Indicates successful parsing of the command line - return 0; -} - -void run_test_sync_with_target (Test::Oneway_Receiver_ptr oneway_receiver, - CORBA::Environment &ACE_TRY_ENV); -void run_test_sync_with_server (Test::Oneway_Receiver_ptr oneway_receiver, - CORBA::Environment &ACE_TRY_ENV); -void run_test_sync_with_transport (Test::Oneway_Receiver_ptr oneway_receiver, - CORBA::Environment &ACE_TRY_ENV); -void run_test_sync_none (Test::Oneway_Receiver_ptr oneway_receiver, - CORBA::Environment &ACE_TRY_ENV); - - -int -main (int argc, char *argv[]) -{ - ACE_TRY_NEW_ENV - { - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "", ACE_TRY_ENV); - ACE_TRY_CHECK; - - if (parse_args (argc, argv) != 0) - return 1; - - CORBA::Object_var tmp = - orb->string_to_object(ior, ACE_TRY_ENV); - ACE_TRY_CHECK; - - Test::Oneway_Receiver_var oneway_receiver = - Test::Oneway_Receiver::_narrow(tmp.in (), ACE_TRY_ENV); - ACE_TRY_CHECK; - - if (CORBA::is_nil (oneway_receiver.in ())) - { - ACE_ERROR_RETURN ((LM_DEBUG, - "Nil oneway receiver reference <%s>\n", - ior), - 1); - } - - if (test_sync_with_target) - { - ACE_DEBUG ((LM_DEBUG, "Running SYNC_WITH_TARGET\n")); - run_test_sync_with_target (oneway_receiver.in (), - ACE_TRY_ENV); - ACE_TRY_CHECK; - } - else if (test_sync_with_server) - { - ACE_DEBUG ((LM_DEBUG, "Running SYNC_WITH_SERVER\n")); - run_test_sync_with_server (oneway_receiver.in (), - ACE_TRY_ENV); - ACE_TRY_CHECK; - } - else if (test_sync_with_transport) - { - ACE_DEBUG ((LM_DEBUG, "Running SYNC_WITH_TRANSPORT\n")); - run_test_sync_with_transport (oneway_receiver.in (), - ACE_TRY_ENV); - ACE_TRY_CHECK; - } - else - { - ACE_DEBUG ((LM_DEBUG, "Running SYNC_NONE\n")); - run_test_sync_none (oneway_receiver.in (), - ACE_TRY_ENV); - ACE_TRY_CHECK; - } - - if (successful_calls == 0) - ACE_ERROR ((LM_ERROR, "ERROR: No requests were successful\n")); - - if (failed_calls != 0) - ACE_ERROR ((LM_ERROR, "ERROR: At least %d requests failed\n", - failed_calls)); - - if (failed_calls + successful_calls != iterations) - ACE_ERROR ((LM_ERROR, - "ERROR: Mismatched number of calls (%d + %d != %d)\n", - successful_calls, failed_calls, iterations)); - - orb->destroy (ACE_TRY_ENV); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "Exception caught:"); - return 1; - } - ACE_ENDTRY; - - return 0; -} - -void -set_sync_scope_policy (Messaging::SyncScope sync_scope, - CORBA::Environment &ACE_TRY_ENV) -{ - int argc = 0; - CORBA::ORB_var orb = CORBA::ORB_init (argc, 0, "", ACE_TRY_ENV); - ACE_CHECK; - - CORBA::Object_var object = - orb->resolve_initial_references ("PolicyCurrent", ACE_TRY_ENV); - ACE_CHECK; - - CORBA::PolicyCurrent_var policy_current = - CORBA::PolicyCurrent::_narrow (object.in (), ACE_TRY_ENV); - ACE_CHECK; - - if (CORBA::is_nil (policy_current.in ())) - { - ACE_ERROR ((LM_ERROR, "ERROR: Nil policy current\n")); - return; - } - CORBA::Any scope_as_any; - scope_as_any <<= sync_scope; - - CORBA::PolicyList policies(1); policies.length (1); - policies[0] = - orb->create_policy (Messaging::SYNC_SCOPE_POLICY_TYPE, - scope_as_any, - ACE_TRY_ENV); - ACE_CHECK; - - policy_current->set_policy_overrides (policies, CORBA::ADD_OVERRIDE, - ACE_TRY_ENV); - ACE_CHECK; - - policies[0]->destroy (ACE_TRY_ENV); - ACE_CHECK; -} - -void -run_one_iteration (int i, - Test::Oneway_Receiver_ptr oneway_receiver, - Test::Shutdown_Helper_ptr shutdown_helper, - CORBA::Environment &ACE_TRY_ENV) -{ - ACE_TRY - { - if (i == iterations / 3) - { - ACE_DEBUG ((LM_DEBUG, "Destroying object\n")); - server_status = DESTROYED; - oneway_receiver->destroy (ACE_TRY_ENV); - ACE_TRY_CHECK; - } - if (i == 2 * iterations / 3) - { - ACE_DEBUG ((LM_DEBUG, "Shutting down server process\n")); - server_status = SHUTDOWN; - shutdown_helper->shutdown (ACE_TRY_ENV); - ACE_TRY_CHECK; - } - } - ACE_CATCHANY - { - } - ACE_ENDTRY; - - oneway_receiver->raise_no_permission (ACE_TRY_ENV); - ACE_CHECK; -} - -/// Helper routine to set breakpoints during failures -void -call_failed (const CORBA::SystemException &ex) -{ - failed_calls++; - - ACE_PRINT_EXCEPTION (ex, "Exception raised"); -} - -void -run_test_sync_with_target (Test::Oneway_Receiver_ptr oneway_receiver, - CORBA::Environment &ACE_TRY_ENV) -{ - set_sync_scope_policy (Messaging::SYNC_WITH_TARGET, ACE_TRY_ENV); - ACE_CHECK; - - Test::Shutdown_Helper_var shutdown_helper = - oneway_receiver->get_shutdown_helper (ACE_TRY_ENV); - ACE_CHECK; - - int had_comm_failure = 0; - for (int i = 0; i != iterations; ++i) - { - ACE_TRY - { - run_one_iteration (i, oneway_receiver, shutdown_helper.in (), - ACE_TRY_ENV); - ACE_TRY_CHECK; - } - ACE_CATCH (CORBA::NO_PERMISSION, ex) - { - if (server_status == ALIVE) - successful_calls++; - else - call_failed (ex); - } - ACE_CATCH (CORBA::OBJECT_NOT_EXIST, ex) - { - if (server_status == DESTROYED) - successful_calls++; - else - call_failed (ex); - } - ACE_CATCH (CORBA::COMM_FAILURE, ex) - { - if (server_status == SHUTDOWN && had_comm_failure == 0) - successful_calls++; - else - call_failed (ex); - had_comm_failure = 1; - } - ACE_CATCH (CORBA::TRANSIENT, ex) - { - if (server_status == SHUTDOWN) - successful_calls++; - else - call_failed (ex); - } - ACE_CATCH (CORBA::SystemException, ex) - { - call_failed (ex); - } - ACE_ENDTRY; - } -} - -void -run_test_sync_with_server (Test::Oneway_Receiver_ptr oneway_receiver, - CORBA::Environment &ACE_TRY_ENV) -{ - set_sync_scope_policy (Messaging::SYNC_WITH_SERVER, ACE_TRY_ENV); - ACE_CHECK; - - Test::Shutdown_Helper_var shutdown_helper = - oneway_receiver->get_shutdown_helper (ACE_TRY_ENV); - ACE_CHECK; - - int had_comm_failure = 0; - for (int i = 0; i != iterations; ++i) - { - ACE_TRY - { - run_one_iteration (i, oneway_receiver, shutdown_helper.in (), - ACE_TRY_ENV); - ACE_TRY_CHECK; - - if (server_status == DESTROYED - || server_status == SHUTDOWN) - failed_calls++; - else - successful_calls++; - } - ACE_CATCH (CORBA::NO_PERMISSION, ex) - { - call_failed (ex); - } - ACE_CATCH (CORBA::OBJECT_NOT_EXIST, ex) - { - if (server_status == DESTROYED) - successful_calls++; - else - call_failed (ex); - } - ACE_CATCH (CORBA::COMM_FAILURE, ex) - { - if (server_status == SHUTDOWN && had_comm_failure == 0) - successful_calls++; - else - call_failed (ex); - had_comm_failure = 1; - } - ACE_CATCH (CORBA::TRANSIENT, ex) - { - if (server_status == SHUTDOWN) - successful_calls++; - else - call_failed (ex); - } - ACE_CATCH (CORBA::SystemException, ex) - { - call_failed (ex); - } - ACE_ENDTRY; - } -} - -/// Helper routine to run the sync_with_transport and sync_none tests. -void -run_test_unreliable (Test::Oneway_Receiver_ptr oneway_receiver, - CORBA::Environment &ACE_TRY_ENV); - -void -run_test_sync_with_transport (Test::Oneway_Receiver_ptr oneway_receiver, - CORBA::Environment &ACE_TRY_ENV) -{ - set_sync_scope_policy (Messaging::SYNC_WITH_TRANSPORT, ACE_TRY_ENV); - ACE_CHECK; - - run_test_unreliable (oneway_receiver, ACE_TRY_ENV); - ACE_CHECK; -} - -void -run_test_sync_none (Test::Oneway_Receiver_ptr oneway_receiver, - CORBA::Environment &ACE_TRY_ENV) -{ - set_sync_scope_policy (Messaging::SYNC_NONE, ACE_TRY_ENV); - ACE_CHECK; - - run_test_unreliable (oneway_receiver, ACE_TRY_ENV); - ACE_CHECK; -} - - -void -run_test_unreliable (Test::Oneway_Receiver_ptr oneway_receiver, - CORBA::Environment &ACE_TRY_ENV) -{ - Test::Shutdown_Helper_var shutdown_helper = - oneway_receiver->get_shutdown_helper (ACE_TRY_ENV); - ACE_CHECK; - - int undetected = 0; - int had_transient = 0; - for (int i = 0; i != iterations; ++i) - { - ACE_TRY - { - run_one_iteration (i, oneway_receiver, shutdown_helper.in (), - ACE_TRY_ENV); - ACE_TRY_CHECK; - - // A few failures can go undetected... - if (server_status == SHUTDOWN) - undetected++; - - // Once a TRANSIENT is raised all future calls should fail. - if (had_transient) - failed_calls++; - else - successful_calls++; - } - ACE_CATCH (CORBA::NO_PERMISSION, ex) - { - call_failed (ex); - } - ACE_CATCH (CORBA::OBJECT_NOT_EXIST, ex) - { - call_failed (ex); - } - ACE_CATCH (CORBA::COMM_FAILURE, ex) - { - call_failed (ex); - } - ACE_CATCH (CORBA::TRANSIENT, ex) - { - if (server_status == SHUTDOWN) - successful_calls++; - else - call_failed (ex); - had_transient = 1; - } - ACE_CATCH (CORBA::SystemException, ex) - { - call_failed (ex); - } - ACE_ENDTRY; - } - ACE_DEBUG ((LM_DEBUG, "Undetected TRANSIENT count = %d\n", - undetected)); -} |