diff options
author | arvindk <arvindk@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-09-19 18:53:30 +0000 |
---|---|---|
committer | arvindk <arvindk@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-09-19 18:53:30 +0000 |
commit | 81365d9279874a29ec2e90b6fbcef27d01c079f1 (patch) | |
tree | 75a614343e75e9d8705a78b2272aad079907269c | |
parent | 4f3391488653f19224ac3b944b924ca48c6efb1b (diff) | |
download | ATCD-81365d9279874a29ec2e90b6fbcef27d01c079f1.tar.gz |
Fri Sep 19 13:31:50 2003 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
7 files changed, 316 insertions, 0 deletions
diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl new file mode 100755 index 00000000000..0989a9dc889 --- /dev/null +++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl @@ -0,0 +1,73 @@ +eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' + & eval 'exec perl -S $0 $argv:q' + if 0; + +# $Id$ +# -*- perl -*- + +# +# @@ Run this script from ../descriptors/ instead. +# + +use lib "$ENV{'ACE_ROOT'}/bin"; +use PerlACE::Run_Test; + +$status = 0; +$daemon_ior = PerlACE::LocalFile ("daemon.ior"); +$am_ior = PerlACE::LocalFile ("am.ior"); + +$ACE_ROOT=$ENV{'ACE_ROOT'}; +$CIAO_ROOT=$ENV{'CIAO_ROOT'}; + +unlink $daemon_ior; +unlink $am_ior; + + +# CIAO Daemon command line arguments +$daemon_args = "-ORBEndpoint iiop://localhost:10000 -o $daemon_ior -i CIAO_Installation_Data.ini -n $CIAO_ROOT/tools/ComponentServer/ComponentServer"; + +$assembly_manager_args = "-o $am_ior -c test.dat"; + +$ad_args = " -k file://$am_ior -a Test-Name-Service.cad"; + +# CIAO daemon process definition +$DS = new PerlACE::Process ("$CIAO_ROOT/tools/Daemon/CIAO_Daemon", + "$daemon_args"); + +## Starting up the CIAO daemon +$DS->Spawn (); +if (PerlACE::waitforfile_timed ($daemon_ior, 15) == -1) { + print STDERR "ERROR: Could not find daemon ior file <$daemon_ior>\n"; + $DS->Kill (); + exit 1; +} + + +$AM = new PerlACE::Process("$CIAO_ROOT/tools/Assembly_Deployer/Assembly_Manager", + $assembly_manager_args); +$AM->Spawn (); +if (PerlACE::waitforfile_timed ($am_ior, 15) == -1) { + print STDERR "ERROR: Could not find assembly ior file <$am_ior>\n"; + $AM->Kill (); + exit 1; +} + +$AD = new PerlACE::Process("$CIAO_ROOT/tools/Assembly_Deployer/Assembly_Deployer", + $ad_args); +$AD->Spawn (); + +sleep (5); + +#Start the client to send the trigger message +$CL = new PerlACE::Process ("../RoundTripClient/client", ""); +$CL->SpawnWaitKill(60); + +$AM->Kill (); +$AD->Kill (); +$DS->Kill (); +#$CL->Kill (); + +#unlink $daemon_ior; +#unlink $am_ior; + +exit $status; diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp new file mode 100644 index 00000000000..d9033e3ab85 --- /dev/null +++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp @@ -0,0 +1,26 @@ +// +// $Id$ +// +#include "LatencyTest.h" + +LatencyTest_Impl::LatencyTest_Impl (CORBA::ORB_ptr orb) + : orb_ (CORBA::ORB::_duplicate (orb)) +{ +} + + +CORBA::Long +LatencyTest_Impl::makeCall (CORBA::Long send_time + ACE_ENV_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + ACE_DEBUG ((LM_DEBUG, "Sending Time back \n")); + return send_time; +} + +void +LatencyTest_Impl::shutdown (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + this->orb_->shutdown (0 ACE_ENV_ARG_PARAMETER); +} diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h new file mode 100644 index 00000000000..96a53b24d34 --- /dev/null +++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h @@ -0,0 +1,46 @@ +// +// $Id$ +// + +#ifndef LATENCYTEST_H +#define LATENCYTEST_H +#include /**/ "ace/pre.h" + +#include "TestS.h" + +#if defined (_MSC_VER) +# if (_MSC_VER >= 1200) +# pragma warning(push) +# endif /* _MSC_VER >= 1200 */ +# pragma warning (disable:4250) +#endif /* _MSC_VER */ + +/// Implement the Test::LatencyTest interface +class LatencyTest_Impl +: public virtual POA_LatencyTest + , public virtual PortableServer::RefCountServantBase +{ +public: + /// Constructor + LatencyTest_Impl (CORBA::ORB_ptr orb); + + // = The skeleton methods + virtual CORBA::Long makeCall (CORBA::Long send_time + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + + virtual void shutdown (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + +private: + /// Use an ORB reference to conver strings to objects and shutdown + /// the application. + CORBA::ORB_var orb_; +}; + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma warning(pop) +#endif /* _MSC_VER */ + +#include /**/ "ace/post.h" +#endif /* LATENCYTEST_H */ diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc new file mode 100644 index 00000000000..965fd07d719 --- /dev/null +++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc @@ -0,0 +1,17 @@ +// $Id$ +project (RoundTripServer) : portableserver, strategies { + exename = server + idlflags += -Wb,stub_export_macro=ROUNDTRIP_STUB_Export -Wb,stub_export_include=RoundTrip_stub_export.h -Wb,skel_export_macro=ROUNDTRIP_SVNT_Export -Wb,skel_export_include=RoundTrip_svnt_export.h + libpaths += .. + + IDL_Files { + Test.idl + } + + Source_Files { + server.cpp, + LatencyTest.cpp, + TestS.cpp, + TestC.cpp + } +} diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/Test.idl b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/Test.idl new file mode 100644 index 00000000000..b7f83dbedd8 --- /dev/null +++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/Test.idl @@ -0,0 +1,16 @@ +// +// $Id$ +// + +/// Measure roundtrip delay +interface LatencyTest +{ + /// A simple method to measure roundtrip delays + /** + * The operation simply returns its argument, this is used in AMI + * and deferred synchronous tests to measure the roundtrip delay + * without the need for a different reply handler for each + * request. + */ + long makeCall (in long send_time); +}; diff --git a/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp new file mode 100644 index 00000000000..2ba3db0ab27 --- /dev/null +++ b/TAO/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp @@ -0,0 +1,97 @@ +// $Id$ + +#include "LatencyTest.h" +#include "ace/Sched_Params.h" + +#include "tao/Strategies/advanced_resource.h" + +const char *ior_output_file = "test.ior"; + +int +main (int argc, char *argv[]) +{ + int priority = + (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO) + + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO)) / 2; + priority = ACE_Sched_Params::next_priority (ACE_SCHED_FIFO, + priority); + // Enable FIFO scheduling, e.g., RT scheduling class on Solaris. + + if (ACE_OS::sched_params (ACE_Sched_Params (ACE_SCHED_FIFO, + priority, + ACE_SCOPE_PROCESS)) != 0) + { + if (ACE_OS::last_error () == EPERM) + { + ACE_DEBUG ((LM_DEBUG, + "server (%P|%t): user is not superuser, " + "test runs in time-shared class\n")); + } + else + ACE_ERROR ((LM_ERROR, + "server (%P|%t): sched_params failed\n")); + } + + ACE_TRY_NEW_ENV + { + CORBA::ORB_var orb = + CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + CORBA::Object_var poa_object = + orb->resolve_initial_references("RootPOA" ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (CORBA::is_nil (poa_object.in ())) + ACE_ERROR_RETURN ((LM_ERROR, + " (%P|%t) Unable to initialize the POA.\n"), + 1); + + PortableServer::POA_var root_poa = + PortableServer::POA::_narrow (poa_object.in () ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + PortableServer::POAManager_var poa_manager = + root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + LatencyTest_Impl *roundtrip_impl; + ACE_NEW_RETURN (roundtrip_impl, + LatencyTest_Impl (orb.in ()), + 1); + PortableServer::ServantBase_var owner_transfer(roundtrip_impl); + + LatencyTest_var roundtrip = + roundtrip_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + CORBA::String_var ior = + orb->object_to_string (roundtrip.in () ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + // If the ior_output_file exists, output the ior to it + ACE_DEBUG ((LM_DEBUG, "%s", ior.in ())); + + poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n")); + + root_poa->destroy (1, 1 ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception caught:"); + return 1; + } + ACE_ENDTRY; + + return 0; +} diff --git a/TAO/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad b/TAO/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad new file mode 100644 index 00000000000..061db64d81c --- /dev/null +++ b/TAO/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad @@ -0,0 +1,41 @@ +<?xml version="1.0"?> <!-- -*- SGML -*- --> + +<!-- If this file is moved to a different directory, make sure to change the + path to the DTD below. Otherwise the examples won't work. --> +<!DOCTYPE componentassembly SYSTEM "http://www.dre.vanderbilt.edu/CIAO/DTD/componentassembly.dtd"> + +<componentassembly id="Single-process Basic assembly"> + <componentfiles> + <componentfile id="com-RoundTripClient"> + <fileinarchive name="RoundTripClient.csd"/> + </componentfile> + </componentfiles> + + <partitioning> + <homeplacement id="a_RoundTripClientHome"> + <componentfileref idref="com-RoundTripClient"/> + <componentinstantiation id="a_RoundTripClient"> + <registercomponent> + <!-- writeiortofile is a non-standard CIAO extension. --> + <writeiortofile name="test.ior"/> + </registercomponent> + </componentinstantiation> + </homeplacement> + </partitioning> + +<connections> + <connectinterface> + <usesport> + <usesidentifier>latency</usesidentifier> + <componentinstantiationref idref="a_RoundTripClient"/> + </usesport> + <existinginterface> + <findby> + <!-- One needs to add the correct IOR of the server here --> + <stringifiedobjectref></stringifiedobjectref> + </findby> + </existinginterface> + </connectinterface> +</connections> + +</componentassembly> |