summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/tests/ImplRepo
diff options
context:
space:
mode:
authorPhil Mesnier <mesnier_p@ociweb.com>2013-04-29 16:41:37 +0000
committerPhil Mesnier <mesnier_p@ociweb.com>2013-04-29 16:41:37 +0000
commit321bd07e5c9f8cb03fd0cd81387a2cd8c8debfba (patch)
treefc29e181eef425aa69bd4e3efa54dfc852e72b7c /TAO/orbsvcs/tests/ImplRepo
parent7a5c2edb5a39a76f3c6030269129ce54aa297372 (diff)
downloadATCD-321bd07e5c9f8cb03fd0cd81387a2cd8c8debfba.tar.gz
Mon Apr 29 16:35:35 UTC 2013 Phil Mesnier <mesnier_p@ociweb.com>
Diffstat (limited to 'TAO/orbsvcs/tests/ImplRepo')
-rw-r--r--TAO/orbsvcs/tests/ImplRepo/servers_interact_on_startup/client.cpp79
-rwxr-xr-xTAO/orbsvcs/tests/ImplRepo/servers_interact_on_startup/run_test.pl138
-rw-r--r--TAO/orbsvcs/tests/ImplRepo/servers_interact_on_startup/server.cpp62
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;
}