diff options
Diffstat (limited to 'modules/CIAO/connectors/dds4ccm/performance-tests/Keyed')
28 files changed, 5561 insertions, 0 deletions
diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Base/Perf_Keyed_Test_Base.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Base/Perf_Keyed_Test_Base.idl new file mode 100644 index 00000000000..25f17bbb88b --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Base/Perf_Keyed_Test_Base.idl @@ -0,0 +1,31 @@ +// $Id$ + +/** + * @file Perf_Keyed_Test_Base.idl + * @author Marijke Hengstmengel <mhengstmengel@remedy.nl> + */ + +#ifndef PERF_KEYED_TEST_BASE_IDL +#define PERF_KEYED_TEST_BASE_IDL + +#pragma ndds typesupport "Base/Perf_Keyed_Test_BaseSupport.h" + +// Flag used to indicate message is used for initialization only +const unsigned long INITIALIZE_SIZE = 1234; +// Flag used to indicate end of test +const unsigned long FINISHED_SIZE = 1235; +const unsigned long OVERHEAD_BYTES = 31; + +struct PerfKeyedTest { + string key; //@key + long entity_id; //id of subscriber/publisher + unsigned long seq_num; + long latency_ping; + string bin_data; + unsigned long data_len; + unsigned long long nanotime; +}; + +typedef sequence<PerfKeyedTest> PerfKeyedTestSeq; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Base/Perf_Keyed_Test_Base.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Base/Perf_Keyed_Test_Base.mpc new file mode 100644 index 00000000000..a219c04cc49 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Base/Perf_Keyed_Test_Base.mpc @@ -0,0 +1,26 @@ +// $Id$ + +project (DDS_Perf_Keyed_Test_Base_stub) : taoidldefaults, anytypecode, dds4ccm_ts_default { + sharedname = DDS_Perf_Keyed_Test_Base_stub + dynamicflags += PERF_KEYED_TEST_BASE_STUB_BUILD_DLL + libout = ../lib + + idlflags += -SS -Sci \ + -Wb,stub_export_macro=PERF_KEYED_TEST_BASE_STUB_Export \ + -Wb,stub_export_include=Perf_Keyed_Test_Base_stub_export.h + + IDL_Files { + idlflags += -Gxhst + Perf_Keyed_Test_Base.idl + } + + opendds_ts_flags += --export=PERF_KEYED_TEST_BASE_STUB_Export + + DDSGenerator_Files { + Perf_Keyed_Test_Base.idl + } + + Source_Files { + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Connector/Perf_Keyed_Test_Connector.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Connector/Perf_Keyed_Test_Connector.idl new file mode 100644 index 00000000000..bf3106d96af --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Connector/Perf_Keyed_Test_Connector.idl @@ -0,0 +1,31 @@ +// $Id$ + +/** + * @file Perf_Keyed_Test_Connector.idl + * @author Marcel Smit <msmit@remedy.nl> + * + * by-hand translation of the idl3p. + */ + +#ifndef PERF_KEYED_TEST_CONNECTOR_IDL_ +#define PERF_KEYED_TEST_CONNECTOR_IDL_ + +#include <Components.idl> +#include "Base/Perf_Keyed_Test_Base.idl" +#include "connectors/dds4ccm/idl/ccm_dds.idl" + +#pragma ciao lem "Connector/Perf_Keyed_Test_ConnectorE.idl" + +module CCM_DDS +{ + module ::CCM_DDS::Typed < ::PerfKeyedTest, ::PerfKeyedTestSeq> PerfKeyedTest; +}; + +module Perf_Keyed_Test +{ + connector Perf_Keyed_Test_Connector : ::CCM_DDS::PerfKeyedTest::DDS_Event + { + }; +}; + +#endif /* Perf_Keyed_Test_CONNECTOR_IDL_ */ diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Connector/Perf_Keyed_Test_Connector.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Connector/Perf_Keyed_Test_Connector.mpc new file mode 100644 index 00000000000..db7eb1cc6e5 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Connector/Perf_Keyed_Test_Connector.mpc @@ -0,0 +1,145 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_Perf_Keyed_Test_Base -l .. -o ../lib -u DDS Perf_Keyed_Test_Connector" + +project(DDS_Perf_Keyed_Test_Connector_idl_gen) : connectoridldefaults, dds4ccm { + after += DDS4CCM_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=PERF_KEYED_TEST_CONNECTOR_STUB_Export \ + -Wb,stub_export_include=Perf_Keyed_Test_Connector_stub_export.h \ + -Wb,skel_export_macro=PERF_KEYED_TEST_CONNECTOR_SVNT_Export \ + -Wb,skel_export_include=Perf_Keyed_Test_Connector_svnt_export.h \ + -Wb,svnt_export_macro=PERF_KEYED_TEST_CONNECTOR_SVNT_Export \ + -Wb,svnt_export_include=Perf_Keyed_Test_Connector_svnt_export.h \ + -Wb,conn_export_macro=PERF_KEYED_TEST_CONNECTOR_CONN_Export \ + -Wb,conn_export_include=Perf_Keyed_Test_Connector_conn_export.h \ + -I .. + + IDL_Files { + Perf_Keyed_Test_Connector.idl + } +} + +project(DDS_Perf_Keyed_Test_Connector_lem_gen) : ciaoidldefaults, dds4ccm { + custom_only = 1 + after += DDS_Perf_Keyed_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=PERF_KEYED_TEST_CONNECTOR_LEM_STUB_Export \ + -Wb,stub_export_include=Perf_Keyed_Test_Connector_lem_stub_export.h \ + -SS -Gxhst \ + -I .. + + IDL_Files { + Perf_Keyed_Test_ConnectorE.idl + } +} + +project(DDS_PK_Test_Connector_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Perf_Keyed_Test_Connector_lem_gen DDS_Perf_Keyed_Test_Connector_stub DDS_Perf_Keyed_Test_Base_stub DDS4CCM_lem_stub + libs += DDS_Perf_Keyed_Test_Base_stub DDS_Perf_Keyed_Test_Connector_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_PK_Test_Connector_lem_stub + dynamicflags = PERF_KEYED_TEST_CONNECTOR_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Perf_Keyed_Test_ConnectorEC.cpp + } + + Header_Files { + Perf_Keyed_Test_ConnectorEC.h + Perf_Keyed_Test_Connector_lem_stub_export.h + } + + Inline_Files { + Perf_Keyed_Test_ConnectorEC.inl + } +} + +project(DDS_Perf_Keyed_Test_Connector_stub) : ccm_stub, dds4ccm_base { + after += DDS_Perf_Keyed_Test_Connector_idl_gen DDS_Perf_Keyed_Test_Base_stub + libs += DDS_Perf_Keyed_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = DDS_Perf_Keyed_Test_Connector_stub + dynamicflags = PERF_KEYED_TEST_CONNECTOR_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Perf_Keyed_Test_ConnectorC.cpp + } + + Header_Files { + Perf_Keyed_Test_ConnectorC.h + Perf_Keyed_Test_Connector_stub_export.h + } + + Inline_Files { + Perf_Keyed_Test_ConnectorC.inl + } +} + +project(DDS_Perf_Keyed_Test_Connector_exec) : ciao_executor, dds4ccm_impl { + after += DDS_PK_Test_Connector_lem_stub DDS_Perf_Keyed_Test_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_Perf_Keyed_Test_Connector_exec + libs += DDS_Perf_Keyed_Test_Connector_stub DDS_PK_Test_Connector_lem_stub DDS_Perf_Keyed_Test_Base_stub DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = PERF_KEYED_TEST_CONNECTOR_CONN_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Perf_Keyed_Test_Connector_conn.cpp + } + + Header_Files { + Perf_Keyed_Test_Connector_conn.h + Perf_Keyed_Test_Connector_conn_export.h + } + + Inline_Files { + } +} + + +project(DDS_Perf_Keyed_Test_Connector_svnt) : ciao_servant, dds4ccm_skel { + after += DDS_PK_Test_Connector_lem_stub DDS_Perf_Keyed_Test_Connector_exec DDS_Perf_Keyed_Test_Connector_stub DDS4CCM_lem_stub + sharedname = DDS_Perf_Keyed_Test_Connector_svnt + libs += DDS_Perf_Keyed_Test_Connector_stub \ + DDS_PK_Test_Connector_lem_stub \ + DDS_Perf_Keyed_Test_Base_stub \ + DDS_Perf_Keyed_Test_Connector_exec \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = PERF_KEYED_TEST_CONNECTOR_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Perf_Keyed_Test_ConnectorS.cpp + Perf_Keyed_Test_Connector_svnt.cpp + } + + Header_Files { + Perf_Keyed_Test_ConnectorS.h + Perf_Keyed_Test_Connector_svnt.h + Perf_Keyed_Test_Connector_svnt_export.h + } + + Inline_Files { + Perf_Keyed_Test_ConnectorS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver.idl new file mode 100644 index 00000000000..6a5617dd958 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver.idl @@ -0,0 +1,22 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit <msmit@remedy.nl> + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/Perf_Keyed_Test_Connector.idl" + +module Perf_Keyed_Test +{ + component Receiver + { + port CCM_DDS::PerfKeyedTest::DDS_Listen info_listen; + port CCM_DDS::PerfKeyedTest::DDS_Write write_ping; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver.mpc new file mode 100644 index 00000000000..e5b0379d8da --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver.mpc @@ -0,0 +1,151 @@ +// $Id$ + +project(DDS_Perf_Keyed_Test_Receiver_idl_gen) : componentidldefaults, dds4ccm { + custom_only = 1 + after += DDS_Perf_Keyed_Test_Connector_idl_gen + idlflags += -Wb,stub_export_macro=RECEIVER_STUB_Export \ + -Wb,stub_export_include=Receiver_stub_export.h \ + -Wb,skel_export_macro=RECEIVER_SVNT_Export \ + -Wb,skel_export_include=Receiver_svnt_export.h \ + -Wb,svnt_export_macro=RECEIVER_SVNT_Export \ + -Wb,svnt_export_include=Receiver_svnt_export.h \ + -Wb,exec_export_macro=RECEIVER_EXEC_Export \ + -Wb,exec_export_include=Receiver_exec_export.h -I.. + + IDL_Files { + Perf_Keyed_Test_Receiver.idl + } +} + +project(DDS_Perf_Keyed_Test_Receiver_lem_gen) : ciaoidldefaults, dds4ccm { + after += DDS_Perf_Keyed_Test_Receiver_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=RECEIVER_LEM_STUB_Export \ + -Wb,stub_export_include=Receiver_lem_stub_export.h \ + -SS -Gxhst -I.. + + IDL_Files { + Perf_Keyed_Test_ReceiverE.idl + } +} + +project(DDS_Perf_Keyed_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Perf_Keyed_Test_Receiver_lem_gen DDS_Perf_Keyed_Test_Receiver_stub \ + DDS_Perf_Keyed_Test_Connector_stub DDS_Perf_Keyed_Test_Base_stub + libs += Receiver_stub DDS_Perf_Keyed_Test_Connector_stub \ + DDS_Perf_Keyed_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Perf_Keyed_Test_ReceiverEC.cpp + } + + Header_Files { + Perf_Keyed_Test_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + Perf_Keyed_Test_ReceiverEC.inl + } +} + +project(DDS_Perf_Keyed_Test_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_Perf_Keyed_Test_Receiver_idl_gen DDS_Perf_Keyed_Test_Connector_stub \ + DDS_Perf_Keyed_Test_Base_stub DDS_Perf_Keyed_Test_Connector_lem_gen + libs += DDS_Perf_Keyed_Test_Connector_stub DDS_Perf_Keyed_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Perf_Keyed_Test_ReceiverC.cpp + } + + Header_Files { + Perf_Keyed_Test_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + Perf_Keyed_Test_ReceiverC.inl + } +} + +project(DDS_Perf_Keyed_Test_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_Perf_Keyed_Test_Receiver_lem_stub DDS_Perf_Keyed_Test_Receiver_stub \ + DDS_Perf_Keyed_Test_Base_stub DDS_Perf_Keyed_Test_Connector_stub \ + DDS_PK_Test_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_Perf_Keyed_Test_Base_stub \ + DDS_Perf_Keyed_Test_Connector_stub DDS_PK_Test_Connector_lem_stub \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Perf_Keyed_Test_Receiver_exec.cpp + } + + Header_Files { + Perf_Keyed_Test_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Perf_Keyed_Test_Receiver_svnt) : ciao_servant, dds4ccm_base { + after += DDS_Perf_Keyed_Test_Receiver_lem_stub DDS_Perf_Keyed_Test_Base_stub \ + DDS_Perf_Keyed_Test_Connector_stub DDS_Perf_Keyed_Test_Connector_svnt \ + DDS_Perf_Keyed_Test_Receiver_exec DDS_PK_Test_Connector_lem_stub \ + DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_Perf_Keyed_Test_Base_stub \ + DDS_Perf_Keyed_Test_Connector_stub DDS_Perf_Keyed_Test_Connector_svnt \ + Receiver_exec DDS_PK_Test_Connector_lem_stub DDS4CCM_lem_stub \ + DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Perf_Keyed_Test_ReceiverS.cpp + Perf_Keyed_Test_Receiver_svnt.cpp + } + + Header_Files { + Perf_Keyed_Test_ReceiverS.h + Perf_Keyed_Test_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + Perf_Keyed_Test_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver_exec.cpp new file mode 100644 index 00000000000..988740477eb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver_exec.cpp @@ -0,0 +1,198 @@ +// -*- C++ -*- +// +// $Id$ + +#include "Perf_Keyed_Test_Receiver_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "ace/High_Res_Timer.h" + +namespace CIAO_Perf_Keyed_Test_Receiver_Impl +{ + //============================================================ + // PerfKeyedTest_Listener_exec_i + //============================================================ + PerfKeyedTest_Listener_exec_i::PerfKeyedTest_Listener_exec_i ( + Receiver_exec_i &callback) + : callback_ (callback) + { + } + + PerfKeyedTest_Listener_exec_i::~PerfKeyedTest_Listener_exec_i (void) + { + } + + void + PerfKeyedTest_Listener_exec_i::on_one_data ( + const PerfKeyedTest & an_instance, + const ::CCM_DDS::ReadInfo & /*info*/) + { + + // Record time, not for ping messages , already pinged back. + if (an_instance.latency_ping != -1L) + { + this->callback_.record_time (an_instance.data_len); + } + + // Send back a packet if this is a ping + if (an_instance.latency_ping == 1L) + { + this->callback_.write_one(const_cast<PerfKeyedTest&> (an_instance)); + } + } + + void + PerfKeyedTest_Listener_exec_i::on_many_data ( + const PerfKeyedTestSeq & /*an_instance*/, + const ::CCM_DDS::ReadInfoSeq & /*info*/) + { + } + + //============================================================ + // Receiver_exec_i + //============================================================ + Receiver_exec_i::Receiver_exec_i (void) + : count_ (0L), + interval_time_(0L), + interval_messages_received_(0L), + messages_received_(0L), + interval_bytes_received_(0L), + bytes_received_(0L), + interval_data_length_(0L), + first_time_ (0L), + finished_(false) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + void + Receiver_exec_i::write_one ( PerfKeyedTest & an_instance) + { + an_instance.latency_ping = -1L; + this->writer_->write_one (an_instance, ::DDS::HANDLE_NIL); + } + + void + Receiver_exec_i::start () + { + ::CCM_DDS::DataListenerControl_var dlc = + this->context_->get_connection_info_listen_data_control (); + dlc->mode (::CCM_DDS::ONE_BY_ONE); + } + + void + Receiver_exec_i::record_time (unsigned long datalen) + { + ++this->count_; + if( datalen == INITIALIZE_SIZE) + { + // store the info for this interval + ACE_High_Res_Timer::gettimeofday_hr ().to_usec (this->first_time_); + this->messages_received_=1; + } + else if ( datalen == FINISHED_SIZE) + { // store the info for this interval + ACE_UINT64 last_time; + ACE_High_Res_Timer::gettimeofday_hr ().to_usec (last_time); + this->interval_time_ = (last_time - this->first_time_); + this->interval_messages_received_ = ++this->messages_received_; + this->interval_bytes_received_ = this->bytes_received_; + this->finished_ = true; + } + else + { + ++this->messages_received_; + this->interval_data_length_ = datalen + OVERHEAD_BYTES; + this->bytes_received_ += datalen + OVERHEAD_BYTES; + } + } + + ::CCM_DDS::PerfKeyedTest::CCM_Listener_ptr + Receiver_exec_i::get_info_listen_data_listener (void) + { + return new PerfKeyedTest_Listener_exec_i (*this); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_listen_status (void) + { + return ::CCM_DDS::CCM_PortStatusListener::_nil (); + } + + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Perf_Keyed_Test::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + (void) ACE_High_Res_Timer::global_scale_factor (); + // enable the datalistener + this->start(); + } + + void + Receiver_exec_i::ccm_activate (void) + { + this->writer_ = this->context_->get_connection_write_ping_data (); + } + + void + Receiver_exec_i::ccm_passivate (void) + { + if(!this->finished_.value()) // proces ended before received last message + { + ACE_UINT64 last_time; + ACE_High_Res_Timer::gettimeofday_hr ().to_usec (last_time); + this->interval_time_ = (last_time - this->first_time_); + this->interval_messages_received_ = ++this->messages_received_; + this->interval_bytes_received_ = this->bytes_received_; + } + if ((this->count_.value () > 0) && (this->interval_time_ > 0)) + { + double per_sec = (double)1000000/ this->interval_time_; + double mbps = + (this->interval_bytes_received_.value()* per_sec)* (8.0/1000.0/1000.0); + ACE_DEBUG((LM_DEBUG, "SUMMARY RECEIVER:\n " + "Data Length: %u Messages: %u Messages/s(ave): " + "%6.01f, Mbps(ave): %7.01f \n", + this->interval_data_length_.value(), + this->interval_messages_received_.value(), + this->interval_messages_received_.value()* per_sec, + mbps)); + } + else + { + ACE_DEBUG((LM_DEBUG, "SUMMARY RECEIVER:\n " + "No samples received\n ")); + } + } + + void + Receiver_exec_i::ccm_remove (void) + { + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Perf_Keyed_Test_Receiver_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Receiver_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver_exec.h new file mode 100644 index 00000000000..9a290f7a311 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Receiver/Perf_Keyed_Test_Receiver_exec.h @@ -0,0 +1,103 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "Perf_Keyed_Test_ReceiverEC.h" + +#include /**/ "Receiver_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include "ace/Reactor.h" +#include "ace/Task.h" + +#include <map> + +namespace CIAO_Perf_Keyed_Test_Receiver_Impl +{ + class Receiver_exec_i; + typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::ULong> Atomic_ULong; + typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, bool> Atomic_Bool; + typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Long> Atomic_Long; + + + //============================================================ + // PerfKeyedTest_Listener_exec_i + //============================================================ + class RECEIVER_EXEC_Export PerfKeyedTest_Listener_exec_i + : public virtual ::CCM_DDS::PerfKeyedTest::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + PerfKeyedTest_Listener_exec_i (Receiver_exec_i &callback); + virtual ~PerfKeyedTest_Listener_exec_i (void); + + virtual void + on_one_data ( + const PerfKeyedTest & an_instance, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_many_data ( + const PerfKeyedTestSeq & an_instance, + const ::CCM_DDS::ReadInfoSeq & info); + private: + Receiver_exec_i &callback_; + }; + + //============================================================ + // Receiver_exec_i + //============================================================ + class RECEIVER_EXEC_Export Receiver_exec_i + : public virtual Receiver_Exec, + public virtual ::CORBA::LocalObject + { + public: + Receiver_exec_i (void); + virtual ~Receiver_exec_i (void); + + void start (); + void record_time (unsigned long datalen); + + virtual ::CCM_DDS::PerfKeyedTest::CCM_Listener_ptr + get_info_listen_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_listen_status (void); + + virtual void + set_session_context ( + ::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + void write_one (PerfKeyedTest & an_instance); + + private: + ::Perf_Keyed_Test::CCM_Receiver_Context_var context_; + CCM_DDS::PerfKeyedTest::Writer_var writer_; + + Atomic_ULong count_; + ACE_UINT64 interval_time_; + Atomic_Long interval_messages_received_; + Atomic_Long messages_received_; + Atomic_Long interval_bytes_received_; + Atomic_Long bytes_received_; + Atomic_Long interval_data_length_; + ACE_UINT64 first_time_; + Atomic_Bool finished_; + + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Perf_Keyed_Test_Receiver_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender.idl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender.idl new file mode 100644 index 00000000000..b5ac3c307cb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender.idl @@ -0,0 +1,33 @@ +// $Id$ + +/** + * @file + * @author Marijke Hengstmengel <mhengstmengel@remedy.nl> + * + * by-hand idl3 translation of sender components. + */ + +#ifndef DDS_PERF_KEYED_TEST_SENDER_IDL +#define DDS_PERF_KEYED_TEST_SENDER_IDL + +#include "Connector/Perf_Keyed_Test_Connector.idl" + + +module Perf_Keyed_Test +{ + component Sender + { + port CCM_DDS::PerfKeyedTest::DDS_Write info_write; + attribute unsigned short keys; + attribute unsigned long iterations; + attribute unsigned short latency_count; //number of samples sent before a latency ping packet is sent. default 100000, < sample_count + attribute unsigned short sleep; //time in ms to sleep between each send + attribute unsigned short spin; + attribute unsigned short datalen; //minimal 32 + attribute unsigned short number_of_sub; //number of subscribers + provides CCM_DDS::ConnectorStatusListener connector_status; + port CCM_DDS::PerfKeyedTest::DDS_Listen ping_listen; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender.mpc b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender.mpc new file mode 100644 index 00000000000..ef148c28cd1 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender.mpc @@ -0,0 +1,149 @@ +// $Id$ +// This file is generated with "generate_component_mpc.pl -p DDS_Perf_Keyed_Test_Base -l ../lib -o ../lib -c controller -u DDS Sender" + +project(DDS_Perf_Keyed_Test_Sender_idl_gen) : componentidldefaults, dds4ccm { + after += DDS_Perf_Keyed_Test_Connector_idl_gen DDS_Starter_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_STUB_Export \ + -Wb,stub_export_include=Sender_stub_export.h \ + -Wb,skel_export_macro=SENDER_SVNT_Export \ + -Wb,skel_export_include=Sender_svnt_export.h \ + -Wb,svnt_export_macro=SENDER_SVNT_Export \ + -Wb,svnt_export_include=Sender_svnt_export.h \ + -Wb,exec_export_macro=SENDER_EXEC_Export \ + -Wb,exec_export_include=Sender_exec_export.h \ + -I .. + + IDL_Files { + Perf_Keyed_Test_Sender.idl + } +} + +project(DDS_Perf_Keyed_Test_Sender_lem_gen) : ciaoidldefaults, dds4ccm { + after += DDS_Perf_Keyed_Test_Sender_idl_gen + custom_only = 1 + idlflags += -Wb,stub_export_macro=SENDER_LEM_STUB_Export \ + -Wb,stub_export_include=Sender_lem_stub_export.h \ + -SS -Gxhst -I $CIAO_ROOT/connectors -I .. + + IDL_Files { + Perf_Keyed_Test_SenderE.idl + } +} + +project(DDS_Perf_Keyed_Test_Sender_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_Perf_Keyed_Test_Sender_lem_gen DDS_Perf_Keyed_Test_Sender_stub \ + DDS_Perf_Keyed_Test_Base_stub + libs += DDS_Perf_Keyed_Test_Base_stub Sender_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Sender_lem_stub + dynamicflags = SENDER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Perf_Keyed_Test_SenderEC.cpp + } + + Header_Files { + Perf_Keyed_Test_SenderEC.h + Sender_lem_stub_export.h + } + + Inline_Files { + Perf_Keyed_Test_SenderEC.inl + } +} + +project(DDS_Perf_Keyed_Test_Sender_stub) : ccm_stub, dds4ccm_base { + after += DDS_Perf_Keyed_Test_Sender_idl_gen DDS_Perf_Keyed_Test_Base_stub \ + DDS_Perf_Keyed_Test_Connector_stub + libs += DDS_Perf_Keyed_Test_Base_stub DDS_Perf_Keyed_Test_Connector_stub + includes += .. + libpaths += ../lib + libout = ../lib + sharedname = Sender_stub + dynamicflags = SENDER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Perf_Keyed_Test_SenderC.cpp + } + + Header_Files { + Perf_Keyed_Test_SenderC.h + Sender_stub_export.h + } + + Inline_Files { + Perf_Keyed_Test_SenderC.inl + } +} + +project(DDS_Perf_Keyed_Test_Sender_exec) : ciao_executor, dds4ccm_base { + after += DDS_Perf_Keyed_Test_Sender_lem_stub DDS_Perf_Keyed_Test_Sender_stub \ + DDS_PK_Test_Connector_lem_stub DDS_Perf_Keyed_Test_Connector_stub \ + DDS4CCM_lem_stub + sharedname = Sender_exec + libs += Sender_stub Sender_lem_stub DDS_Perf_Keyed_Test_Base_stub \ + DDS_PK_Test_Connector_lem_stub DDS_Perf_Keyed_Test_Connector_stub \ + DDS4CCM_lem_stub + libpaths += ../lib + includes += .. + libout = ../lib + dynamicflags = SENDER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Perf_Keyed_Test_Sender_exec.cpp + } + + Header_Files { + Perf_Keyed_Test_Sender_exec.h + Sender_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_Perf_Keyed_Test_Sender_svnt) : ciao_servant, dds4ccm_base { + after += DDS_Perf_Keyed_Test_Base_stub DDS_Perf_Keyed_Test_Sender_lem_stub \ + DDS4CCM_lem_stub DDS4CCM_skel DDS_Perf_Keyed_Test_Connector_stub \ + DDS_Perf_Keyed_Test_Connector_svnt DDS_PK_Test_Connector_lem_stub + sharedname = Sender_svnt + libs += Sender_stub Sender_lem_stub DDS_Perf_Keyed_Test_Base_stub DDS4CCM_lem_stub \ + DDS4CCM_skel DDS_Perf_Keyed_Test_Connector_stub DDS_Perf_Keyed_Test_Connector_svnt \ + DDS_PK_Test_Connector_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = SENDER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + Perf_Keyed_Test_SenderS.cpp + Perf_Keyed_Test_Sender_svnt.cpp + } + + Header_Files { + Perf_Keyed_Test_SenderS.h + Perf_Keyed_Test_Sender_svnt.h + Sender_svnt_export.h + } + + Inline_Files { + Perf_Keyed_Test_SenderS.inl + } +} + diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender_exec.cpp b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender_exec.cpp new file mode 100644 index 00000000000..3d0505507fb --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender_exec.cpp @@ -0,0 +1,571 @@ +// -*- C++ -*- +// $Id$ + +#include "Perf_Keyed_Test_Sender_exec.h" +#include "ciao/Logger/Log_Macros.h" +#include "tao/ORB_Core.h" +#include "ace/Timer_Queue.h" +#include "ace/Reactor.h" +#include "ace/High_Res_Timer.h" + + +namespace CIAO_Perf_Keyed_Test_Sender_Impl +{ + //============================================================ + // PerfKeyedTest_Listener_exec_i + //============================================================ + PerfKeyedTest_Listener_exec_i::PerfKeyedTest_Listener_exec_i ( + Sender_exec_i &callback) + : callback_ (callback) + { + } + + PerfKeyedTest_Listener_exec_i::~PerfKeyedTest_Listener_exec_i (void) + { + } + + //read messages, only 'ping'messages (ping = -1) which returned from the subscribers, to measure latency time are important. + void + PerfKeyedTest_Listener_exec_i::on_one_data ( + const PerfKeyedTest & an_instance, + const ::CCM_DDS::ReadInfo & /*info*/) + { + //only interested in messages received with a latency_ping = -1 ('ping'messages) + if( an_instance.latency_ping == -1) + { + this->callback_.record_time (an_instance.nanotime); + } + } + + void + PerfKeyedTest_Listener_exec_i::on_many_data ( + const PerfKeyedTestSeq & /*an_instance*/, + const ::CCM_DDS::ReadInfoSeq & /*info*/) + { + } + //============================================================ + // Facet Executor Implementation Class: ConnectorStatusListener_exec_i + //============================================================ + ConnectorStatusListener_exec_i::ConnectorStatusListener_exec_i (Atomic_Boolean &matched, int number_of_subscribers, Sender_exec_i &callback) + : callback_ (callback), + matched_ (matched), + number_of_subscribers_ (number_of_subscribers) + { + } + + ConnectorStatusListener_exec_i::~ConnectorStatusListener_exec_i (void) + { + } + + // Operations from ::CCM_DDS::ConnectorStatusListener + void ConnectorStatusListener_exec_i::on_inconsistent_topic( + ::DDS::Topic_ptr /*the_topic*/, + const DDS::InconsistentTopicStatus & /*status*/) + { + } + + void ConnectorStatusListener_exec_i::on_requested_incompatible_qos( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::RequestedIncompatibleQosStatus & /*status*/) + { + } + + void ConnectorStatusListener_exec_i::on_sample_rejected( + ::DDS::DataReader_ptr /*the_reader*/, + const DDS::SampleRejectedStatus & /*status*/) + { + } + + void ConnectorStatusListener_exec_i::on_offered_deadline_missed( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedDeadlineMissedStatus & /*status*/) + { + } + + void ConnectorStatusListener_exec_i::on_offered_incompatible_qos( + ::DDS::DataWriter_ptr /*the_writer*/, + const DDS::OfferedIncompatibleQosStatus & /*status*/) + { + } + + void ConnectorStatusListener_exec_i::on_unexpected_status( + ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind) + { + CORBA::ULong kind = status_kind; + if((! ::CORBA::is_nil(the_entity)) && + (kind==DDS::PUBLICATION_MATCHED_STATUS)) + { + ::DDS::PublicationMatchedStatus_var stat; + DDS::DataWriter_var wr = ::DDS::DataWriter::_narrow(the_entity); + if(::CORBA::is_nil(wr)) + { + throw ::CORBA::INTERNAL (); + } + ::DDS::ReturnCode_t retval = wr->get_publication_matched_status(stat.out ()); + if (retval == DDS::RETCODE_OK) + { + + if((stat.in().current_count >= + (this->number_of_subscribers_ + 1)) && + !this->matched_.value()) + { + this->matched_ = true; + this->callback_.start(); + } + } + } + } + + //============================================================ + // WriteTickerHandler + //============================================================ + WriteTicker::WriteTicker (Sender_exec_i &callback) + : callback_ (callback) + { + } + + int + WriteTicker::handle_timeout (const ACE_Time_Value &, const void *) + { + // Notify the subscribers + this->callback_.write_one (); + return 0; + } + + //============================================================ + // Component Executor Implementation Class: Sender_exec_i + //============================================================ + Sender_exec_i::Sender_exec_i (void) + : iterations_ (1000), + keys_ (1), + latency_count_(100), + sleep_(10), + spin_(100), + datalen_(100), + matched_(false), + number_of_subscribers_(1), + tv_total_ (0L), + tv_max_ (0L), + tv_min_ (0L), + count_ (0), // Number of returned pings + number_of_msg_(0), // Number of sent messages + timer_(false) + { + this->ticker_ = new WriteTicker (*this); + } + + Sender_exec_i::~Sender_exec_i (void) + { + } + + void + Sender_exec_i::write_one (void) + { + if( this->number_of_msg_ == 0) + { + //first message + this->last_key_->second->data_len = INITIALIZE_SIZE; + this->last_key_->second->bin_data = CORBA::string_alloc(0); + + } + else if((this->iterations_ != 0) && + (this->number_of_msg_ == ((this->iterations_ * this->keys_) -1))) + { + //last message + this->last_key_->second->data_len = FINISHED_SIZE; + this->last_key_->second->bin_data = CORBA::string_alloc(0); + + } + else + { + this->last_key_->second->data_len = this->datalen_; + this->last_key_->second->bin_data = CORBA::string_alloc(this->datalen_); + } + + if((this->iterations_ != 0) && (this->number_of_msg_ >= + (this->iterations_ * this->keys_))) + { + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + this->timer_ = false; + } + else + { + try + { + this->last_key_->second->seq_num = this->number_of_msg_; + // Send some messages (latency_ping = 1L) with indicator that + // message has to be returned by the subscriber + // TO DO : use other selection if more then one key is used. + if (( this->number_of_msg_ % this->latency_count_) == 0) + { + this->last_key_->second->latency_ping = 1L; + ACE_High_Res_Timer::gettimeofday_hr ().to_usec ( + this->last_key_->second->nanotime); + } + else + { + this->last_key_->second->latency_ping = 0L; + } + + this->writer_->write_one (this->last_key_->second, + ::DDS::HANDLE_NIL); + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("while writing a sample.\n"))); + } + ++this->last_key_; + ++this->number_of_msg_; + + if (this->last_key_ == this->samples_.end ()) + { + // start over again. + this->last_key_ = this->samples_.begin (); + } + } + } + + void + Sender_exec_i::write_one_with_spin (void) + { + double ad, bd, cd; + volatile double * a, * b, * c; + + a = &ad; + b = &bd; + c = &cd; + + for (long loop=0; (this->iterations_ == 0)||(loop <this->iterations_); + ++loop ) + { + if ( this->spin_ > 0 ) + { + // spin, spin, spin + for (int m=0; m<this->spin_; ++m) { + *a = 1.1; + *b = 3.1415; + *c = *a/(*b)*m; + } + } + if( this->number_of_msg_ == 0) + { + // first message + this->last_key_->second->data_len = INITIALIZE_SIZE; + this->last_key_->second->bin_data = CORBA::string_alloc(0); + + } + else if( (this->iterations_ != 0) && + (this->number_of_msg_ == + ((this->iterations_ * this->keys_) -1))) + { + // last message + this->last_key_->second->data_len = FINISHED_SIZE; + this->last_key_->second->bin_data = CORBA::string_alloc(0); + + } + else + { + this->last_key_->second->data_len = this->datalen_; + this->last_key_->second->bin_data = + CORBA::string_alloc(this->datalen_); + } + try + { + this->last_key_->second->seq_num = loop; + this->last_key_->second->latency_ping = 0L; + + // if ping required + if (( this->number_of_msg_ % this->latency_count_) == 0) + { + // send some messages (latency_ping = 1L) with indicator that + // message has to be returned by the subscriber + this->last_key_->second->latency_ping = 1L; + ACE_High_Res_Timer::gettimeofday_hr ().to_usec ( + this->last_key_->second->nanotime); + } + this->writer_->write_one (this->last_key_->second, + ::DDS::HANDLE_NIL); + } + catch (const CCM_DDS::InternalError& ) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("ERROR: Internal Error ") + ACE_TEXT ("while updating writer info for <%C>.\n"), + this->last_key_->first.c_str ())); + } + ++this->last_key_; + if (this->last_key_ == this->samples_.end ()) + { // onto the next iteration + this->last_key_ = this->samples_.begin (); + } + ++this->number_of_msg_; + } + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Sender_exec_i::get_connector_status (void) + { + return new ConnectorStatusListener_exec_i (this->matched_, + this->number_of_subscribers_, + *this); + } + + ::CCM_DDS::PerfKeyedTest::CCM_Listener_ptr + Sender_exec_i::get_ping_listen_data_listener (void) + { + return new PerfKeyedTest_Listener_exec_i (*this); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Sender_exec_i::get_ping_listen_status (void) + { + return ::CCM_DDS::CCM_PortStatusListener::_nil (); + } + + void + Sender_exec_i::start (void) + { + for (CORBA::UShort i = 1; i < this->keys_ + 1; ++i) + { + char key[7]; + PerfKeyedTest *new_key = new PerfKeyedTest; + ACE_OS::sprintf (key, "KEY_%d", i); + new_key->key = CORBA::string_dup(key); + new_key->seq_num = 0; + ::CORBA::ULong length = this->datalen_; + new_key->data_len = length; + new_key->bin_data = CORBA::string_alloc(length); + this->samples_[key] = new_key; + } + this->last_key_ = this->samples_.begin (); + // this->sleep_ is in ms + unsigned int sec = this->sleep_/1000; + unsigned int usec = (this->sleep_ % 1000) * 1000; + + // if sleep and spin both > 0, use sleep value and ignore spin value + if(this->sleep_ > 0) // use reactor timer to sleep + { + (void) ACE_High_Res_Timer::global_scale_factor (); + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->timer_queue()->gettimeofday (&ACE_High_Res_Timer::gettimeofday_hr); + if (this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->schedule_timer( + this->ticker_, + 0, + ACE_Time_Value (5, 0), + ACE_Time_Value (sec, usec)) == -1) + { + ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") + ACE_TEXT ("Error scheduling timer"))); + } + this->timer_ = true; + } + else //use spin i.o sleep + { + ACE_OS::sleep(5); + this->write_one_with_spin(); + } + } + +void +Sender_exec_i::record_time (unsigned long long nanotime) + { + ACE_UINT64 testend; + ACE_High_Res_Timer::gettimeofday_hr ().to_usec (testend); + ACE_UINT64 interval = (testend - nanotime); + + ++this->count_; + long duration = static_cast <CORBA::Long>(interval); + this->tv_total_ += duration; + if (duration > this->tv_max_.value ()|| (this->tv_max_.value () == 0L)) + this->tv_max_ = duration; + if (duration < this->tv_min_.value () || (this->tv_min_.value () == 0L)) + this->tv_min_ = duration; + } + + ::CORBA::ULong + Sender_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Sender_exec_i::iterations (::CORBA::ULong iterations) + { + this->iterations_ = iterations; + } + + ::CORBA::UShort + Sender_exec_i::keys (void) + { + return this->keys_; + } + + void + Sender_exec_i::keys (::CORBA::UShort keys) + { + this->keys_ = keys; + } + + ::CORBA::UShort + Sender_exec_i::latency_count (void) + { + return this->latency_count_; + } + + void + Sender_exec_i::latency_count (::CORBA::UShort latency_count) + { + this->latency_count_ = latency_count; + } + + ::CORBA::UShort + Sender_exec_i::sleep (void) + { + return this->sleep_; + } + + void + Sender_exec_i::sleep (::CORBA::UShort sleep) + { + this->sleep_ = sleep; + } + + ::CORBA::UShort + Sender_exec_i::spin (void) + { + return this->spin_; + } + + void + Sender_exec_i::spin (::CORBA::UShort spin) + { + this->spin_ = spin; + } + + ::CORBA::UShort + Sender_exec_i::number_of_sub (void) + { + return this->number_of_subscribers_; + } + + void + Sender_exec_i::number_of_sub (::CORBA::UShort number_of_sub) + { + if (number_of_sub > 0) + { + this->number_of_subscribers_ = number_of_sub; + } + else + { + this->number_of_subscribers_ = 1; + } + } + + ::CORBA::UShort + Sender_exec_i::datalen (void) + { + return this->datalen_; + } + + void + Sender_exec_i::datalen (::CORBA::UShort datalen) + { + if(datalen <= OVERHEAD_BYTES) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: datalen has to be bigger as %u\n"), + OVERHEAD_BYTES)); + throw ::CORBA::BAD_PARAM (); + } + this->datalen_ = datalen - OVERHEAD_BYTES; + } + + + void + Sender_exec_i::set_session_context (::Components::SessionContext_ptr ctx) + { + this->context_ = + ::Perf_Keyed_Test::CCM_Sender_Context::_narrow (ctx); + + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Sender_exec_i::configuration_complete (void) + { + } + + void + Sender_exec_i::ccm_activate (void) + { + try + { + this->writer_ = this->context_->get_connection_info_write_data (); + ::CCM_DDS::DataListenerControl_var dlc = + this->context_->get_connection_ping_listen_data_control (); + dlc->mode (::CCM_DDS::ONE_BY_ONE); + } + catch (const CORBA::Exception& ex) + { + ex._tao_print_exception ("Exception caught:"); + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate: Exception caught\n"))); + } + catch (...) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("ERROR: Sender_exec_i::ccm_activate:" + " Unknown exception caught\n"))); + } + } + + void + Sender_exec_i::ccm_passivate (void) + { + if (this->timer_.value ()) + this->context_->get_CCM_object()->_get_orb ()->orb_core ()->reactor ()->cancel_timer (this->ticker_); + + } + + void + Sender_exec_i::ccm_remove (void) + { + + ACE_DEBUG ((LM_DEBUG, "SUMMARY SENDER number of messages sent: %u\n", + (this->number_of_msg_ + 1))); + + if( this->count_.value () > 0) + { + double avg = this->tv_total_.value () / this->count_.value (); + ACE_DEBUG ((LM_DEBUG, "SUMMARY SENDER latency time-one way,in usec :\n" + "Total time<%u>,\nNumber of latency messages <%u>," + "\nAvg <%6.01f>,\nMin <%u>,\nMax <%u>.\n", + this->tv_total_.value ()/2, + this->count_.value (), + avg/2, + this->tv_min_.value ()/2, + this->tv_max_.value ()/2)); + } + else + { + ACE_ERROR ((LM_ERROR, "SUMMARY SENDER latency time:\n " + "No samples reveived back.\n")); + } + } + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Perf_Keyed_Test_Sender_Impl (void) + { + ::Components::EnterpriseComponent_ptr retval = + ::Components::EnterpriseComponent::_nil (); + + ACE_NEW_NORETURN ( + retval, + Sender_exec_i); + + return retval; + } +} diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender_exec.h b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender_exec.h new file mode 100644 index 00000000000..d9f03ab4108 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/Sender/Perf_Keyed_Test_Sender_exec.h @@ -0,0 +1,181 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_SENDER_EXEC_H_ +#define CIAO_SENDER_EXEC_H_ + + +#include "Perf_Keyed_Test_SenderEC.h" + +#include /**/ "Sender_exec_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/LocalObject.h" +#include <map> + +namespace CIAO_Perf_Keyed_Test_Sender_Impl +{ + typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Long > Atomic_Long; + typedef ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Boolean > Atomic_Boolean; + + class Sender_exec_i; + //============================================================ + // PerfKeyedTest_Listener_exec_i + //============================================================ + class SENDER_EXEC_Export PerfKeyedTest_Listener_exec_i + : public virtual ::CCM_DDS::PerfKeyedTest::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + PerfKeyedTest_Listener_exec_i (Sender_exec_i &callback); + virtual ~PerfKeyedTest_Listener_exec_i (void); + + virtual void + on_one_data ( + const PerfKeyedTest & an_instance, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_many_data ( + const PerfKeyedTestSeq & an_instance, + const ::CCM_DDS::ReadInfoSeq & info); + private: + Sender_exec_i &callback_; + }; + +class SENDER_EXEC_Export ConnectorStatusListener_exec_i + : public virtual ::CCM_DDS::CCM_ConnectorStatusListener, + public virtual ::CORBA::LocalObject + { + public: + ConnectorStatusListener_exec_i (Atomic_Boolean &, int, + Sender_exec_i &callback_); + virtual ~ConnectorStatusListener_exec_i (void); + + virtual + void on_inconsistent_topic( ::DDS::Topic_ptr the_topic, + const DDS::InconsistentTopicStatus & status); + virtual + void on_requested_incompatible_qos( ::DDS::DataReader_ptr the_reader, + const DDS::RequestedIncompatibleQosStatus & status); + virtual + void on_sample_rejected( ::DDS::DataReader_ptr the_reader, + const DDS::SampleRejectedStatus & status); + virtual + void on_offered_deadline_missed( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedDeadlineMissedStatus & status); + virtual + void on_offered_incompatible_qos( ::DDS::DataWriter_ptr the_writer, + const DDS::OfferedIncompatibleQosStatus & status); + virtual + void on_unexpected_status( ::DDS::Entity_ptr the_entity, + ::DDS::StatusKind status_kind); + + private: + Sender_exec_i &callback_; + Atomic_Boolean &matched_; + int number_of_subscribers_; + + }; + //============================================================ + // WriteTicker + //============================================================ + class WriteTicker : + public ACE_Event_Handler + { + public: + WriteTicker (Sender_exec_i &callback); + int handle_timeout (const ACE_Time_Value &, const void *); + private: + /// Maintains a handle that actually process the event + Sender_exec_i &callback_; + }; + + class Sender_exec_i + : public virtual Sender_Exec, + public virtual ::CORBA::LocalObject + { + public: + Sender_exec_i (void); + virtual ~Sender_exec_i (void); + + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_connector_status (void); + + virtual ::CCM_DDS::PerfKeyedTest::CCM_Listener_ptr + get_ping_listen_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_ping_listen_status (void); + + void record_time (unsigned long long nanotime); + + virtual ::CORBA::ULong iterations (void); + virtual void iterations (::CORBA::ULong iterations); + + virtual ::CORBA::UShort keys (void); + virtual void keys (::CORBA::UShort keys); + + virtual ::CORBA::UShort latency_count (void); + virtual void latency_count (::CORBA::UShort latency_count); + + virtual ::CORBA::UShort sleep (void); + virtual void sleep (::CORBA::UShort sleep); + + virtual ::CORBA::UShort spin (void); + virtual void spin (::CORBA::UShort spin); + + virtual ::CORBA::UShort number_of_sub (void); + virtual void number_of_sub (::CORBA::UShort number_of_sub); + + virtual ::CORBA::UShort datalen (void); + virtual void datalen (::CORBA::UShort datalen); + + virtual void set_session_context (::Components::SessionContext_ptr ctx); + + virtual void configuration_complete (void); + + virtual void ccm_activate (void); + virtual void ccm_passivate (void); + virtual void ccm_remove (void); + + void start (void); + void write_one (void); + void write_one_with_spin (void); + + private: + ::Perf_Keyed_Test::CCM_Sender_Context_var context_; + CCM_DDS::PerfKeyedTest::Writer_var writer_; + + WriteTicker *ticker_; + + CORBA::UShort iterations_; + CORBA::UShort keys_; + + CORBA::UShort latency_count_; + CORBA::UShort sleep_; + CORBA::UShort spin_; + CORBA::UShort datalen_; + + Atomic_Boolean matched_; + CORBA::UShort number_of_subscribers_; + Atomic_Long tv_total_; + Atomic_Long tv_max_; + Atomic_Long tv_min_; + Atomic_Long count_; + CORBA::UShort number_of_msg_; + Atomic_Boolean timer_; + + typedef std::map<ACE_CString, PerfKeyedTest_var> Writer_Table; + Writer_Table samples_; + + Writer_Table::iterator last_key_; + }; + + extern "C" SENDER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_Perf_Keyed_Test_Sender_Impl (void); +} + +#endif /* ifndef */ diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan.cdp b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan.cdp new file mode 100644 index 00000000000..3a7b24995cc --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan.cdp @@ -0,0 +1,492 @@ +<Deployment:DeploymentPlan + xmlns:Deployment="http://www.omg.org/Deployment" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd"> + <label>Perf_Keyed_Test_Depl_1</label> + <UUID>Perf_Keyed_Test_Depl_1</UUID> + + <implementation xmi:id="ReceiverComponentImplementation"> + <name>ReceiverComponentImplementation</name> + <source/> + <artifact xmi:idref="Receiver_ExecArtifact" /> + <artifact xmi:idref="Receiver_SvntArtifact" /> + <execParameter> + <!-- entrypoint as exec parameter (see 10.6.1) --> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Receiver_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Receiver_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Receiver_svnt</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Receiver_exec</string> + </value> + </value> + </execParameter> + </implementation> + + <implementation xmi:id="Perf_Keyed_Test_ConnectorComponentImplementation"> + <name>Perf_Keyed_Test_ConnectorComponentImplementation</name> + <source/> + <artifact xmi:idref="Perf_Keyed_Test_Connector_ExecArtifact" /> + <artifact xmi:idref="Perf_Keyed_Test_Connector_SvntArtifact" /> + <execParameter> + <!-- entrypoint as exec parameter (see 10.6.1) --> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test_Connector_svnt</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test_Connector_exec</string> + </value> + </value> + </execParameter> + </implementation> + <implementation xmi:id="SenderComponentImplementation"> + <name>SenderComponentImplementation</name> + <source/> + <artifact xmi:idref="Sender_ExecArtifact" /> + <artifact xmi:idref="Sender_SvntArtifact" /> + <execParameter> + <!-- entrypoint as exec parameter (see 10.6.1) --> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Sender_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Sender_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Sender_svnt</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Sender_exec</string> + </value> + </value> + </execParameter> + </implementation> + <instance xmi:id="ReceiverComponentInstance"> + <name>ReceiverComponent</name> + <node>ReceiverNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="ReceiverComponentImplementation" /> + </instance> + <instance xmi:id="Perf_Keyed_Test_ConnectorComponentInstance"> + <name>Perf_Keyed_Test_ConnectorComponent</name> + <node>SenderNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="Perf_Keyed_Test_ConnectorComponentImplementation" /> + <configProperty> + <name>topic_name</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test</string> + </value> + </value> + </configProperty> + <configProperty> + <name>qos_profile</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>HelloTest_Library#LatencyQoS</string> + </value> + </value> + </configProperty> + </instance> + <instance xmi:id="Perf_Keyed_Test_ConnectorComponentInstance2"> + <name>Perf_Keyed_Test_ConnectorComponent2</name> + <node>ReceiverNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="Perf_Keyed_Test_ConnectorComponentImplementation" /> + <configProperty> + <name>topic_name</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test</string> + </value> + </value> + </configProperty> + <configProperty> + <name>qos_profile</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>HelloTest_Library#LatencyQoS</string> + </value> + </value> + </configProperty> + </instance> + <instance xmi:id="SenderComponentInstance"> + <name>SenderComponent</name> + <node>SenderNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="SenderComponentImplementation" /> + <configProperty> + <name>keys</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>1</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>iterations</name> + <value> + <type> + <kind>tk_ulong</kind> + </type> + <value> + <ulong>10000</ulong> + </value> + </value> + </configProperty> + <configProperty> + <name>latency_count</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>100</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>sleep</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>10</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>spin</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>10</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>datalen</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>999</ushort> + </value> + </value> + </configProperty> + </instance> + + <connection> + <name>info_listen_data</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>info_listen_data_listener</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="ReceiverComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>push_consumer_data_listener</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" /> + </internalEndpoint> + </connection> + + <connection> + <name>info_listen_data_pub</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>ping_listen_data_listener</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>push_consumer_data_listener</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" /> + </internalEndpoint> + </connection> + <connection> + <name>ping_listen_data_control</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>ping_listen_data_control</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>push_consumer_data_control</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" /> + </internalEndpoint> + </connection> + <connection> + <name>info_listen_data_control</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>info_listen_data_control</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="ReceiverComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>push_consumer_data_control</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" /> + </internalEndpoint> + </connection> + + <connection> + <name>writer_connection</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>info_write_data</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>supplier_data</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" /> + </internalEndpoint> + </connection> + <connection> + <name>writer_connection_sub</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>write_ping_data</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="ReceiverComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>supplier_data</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" /> + </internalEndpoint> + </connection> + <connection> + <name>connector_status_sender</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>connector_status</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>error_listener</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" /> + </internalEndpoint> + </connection> + + <artifact xmi:id="Sender_ExecArtifact"> + <name>Sender_exec</name> + <source/> + <node/> + <location>Sender_exec</location> + </artifact> + <artifact xmi:id="Sender_SvntArtifact"> + <name>Sender_svnt</name> + <source/> + <node/> + <location>Sender_svnt</location> + </artifact> + <artifact xmi:id="Sender_StubArtifact"> + <name>Sender_stub</name> + <source/> + <node/> + <location>Sender_stub</location> + </artifact> + <artifact xmi:id="Perf_Keyed_Test_Connector_ExecArtifact"> + <name>Perf_Keyed_Test_Connector_exec</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_exec</location> + </artifact> + <artifact xmi:id="Perf_Keyed_Test_Connector_SvntArtifact"> + <name>Perf_Keyed_Test_Connector_svnt</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_svnt</location> + </artifact> + <artifact xmi:id="Perf_Keyed_Test_Connector_StubArtifact"> + <name>Perf_Keyed_Test_Connector_stub</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_stub</location> + </artifact> + <artifact xmi:id="Receiver_ExecArtifact"> + <name>Receiver_exec</name> + <source/> + <node/> + <location>Receiver_exec</location> + </artifact> + <artifact xmi:id="Receiver_SvntArtifact"> + <name>Receiver_svnt</name> + <source/> + <node/> + <location>Receiver_svnt</location> + </artifact> + <artifact xmi:id="Receiver_StubArtifact"> + <name>Receiver_stub</name> + <source/> + <node/> + <location>Receiver_stub</location> + </artifact> +</Deployment:DeploymentPlan> diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub.cdp b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub.cdp new file mode 100644 index 00000000000..ed332d52d62 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub.cdp @@ -0,0 +1,344 @@ +<Deployment:DeploymentPlan + xmlns:Deployment="http://www.omg.org/Deployment" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd"> + <label>Perf_Keyed_Test_Depl_1</label> + <UUID>Perf_Keyed_Test_Depl_1</UUID> + + + <implementation xmi:id="Perf_Keyed_Test_ConnectorComponentImplementation"> + <name>Perf_Keyed_Test_ConnectorComponentImplementation</name> + <source/> + <artifact xmi:idref="Perf_Keyed_Test_Connector_ExecArtifact" /> + <artifact xmi:idref="Perf_Keyed_Test_Connector_SvntArtifact" /> + <execParameter> + <!-- entrypoint as exec parameter (see 10.6.1) --> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test_Connector_svnt</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test_Connector_exec</string> + </value> + </value> + </execParameter> + </implementation> + <implementation xmi:id="SenderComponentImplementation"> + <name>SenderComponentImplementation</name> + <source/> + <artifact xmi:idref="Sender_ExecArtifact" /> + <artifact xmi:idref="Sender_SvntArtifact" /> + <execParameter> + <!-- entrypoint as exec parameter (see 10.6.1) --> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Sender_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Sender_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Sender_svnt</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Sender_exec</string> + </value> + </value> + </execParameter> + </implementation> + <instance xmi:id="Perf_Keyed_Test_ConnectorComponentInstance"> + <name>Perf_Keyed_Test_ConnectorComponent</name> + <node>SenderNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="Perf_Keyed_Test_ConnectorComponentImplementation" /> + <configProperty> + <name>topic_name</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test</string> + </value> + </value> + </configProperty> + <configProperty> + <name>qos_profile</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>HelloTest_Library#LatencyQoS</string> + </value> + </value> + </configProperty> + </instance> + <instance xmi:id="SenderComponentInstance"> + <name>SenderComponent</name> + <node>SenderNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="SenderComponentImplementation" /> + <configProperty> + <name>keys</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>1</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>iterations</name> + <value> + <type> + <kind>tk_ulong</kind> + </type> + <value> + <ulong>0</ulong> + </value> + </value> + </configProperty> + <configProperty> + <name>latency_count</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>100</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>sleep</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>2</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>spin</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>1000</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>number_of_sub</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>1</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>datalen</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>999</ushort> + </value> + </value> + </configProperty> + </instance> + + + + <connection> + <name>info_listen_data_pub</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>ping_listen_data_listener</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>push_consumer_data_listener</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" /> + </internalEndpoint> + </connection> + <connection> + <name>ping_listen_data_control</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>ping_listen_data_control</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>push_consumer_data_control</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" /> + </internalEndpoint> + </connection> + + + <connection> + <name>writer_connection</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>info_write_data</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>supplier_data</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" /> + </internalEndpoint> + </connection> + + <connection> + <name>connector_status_sender</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>connector_status</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>error_listener</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" /> + </internalEndpoint> + </connection> + + <artifact xmi:id="Sender_ExecArtifact"> + <name>Sender_exec</name> + <source/> + <node/> + <location>Sender_exec</location> + </artifact> + <artifact xmi:id="Sender_SvntArtifact"> + <name>Sender_svnt</name> + <source/> + <node/> + <location>Sender_svnt</location> + </artifact> + <artifact xmi:id="Sender_StubArtifact"> + <name>Sender_stub</name> + <source/> + <node/> + <location>Sender_stub</location> + </artifact> + <artifact xmi:id="Perf_Keyed_Test_Connector_ExecArtifact"> + <name>Perf_Keyed_Test_Connector_exec</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_exec</location> + </artifact> + <artifact xmi:id="Perf_Keyed_Test_Connector_SvntArtifact"> + <name>Perf_Keyed_Test_Connector_svnt</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_svnt</location> + </artifact> + <artifact xmi:id="Perf_Keyed_Test_Connector_StubArtifact"> + <name>Perf_Keyed_Test_Connector_stub</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_stub</location> + </artifact> + </Deployment:DeploymentPlan> diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub3.cdp b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub3.cdp new file mode 100644 index 00000000000..8c61cdb7348 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub3.cdp @@ -0,0 +1,344 @@ +<Deployment:DeploymentPlan + xmlns:Deployment="http://www.omg.org/Deployment" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd"> + <label>Perf_Keyed_Test_Depl_1</label> + <UUID>Perf_Keyed_Test_Depl_1</UUID> + + + <implementation xmi:id="Perf_Keyed_Test_ConnectorComponentImplementation"> + <name>Perf_Keyed_Test_ConnectorComponentImplementation</name> + <source/> + <artifact xmi:idref="Perf_Keyed_Test_Connector_ExecArtifact" /> + <artifact xmi:idref="Perf_Keyed_Test_Connector_SvntArtifact" /> + <execParameter> + <!-- entrypoint as exec parameter (see 10.6.1) --> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test_Connector_svnt</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test_Connector_exec</string> + </value> + </value> + </execParameter> + </implementation> + <implementation xmi:id="SenderComponentImplementation"> + <name>SenderComponentImplementation</name> + <source/> + <artifact xmi:idref="Sender_ExecArtifact" /> + <artifact xmi:idref="Sender_SvntArtifact" /> + <execParameter> + <!-- entrypoint as exec parameter (see 10.6.1) --> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Sender_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Sender_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Sender_svnt</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Sender_exec</string> + </value> + </value> + </execParameter> + </implementation> + <instance xmi:id="Perf_Keyed_Test_ConnectorComponentInstance"> + <name>Perf_Keyed_Test_ConnectorComponent</name> + <node>SenderNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="Perf_Keyed_Test_ConnectorComponentImplementation" /> + <configProperty> + <name>topic_name</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test</string> + </value> + </value> + </configProperty> + <configProperty> + <name>qos_profile</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>HelloTest_Library#LatencyQoS</string> + </value> + </value> + </configProperty> + </instance> + <instance xmi:id="SenderComponentInstance"> + <name>SenderComponent</name> + <node>SenderNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="SenderComponentImplementation" /> + <configProperty> + <name>keys</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>1</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>iterations</name> + <value> + <type> + <kind>tk_ulong</kind> + </type> + <value> + <ulong>0</ulong> + </value> + </value> + </configProperty> + <configProperty> + <name>latency_count</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>100</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>sleep</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>10</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>spin</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>1000</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>number_of_sub</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>3</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>datalen</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>999</ushort> + </value> + </value> + </configProperty> + </instance> + + + + <connection> + <name>info_listen_data_pub</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>ping_listen_data_listener</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>push_consumer_data_listener</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" /> + </internalEndpoint> + </connection> + <connection> + <name>ping_listen_data_control</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>ping_listen_data_control</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>push_consumer_data_control</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" /> + </internalEndpoint> + </connection> + + + <connection> + <name>writer_connection</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>info_write_data</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>supplier_data</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" /> + </internalEndpoint> + </connection> + + <connection> + <name>connector_status_sender</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>connector_status</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>error_listener</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" /> + </internalEndpoint> + </connection> + + <artifact xmi:id="Sender_ExecArtifact"> + <name>Sender_exec</name> + <source/> + <node/> + <location>Sender_exec</location> + </artifact> + <artifact xmi:id="Sender_SvntArtifact"> + <name>Sender_svnt</name> + <source/> + <node/> + <location>Sender_svnt</location> + </artifact> + <artifact xmi:id="Sender_StubArtifact"> + <name>Sender_stub</name> + <source/> + <node/> + <location>Sender_stub</location> + </artifact> + <artifact xmi:id="Perf_Keyed_Test_Connector_ExecArtifact"> + <name>Perf_Keyed_Test_Connector_exec</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_exec</location> + </artifact> + <artifact xmi:id="Perf_Keyed_Test_Connector_SvntArtifact"> + <name>Perf_Keyed_Test_Connector_svnt</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_svnt</location> + </artifact> + <artifact xmi:id="Perf_Keyed_Test_Connector_StubArtifact"> + <name>Perf_Keyed_Test_Connector_stub</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_stub</location> + </artifact> + </Deployment:DeploymentPlan> diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub_BE.cdp b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub_BE.cdp new file mode 100644 index 00000000000..ddc3cd9a87f --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_pub_BE.cdp @@ -0,0 +1,344 @@ +<Deployment:DeploymentPlan + xmlns:Deployment="http://www.omg.org/Deployment" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd"> + <label>Perf_Keyed_Test_Depl_1</label> + <UUID>Perf_Keyed_Test_Depl_1</UUID> + + + <implementation xmi:id="Perf_Keyed_Test_ConnectorComponentImplementation"> + <name>Perf_Keyed_Test_ConnectorComponentImplementation</name> + <source/> + <artifact xmi:idref="Perf_Keyed_Test_Connector_ExecArtifact" /> + <artifact xmi:idref="Perf_Keyed_Test_Connector_SvntArtifact" /> + <execParameter> + <!-- entrypoint as exec parameter (see 10.6.1) --> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test_Connector_svnt</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test_Connector_exec</string> + </value> + </value> + </execParameter> + </implementation> + <implementation xmi:id="SenderComponentImplementation"> + <name>SenderComponentImplementation</name> + <source/> + <artifact xmi:idref="Sender_ExecArtifact" /> + <artifact xmi:idref="Sender_SvntArtifact" /> + <execParameter> + <!-- entrypoint as exec parameter (see 10.6.1) --> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Sender_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Sender_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Sender_svnt</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Sender_exec</string> + </value> + </value> + </execParameter> + </implementation> + <instance xmi:id="Perf_Keyed_Test_ConnectorComponentInstance"> + <name>Perf_Keyed_Test_ConnectorComponent</name> + <node>SenderNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="Perf_Keyed_Test_ConnectorComponentImplementation" /> + <configProperty> + <name>topic_name</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test</string> + </value> + </value> + </configProperty> + <configProperty> + <name>qos_profile</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>HelloTest_Library#BestEffortQoS</string> + </value> + </value> + </configProperty> + </instance> + <instance xmi:id="SenderComponentInstance"> + <name>SenderComponent</name> + <node>SenderNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="SenderComponentImplementation" /> + <configProperty> + <name>keys</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>1</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>iterations</name> + <value> + <type> + <kind>tk_ulong</kind> + </type> + <value> + <ulong>10000</ulong> + </value> + </value> + </configProperty> + <configProperty> + <name>latency_count</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>100</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>sleep</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>2</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>spin</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>1000</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>number_of_sub</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>3</ushort> + </value> + </value> + </configProperty> + <configProperty> + <name>datalen</name> + <value> + <type> + <kind>tk_ushort</kind> + </type> + <value> + <ushort>999</ushort> + </value> + </value> + </configProperty> + </instance> + + + + <connection> + <name>info_listen_data_pub</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>ping_listen_data_listener</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>push_consumer_data_listener</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" /> + </internalEndpoint> + </connection> + <connection> + <name>ping_listen_data_control</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>ping_listen_data_control</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>push_consumer_data_control</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" /> + </internalEndpoint> + </connection> + + + <connection> + <name>writer_connection</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>info_write_data</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>supplier_data</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" /> + </internalEndpoint> + </connection> + + <connection> + <name>connector_status_sender</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>connector_status</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="SenderComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>error_listener</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance" /> + </internalEndpoint> + </connection> + + <artifact xmi:id="Sender_ExecArtifact"> + <name>Sender_exec</name> + <source/> + <node/> + <location>Sender_exec</location> + </artifact> + <artifact xmi:id="Sender_SvntArtifact"> + <name>Sender_svnt</name> + <source/> + <node/> + <location>Sender_svnt</location> + </artifact> + <artifact xmi:id="Sender_StubArtifact"> + <name>Sender_stub</name> + <source/> + <node/> + <location>Sender_stub</location> + </artifact> + <artifact xmi:id="Perf_Keyed_Test_Connector_ExecArtifact"> + <name>Perf_Keyed_Test_Connector_exec</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_exec</location> + </artifact> + <artifact xmi:id="Perf_Keyed_Test_Connector_SvntArtifact"> + <name>Perf_Keyed_Test_Connector_svnt</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_svnt</location> + </artifact> + <artifact xmi:id="Perf_Keyed_Test_Connector_StubArtifact"> + <name>Perf_Keyed_Test_Connector_stub</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_stub</location> + </artifact> + </Deployment:DeploymentPlan> diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_sub.cdp b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_sub.cdp new file mode 100644 index 00000000000..fc68d25baae --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_sub.cdp @@ -0,0 +1,246 @@ +<Deployment:DeploymentPlan + xmlns:Deployment="http://www.omg.org/Deployment" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd"> + <label>Perf_Keyed_Test_Depl_1</label> + <UUID>Perf_Keyed_Test_Depl_1</UUID> + + <implementation xmi:id="ReceiverComponentImplementation"> + <name>ReceiverComponentImplementation</name> + <source/> + <artifact xmi:idref="Receiver_ExecArtifact" /> + <artifact xmi:idref="Receiver_SvntArtifact" /> + <execParameter> + <!-- entrypoint as exec parameter (see 10.6.1) --> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Receiver_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Receiver_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Receiver_svnt</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Receiver_exec</string> + </value> + </value> + </execParameter> + </implementation> + + <implementation xmi:id="Perf_Keyed_Test_ConnectorComponentImplementation"> + <name>Perf_Keyed_Test_ConnectorComponentImplementation</name> + <source/> + <artifact xmi:idref="Perf_Keyed_Test_Connector_ExecArtifact" /> + <artifact xmi:idref="Perf_Keyed_Test_Connector_SvntArtifact" /> + <execParameter> + <!-- entrypoint as exec parameter (see 10.6.1) --> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test_Connector_svnt</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test_Connector_exec</string> + </value> + </value> + </execParameter> + </implementation> + <instance xmi:id="ReceiverComponentInstance"> + <name>ReceiverComponent</name> + <node>ReceiverNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="ReceiverComponentImplementation" /> + </instance> + <instance xmi:id="Perf_Keyed_Test_ConnectorComponentInstance2"> + <name>Perf_Keyed_Test_ConnectorComponent2</name> + <node>ReceiverNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="Perf_Keyed_Test_ConnectorComponentImplementation" /> + <configProperty> + <name>topic_name</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test</string> + </value> + </value> + </configProperty> + <configProperty> + <name>qos_profile</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>HelloTest_Library#LatencyQoS</string> + </value> + </value> + </configProperty> + </instance> + + <connection> + <name>info_listen_data</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>info_listen_data_listener</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="ReceiverComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>push_consumer_data_listener</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" /> + </internalEndpoint> + </connection> + + <connection> + <name>info_listen_data_control</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>info_listen_data_control</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="ReceiverComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>push_consumer_data_control</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" /> + </internalEndpoint> + </connection> + + <connection> + <name>writer_connection_sub</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>write_ping_data</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="ReceiverComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>supplier_data</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" /> + </internalEndpoint> + </connection> + + + <artifact xmi:id="Perf_Keyed_Test_Connector_ExecArtifact"> + <name>Perf_Keyed_Test_Connector_exec</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_exec</location> + </artifact> + <artifact xmi:id="Perf_Keyed_Test_Connector_SvntArtifact"> + <name>Perf_Keyed_Test_Connector_svnt</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_svnt</location> + </artifact> + <artifact xmi:id="Perf_Keyed_Test_Connector_StubArtifact"> + <name>Perf_Keyed_Test_Connector_stub</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_stub</location> + </artifact> + <artifact xmi:id="Receiver_ExecArtifact"> + <name>Receiver_exec</name> + <source/> + <node/> + <location>Receiver_exec</location> + </artifact> + <artifact xmi:id="Receiver_SvntArtifact"> + <name>Receiver_svnt</name> + <source/> + <node/> + <location>Receiver_svnt</location> + </artifact> + <artifact xmi:id="Receiver_StubArtifact"> + <name>Receiver_stub</name> + <source/> + <node/> + <location>Receiver_stub</location> + </artifact> +</Deployment:DeploymentPlan> diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_sub_BE.cdp b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_sub_BE.cdp new file mode 100644 index 00000000000..155e4b4bd05 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/Plan_sub_BE.cdp @@ -0,0 +1,247 @@ +<Deployment:DeploymentPlan + xmlns:Deployment="http://www.omg.org/Deployment" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.omg.org/Deployment Deployment.xsd"> + <label>Perf_Keyed_Test_Depl_1</label> + <UUID>Perf_Keyed_Test_Depl_1</UUID> + + <implementation xmi:id="ReceiverComponentImplementation"> + <name>ReceiverComponentImplementation</name> + <source/> + <artifact xmi:idref="Receiver_ExecArtifact" /> + <artifact xmi:idref="Receiver_SvntArtifact" /> + <execParameter> + <!-- entrypoint as exec parameter (see 10.6.1) --> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Receiver_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Receiver_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Receiver_svnt</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Receiver_exec</string> + </value> + </value> + </execParameter> + </implementation> + + <implementation xmi:id="Perf_Keyed_Test_ConnectorComponentImplementation"> + <name>Perf_Keyed_Test_ConnectorComponentImplementation</name> + <source/> + <artifact xmi:idref="Perf_Keyed_Test_Connector_ExecArtifact" /> + <artifact xmi:idref="Perf_Keyed_Test_Connector_SvntArtifact" /> + <execParameter> + <!-- entrypoint as exec parameter (see 10.6.1) --> + <name>component factory</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Impl</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantEntrypoint</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>create_Perf_Keyed_Test_Perf_Keyed_Test_Connector_Servant</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ServantArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test_Connector_svnt</string> + </value> + </value> + </execParameter> + <execParameter> + <name>edu.vanderbilt.dre.CIAO.ExecutorArtifact</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test_Connector_exec</string> + </value> + </value> + </execParameter> + </implementation> + <instance xmi:id="ReceiverComponentInstance"> + <name>ReceiverComponent</name> + <node>ReceiverNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="ReceiverComponentImplementation" /> + </instance> + <instance xmi:id="Perf_Keyed_Test_ConnectorComponentInstance2"> + <name>Perf_Keyed_Test_ConnectorComponent2</name> + <node>ReceiverNode</node> + <!-- hostname --> + <source/> + <implementation xmi:idref="Perf_Keyed_Test_ConnectorComponentImplementation" /> + <configProperty> + <name>topic_name</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>Perf_Keyed_Test</string> + </value> + </value> + </configProperty> + <configProperty> + <name>qos_profile</name> + <value> + <type> + <kind>tk_string</kind> + </type> + <value> + <string>HelloTest_Library#BestEffortQoS</string> + </value> + </value> + </configProperty> + </instance> + + <connection> + <name>info_listen_data</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>info_listen_data_listener</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="ReceiverComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>push_consumer_data_listener</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" /> + </internalEndpoint> + </connection> + + + <connection> + <name>info_listen_data_control</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>info_listen_data_control</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="ReceiverComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>push_consumer_data_control</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" /> + </internalEndpoint> + </connection> + + <connection> + <name>writer_connection_sub</name> + <deployRequirement> + <name>edu.dre.vanderbilt.DAnCE.ConnectionType</name> + <resourceType>Local_Interface</resourceType> + </deployRequirement> + <internalEndpoint> + <portName>write_ping_data</portName> + <provider>false</provider> + <kind>SimplexReceptacle</kind> + <instance xmi:idref="ReceiverComponentInstance" /> + </internalEndpoint> + <internalEndpoint> + <portName>supplier_data</portName> + <provider>true</provider> + <kind>Facet</kind> + <instance xmi:idref="Perf_Keyed_Test_ConnectorComponentInstance2" /> + </internalEndpoint> + </connection> + + + <artifact xmi:id="Perf_Keyed_Test_Connector_ExecArtifact"> + <name>Perf_Keyed_Test_Connector_exec</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_exec</location> + </artifact> + <artifact xmi:id="Perf_Keyed_Test_Connector_SvntArtifact"> + <name>Perf_Keyed_Test_Connector_svnt</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_svnt</location> + </artifact> + <artifact xmi:id="Perf_Keyed_Test_Connector_StubArtifact"> + <name>Perf_Keyed_Test_Connector_stub</name> + <source/> + <node/> + <location>DDS_Perf_Keyed_Test_Connector_stub</location> + </artifact> + <artifact xmi:id="Receiver_ExecArtifact"> + <name>Receiver_exec</name> + <source/> + <node/> + <location>Receiver_exec</location> + </artifact> + <artifact xmi:id="Receiver_SvntArtifact"> + <name>Receiver_svnt</name> + <source/> + <node/> + <location>Receiver_svnt</location> + </artifact> + <artifact xmi:id="Receiver_StubArtifact"> + <name>Receiver_stub</name> + <source/> + <node/> + <location>Receiver_stub</location> + </artifact> +</Deployment:DeploymentPlan> diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/README b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/README new file mode 100644 index 00000000000..5c60c72c2ab --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/README @@ -0,0 +1,24 @@ + +These tests test the performance with different options. + +- test one publisher and one subscriber in 1 process: + run_test.pl with resp. Plan.cdp + + +- default test (RELIABLE) , separate publisher and subscriber: + run_pub.pl and run_sub.pl with resp. Plan_pub.cdp and Plan_sub.cdp . + +- test with one publisher and three separate subscribers: + run_pub3.pl with Plan_pub3.cdp and run_sub.pl, run_sub2.pl, run_sub3.pl all with Plan_sub.cdp . + +- BEST_EFFORT test, separate publisher and subscriber: + run_pub_BE.pl and run_sub_BE.pl with resp. Plan_pub_BE.cdp and Plan_sub_BE.cdp . + + +To test changes in the next attributes, changes this values in the publisher cdp-files: +latency_count : indicates the number of messages minus 1 between two latency messages +iterations : the number of messages from one instance to send. 0 = INFINITY . +datalen: the datalen of a message (minimal 32). +sleep: time in ms to sleep before writing the next message +spin: number of times to do a code loop before writing the next message, sleep has to be 0 . +keys: number of instances. (default 1) MORE THEN 1 NOT IMPLEMENTED YET.
\ No newline at end of file diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/USER_QOS_PROFILES.xml b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/USER_QOS_PROFILES.xml new file mode 100644 index 00000000000..9b472b3f879 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/USER_QOS_PROFILES.xml @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + +Description +XML QoS Profile + +The QoS configuration of the DDS entities in the generated example is +loaded from this file. + +This file is used only when it is in the current working directory +or when the enviroment variable +NDDS_QOS_PROFILES is defined and points to this file. + +For more information about XML QoS Profiles see Chapter 15 in the +RTI Data Distribution Service user manual. +--> +<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:/ndds/ndds.4.4d/scripts/../resource/rtiddsgen/../qos_profiles_4.4d/schema/rti_dds_qos_profiles.xsd" version="4.4d"> + <!-- QoS Library containing the QoS profile used in the generated example. + + A QoS library is a named set of QoS profiles. + --> + <qos_library name="HelloTest_Library"> + <!-- QoS profile used to configure reliable communication between the DataWriter + and DataReader created in the example code. + + A QoS profile groups a set of related QoS. + --> + <qos_profile name="LatencyQoS" is_default_qos="true"> + <!-- QoS used to configure the data writer created in the example code --> + <datawriter_qos> + <reliability> + <kind>RELIABLE_RELIABILITY_QOS</kind> + <max_blocking_time> + <sec>DURATION_INFINITE_SEC</sec> + <nanosec>DURATION_INFINITE_NSEC</nanosec> + </max_blocking_time> + </reliability> + <history> + <kind>KEEP_ALL_HISTORY_QOS</kind> + </history> + <durability> + <kind>TRANSIENT_DURABILITY_QOS</kind> + </durability> + <resource_limits> + <max_instances>1</max_instances> + <initial_instances>1</initial_instances> + <max_samples>LENGTH_UNLIMITED</max_samples> + <initial_samples>100</initial_samples> + <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance> + </resource_limits> + <protocol> + <rtps_reliable_writer> + <max_heartbeat_retries>10</max_heartbeat_retries> + </rtps_reliable_writer> + </protocol> + </datawriter_qos> + <!-- QoS used to configure the data reader created in the example code --> + <datareader_qos> + <reliability> + <kind>RELIABLE_RELIABILITY_QOS</kind> + </reliability> + <history> + <kind>KEEP_ALL_HISTORY_QOS</kind> + </history> + <resource_limits> + <initial_samples>100</initial_samples> + <initial_instances>1</initial_instances> + <max_samples>LENGTH_UNLIMITED</max_samples> + <max_instances>1</max_instances> + <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance> + </resource_limits> + <durability> + <kind>TRANSIENT_DURABILITY_QOS</kind> + </durability> + </datareader_qos> + + </qos_profile> + <qos_profile name="BestEffortQoS" is_default_qos="false"> + <!-- QoS used to configure the data writer created in the example code --> + <datawriter_qos> + <reliability> + <kind>BEST_EFFORT_RELIABILITY_QOS</kind> + </reliability> + <history> + <kind>KEEP_ALL_HISTORY_QOS</kind> + </history> + <durability> + <kind>TRANSIENT_DURABILITY_QOS</kind> + </durability> + <resource_limits> + <max_instances>1</max_instances> + <initial_instances>1</initial_instances> + <max_samples>LENGTH_UNLIMITED</max_samples> + <initial_samples>100</initial_samples> + <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance> + </resource_limits> + <protocol> + <rtps_reliable_writer> + <max_heartbeat_retries>10</max_heartbeat_retries> + </rtps_reliable_writer> + </protocol> + </datawriter_qos> + <!-- QoS used to configure the data reader created in the example code --> + <datareader_qos> + <reliability> + <kind>BEST_EFFORT_RELIABILITY_QOS</kind> + </reliability> + <history> + <kind>KEEP_ALL_HISTORY_QOS</kind> + </history> + <resource_limits> + <initial_samples>100</initial_samples> + <initial_instances>1</initial_instances> + <max_samples>LENGTH_UNLIMITED</max_samples> + <max_instances>1</max_instances> + <max_samples_per_instance>LENGTH_UNLIMITED</max_samples_per_instance> + </resource_limits> + <durability> + <kind>TRANSIENT_DURABILITY_QOS</kind> + </durability> + </datareader_qos> + </qos_profile> + </qos_library> + +</dds>
\ No newline at end of file diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub.pl new file mode 100755 index 00000000000..7adaac62e2d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub.pl @@ -0,0 +1,219 @@ +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 = ( "Sender.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan_pub.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # 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 ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +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]); + } + 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); + } +} + +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"; + + print "Run dance_node_manager with $d_param\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; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60004 -o $ior_nsfile"); + +$NS->Spawn (); + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60004 -o ns.ior\n"; + +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:60004/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\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"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 180 seconds to allow task to complete\n"; +sleep (180); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -s"); +$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub3.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub3.pl new file mode 100755 index 00000000000..f210522bace --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub3.pl @@ -0,0 +1,219 @@ +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 = ( "Sender.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan_pub3.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # 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 ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +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]); + } + 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); + } +} + +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"; + + print "Run dance_node_manager with $d_param\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; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60004 -o $ior_nsfile"); + +$NS->Spawn (); + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60004 -o ns.ior\n"; + +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:60004/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\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"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 180 seconds to allow task to complete\n"; +sleep (180); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -s"); +$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub_BE.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub_BE.pl new file mode 100755 index 00000000000..7e84b92407a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_pub_BE.pl @@ -0,0 +1,219 @@ +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 = ( "Sender.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan_pub_BE.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # 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 ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +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]); + } + 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); + } +} + +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"; + + print "Run dance_node_manager with $d_param\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; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60004 -o $ior_nsfile"); + +$NS->Spawn (); + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60004 -o ns.ior\n"; + +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:60004/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\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"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 180 seconds to allow task to complete\n"; +sleep (180); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -s"); +$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub.pl new file mode 100755 index 00000000000..62fc97da27d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub.pl @@ -0,0 +1,219 @@ +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 = ( 60002 ); +@iorbases = ( "Receiver.ior" ); +@iorfiles = 0; +@nodenames = ( "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns1.ior"; +$ior_nsfile = 0; +$ior_embase = "EM1.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan_sub.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # 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 ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +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]); + } + 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); + } +} + +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"; + + print "Run dance_node_manager with $d_param\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; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$NS->Spawn (); + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +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 daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\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"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 180 seconds to allow task to complete\n"; +sleep (180); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -s"); +$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub2.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub2.pl new file mode 100755 index 00000000000..26a273dd7b7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub2.pl @@ -0,0 +1,219 @@ +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 = ( 60005 ); +@iorbases = ( "Receiver.ior" ); +@iorfiles = 0; +@nodenames = ( "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns1.ior"; +$ior_nsfile = 0; +$ior_embase = "EM2.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan_sub.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # 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 ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +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]); + } + 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); + } +} + +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"; + + print "Run dance_node_manager with $d_param\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; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60006 -o $ior_nsfile"); + +$NS->Spawn (); + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60006 -o ns.ior\n"; + +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:60006/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\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"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 180 seconds to allow task to complete\n"; +sleep (180); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -s"); +$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub3.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub3.pl new file mode 100755 index 00000000000..8fa41296ab7 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub3.pl @@ -0,0 +1,219 @@ +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 = ( 60007 ); +@iorbases = ( "Receiver.ior" ); +@iorfiles = 0; +@nodenames = ( "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns1.ior"; +$ior_nsfile = 0; +$ior_embase = "EM3.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan_sub.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # 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 ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +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]); + } + 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); + } +} + +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"; + + print "Run dance_node_manager with $d_param\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; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60008 -o $ior_nsfile"); + +$NS->Spawn (); + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60008 -o ns.ior\n"; + +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:60008/NameService"; + +# Invoke node daemon. +print "Invoking node daemon\n"; +$status = run_node_daemons (); + +if ($status != 0) { + print STDERR "ERROR: Unable to execute the node daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\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"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 180 seconds to allow task to complete\n"; +sleep (180); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -s"); +$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub_BE.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub_BE.pl new file mode 100755 index 00000000000..d178bdf4359 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_sub_BE.pl @@ -0,0 +1,219 @@ +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 = ( 60002 ); +@iorbases = ( "Receiver.ior" ); +@iorfiles = 0; +@nodenames = ( "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns1.ior"; +$ior_nsfile = 0; +$ior_embase = "EM1.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan_sub_BE.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # 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 ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +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]); + } + 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); + } +} + +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"; + + print "Run dance_node_manager with $d_param\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; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$NS->Spawn (); + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +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 daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\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"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 180 seconds to allow task to complete\n"; +sleep (180); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -s"); +$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; diff --git a/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_test.pl b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_test.pl new file mode 100755 index 00000000000..943d0e31404 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/performance-tests/Keyed/descriptors/run_test.pl @@ -0,0 +1,221 @@ +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 = 2; +@ports = ( 60001, 60002 ); +@iorbases = ( "NodeApp1.ior", "NodeApp2.ior" ); +@iorfiles = 0; +@nodenames = ( "SenderNode", "ReceiverNode" ); + +# ior files other than daemon +# ior files other than daemon +$ior_nsbase = "ns.ior"; +$ior_nsfile = 0; +$ior_embase = "EM.ior"; +$ior_emfile = 0; + +# Processes +$E = 0; +$EM = 0; +$NS = 0; +@DEAMONS = 0; + +# targets +@tg_daemons = 0; +$tg_naming = 0; +$tg_exe_man = 0; +$tg_executor = 0; + +$status = 0; +$cdp_file = "Plan.cdp"; + +sub create_targets { + # naming service + $tg_naming = PerlACE::TestTarget::create_target (1) || die "Create target for ns failed\n"; + $tg_naming->AddLibPath ('../lib'); + # 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 ('../lib'); + } + # execution manager + $tg_exe_man = PerlACE::TestTarget::create_target (1) || die "Create target for EM failed\n"; + $tg_exe_man->AddLibPath ('../lib'); + # executor (plan_launcher) + $tg_executor = PerlACE::TestTarget::create_target (1) || die "Create target for executor failed\n"; + $tg_executor->AddLibPath ('../lib'); +} + +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]); + } + 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"; + + print "Run dance_node_manager with $d_param\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; +} + +create_targets (); +init_ior_files (); + +# Invoke naming service + +$NS = $tg_naming->CreateProcess ("$TAO_ROOT/orbsvcs/Naming_Service/Naming_Service", "-m 1 -ORBEndpoint iiop://localhost:60003 -o $ior_nsfile"); + +$NS->Spawn (); + +print STDERR "Starting Naming Service with -m 1 -ORBEndpoint iiop://localhost:60003 -o ns.ior\n"; + +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 daemon\n"; + kill_open_processes (); + exit 1; +} + +$daemons_running = 1; + +# Invoke execution manager. +print "Invoking execution manager (dance_execution_manager.exe) with -e$ior_emfile\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"; + +print "Start dance_plan_launcher.exe with -x $cdp_file -k file://$ior_emfile\n"; +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-x $cdp_file -k file://$ior_emfile"); +$E->SpawnWaitKill (2*$tg_executor->ProcessStartWaitInterval ()); + +for ($i = 0; $i < $nr_daemon; ++$i) { + if ($tg_daemons[$i]->WaitForFileTimed ($iorbases[$i], + $tg_daemons[$i]->ProcessStopWaitInterval ()) == -1) { + print STDERR "ERROR: The ior file of daemon $i could not be found\n"; + kill_open_processes (); + exit 1; + } +} + +print "Sleeping 120 seconds to allow task to complete\n"; +sleep (120); + +# Invoke executor - stop the application -. +print "Invoking executor - stop the application -\n"; +print "by running dance_plan_launcher.exe with -k file://$ior_emfile -x $cdp_file -q\n"; + +$E = $tg_executor->CreateProcess ("$DANCE_ROOT/bin/dance_plan_launcher", + "-k file://$ior_emfile -x $cdp_file -s"); +$E->SpawnWaitKill ($tg_executor->ProcessStopWaitInterval ()); + +print "Executor returned.\n"; +print "Shutting down rest of the processes.\n"; + +delete_ior_files (); +kill_open_processes (); + +exit $status; |