diff options
Diffstat (limited to 'CIAO/DAnCE/tests/CIAO/NodeManager-Deployments')
4 files changed, 154 insertions, 250 deletions
diff --git a/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/nm_launcher.mpc b/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/nm_launcher.mpc new file mode 100644 index 00000000000..1b8b1b16fbc --- /dev/null +++ b/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/nm_launcher.mpc @@ -0,0 +1,6 @@ +// $Id$ +project(simple_nm_launcher) : dance_config_handlers, dance_nodemanager_stub, dance_nodeapplication_stub, dance_logger { + Source_Files { + simple_nm_launcher.cpp + } +} diff --git a/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl b/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl index f7c32cc1cbd..3bed5e781d3 100755 --- a/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl +++ b/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/run_test.pl @@ -27,10 +27,6 @@ $ior_nsbase = "ns.ior"; $ior_nsfile = 0; $ior_embase = "EM.ior"; $ior_emfile = 0; -$ior_applicationbase = "Node_APP.ior"; -$ior_application = 0; -$ior_ambase = "Node_AM.ior"; -$ior_am = 0; # Processes $E = 0; @@ -56,14 +52,14 @@ sub create_targets { # daemon for ($i = 0; $i < $nr_daemon; ++$i) { $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; - $tg_daemons[$i]->AddLibPath ('../Components'); + $tg_daemons[$i]->AddLibPath ('..'); } # execution manager $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; - # $tg_exe_man->AddLibPath ('..'); + $tg_exe_man->AddLibPath ('..'); # executor (plan_launcher) $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; - #$tg_executor->AddLibPath ('..'); + $tg_executor->AddLibPath ('..'); } sub init_ior_files { @@ -72,8 +68,6 @@ sub init_ior_files { for ($i = 0; $i < $nr_daemon; ++$i) { $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); } - $ior_application = $tg_executor->LocalFile ($ior_applicationbase); - $ior_am = $tg_executor->LocalFile ($ior_ambase); delete_ior_files (); } @@ -87,9 +81,6 @@ sub delete_ior_files { for ($i = 0; $i < $nr_daemon; ++$i) { $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); } - - $tg_executor->DeleteFile ($ior_applicationbase); - $tg_executor->DeleteFile ($ior_ambase); } sub kill_node_daemon { @@ -188,16 +179,28 @@ foreach $file (@files) { $daemons_running = 1; + # Invoke execution manager. + print "Invoking execution manager\n"; + $EM = $tg_exe_man->CreateProcess ("$DANCE_ROOT/bin/dance_execution_manager", + "-e$ior_emfile --domain-nc corbaloc:rir:/NameService"); + $EM->Spawn (); + + if ($tg_exe_man->WaitForFileTimed ($ior_embase, + $tg_exe_man->ProcessStartWaitInterval ()) == -1) { + print STDERR + "ERROR: The ior file of execution manager could not be found\n"; + kill_open_processes (); + exit 1; + } + + $em_running = 1; + # Invoke executor - start the application -. print "Invoking executor - launch the application -\n"; - $E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", - "-x $file -n file://NodeApp1.ior -l -oNode"); - $E->SpawnWaitKill (120); - - print "Teardown the application\n"; - $E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", - "-n file://NodeApp1.ior -a file://$ior_application -m file://$ior_am -s"); - $E->SpawnWaitKill (120); + $E = $tg_executor->CreateProcess ("simple_em_launcher", + "file://$ior_emfile $file"); + + print "Executor finished.\n"; delete_ior_files (); diff --git a/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/run_test_cdr.pl b/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/run_test_cdr.pl deleted file mode 100755 index c3fcfd77a92..00000000000 --- a/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/run_test_cdr.pl +++ /dev/null @@ -1,230 +0,0 @@ -eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' - & eval 'exec perl -S $0 $argv:q' - if 0; - -# $Id$ -# -*- perl -*- - -use lib "$ENV{'ACE_ROOT'}/bin"; -use PerlACE::TestTarget; - -$CIAO_ROOT = "$ENV{'CIAO_ROOT'}"; -$TAO_ROOT = "$ENV{'TAO_ROOT'}"; -$DANCE_ROOT = "$ENV{'DANCE_ROOT'}"; - -$daemons_running = 0; -$em_running = 0; -$ns_running = 0; - -$nr_daemon = 1; -@ports = ( 60001 ); -@iorbases = ( "NodeApp1.ior" ); -@iorfiles = 0; -@nodenames = ( "NodeOne" ); - -# ior files other than daemon -$ior_nsbase = "ns.ior"; -$ior_nsfile = 0; -$ior_embase = "EM.ior"; -$ior_emfile = 0; -$ior_applicationbase = "Node_APP.ior"; -$ior_application = 0; -$ior_ambase = "Node_AM.ior"; -$ior_am = 0; - -# Processes -$E = 0; -$EM = 0; -$NS = 0; -@DEAMONS = 0; - -# targets -@tg_daemons = 0; -$tg_naming = 0; -$tg_exe_man = 0; -$tg_executor = 0; -$tg_convert_plan = 0; - -$status = 0; - -$ENV{"DANCE_TRACE_ENABLE"} = 0; -$ENV{"CIAO_TRACE_ENABLE"} = 0; - -sub create_targets { - # naming service - $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; - $tg_naming->AddLibPath ('..'); - # daemon - for ($i = 0; $i < $nr_daemon; ++$i) { - $tg_daemons[$i] = PerlACE::TestTarget::create_target ($i+1) || die "Create target for deamon $i failed\n"; - $tg_daemons[$i]->AddLibPath ('../Components'); - } - # execution manager - $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; - # $tg_exe_man->AddLibPath ('..'); - # executor (plan_launcher) - $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; - #$tg_executor->AddLibPath ('..'); - - $tg_convert_plan = PerlACE::TestTarget::create_target (1) || die "Could not create target for convert plan\n"; -} - -sub init_ior_files { - $ior_nsfile = $tg_naming->LocalFile ($ior_nsbase); - $ior_emfile = $tg_exe_man->LocalFile ($ior_embase); - for ($i = 0; $i < $nr_daemon; ++$i) { - $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); - } - $ior_application = $tg_executor->LocalFile ($ior_applicationbase); - $ior_am = $tg_executor->LocalFile ($ior_ambase); - - delete_ior_files (); -} - -# Delete if there are any .ior files. -sub delete_ior_files { - for ($i = 0; $i < $nr_daemon; ++$i) { - $tg_daemons[$i]->DeleteFile ($iorbases[$i]); - } - $tg_naming->DeleteFile ($ior_nsbase); - $tg_exe_man->DeleteFile ($ior_embase); - for ($i = 0; $i < $nr_daemon; ++$i) { - $iorfiles[$i] = $tg_daemons[$i]->LocalFile ($iorbases[$i]); - } -} - -sub kill_node_daemon { - for ($i = 0; $i < $nr_daemon; ++$i) { - $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); - } -} - -sub kill_open_processes { - if ($daemons_running == 1) { - kill_node_daemon (); - } - - if ($em_running == 1) { - $EM->Kill (); $EM->TimedWait (1); - } - - if ($ns_running == 1) { - $NS->Kill (); $NS->TimedWait (1); - } - # in case shutdown did not perform as expected - $tg_executor->KillAll ('ciao_componentserver'); -} - - -sub run_node_daemons { - for ($i = 0; $i < $nr_daemon; ++$i) { - $iorbase = $iorbases[$i]; - $iorfile = $iorfiles[$i]; - $port = $ports[$i]; - $nodename = $nodenames[$i]; - $iiop = "iiop://localhost:$port"; - $node_app = "$CIAO_ROOT/bin/ciao_componentserver"; - - $d_cmd = "$DANCE_ROOT/bin/dance_node_manager"; - $d_param = "-ORBEndpoint $iiop -s $node_app -n $nodename=$iorfile -t 30 --domain-nc corbaloc:rir:/NameService --instance-nc corbaloc:rir:/NameService"; - - print "Run node daemon\n"; - - $DEAMONS[$i] = $tg_daemons[$i]->CreateProcess ($d_cmd, $d_param); - $DEAMONS[$i]->Spawn (); - - if ($tg_daemons[$i]->WaitForFileTimed($iorbase, - $tg_daemons[$i]->ProcessStartWaitInterval ()) == -1) { - print STDERR - "ERROR: The ior $iorfile file of node daemon $i could not be found\n"; - for (; $i >= 0; --$i) { - $DEAMONS[$i]->Kill (); $DEAMONS[$i]->TimedWait (1); - } - return -1; - } - } - return 0; -} - -if ($#ARGV == -1) { - opendir(DIR, "."); - @files = grep(/\.cdp$/,readdir(DIR)); - closedir(DIR); -} -else { - @files = @ARGV; -} - -create_targets (); -init_ior_files (); - -foreach $file (@files) { - print "Starting test for deployment $file\n"; - - print STDERR "Starting Naming Service\n"; - - $NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 0 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); - $NS->Spawn (); - - if ($tg_naming->WaitForFileTimed ($ior_nsbase, - $tg_naming->ProcessStartWaitInterval ()) == -1) { - print STDERR "ERROR: cannot find naming service IOR file\n"; - $NS->Kill (); $NS->TimedWait (1); - exit 1; - } - - $ns_running = 1; - # Set up NamingService environment - $ENV{"NameServiceIOR"} = "corbaloc:iiop:localhost:60003/NameService"; - - # Invoke node daemon. - print "Invoking node daemon\n"; - $status = run_node_daemons (); - - if ($status != 0) { - print STDERR "ERROR: Unable to execute the node daemons\n"; - kill_open_processes (); - exit 1; - } - - $daemons_running = 1; - - print "Converting plan to CDR representation\n"; - $cdr_planbase = "$file" . ".cdr"; - $cdr_plan = $tg_convert_plan->LocalFile ($cdr_planbase); - $convert = $tg_convert_plan->CreateProcess("$DANCE_ROOT/bin/dance_convert_plan", - "-x $file -o $cdr_plan"); - - $convert->Spawn (); - - if ($tg_convert_plan->WaitForFileTimed ($cdr_planbase, - 30) == -1) { - print STDERR "ERROR: Convert Plan failed to output $cdr_plan.\n"; - kill_open_processes (); - next; - } - - $convert->Kill (); - - # Invoke executor - start the application -. - print "Invoking executor - launch the application -\n"; - $E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", - "-c $file.cdr -n file://NodeApp1.ior -l -oNode"); - $E->SpawnWaitKill (120); - - print "Teardown the application\n"; - $E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", - "-n file://NodeApp1.ior -a file://Node_APP.ior -m file://Node_AM.ior -s"); - $E->SpawnWaitKill (120); - print "Executor finished.\n"; - - $tg_convert_plan->DeleteFile ($cdr_planbase); - - delete_ior_files (); - kill_open_processes (); -} - -delete_ior_files (); -kill_open_processes (); - -exit $status; diff --git a/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp b/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp new file mode 100644 index 00000000000..e0731b074ed --- /dev/null +++ b/CIAO/DAnCE/tests/CIAO/NodeManager-Deployments/simple_nm_launcher.cpp @@ -0,0 +1,125 @@ +/** + * @file simple_nm_launcher.cpp + * @author William R. Otte <wotte@dre.vanderbilt.edu> + * $Id$ + * Launches then immediately tears down a plan. + */ + +#include "ace/OS_NS_unistd.h" +#include "tao/ORB.h" +#include "DAnCE/Logger/Logger_Service.h" +#include "DAnCE/Logger/Log_Macros.h" +#include "Deployment/Deployment_NodeApplicationC.h" +#include "Deployment/Deployment_NodeManagerC.h" +#include "Deployment/Deployment_DeploymentPlanC.h" +#include "Config_Handlers/XML_File_Intf.h" + +int usage () +{ + ACE_ERROR ((LM_ERROR, "simple_nm_launcher <nm_url> <plan>\n")); + return -1; +} + +#include <iostream> + +int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + DANCE_DISABLE_TRACE (); + + DAnCE::Logger_Service + * dlf = ACE_Dynamic_Service<DAnCE::Logger_Service>::instance ("DAnCE_Logger"); + + if (dlf) + { + dlf->init (argc, argv); + } + + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv); + + if (argc != 3) + return usage (); + + try + { + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: parsing XML\n"))); + // Parse plan + CIAO::Config_Handlers::XML_File_Intf xml (argv[2]); + xml.add_search_path (ACE_TEXT ("DANCE_ROOT"), ACE_TEXT ("/docs/schema/")); + xml.add_search_path (ACE_TEXT ("CIAO_ROOT"), ACE_TEXT ("/docs/schema/")); + + auto_ptr< ::Deployment::DeploymentPlan> plan (xml.release_plan ()); + + if (plan.get () == 0) + { + ACE_ERROR ((LM_ERROR,ACE_TEXT ("*** error parsing XML document\n"))); + throw 1; + } + + + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: resolving node manager reference.\n"))); + CORBA::Object_var obj = orb->string_to_object (argv[1]); + Deployment::NodeManager_var nm = Deployment::NodeManager::_narrow (obj.in ()); + + if (CORBA::is_nil (nm.in ())) + { + ACE_ERROR ((LM_ERROR,ACE_TEXT ("*** simple_nm_launcher: NodeManager reference is nil."))); + throw 1; + } + + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: calling prepareplan.\n"))); + Deployment::NodeApplicationManager_var nam = nm->preparePlan (*plan, + Deployment::ResourceCommitmentManager::_nil ()); + + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: calling startLaunch\n"))); + Deployment::Connections_var conns; + Deployment::Properties props; + Deployment::Application_var app = nam->startLaunch (props, conns.out ()); + Deployment::NodeApplication_var na = Deployment::NodeApplication::_narrow (app.in ()); + + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: calling finishLaunch\n"))); + na->finishLaunch (conns.in (), false); + + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: calling start\n"))); + na->start (); + + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: start finished, sleeping 5 seconds.\n"))); + ACE_OS::sleep (5); + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: waking up from sleep, calling destroyApplication\n"))); + + nam->destroyApplication (na.in ()); + + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: calling destroyManager\n"))); + + nm->destroyManager (nam.in ()); + + ACE_DEBUG ((LM_DEBUG,ACE_TEXT ("*** simple_nm_launcher: destroyManager completed.\n"))); + + orb->destroy (); + } + catch (Deployment::StopError &ex) + { + ACE_ERROR ((LM_ERROR,ACE_TEXT ("*** Caught StopError exception with name %C and reason %C\n"), + ex.name.in (), ex.reason.in ())); + return -1; + } + catch (Deployment::StartError &ex) + { + ACE_ERROR ((LM_ERROR,ACE_TEXT ("*** Caught StartError exception with name %C and reason %C\n"), + ex.name.in (), ex.reason.in ())); + return -1; + } + catch (CORBA::Exception &ex) + { + ACE_ERROR ((LM_ERROR,ACE_TEXT ("*** Caught CORBA exception: %C\n"), + ex._info ().c_str ())); + return -1; + + } + catch (...) + { + orb->destroy (); + ACE_ERROR ((LM_ERROR,ACE_TEXT ("*** Caught unknown exception\n"))); + return -1; + } + return 0; +} |