diff options
author | dbudko <dbudko@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-11-17 11:49:09 +0000 |
---|---|---|
committer | dbudko <dbudko@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-11-17 11:49:09 +0000 |
commit | d7b8cd35b5db3469ba42125b6b020cf271351fce (patch) | |
tree | 15fb819ad66de214ff073b7e6e13809edcb1ab42 /TAO/DevGuideExamples/PortableInterceptors | |
parent | 474b7a561c829553b7218c5b4680bbb396e60f54 (diff) | |
download | ATCD-d7b8cd35b5db3469ba42125b6b020cf271351fce.tar.gz |
Tue Nov 17 11:45:03 UTC 2009 Denis Budko <denis.budko@remedy.nl>
* orbsvcs/DevGuideExamples/Security/ParticipatingApp/MessengerServer.cpp:
* orbsvcs/DevGuideExamples/Security/ParticipatingApp/MessengerClient.cpp:
* orbsvcs/DevGuideExamples/Security/ParticipatingApp/run_test.pl:
* DevGuideExamples/Multithreading/Reactive/MessengerServer.cpp:
* DevGuideExamples/Multithreading/Reactive/MessengerClient.cpp:
* DevGuideExamples/Multithreading/Reactive/run_test.pl:
* DevGuideExamples/ValueTypes/Messenger/MessengerServer.cpp:
* DevGuideExamples/ValueTypes/Messenger/MessengerClient.cpp:
* DevGuideExamples/ValueTypes/Messenger/run_test.pl:
* DevGuideExamples/ValueTypes/Bank/server.cpp:
* DevGuideExamples/ValueTypes/Bank/run_test.pl:
* DevGuideExamples/ValueTypes/Bank/client.cpp:
* DevGuideExamples/LocalObjects/ServantLocator/MessengerServer.cpp:
* DevGuideExamples/LocalObjects/ServantLocator/run_test.pl:
* DevGuideExamples/GettingStarted/MessengerServer.cpp:
* DevGuideExamples/GettingStarted/MessengerClient.cpp:
* DevGuideExamples/GettingStarted/run_test.pl:
* DevGuideExamples/PortableInterceptors/Auth/MessengerServer.cpp:
* DevGuideExamples/PortableInterceptors/Auth/MessengerClient.cpp:
* DevGuideExamples/PortableInterceptors/Auth/run_test.pl:
* DevGuideExamples/PortableInterceptors/SimpleCodec/MessengerServer.cpp:
* DevGuideExamples/PortableInterceptors/SimpleCodec/MessengerClient.cpp:
* DevGuideExamples/PortableInterceptors/SimpleCodec/run_test.pl:
* DevGuideExamples/PortableInterceptors/IOR/MessengerServer.cpp:
* DevGuideExamples/PortableInterceptors/IOR/MessengerClient.cpp:
* DevGuideExamples/PortableInterceptors/IOR/run_test.pl:
* DevGuideExamples/PortableInterceptors/PICurrent/MessengerServer.cpp:
* DevGuideExamples/PortableInterceptors/PICurrent/MessengerClient.cpp:
* DevGuideExamples/PortableInterceptors/PICurrent/run_test.pl:
* DevGuideExamples/RTCORBA/MessengerServer.cpp:
* DevGuideExamples/RTCORBA/run_test.pl:
* DevGuideExamples/Messaging/AMIcallback/MessengerServer.cpp:
* DevGuideExamples/Messaging/AMIcallback/MessengerClient.cpp:
* DevGuideExamples/Messaging/AMIcallback/run_test.pl:
* DevGuideExamples/Messaging/RelativeRoundtripTimeout/MessengerServer.cpp:
* DevGuideExamples/Messaging/RelativeRoundtripTimeout/MessengerClient.cpp:
* DevGuideExamples/Messaging/RelativeRoundtripTimeout/run_test.pl:
* tests/OBV/Supports/client.cpp:
* tests/OBV/Supports/server.cpp:
* tests/OBV/Supports/run_test.pl:
* tests/Bug_2683_Regression/run_test.pl:
* tests/Exposed_Policies/run_test.pl:
* bin/tao_other_tests.lst:
* bin/tao_orb_tests.lst:
* examples/PluggableUDP/tests/SimplePerformance/client.cpp:
* examples/PluggableUDP/tests/SimplePerformance/run_test_ipv6.pl:
* examples/PluggableUDP/tests/SimplePerformance/server.cpp:
* examples/PluggableUDP/tests/SimplePerformance/run_test.pl:
Tests are converted to use new test framework and added to fuzz build.
Diffstat (limited to 'TAO/DevGuideExamples/PortableInterceptors')
12 files changed, 532 insertions, 132 deletions
diff --git a/TAO/DevGuideExamples/PortableInterceptors/Auth/MessengerClient.cpp b/TAO/DevGuideExamples/PortableInterceptors/Auth/MessengerClient.cpp index bbfb7aab4e2..46ad1a97cca 100644 --- a/TAO/DevGuideExamples/PortableInterceptors/Auth/MessengerClient.cpp +++ b/TAO/DevGuideExamples/PortableInterceptors/Auth/MessengerClient.cpp @@ -6,6 +6,35 @@ // Ensure that the PI library is linked in when building statically #include "tao/PI/PI.h" #include <iostream> +#include "ace/Get_Opt.h" + +const ACE_TCHAR *ior = ACE_TEXT ("file://Messenger.ior"); + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("k:")); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'k': + ior = get_opts.opt_arg (); + break; + + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-k <ior> " + "\n", + argv [0]), + -1); + } + // Indicates successful parsing of the command line + return 0; +} int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) @@ -19,7 +48,10 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "Client ORB"); - CORBA::Object_var obj = orb->string_to_object( "file://Messenger.ior" ); + if (parse_args (argc, argv) != 0) + return 1; + + CORBA::Object_var obj = orb->string_to_object( ior ); if ( CORBA::is_nil(obj.in() ) ) { std::cerr << "Nil Messenger reference" << std::endl; diff --git a/TAO/DevGuideExamples/PortableInterceptors/Auth/MessengerServer.cpp b/TAO/DevGuideExamples/PortableInterceptors/Auth/MessengerServer.cpp index 162ff20e7cd..e2f8d786fe1 100644 --- a/TAO/DevGuideExamples/PortableInterceptors/Auth/MessengerServer.cpp +++ b/TAO/DevGuideExamples/PortableInterceptors/Auth/MessengerServer.cpp @@ -8,6 +8,35 @@ #include "tao/PI_Server/PI_Server.h" #include <iostream> #include <fstream> +#include "ace/Get_Opt.h" + +const ACE_TCHAR *ior_output_file = ACE_TEXT ("Messenger.ior"); + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("o:")); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'o': + ior_output_file = get_opts.opt_arg (); + break; + + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-o <iorfile>" + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command line + return 0; +} int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) @@ -22,6 +51,9 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "Server ORB"); + if (parse_args (argc, argv) != 0) + return 1; + //Get reference to Root POA CORBA::Object_var obj = orb->resolve_initial_references( "RootPOA" ); PortableServer::POA_var poa = PortableServer::POA::_narrow( obj.in() ); @@ -38,10 +70,10 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) CORBA::Object_var messenger_obj = poa->id_to_reference( oid.in() ); CORBA::String_var str = orb->object_to_string( messenger_obj.in() ); - std::ofstream iorFile ( "Messenger.ior" ); + std::ofstream iorFile ( ACE_TEXT_ALWAYS_CHAR(ior_output_file) ); iorFile << str.in() << std::endl; iorFile.close(); - std::cout << std::endl << "IOR written to file Messenger.ior" << std::endl; + std::cout << std::endl << "IOR written to file " << ACE_TEXT_ALWAYS_CHAR(ior_output_file) << std::endl; // Accept requests orb->run(); diff --git a/TAO/DevGuideExamples/PortableInterceptors/Auth/run_test.pl b/TAO/DevGuideExamples/PortableInterceptors/Auth/run_test.pl index 2b479ea579c..2b431dd59e6 100755 --- a/TAO/DevGuideExamples/PortableInterceptors/Auth/run_test.pl +++ b/TAO/DevGuideExamples/PortableInterceptors/Auth/run_test.pl @@ -1,41 +1,75 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + # $Id$ +# -*- perl -*- -eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' - & eval 'exec perl -S $0 $argv:q' - if 0; - -use Env (ACE_ROOT); -use lib "$ACE_ROOT/bin"; -use PerlACE::Run_Test; - -# start MessengerServer -my($iorfile) = 'Messenger.ior'; -unlink($iorfile); - -$S = new PerlACE::Process("MessengerServer"); -$S->Spawn(); -if (PerlACE::waitforfile_timed ( - $iorfile, - $PerlACE::wait_interval_for_process_creation) == -1) { - print STDERR "ERROR: cannot find file <$iorfile>\n"; - $SV->Kill(); - exit(1); -} - -# start MessengerClient -select undef, undef, undef, .5; -$C = new PerlACE::Process("MessengerClient"); +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$status = 0; +$debug_level = '0'; + +foreach $i (@ARGV) { + if ($i eq '-debug') { + $debug_level = '10'; + } +} + +my $server = PerlACE::TestTarget::create_target (1) || die "Create target 1 failed\n"; +my $client = PerlACE::TestTarget::create_target (2) || die "Create target 2 failed\n"; + +my $iorbase = "Messenger.ior"; +my $server_iorfile = $server->LocalFile ($iorbase); +my $client_iorfile = $client->LocalFile ($iorbase); +$server->DeleteFile($iorbase); +$client->DeleteFile($iorbase); + +$SV = $server->CreateProcess ("MessengerServer", "-ORBdebuglevel $debug_level -o $server_iorfile"); +$CL = $client->CreateProcess ("MessengerClient", "-k file://$client_iorfile"); +$server_status = $SV->Spawn (); -if ($C->SpawnWaitKill(15) != 0) { - $S->Kill(); - exit (1); +if ($server_status != 0) { + print STDERR "ERROR: server returned $server_status\n"; + exit 1; } -# clean-up -$S->Kill(); -unlink($iorfile); +if ($server->WaitForFileTimed ($iorbase, + $server->ProcessStartWaitInterval()) == -1) { + print STDERR "ERROR: cannot find file <$server_iorfile>\n"; + $SV->Kill (); $SV->TimedWait (1); + exit 1; +} + +if ($server->GetFile ($iorbase) == -1) { + print STDERR "ERROR: cannot retrieve file <$server_iorfile>\n"; + $SV->Kill (); $SV->TimedWait (1); + exit 1; +} + +if ($client->PutFile ($iorbase) == -1) { + print STDERR "ERROR: cannot set file <$client_iorfile>\n"; + $SV->Kill (); $SV->TimedWait (1); + exit 1; +} -exit 0; +select undef, undef, undef, .5; +$client_status = $CL->SpawnWaitKill ($client->ProcessStartWaitInterval()); + +if ($client_status != 0) { + print STDERR "ERROR: client returned $client_status\n"; + $status = 1; +} +$server_status = $SV->Kill (); + +if ($server_status != 0) { + print STDERR "ERROR: server returned $server_status\n"; + $status = 1; +} +$server->DeleteFile($iorbase); +$client->DeleteFile($iorbase); +exit $status; diff --git a/TAO/DevGuideExamples/PortableInterceptors/IOR/MessengerClient.cpp b/TAO/DevGuideExamples/PortableInterceptors/IOR/MessengerClient.cpp index 1d743cad3fe..10cfb5c70cd 100644 --- a/TAO/DevGuideExamples/PortableInterceptors/IOR/MessengerClient.cpp +++ b/TAO/DevGuideExamples/PortableInterceptors/IOR/MessengerClient.cpp @@ -6,6 +6,36 @@ // Ensure that the PI library is linked in when building statically #include "tao/PI/PI.h" #include <iostream> +#include "ace/Get_Opt.h" + +const ACE_TCHAR *ior = ACE_TEXT ("file://Messenger.ior"); + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("k:")); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'k': + ior = get_opts.opt_arg (); + break; + + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-k <ior> " + "\n", + argv [0]), + -1); + } + // Indicates successful parsing of the command line + return 0; +} + int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { @@ -19,8 +49,11 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) // Initialize orb CORBA::ORB_var orb = CORBA::ORB_init( argc, argv ); + if (parse_args (argc, argv) != 0) + return 1; + // Destringify ior - CORBA::Object_var obj = orb->string_to_object( "file://Messenger.ior" ); + CORBA::Object_var obj = orb->string_to_object( ior ); if( CORBA::is_nil( obj.in() ) ) { std::cerr << "Nil Messenger reference" << std::endl; return 1; diff --git a/TAO/DevGuideExamples/PortableInterceptors/IOR/MessengerServer.cpp b/TAO/DevGuideExamples/PortableInterceptors/IOR/MessengerServer.cpp index d4a23c6d70b..eec45d66938 100644 --- a/TAO/DevGuideExamples/PortableInterceptors/IOR/MessengerServer.cpp +++ b/TAO/DevGuideExamples/PortableInterceptors/IOR/MessengerServer.cpp @@ -8,6 +8,35 @@ #include "tao/PI_Server/PI_Server.h" #include <iostream> #include <fstream> +#include "ace/Get_Opt.h" + +const ACE_TCHAR *ior_output_file = ACE_TEXT ("Messenger.ior"); + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("o:")); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'o': + ior_output_file = get_opts.opt_arg (); + break; + + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-o <iorfile>" + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command line + return 0; +} int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) @@ -21,6 +50,9 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) // Initialize orb CORBA::ORB_var orb = CORBA::ORB_init( argc, argv ); + if (parse_args (argc, argv) != 0) + return 1; + //Get reference to Root POA CORBA::Object_var obj = orb->resolve_initial_references( "RootPOA" ); PortableServer::POA_var poa = PortableServer::POA::_narrow( obj.in() ); @@ -38,10 +70,10 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) poa->activate_object( messenger_servant.in() ); CORBA::Object_var messenger_obj = poa->id_to_reference( oid.in() ); CORBA::String_var str = orb->object_to_string( messenger_obj.in() ); - std::ofstream iorFile( "Messenger.ior" ); + std::ofstream iorFile( ACE_TEXT_ALWAYS_CHAR(ior_output_file) ); iorFile << str.in() << std::endl; iorFile.close(); - std::cout << "IOR written to file Messenger.ior" << std::endl; + std::cout << "IOR written to file " << ACE_TEXT_ALWAYS_CHAR(ior_output_file) << std::endl; // Accept requests orb->run(); diff --git a/TAO/DevGuideExamples/PortableInterceptors/IOR/run_test.pl b/TAO/DevGuideExamples/PortableInterceptors/IOR/run_test.pl index ec593d127ee..2b431dd59e6 100755 --- a/TAO/DevGuideExamples/PortableInterceptors/IOR/run_test.pl +++ b/TAO/DevGuideExamples/PortableInterceptors/IOR/run_test.pl @@ -1,39 +1,75 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + # $Id$ +# -*- perl -*- -eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' - & eval 'exec perl -S $0 $argv:q' - if 0; - -use Env (ACE_ROOT); -use lib "$ACE_ROOT/bin"; -use PerlACE::Run_Test; - -# start MessengerServer -my($iorfile) = 'Messenger.ior'; -unlink $iorfile; - -$S = new PerlACE::Process("MessengerServer"); -$S->Spawn(); -if (PerlACE::waitforfile_timed ( - $iorfile, - $PerlACE::wait_interval_for_process_creation) == -1) { - print STDERR "ERROR: cannot find file <$iorfile>\n"; - $SV->Kill(); - exit(1); +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$status = 0; +$debug_level = '0'; + +foreach $i (@ARGV) { + if ($i eq '-debug') { + $debug_level = '10'; + } +} + +my $server = PerlACE::TestTarget::create_target (1) || die "Create target 1 failed\n"; +my $client = PerlACE::TestTarget::create_target (2) || die "Create target 2 failed\n"; + +my $iorbase = "Messenger.ior"; +my $server_iorfile = $server->LocalFile ($iorbase); +my $client_iorfile = $client->LocalFile ($iorbase); +$server->DeleteFile($iorbase); +$client->DeleteFile($iorbase); + +$SV = $server->CreateProcess ("MessengerServer", "-ORBdebuglevel $debug_level -o $server_iorfile"); +$CL = $client->CreateProcess ("MessengerClient", "-k file://$client_iorfile"); +$server_status = $SV->Spawn (); + +if ($server_status != 0) { + print STDERR "ERROR: server returned $server_status\n"; + exit 1; +} + +if ($server->WaitForFileTimed ($iorbase, + $server->ProcessStartWaitInterval()) == -1) { + print STDERR "ERROR: cannot find file <$server_iorfile>\n"; + $SV->Kill (); $SV->TimedWait (1); + exit 1; +} + +if ($server->GetFile ($iorbase) == -1) { + print STDERR "ERROR: cannot retrieve file <$server_iorfile>\n"; + $SV->Kill (); $SV->TimedWait (1); + exit 1; +} + +if ($client->PutFile ($iorbase) == -1) { + print STDERR "ERROR: cannot set file <$client_iorfile>\n"; + $SV->Kill (); $SV->TimedWait (1); + exit 1; } -# start MessengerClient select undef, undef, undef, .5; -$C = new PerlACE::Process("MessengerClient"); +$client_status = $CL->SpawnWaitKill ($client->ProcessStartWaitInterval()); -if ($C->SpawnWaitKill(15) != 0) { - $S->Kill(); - exit (1); +if ($client_status != 0) { + print STDERR "ERROR: client returned $client_status\n"; + $status = 1; } -# clean-up -$S->Kill(); +$server_status = $SV->Kill (); + +if ($server_status != 0) { + print STDERR "ERROR: server returned $server_status\n"; + $status = 1; +} -unlink $iorfile; +$server->DeleteFile($iorbase); +$client->DeleteFile($iorbase); -exit 0; +exit $status; diff --git a/TAO/DevGuideExamples/PortableInterceptors/PICurrent/MessengerClient.cpp b/TAO/DevGuideExamples/PortableInterceptors/PICurrent/MessengerClient.cpp index 8992a47f748..d5d6761f965 100644 --- a/TAO/DevGuideExamples/PortableInterceptors/PICurrent/MessengerClient.cpp +++ b/TAO/DevGuideExamples/PortableInterceptors/PICurrent/MessengerClient.cpp @@ -7,6 +7,36 @@ // Ensure that the PI library is linked in when building statically #include "tao/PI/PI.h" #include <iostream> +#include "ace/Get_Opt.h" + +const ACE_TCHAR *ior = ACE_TEXT ("file://Messenger.ior"); + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("k:")); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'k': + ior = get_opts.opt_arg (); + break; + + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-k <ior> " + "\n", + argv [0]), + -1); + } + // Indicates successful parsing of the command line + return 0; +} + int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) @@ -22,12 +52,14 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "Client ORB"); + if (parse_args (argc, argv) != 0) + return 1; // Now that the ORB is initialized (and subsequently the // PICurrent), we can set the slot data on the PICurrent for our // interceptor initializer. temp_initializer->set_slot_data (); - CORBA::Object_var obj = orb->string_to_object( "file://Messenger.ior" ); + CORBA::Object_var obj = orb->string_to_object( ior ); if ( CORBA::is_nil(obj.in() ) ) { std::cerr << "Nil Messenger reference" << std::endl; return 1; diff --git a/TAO/DevGuideExamples/PortableInterceptors/PICurrent/MessengerServer.cpp b/TAO/DevGuideExamples/PortableInterceptors/PICurrent/MessengerServer.cpp index 45871eda26c..bcf37b51d37 100644 --- a/TAO/DevGuideExamples/PortableInterceptors/PICurrent/MessengerServer.cpp +++ b/TAO/DevGuideExamples/PortableInterceptors/PICurrent/MessengerServer.cpp @@ -10,6 +10,35 @@ #include <iostream> #include <fstream> #include <fstream> +#include "ace/Get_Opt.h" + +const ACE_TCHAR *ior_output_file = ACE_TEXT ("Messenger.ior"); + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("o:")); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'o': + ior_output_file = get_opts.opt_arg (); + break; + + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-o <iorfile>" + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command line + return 0; +} int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) @@ -24,6 +53,9 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "Server ORB"); + if (parse_args (argc, argv) != 0) + return 1; + //Get reference to Root POA CORBA::Object_var obj = orb->resolve_initial_references( "RootPOA" ); PortableServer::POA_var poa = PortableServer::POA::_narrow( obj.in() ); @@ -40,10 +72,10 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) CORBA::Object_var messenger_obj = poa->id_to_reference( oid.in() ); CORBA::String_var str = orb->object_to_string( messenger_obj.in() ); - std::ofstream iorFile ( "Messenger.ior" ); + std::ofstream iorFile ( ACE_TEXT_ALWAYS_CHAR(ior_output_file) ); iorFile << str.in() << std::endl; iorFile.close(); - std::cout << std::endl << "IOR written to file Messenger.ior" << std::endl; + std::cout << std::endl << "IOR written to file " << ACE_TEXT_ALWAYS_CHAR(ior_output_file) << std::endl; // Accept requests orb->run(); diff --git a/TAO/DevGuideExamples/PortableInterceptors/PICurrent/run_test.pl b/TAO/DevGuideExamples/PortableInterceptors/PICurrent/run_test.pl index fd018aa7160..186e6724704 100755 --- a/TAO/DevGuideExamples/PortableInterceptors/PICurrent/run_test.pl +++ b/TAO/DevGuideExamples/PortableInterceptors/PICurrent/run_test.pl @@ -1,39 +1,76 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + # $Id$ +# -*- perl -*- -eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' - & eval 'exec perl -S $0 $argv:q' - if 0; - -use Env (ACE_ROOT); -use lib "$ACE_ROOT/bin"; -use PerlACE::Run_Test; - -$ior = "Messenger.ior"; -unlink $ior; - -# start MessengerServer -$S = new PerlACE::Process("MessengerServer"); -$S->Spawn(); -if (PerlACE::waitforfile_timed ($ior, $PerlACE::wait_interval_for_process_creation) == -1) { - print STDERR "ERROR: cannot find file $ior\n"; - $S->Kill(); +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$status = 0; +$debug_level = '0'; + +foreach $i (@ARGV) { + if ($i eq '-debug') { + $debug_level = '10'; + } +} + +my $server = PerlACE::TestTarget::create_target (1) || die "Create target 1 failed\n"; +my $client = PerlACE::TestTarget::create_target (2) || die "Create target 2 failed\n"; + +my $iorbase = "Messenger.ior"; +my $server_iorfile = $server->LocalFile ($iorbase); +my $client_iorfile = $client->LocalFile ($iorbase); +$server->DeleteFile($iorbase); +$client->DeleteFile($iorbase); + +$SV = $server->CreateProcess ("MessengerServer", "-ORBdebuglevel $debug_level -o $server_iorfile"); +$CL = $client->CreateProcess ("MessengerClient", "-ORBInitRef Messenger=file://$client_iorfile ". + "-k file://$client_iorfile"); +$server_status = $SV->Spawn (); + +if ($server_status != 0) { + print STDERR "ERROR: server returned $server_status\n"; exit 1; } -# start MessengerClient -select undef, undef, undef, .5; -$C = new PerlACE::Process("MessengerClient", " -ORBInitRef Messenger=file://$ior"); +if ($server->WaitForFileTimed ($iorbase, + $server->ProcessStartWaitInterval()) == -1) { + print STDERR "ERROR: cannot find file <$server_iorfile>\n"; + $SV->Kill (); $SV->TimedWait (1); + exit 1; +} + +if ($server->GetFile ($iorbase) == -1) { + print STDERR "ERROR: cannot retrieve file <$server_iorfile>\n"; + $SV->Kill (); $SV->TimedWait (1); + exit 1; +} -if ($C->SpawnWaitKill(15) != 0) { - $S->Kill(); - exit (1); +if ($client->PutFile ($iorbase) == -1) { + print STDERR "ERROR: cannot set file <$client_iorfile>\n"; + $SV->Kill (); $SV->TimedWait (1); + exit 1; } -# clean-up -$S->Kill(); -#unlink $ior; +select undef, undef, undef, .5; +$client_status = $CL->SpawnWaitKill ($client->ProcessStartWaitInterval()); -exit 0; +if ($client_status != 0) { + print STDERR "ERROR: client returned $client_status\n"; + $status = 1; +} +$server_status = $SV->Kill (); + +if ($server_status != 0) { + print STDERR "ERROR: server returned $server_status\n"; + $status = 1; +} +$server->DeleteFile($iorbase); +$client->DeleteFile($iorbase); +exit $status; diff --git a/TAO/DevGuideExamples/PortableInterceptors/SimpleCodec/MessengerClient.cpp b/TAO/DevGuideExamples/PortableInterceptors/SimpleCodec/MessengerClient.cpp index 599126a385f..b855692098c 100644 --- a/TAO/DevGuideExamples/PortableInterceptors/SimpleCodec/MessengerClient.cpp +++ b/TAO/DevGuideExamples/PortableInterceptors/SimpleCodec/MessengerClient.cpp @@ -6,6 +6,36 @@ // Ensure that the PI library is linked in when building statically #include "tao/PI/PI.h" #include <iostream> +#include "ace/Get_Opt.h" + +const ACE_TCHAR *ior = ACE_TEXT ("file://Messenger.ior"); + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("k:")); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'k': + ior = get_opts.opt_arg (); + break; + + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-k <ior> " + "\n", + argv [0]), + -1); + } + // Indicates successful parsing of the command line + return 0; +} + int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) @@ -20,8 +50,11 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) // Initialize orb CORBA::ORB_var orb = CORBA::ORB_init( argc, argv ); + if (parse_args (argc, argv) != 0) + return 1; + // Destringify ior - CORBA::Object_var obj = orb->string_to_object( "file://Messenger.ior" ); + CORBA::Object_var obj = orb->string_to_object( ior ); if( CORBA::is_nil( obj.in() ) ) { std::cerr << "Nil Messenger reference" << std::endl; return 1; diff --git a/TAO/DevGuideExamples/PortableInterceptors/SimpleCodec/MessengerServer.cpp b/TAO/DevGuideExamples/PortableInterceptors/SimpleCodec/MessengerServer.cpp index c1efbd4172b..56428bff073 100644 --- a/TAO/DevGuideExamples/PortableInterceptors/SimpleCodec/MessengerServer.cpp +++ b/TAO/DevGuideExamples/PortableInterceptors/SimpleCodec/MessengerServer.cpp @@ -8,6 +8,35 @@ #include "tao/PI_Server/PI_Server.h" #include <iostream> #include <fstream> +#include "ace/Get_Opt.h" + +const ACE_TCHAR *ior_output_file = ACE_TEXT ("Messenger.ior"); + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("o:")); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'o': + ior_output_file = get_opts.opt_arg (); + break; + + case '?': + default: + ACE_ERROR_RETURN ((LM_ERROR, + "usage: %s " + "-o <iorfile>" + "\n", + argv [0]), + -1); + } + // Indicates sucessful parsing of the command line + return 0; +} int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) @@ -22,6 +51,9 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) // Initialize orb CORBA::ORB_var orb = CORBA::ORB_init( argc, argv ); + if (parse_args (argc, argv) != 0) + return 1; + //Get reference to Root POA CORBA::Object_var obj = orb->resolve_initial_references( "RootPOA" ); PortableServer::POA_var poa = PortableServer::POA::_narrow( obj.in() ); @@ -39,10 +71,10 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) poa->activate_object( messenger_servant.in() ); CORBA::Object_var messenger_obj = poa->id_to_reference( oid.in() ); CORBA::String_var str = orb->object_to_string( messenger_obj.in() ); - std::ofstream iorFile( "Messenger.ior" ); + std::ofstream iorFile( ACE_TEXT_ALWAYS_CHAR(ior_output_file) ); iorFile << str.in() << std::endl; iorFile.close(); - std::cout << "IOR written to file Messenger.ior" << std::endl; + std::cout << "IOR written to file " << ACE_TEXT_ALWAYS_CHAR(ior_output_file) << std::endl; // Accept requests orb->run(); diff --git a/TAO/DevGuideExamples/PortableInterceptors/SimpleCodec/run_test.pl b/TAO/DevGuideExamples/PortableInterceptors/SimpleCodec/run_test.pl index 2b479ea579c..5c168220043 100755 --- a/TAO/DevGuideExamples/PortableInterceptors/SimpleCodec/run_test.pl +++ b/TAO/DevGuideExamples/PortableInterceptors/SimpleCodec/run_test.pl @@ -1,41 +1,76 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + # $Id$ +# -*- perl -*- -eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' - & eval 'exec perl -S $0 $argv:q' - if 0; - -use Env (ACE_ROOT); -use lib "$ACE_ROOT/bin"; -use PerlACE::Run_Test; - -# start MessengerServer -my($iorfile) = 'Messenger.ior'; -unlink($iorfile); - -$S = new PerlACE::Process("MessengerServer"); -$S->Spawn(); -if (PerlACE::waitforfile_timed ( - $iorfile, - $PerlACE::wait_interval_for_process_creation) == -1) { - print STDERR "ERROR: cannot find file <$iorfile>\n"; - $SV->Kill(); - exit(1); -} - -# start MessengerClient -select undef, undef, undef, .5; -$C = new PerlACE::Process("MessengerClient"); +use lib "$ENV{ACE_ROOT}/bin"; +use PerlACE::TestTarget; + +$status = 0; +$debug_level = '0'; -if ($C->SpawnWaitKill(15) != 0) { - $S->Kill(); - exit (1); +foreach $i (@ARGV) { + if ($i eq '-debug') { + $debug_level = '10'; + } } -# clean-up -$S->Kill(); -unlink($iorfile); +my $server = PerlACE::TestTarget::create_target (1) || die "Create target 1 failed\n"; +my $client = PerlACE::TestTarget::create_target (2) || die "Create target 2 failed\n"; + +my $iorbase = "Messenger.ior"; +my $server_iorfile = $server->LocalFile ($iorbase); +my $client_iorfile = $client->LocalFile ($iorbase); +$server->DeleteFile($iorbase); +$client->DeleteFile($iorbase); -exit 0; +$SV = $server->CreateProcess ("MessengerServer", "-ORBdebuglevel $debug_level -o $server_iorfile"); +$CL = $client->CreateProcess ("MessengerClient", "-k file://$client_iorfile"); +$server_status = $SV->Spawn (); +if ($server_status != 0) { + print STDERR "ERROR: server returned $server_status\n"; + exit 1; +} + +if ($server->WaitForFileTimed ($iorbase, + $server->ProcessStartWaitInterval()) == -1) { + print STDERR "ERROR: cannot find file <$server_iorfile>\n"; + $SV->Kill (); $SV->TimedWait (1); + exit 1; +} + +if ($server->GetFile ($iorbase) == -1) { + print STDERR "ERROR: cannot retrieve file <$server_iorfile>\n"; + $SV->Kill (); $SV->TimedWait (1); + exit 1; +} + +if ($client->PutFile ($iorbase) == -1) { + print STDERR "ERROR: cannot set file <$client_iorfile>\n"; + $SV->Kill (); $SV->TimedWait (1); + exit 1; +} + +select undef, undef, undef, .5; + +$client_status = $CL->SpawnWaitKill ($client->ProcessStartWaitInterval()); + +if ($client_status != 0) { + print STDERR "ERROR: client returned $client_status\n"; + $status = 1; +} + +$server_status = $SV->Kill (); + +if ($server_status != 0) { + print STDERR "ERROR: server returned $server_status\n"; + $status = 1; +} +$server->DeleteFile($iorbase); +$client->DeleteFile($iorbase); +exit $status; |