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 /TAO/CIAO/performance-tests/Benchmark/RoundTripServer | |
parent | 4f3391488653f19224ac3b944b924ca48c6efb1b (diff) | |
download | ATCD-81365d9279874a29ec2e90b6fbcef27d01c079f1.tar.gz |
Fri Sep 19 13:31:50 2003 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
Diffstat (limited to 'TAO/CIAO/performance-tests/Benchmark/RoundTripServer')
5 files changed, 202 insertions, 0 deletions
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; +} |