diff options
Diffstat (limited to 'modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver')
4 files changed, 500 insertions, 0 deletions
diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.idl b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.idl new file mode 100644 index 00000000000..71f1f8ed89d --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.idl @@ -0,0 +1,24 @@ +// $Id$ + +/** + * @file + * @author Marcel Smit <msmit@remedy.nl> + */ + +#ifndef RECEIVER_IDL +#define RECEIVER_IDL + +#include "Connector/LMBM_Test_Connector.idl" + +module LMBM_Test +{ + component Receiver + { + port ListenManyByManyTestConn::DDS_Listen info_listen; + + attribute unsigned short keys; + attribute unsigned short iterations; + }; +}; + +#endif diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.mpc b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.mpc new file mode 100755 index 00000000000..525a82ca292 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver.mpc @@ -0,0 +1,151 @@ +// $Id$ + +project(DDS_LMBM_Test_Receiver_idl_gen) : componentidldefaults, dds4ccm { + custom_only = 1 + after += DDS_LMBM_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 { + LMBM_Test_Receiver.idl + } +} + +project(DDS_LMBM_Test_Receiver_lem_gen) : ciaoidldefaults, dds4ccm { + after += DDS_LMBM_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 { + LMBM_Test_ReceiverE.idl + } +} + +project(DDS_LMBM_Test_Receiver_lem_stub) : ccm_svnt, dds4ccm_base { + after += DDS_LMBM_Test_Receiver_lem_gen DDS_LMBM_Test_Receiver_stub \ + DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Base_stub + libs += Receiver_stub DDS_LMBM_Test_Connector_stub \ + DDS_LMBM_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_lem_stub + dynamicflags = RECEIVER_LEM_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LMBM_Test_ReceiverEC.cpp + } + + Header_Files { + LMBM_Test_ReceiverEC.h + Receiver_lem_stub_export.h + } + + Inline_Files { + LMBM_Test_ReceiverEC.inl + } +} + +project(DDS_LMBM_Test_Receiver_stub) : ccm_stub, dds4ccm_base { + after += DDS_LMBM_Test_Receiver_idl_gen DDS_LMBM_Test_Connector_stub \ + DDS_LMBM_Test_Base_stub DDS_LMBM_Test_Connector_lem_gen + libs += DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Base_stub + libpaths += ../lib + libout = ../lib + includes += .. + sharedname = Receiver_stub + dynamicflags = RECEIVER_STUB_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LMBM_Test_ReceiverC.cpp + } + + Header_Files { + LMBM_Test_ReceiverC.h + Receiver_stub_export.h + } + + Inline_Files { + LMBM_Test_ReceiverC.inl + } +} + +project(DDS_LMBM_Test_Receiver_exec) : ciao_executor, dds4ccm_base { + after += DDS_LMBM_Test_Receiver_lem_stub DDS_LMBM_Test_Receiver_stub \ + DDS_LMBM_Test_Base_stub DDS_LMBM_Test_Connector_stub \ + DDS_LMBM_Test_Connector_lem_stub DDS4CCM_lem_stub + sharedname = Receiver_exec + libs += Receiver_stub Receiver_lem_stub DDS_LMBM_Test_Base_stub \ + DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Connector_lem_stub \ + DDS4CCM_lem_stub + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_EXEC_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LMBM_Test_Receiver_exec.cpp + } + + Header_Files { + LMBM_Test_Receiver_exec.h + Receiver_exec_export.h + } + + Inline_Files { + } +} + + +project(DDS_LMBM_Test_Receiver_svnt) : ciao_servant, dds4ccm_base { + after += DDS_LMBM_Test_Receiver_lem_stub DDS_LMBM_Test_Base_stub \ + DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Connector_svnt \ + DDS_LMBM_Test_Receiver_exec DDS_LMBM_Test_Connector_lem_stub \ + DDS4CCM_lem_stub DDS4CCM_skel + sharedname = Receiver_svnt + libs += Receiver_stub Receiver_lem_stub DDS_LMBM_Test_Base_stub \ + DDS_LMBM_Test_Connector_stub DDS_LMBM_Test_Connector_svnt \ + Receiver_exec DDS_LMBM_Test_Connector_lem_stub DDS4CCM_lem_stub \ + DDS4CCM_skel + libpaths += ../lib + libout = ../lib + includes += .. + dynamicflags = RECEIVER_SVNT_BUILD_DLL + + IDL_Files { + } + + Source_Files { + LMBM_Test_ReceiverS.cpp + LMBM_Test_Receiver_svnt.cpp + } + + Header_Files { + LMBM_Test_ReceiverS.h + LMBM_Test_Receiver_svnt.h + Receiver_svnt_export.h + } + + Inline_Files { + LMBM_Test_ReceiverS.inl + } +} + + diff --git a/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.cpp b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.cpp new file mode 100644 index 00000000000..5c87ba07158 --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.cpp @@ -0,0 +1,221 @@ +// -*- C++ -*- +// +// $Id$ + +#include "LMBM_Test_Receiver_exec.h" +#include "ace/Log_Msg.h" + +namespace CIAO_LMBM_Test_Receiver_Impl +{ + //============================================================ + // ListenManyByManyTest_Listener_exec_i + //============================================================ + ListenManyByManyTest_Listener_exec_i::ListenManyByManyTest_Listener_exec_i ( + Atomic_ULong &received_one_by_one, + Atomic_ULong &received_many_by_many) + : received_one_by_one_ (received_one_by_one), + received_many_by_many_ (received_many_by_many) + { + } + + ListenManyByManyTest_Listener_exec_i::~ListenManyByManyTest_Listener_exec_i (void) + { + } + + void + ListenManyByManyTest_Listener_exec_i::on_one_data ( + const ListenManyByManyTest & /*an_instance*/, + const ::CCM_DDS::ReadInfo & /*info*/) + { + //just count; this value is checked on ccm_remove. + ++this->received_one_by_one_; + } + + void + ListenManyByManyTest_Listener_exec_i::on_many_data ( + const ListenManyByManyTestSeq & an_instance, + const ::CCM_DDS::ReadInfoSeq & info) + { + if (an_instance.length () == 0) + { + ACE_ERROR ((LM_ERROR, "ERROR: ListenManyByManyTest_Listener_exec_i::on_many_data:" + "instance sequence length is nil\n")); + return; + } + for (CORBA::ULong i = 0 ; i < info.length(); ++i) + { + ACE_DEBUG ((LM_DEBUG, "ListenManyByManyTest_Listener_exec_i::on_many_data:" + "key <%C> - iteration <%d>\n", + an_instance[i].key.in (), + an_instance[i].iteration)); + if (!info[i].instance_handle.isValid) + { + ACE_ERROR ((LM_ERROR, "ERROR: ListenManyByManyTest_Listener_exec_i::on_many_data:" + "instance handle %d seems to be invalid" + "key <%C> - iteration <%d>\n", + i, + an_instance[i].key.in (), + an_instance[i].iteration)); + } + if (info[i].source_timestamp.sec == 0 && + info[i].source_timestamp.nanosec == 0) + { + ACE_ERROR ((LM_ERROR, "ERROR: ListenManyByManyTest_Listener_exec_i::on_one_data: " + "source timestamp seems to be invalid (nil) " + "key <%C> - iteration <%d>\n", + an_instance[i].key.in (), + an_instance[i].iteration)); + } + } + this->received_many_by_many_ += an_instance.length (); + } + + //============================================================ + // Receiver_exec_i + //============================================================ + Receiver_exec_i::Receiver_exec_i (void) + : received_one_by_one_ (0), + received_many_by_many_ (0), + iterations_ (10), + keys_ (5) + { + } + + Receiver_exec_i::~Receiver_exec_i (void) + { + } + + void + Receiver_exec_i::start () + { + ::CCM_DDS::DataListenerControl_var dlc = + this->context_->get_connection_info_listen_data_control (); + dlc->mode (::CCM_DDS::MANY_BY_MANY); + } + + ::LMBM_Test::ListenManyByManyTestConn::CCM_Listener_ptr + Receiver_exec_i::get_info_listen_data_listener (void) + { + return new ListenManyByManyTest_Listener_exec_i ( + this->received_one_by_one_, + this->received_many_by_many_); + } + + ::CCM_DDS::CCM_PortStatusListener_ptr + Receiver_exec_i::get_info_listen_status (void) + { + return ::CCM_DDS::CCM_PortStatusListener::_nil (); + } + + ::CCM_DDS::CCM_ConnectorStatusListener_ptr + Receiver_exec_i::get_info_listen_connector_status (void) + { + return::CCM_DDS::CCM_ConnectorStatusListener::_nil (); + } + + ::CORBA::UShort + Receiver_exec_i::iterations (void) + { + return this->iterations_; + } + + void + Receiver_exec_i::iterations (::CORBA::UShort iterations) + { + this->iterations_ = iterations; + } + + ::CORBA::UShort + Receiver_exec_i::keys (void) + { + return this->keys_; + } + + void + Receiver_exec_i::keys (::CORBA::UShort keys) + { + this->keys_ = keys; + } + + void + Receiver_exec_i::set_session_context ( + ::Components::SessionContext_ptr ctx) + { + this->context_ = + ::LMBM_Test::CCM_Receiver_Context::_narrow (ctx); + if ( ::CORBA::is_nil (this->context_.in ())) + { + throw ::CORBA::INTERNAL (); + } + } + + void + Receiver_exec_i::configuration_complete (void) + { + } + + void + Receiver_exec_i::ccm_activate (void) + { + start (); + } + + void + Receiver_exec_i::ccm_passivate (void) + { + } + + void + Receiver_exec_i::ccm_remove (void) + { + CORBA::ULong expected = this->keys_ * this->iterations_; + if (this->received_many_by_many_.value () == 0) + { + ACE_ERROR ((LM_ERROR, "ERROR: MANY_BY_MANY: " + "Didn't receive samples on many_by_many " + "callback while mode is MANY_BY_MANY " + "expected <%u> - received <%u>\n", + expected, + this->received_many_by_many_.value ())); + } + else if (expected != this->received_many_by_many_.value ()) + { + ACE_ERROR ((LM_ERROR, "ERROR: MANY_BY_MANY: " + "Didn't receive the expected " + "number of samples on many_by_many " + "callback while mode is MANY_BY_MANY " + "expected <%u> - received <%u>\n", + expected, + this->received_many_by_many_.value ())); + } + if (this->received_one_by_one_.value () > 0) + { + ACE_ERROR ((LM_ERROR, "ERROR: MANY_BY_MANY: " + "Received samples on one_by_one " + "callback while mode is MANY_BY_MANY " + "expected <0> - received <%u>\n", + this->received_one_by_one_.value ())); + } + if (this->received_one_by_one_.value () == 0 && + this->received_many_by_many_.value () > 0) + { + ACE_DEBUG ((LM_DEBUG, "MANY_BY_MANY: " + "Received only data on " + "many_by_many callback. " + "Test passed!\n")); + } + } + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LMBM_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/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.h b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.h new file mode 100644 index 00000000000..07b9175734a --- /dev/null +++ b/modules/CIAO/connectors/dds4ccm/tests/ListenManyByMany/Receiver/LMBM_Test_Receiver_exec.h @@ -0,0 +1,104 @@ +// -*- C++ -*- +// $Id$ + +#ifndef CIAO_RECEIVER_EXEC_H_ +#define CIAO_RECEIVER_EXEC_H_ + +#include "LMBM_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" + +namespace CIAO_LMBM_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; + + //============================================================ + // ListenManyByManyTest_Listener_exec_i + //============================================================ + class RECEIVER_EXEC_Export ListenManyByManyTest_Listener_exec_i + : public virtual ::LMBM_Test::ListenManyByManyTestConn::CCM_Listener, + public virtual ::CORBA::LocalObject + { + public: + ListenManyByManyTest_Listener_exec_i ( + Atomic_ULong &received_one_by_one, + Atomic_ULong &received_many_by_many); + virtual ~ListenManyByManyTest_Listener_exec_i (void); + + virtual void + on_one_data ( + const ListenManyByManyTest & an_instance, + const ::CCM_DDS::ReadInfo & info); + virtual void + on_many_data ( + const ListenManyByManyTestSeq & an_instance, + const ::CCM_DDS::ReadInfoSeq & info); + private: + Atomic_ULong &received_one_by_one_; + Atomic_ULong &received_many_by_many_; + }; + + //============================================================ + // 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 (); + + virtual ::CORBA::UShort iterations (void); + + virtual void iterations (::CORBA::UShort iterations); + + virtual ::CORBA::UShort keys (void); + + virtual void keys (::CORBA::UShort keys); + + virtual ::LMBM_Test::ListenManyByManyTestConn::CCM_Listener_ptr + get_info_listen_data_listener (void); + + virtual ::CCM_DDS::CCM_PortStatusListener_ptr + get_info_listen_status (void); + + virtual ::CCM_DDS::CCM_ConnectorStatusListener_ptr + get_info_listen_connector_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); + + private: + ::LMBM_Test::CCM_Receiver_Context_var context_; + + Atomic_ULong received_one_by_one_; + Atomic_ULong received_many_by_many_; + + CORBA::UShort iterations_; + CORBA::UShort keys_; + }; + + extern "C" RECEIVER_EXEC_Export ::Components::EnterpriseComponent_ptr + create_LMBM_Test_Receiver_Impl (void); +} + +#endif /* ifndef */ |