summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/DevGuideExamples/ImplRepo/Basic/run_test.pl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/DevGuideExamples/ImplRepo/Basic/run_test.pl')
-rwxr-xr-xTAO/orbsvcs/DevGuideExamples/ImplRepo/Basic/run_test.pl94
1 files changed, 94 insertions, 0 deletions
diff --git a/TAO/orbsvcs/DevGuideExamples/ImplRepo/Basic/run_test.pl b/TAO/orbsvcs/DevGuideExamples/ImplRepo/Basic/run_test.pl
new file mode 100755
index 00000000000..c43b69dc02d
--- /dev/null
+++ b/TAO/orbsvcs/DevGuideExamples/ImplRepo/Basic/run_test.pl
@@ -0,0 +1,94 @@
+# $Id$
+
+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;
+
+my $WAIT_TIMEOUT = 2;
+my $DEBUG_LEVEL = 1;
+my $OBJ_REF_STYLE = "-orbobjrefstyle url";
+
+my $implrepo_server = "$ENV{TAO_ROOT}/orbsvcs/ImplRepo_Service/ImplRepo_Service";
+my $imr_activator = "$ENV{TAO_ROOT}/orbsvcs/ImplRepo_Service/ImR_Activator";
+my $tao_imr = "$ENV{ACE_ROOT}/bin/tao_imr";
+
+my $implrepo_ior = "imr.ior";
+my $activator_ior = "activator.ior";
+my $messenger_ior = "messenger.ior";
+
+my $imr_init_ref = "-ORBInitRef ImplRepoService=file://$implrepo_ior";
+
+my $Svr = new PerlACE::Process('MessengerServer', "-orbuseimr 1 $OBJ_REF_STYLE $imr_init_ref");
+my $Cli = new PerlACE::Process('MessengerClient');
+
+sub CleanupOutput {
+ unlink $messenger_ior;
+ unlink $implrepo_ior;
+ unlink $activator_ior;
+}
+
+sub SpawnWait {
+ my $process = shift;
+ my $file = shift;
+
+ print ">>> " . $process->CommandLine() . "\n";
+ $process->Spawn();
+ my $ret = PerlACE::waitforfile_timed($file, $WAIT_TIMEOUT);
+ if ($ret == -1) {
+ print STDERR "ERROR: Cannot find file <$file>\n";
+ }
+ return $ret;
+}
+
+# Use url object reference style for readability, and startup timeout of 2 seconds.
+# Unlike the chapter we'll forgo using -m, because we want to be able to run this
+# as a test in our nightly builds, and multicast could interfere with other machines.
+my $ImR = new PerlACE::Process ($implrepo_server, "-d $DEBUG_LEVEL $OBJ_REF_STYLE -t 2 -o $implrepo_ior");
+my $Act = new PerlACE::Process ($imr_activator, "-d $DEBUG_LEVEL $OBJ_REF_STYLE -o $activator_ior $imr_init_ref");
+
+my $imr_util = new PerlACE::Process ("$tao_imr",
+ "$imr_init_ref add MessengerService -c \"$Svr->Executable() $OBJ_REF_STYLE -ORBUseIMR 1 $imr_init_ref\"");
+
+# We want the tao_imr executable to be found exactly in the path
+# given, without being modified by the value of -ExeSubDir.
+# So, we tell its Process object to ignore the setting of -ExeSubDir.
+$imr_util->IgnoreExeSubDir(1);
+
+sub RunImRUtil {
+ my $cmd = shift;
+ print ">>> " . $imr_util->CommandLine() . "\n";
+ $imr_util->Arguments("$imr_init_ref $cmd");
+ return $imr_util->SpawnWaitKill(5);
+}
+
+CleanupOutput();
+
+#### Start the example
+
+if (SpawnWait($ImR, $implrepo_ior) != 0) {
+ $ImR->Kill();
+ exit 1;
+}
+
+if (SpawnWait($Svr, $messenger_ior) != 0) {
+ $ImR->Kill();
+ exit 1;
+}
+
+if ($Cli->SpawnWaitKill($WAIT_TIMEOUT) != 0) {
+ print STDERR "Error : Client failed to run correctly.";
+}
+
+$Svr->Kill();
+$ImR->Kill();
+
+
+#### Clean up any output files
+
+CleanupOutput();
+
+exit 0;