diff options
author | Phil Mesnier <mesnier_p@ociweb.com> | 2013-04-29 16:41:37 +0000 |
---|---|---|
committer | Phil Mesnier <mesnier_p@ociweb.com> | 2013-04-29 16:41:37 +0000 |
commit | 321bd07e5c9f8cb03fd0cd81387a2cd8c8debfba (patch) | |
tree | fc29e181eef425aa69bd4e3efa54dfc852e72b7c /TAO/orbsvcs/tests/ImplRepo | |
parent | 7a5c2edb5a39a76f3c6030269129ce54aa297372 (diff) | |
download | ATCD-321bd07e5c9f8cb03fd0cd81387a2cd8c8debfba.tar.gz |
Mon Apr 29 16:35:35 UTC 2013 Phil Mesnier <mesnier_p@ociweb.com>
Diffstat (limited to 'TAO/orbsvcs/tests/ImplRepo')
3 files changed, 183 insertions, 96 deletions
diff --git a/TAO/orbsvcs/tests/ImplRepo/servers_interact_on_startup/client.cpp b/TAO/orbsvcs/tests/ImplRepo/servers_interact_on_startup/client.cpp index 75a025f8551..81d986b2d69 100644 --- a/TAO/orbsvcs/tests/ImplRepo/servers_interact_on_startup/client.cpp +++ b/TAO/orbsvcs/tests/ImplRepo/servers_interact_on_startup/client.cpp @@ -7,16 +7,21 @@ int client_num = 0; ACE_TCHAR *server_ior = 0; +bool expect_transient = false; int parse_args (int argc, ACE_TCHAR *argv[]) { - ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("k:n:")); + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("ek:n:")); int c; while ((c = get_opts ()) != -1) switch (c) { + case 'e': + expect_transient = true; + break; + case 'k': server_ior = get_opts.opt_arg (); break; @@ -28,9 +33,10 @@ parse_args (int argc, ACE_TCHAR *argv[]) case '?': default: ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s " - "-k <server-ior> " - "\n", + ACE_TEXT ("usage: %s ") + ACE_TEXT ("-e ") + ACE_TEXT ("-k <server-ior> ") + ACE_TEXT ("\n"), argv [0]), -1); } @@ -41,32 +47,51 @@ parse_args (int argc, ACE_TCHAR *argv[]) int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { - try { - // Initialize orb - CORBA::ORB_var orb = CORBA::ORB_init( argc, argv ); - - if (parse_args (argc, argv) != 0) - return 1; + try + { + CORBA::ORB_var orb = CORBA::ORB_init( argc, argv ); - ACE_DEBUG ((LM_DEBUG, - "(%P|%t|%T) Client %d sending request to %s\n", - client_num, server_ior)); - CORBA::Object_var obj = - orb->string_to_object (server_ior); - ACE_ASSERT (!CORBA::is_nil (obj.in ())); - Test_var test = Test::_narrow (obj.in()); - ACE_ASSERT (!CORBA::is_nil (test.in())); - CORBA::Short n = test->get_server_num (); - ACE_DEBUG ((LM_DEBUG, - "(%P|%t|%T) Client %d received reply from server %d\n", - client_num, n)); + if (parse_args (argc, argv) != 0) + return 1; - return 0; + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P|%t|%T) Client %d sending request to %C\n"), + client_num, server_ior)); + try + { + CORBA::Object_var obj = + orb->string_to_object (server_ior); + ACE_ASSERT (!CORBA::is_nil (obj.in ())); + Test_var test = Test::_narrow (obj.in()); + ACE_ASSERT (!CORBA::is_nil (test.in())); + CORBA::Short n = test->get_server_num (); + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P|%t|%T) Client %d received reply from server %d\n"), + client_num, n)); + } + catch (CORBA::TRANSIENT &) + { + if (expect_transient) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P|%t|%T) Client %d got expected transient exception\n"), + client_num)); + } + else + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P|%t|%T) Client %d caught unexpected transent\n"), + client_num)); + return -1; + } + } + return 0; - } - catch(const CORBA::Exception& ex) { - ex._tao_print_exception ("client:"); - } + } + catch(const CORBA::Exception& ex) + { + ex._tao_print_exception (ACE_TEXT ("client:")); + } return -1; } diff --git a/TAO/orbsvcs/tests/ImplRepo/servers_interact_on_startup/run_test.pl b/TAO/orbsvcs/tests/ImplRepo/servers_interact_on_startup/run_test.pl index e430ff4ffc4..5448e778d0f 100755 --- a/TAO/orbsvcs/tests/ImplRepo/servers_interact_on_startup/run_test.pl +++ b/TAO/orbsvcs/tests/ImplRepo/servers_interact_on_startup/run_test.pl @@ -11,12 +11,14 @@ use PerlACE::TestTarget; $status = 0; -my $debug_level = '0'; -my $imr_debug_level = $debug_level; +my $debug_level = 0; +my $imr_debug_level = 0; my $servers_count = 3; my $client_count = 2; my $server_reply_delay = 5; my $usage = 0; +my $use_imr_start = 0; +my $expect_transient = ""; my $debuglog = ""; my @srvlogfile = ( "", "", "" ); @@ -30,25 +32,29 @@ my $verification_interval_msecs = 1000; if ($#ARGV >= 0) { for (my $i = 0; $i <= $#ARGV; $i++) { if ($ARGV[$i] eq "-debug") { - $debug_level = '10'; - $imr_debug_level = '2'; + $debug_level = 10; + $imr_debug_level = 2; $loclogfile = "imr_loc.log"; - $i++; } elsif ($ARGV[$i] eq "-debuglog") { - $debug_level = '10'; - $imr_debug_level = '3'; + $debug_level = 10; + $imr_debug_level = 3; $debuglog = "-ORBVerboseLogging 1 -ORBLogFile "; @srvlogfile = ( "server1.log", "server2.log", "server3.log" ); @cltlogfile = ( "client1.log", "client2.log", "client3.log" ); $actlogfile = "imr_act.log"; $loclogfile = "imr_loc.log"; - $i++; } - elsif ($ARGV[$i] eq "-server_reply_delay") { + elsif ($ARGV[$i] eq "-delay") { $i++; $server_reply_delay = $ARGV[$i]; + if ($server_reply_delay > 16) { + $expect_transient = "-e"; + } } + elsif ($ARGV[$i] eq "-imr_start") { + $use_imr_start = 1; + } elsif ($ARGV[$i] eq "-v") { $i++; $verification_interval_msecs = $ARGV[$i]; @@ -79,7 +85,7 @@ my $port = $imr->RandomPort(); my $forward_on_exception_arg = "-ORBForwardOnceOnTransient 1"; my $debug_arg = "-ORBDebugLevel $debug_level " . $debuglog; -my $imr_debug_arg = "-ORBDebugLevel $imr_debug_level "; +my $imr_debug_arg = "-ORBDebugLevel $debug_level "; if ($loclogfile ne "") { $imr_debug_arg = $imr_debug_arg . "-ORBVerboseLogging 1 -ORBLogFile $loclogfile "; } @@ -123,7 +129,7 @@ for(my $i = 0; $i < $servers_count; $i++) { } for(my $i = 0; $i < $client_count; $i++) { - push (@CLI, $cli[$i]->CreateProcess ("client", "$debug_arg $cltlogfile[$i] -k file://$srviorfile[0] -n $i $forward_on_exception_arg")); + push (@CLI, $cli[$i]->CreateProcess ("client", "$debug_arg $cltlogfile[$i] -k file://$srviorfile[0] -n $i $forward_on_exception_arg $expect_transient")); if ($cltlogfile[$i] ne "") { $cli[$i]->DeleteFile ($cltlogfile[$i]); } @@ -151,8 +157,7 @@ sub run_imr_util { my $cmd = shift; print "Running ImR utility with $cmd\n"; $TI->Arguments ("-ORBInitRef ImplRepoService=file://$ti_imriorfile $cmd"); -# print ">>> " . $TI->CommandLine () . "\n"; - return $TI->SpawnWaitKill($ti->ProcessStartWaitInterval()); + return $TI->SpawnWaitKill($ti->ProcessStartWaitInterval() +$server_reply_delay); } # Register a server with ImR to get its IOR, then register again so it can later be invoked. @@ -163,6 +168,7 @@ sub register_server_with_activator { $srv_args = "$debug_arg $srvlogfile[$srv_id] -orbuseimr 1 $refstyle ". + "$expect_transient ". "$forward_on_exception_arg ". "-ORBInitRef ImplRepoService=file://$imr_imriorfile -n $srv_id"; @@ -171,7 +177,7 @@ sub register_server_with_activator { print ">>> " . $SRV[$srv_id]->CommandLine () . "\n"; $SRV[$srv_id]->Spawn (); if ($srv[$srv_id]->WaitForFileTimed ($srvstatusfile[$srv_id], - $srv[$srv_id]->ProcessStartWaitInterval() + $srv_reply_delay) == -1) { + $srv[$srv_id]->ProcessStartWaitInterval() + $server_reply_delay) == -1) { print STDERR "ERROR: cannot find file $srvstatusfile[$srv_id]\n"; $IMR->Kill (); $IMR->TimedWait (1); return 1; @@ -188,7 +194,7 @@ my $start_time = time(); cleanup_output (); -sub run_test +sub init_test { print "Running test with $servers_count servers and $obj_count objects.\n"; @@ -272,8 +278,10 @@ sub run_test print_msg ("Start S3"); - $SRV[2]->Arguments ("$debug_arg $srvlogfile[2] -orbuseimr 1 $refstyle -ORBInitRef ImplRepoService=file://$imr_imriorfile ". - "-d $server_reply_delay -n 2"); + $SRV[2]->Arguments ("$debug_arg $srvlogfile[2] -orbuseimr 1 $refstyle ". + "-d $server_reply_delay ". + "-ORBInitRef ImplRepoService=file://$imr_imriorfile -n 2"); + print ">>> " . $SRV[2]->CommandLine () . "\n"; $SRV[2]-> Spawn(); if ($srv[2]->WaitForFileTimed ($srvstatusfile[2], $srv[2]->ProcessStartWaitInterval()) == -1) { @@ -295,40 +303,10 @@ sub run_test print_msg ("Register S1 with ImR to start on demand"); register_server_with_activator(0, 1); +} - ##### C1 invokes S1 ##### - - print_msg ("C1 invokes S1"); - - print ">>> " . $CLI[0]->CommandLine () . "\n"; - $CLI_status = $CLI[0]->Spawn (); - if ($CLI_status != 0) { - print STDERR "ERROR: client 1 returned $CLI_status\n"; - return 1; - } - - ##### C2 invokes S1 in parallel with C1 after ping interval ##### - - print_msg ("C2 invokes S1 in parallel with C1 after ping interval"); - - # Let ping interval pass to ensure another ping will be done. - sleep ($verification_interval_msecs / 1000 + 1); - - print ">>> " . $CLI[1]->CommandLine () . "\n"; - $CLI_status = $CLI[1]->Spawn (); - if ($CLI_status != 0) { - print STDERR "ERROR: client 2 returned $CLI_status\n"; - return 1; - } - - ##### Wait for clients to terminate ##### - print_msg ("Wait for clients to terminate"); - for (my $i = 0; $i < $client_count; $i++) { - if ($CLI[$i]->WaitKill ($cli[$i]->ProcessStopWaitInterval () + $server_reply_delay + 60) == -1) { - print STDERR "ERROR: client $i not terminated correctly\n"; - $status = 1; - } - } +sub fini_test +{ print_msg ("Shutting down"); @@ -368,6 +346,58 @@ sub run_test return $status; } + +sub run_imr_start_test +{ + init_test (); + + $result = run_imr_util ("start $obj[1]"); + $result |= fini_test (); + + return $result; +} + +sub run_client_activate_test +{ + init_test (); + + ##### C1 invokes S1 ##### + + print_msg ("C1 invokes S1"); + + print ">>> " . $CLI[0]->CommandLine () . "\n"; + $CLI_status = $CLI[0]->Spawn (); + if ($CLI_status != 0) { + print STDERR "ERROR: client 1 returned $CLI_status\n"; + return 1; + } + + ##### C2 invokes S1 in parallel with C1 after ping interval ##### + + print_msg ("C2 invokes S1 in parallel with C1 after ping interval"); + + # Let ping interval pass to ensure another ping will be done. + sleep ($verification_interval_msecs / 1000 + 1); + + print ">>> " . $CLI[1]->CommandLine () . "\n"; + $CLI_status = $CLI[1]->Spawn (); + if ($CLI_status != 0) { + print STDERR "ERROR: client 2 returned $CLI_status\n"; + return 1; + } + + ##### Wait for clients to terminate ##### + print_msg ("Wait for clients to terminate"); + for (my $i = 0; $i < $client_count; $i++) { + if ($CLI[$i]->WaitKill ($cli[$i]->ProcessStopWaitInterval () + $server_reply_delay + 60) == -1) { + print STDERR "ERROR: client $i not terminated correctly\n"; + $status = 1; + } + } + + return fini_test (); +} + END { if (! $usage) { @@ -385,6 +415,12 @@ sub usage() { ############################################################################### ############################################################################### -my $ret = run_test(); +my $ret = 0; +if ($use_imr_start == 1) { + $ret = run_imr_start_test (); +} +else { + $ret = run_client_activate_test (); +} exit $ret; diff --git a/TAO/orbsvcs/tests/ImplRepo/servers_interact_on_startup/server.cpp b/TAO/orbsvcs/tests/ImplRepo/servers_interact_on_startup/server.cpp index 2a642b40cd6..5f6906facac 100644 --- a/TAO/orbsvcs/tests/ImplRepo/servers_interact_on_startup/server.cpp +++ b/TAO/orbsvcs/tests/ImplRepo/servers_interact_on_startup/server.cpp @@ -56,12 +56,18 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) int server_num = 0; int reply_delay_secs = 0; - ACE_Get_Opt get_opts (argc, argv, ACE_TEXT ("s:d:n:?")); + bool expect_transient = false; + + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT ("es:d:n:?")); int c; while ((c = get_opts ()) != -1) switch (c) { + case 'e': + expect_transient = true; + break; + case 's': other_server_ior = get_opts.opt_arg (); break; @@ -76,10 +82,11 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) case '?': ACE_DEBUG ((LM_DEBUG, - "usage: %s " - "-s <ior-of-server-to-invoke> " - "-d <seconds to delay before initializing POA> " - "-n Number of the server\n", + ACE_TEXT ("usage: %C ") + ACE_TEXT ("-e ") + ACE_TEXT ("-s <ior-of-server-to-invoke> ") + ACE_TEXT ("-d <seconds to delay before initializing POA> ") + ACE_TEXT ("-n Number of the server\n"), argv[0])); return 1; break; @@ -95,7 +102,7 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) PortableServer::POA_var test_poa = createPOA(root_poa.in(), poa_name.c_str ()); ACE_DEBUG ((LM_DEBUG, - "(%P|%t|%T) Server %d created POA %s\n", + ACE_TEXT ("(%P|%t|%T) Server %d created POA %C\n"), server_num, poa_name.c_str ())); PortableServer::Servant_var<Test_i> test_servant = @@ -128,16 +135,35 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) if (other_server_ior != 0) { ACE_DEBUG ((LM_DEBUG, - "(%P|%t|%T) Server %d sending request to %s\n", + ACE_TEXT ("(%P|%t|%T) Server %d sending request to %s\n"), server_num, other_server_ior)); - CORBA::Object_var other_server = - orb->string_to_object (other_server_ior); - ACE_ASSERT (!CORBA::is_nil (other_server.in ())); - Test_var test = Test::_narrow (other_server.in()); - ACE_ASSERT (!CORBA::is_nil (test.in())); - CORBA::Short n = test->get_server_num (); - ACE_DEBUG ((LM_DEBUG, - "(%P|%t|%T) Server %d received reply from server %d\n", server_num, n)); + try + { + CORBA::Object_var other_server = + orb->string_to_object (other_server_ior); + ACE_ASSERT (!CORBA::is_nil (other_server.in ())); + Test_var test = Test::_narrow (other_server.in()); + ACE_ASSERT (!CORBA::is_nil (test.in())); + CORBA::Short n = test->get_server_num (); + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P|%t|%T) Server %d received reply from server %d\n"), + server_num, n)); + } + catch (CORBA::TRANSIENT &) + { + if (expect_transient) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P|%t|%T) Server %d got expected transient exception\n"), + server_num)); + } + else + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: (%P|%t|%T) Server %d got unexpected Transent\n"), + server_num)); + } + } } @@ -155,7 +181,7 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) mgr->activate(); ACE_DEBUG ((LM_DEBUG, - "(%P|%t|%T) Server %d started serving %s\n", + ACE_TEXT ("(%P|%t|%T) Server %d started serving %C\n"), server_num, poa_name.c_str())); { @@ -170,12 +196,12 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) orb->destroy(); ACE_DEBUG ((LM_DEBUG, - "(%P|%t|%T) Server %d ending serving of %s\n", + ACE_TEXT ("(%P|%t|%T) Server %d ending serving of %C\n"), server_num, poa_name.c_str ())); } catch(const CORBA::Exception& ex) { - ex._tao_print_exception ("Server main()"); + ex._tao_print_exception (ACE_TEXT ("Server main()")); return 1; } |