summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarvindk <arvindk@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-09-19 18:53:30 +0000
committerarvindk <arvindk@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-09-19 18:53:30 +0000
commitff0e5bb069ccc81f1ec1cfd8ba6bf327c866dd48 (patch)
tree75a614343e75e9d8705a78b2272aad079907269c
parentf41a6ea772f051c63b3fd4d4f91863fc176a5f2d (diff)
downloadATCD-ff0e5bb069ccc81f1ec1cfd8ba6bf327c866dd48.tar.gz
Fri Sep 19 13:31:50 2003 Arvind S. Krishna <arvindk@dre.vanderbilt.edu>
-rwxr-xr-xTAO/CIAO/performance-tests/Benchmark/RoundTripClient/run_test_ior_cad.pl73
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.cpp26
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/RoundTripServer/LatencyTest.h46
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/RoundTripServer/RoundTripServer.mpc17
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/RoundTripServer/Test.idl16
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/RoundTripServer/server.cpp97
-rw-r--r--TAO/CIAO/performance-tests/Benchmark/descriptors/Test-IOR.cad41
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>