summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2009-12-09 12:38:52 +0000
committerJohnny Willemsen <jwillemsen@remedy.nl>2009-12-09 12:38:52 +0000
commit56d549c52948c558ac6d40778365a5888e95a201 (patch)
tree22866f46b458ad0cb022ea17c4657fb6083e17ab
parentaa680cf5d80ce7f7ea756d05e1ba37240ac45fc4 (diff)
downloadATCD-56d549c52948c558ac6d40778365a5888e95a201.tar.gz
Wed Dec 9 12:37:33 UTC 2009 Johnny Willemsen <jwillemsen@remedy.nl>
* tests/IDL_Test/Local_Facet: Removed * tests/CIAO_ComponentServer/Local_Facet: New test for testing local facets * ciao/ComponentServer/CIAO_ComponentServer.idl * ciao/ComponentServer/CIAO_Container_Impl.cpp * ciao/ComponentServer/CIAO_Container_Impl.h * ciao/Containers/Container_Base.idl * ciao/Containers/Session/Session_Container.cpp * ciao/Containers/Session/Session_Container.h Added support to connect local facets by William Otte * ciao/Servants/Servant_Impl_Base.cpp: * ciao/Servants/Servant_Impl_Base.h: Made several methods pure virtual instead of not implemented
-rw-r--r--CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet.idl18
-rw-r--r--CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet.mpc146
-rw-r--r--CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.cpp119
-rw-r--r--CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.h81
-rw-r--r--CIAO/tests/CIAO_ComponentServer/Local_Facet/client.cpp186
-rwxr-xr-xCIAO/tests/CIAO_ComponentServer/Local_Facet/run_test.pl33
6 files changed, 583 insertions, 0 deletions
diff --git a/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet.idl b/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet.idl
new file mode 100644
index 00000000000..82b82b5e6a2
--- /dev/null
+++ b/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet.idl
@@ -0,0 +1,18 @@
+// $Id$
+#include <Components.idl>
+
+interface trigger
+{
+ oneway void run_test ();
+};
+
+local interface Foo
+{
+ void simple ();
+};
+
+component Bar supports trigger
+{
+ uses Foo foo_in;
+ provides Foo foo_out;
+};
diff --git a/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet.mpc b/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet.mpc
new file mode 100644
index 00000000000..022c15a5cad
--- /dev/null
+++ b/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet.mpc
@@ -0,0 +1,146 @@
+// $Id$
+// This file is generated with "generate_component_mpc.pl Local_Facet"
+
+project(Local_Facet_idl_gen) : componentidldefaults {
+
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=LOCAL_FACET_STUB_Export \
+ -Wb,stub_export_include=Local_Facet_stub_export.h \
+ -Wb,skel_export_macro=LOCAL_FACET_SVNT_Export \
+ -Wb,skel_export_include=Local_Facet_svnt_export.h \
+ -Wb,exec_export_macro=LOCAL_FACET_EXEC_Export \
+ -Wb,exec_export_include=Local_Facet_exec_export.h
+
+ IDL_Files {
+ Local_Facet.idl
+ }
+}
+
+project(Local_Facet_lem_gen) : ciaoidldefaults {
+
+ after += Local_Facet_idl_gen
+ custom_only = 1
+ idlflags += -Wb,stub_export_macro=LOCAL_FACET_LEM_STUB_Export \
+ -Wb,stub_export_include=Local_Facet_lem_stub_export.h \
+ -SS -Gxhst
+
+ IDL_Files {
+ Local_FacetE.idl
+ }
+}
+
+project(Local_Facet_lem_stub) : ccm_svnt {
+
+ after += Local_Facet_lem_gen Local_Facet_stub
+ libs += Local_Facet_stub
+
+
+ sharedname = Local_Facet_lem_stub
+ dynamicflags = LOCAL_FACET_LEM_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Local_FacetEC.cpp
+ }
+
+ Header_Files {
+ Local_FacetEC.h
+ Local_Facet_lem_stub_export.h
+ }
+
+ Inline_Files {
+ Local_FacetEC.inl
+ }
+}
+
+project(Local_Facet_stub) : ccm_stub {
+
+ after += Local_Facet_idl_gen
+ libs +=
+
+
+ sharedname = Local_Facet_stub
+ dynamicflags = LOCAL_FACET_STUB_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Local_FacetC.cpp
+ }
+
+ Header_Files {
+ Local_FacetC.h
+ Local_Facet_stub_export.h
+ }
+
+ Inline_Files {
+ Local_FacetC.inl
+ }
+}
+
+project(Local_Facet_exec) : ciao_executor {
+
+ after += Local_Facet_lem_stub Local_Facet_stub
+ sharedname = Local_Facet_exec
+ libs += Local_Facet_stub Local_Facet_lem_stub
+
+
+ dynamicflags = LOCAL_FACET_EXEC_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Local_Facet_exec.cpp
+ }
+
+ Header_Files {
+ Local_Facet_exec.h
+ Local_Facet_exec_export.h
+ }
+
+ Inline_Files {
+ }
+}
+
+
+project(Local_Facet_svnt) : ciao_servant {
+
+ after += Local_Facet_lem_stub
+ sharedname = Local_Facet_svnt
+ libs += Local_Facet_stub Local_Facet_lem_stub
+
+
+ dynamicflags = LOCAL_FACET_SVNT_BUILD_DLL
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ Local_FacetS.cpp
+ Local_Facet_svnt.cpp
+ }
+
+ Header_Files {
+ Local_FacetS.h
+ Local_Facet_svnt.h
+ Local_Facet_svnt_export.h
+ }
+
+ Inline_Files {
+ Local_FacetS.inl
+ }
+}
+
+project (Lf_CIAOComponentServer_Tst) : ciao_componentserver_stub, ccm_configvalue, ciao_cs_client, ciao_logger {
+ after += Local_Facet_stub Local_Facet_svnt
+ libs += Local_Facet_stub
+ IDL_Files {
+ }
+ Source_Files {
+ client.cpp
+ }
+} \ No newline at end of file
diff --git a/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.cpp b/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.cpp
new file mode 100644
index 00000000000..7db3d2dd353
--- /dev/null
+++ b/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.cpp
@@ -0,0 +1,119 @@
+// -*- C++ -*-
+// $Id$
+
+#include "Local_Facet_exec.h"
+#include "ciao/Logger/Log_Macros.h"
+
+namespace CIAO_Bar_Impl
+{
+ //============================================================
+ // Facet Executor Implementation Class: Foo_exec_i
+ //============================================================
+
+ Foo_exec_i::Foo_exec_i (void)
+ {
+ }
+
+ Foo_exec_i::~Foo_exec_i (void)
+ {
+ }
+
+ void Foo_exec_i::simple (void)
+ {
+ CIAO_DEBUG ((LM_INFO, "Got simple invocation\n"));
+ }
+
+ // Operations from ::Foo
+
+ //============================================================
+ // Component Executor Implementation Class: Bar_exec_i
+ //============================================================
+
+ Bar_exec_i::Bar_exec_i (void)
+ {
+ }
+
+ Bar_exec_i::~Bar_exec_i (void)
+ {
+ }
+
+ // Supported operations and attributes.
+
+ // Component attributes and port operations.
+
+ ::CCM_Foo_ptr
+ Bar_exec_i::get_foo_out (void)
+ {
+ return new Foo_exec_i ();
+ }
+
+ // Operations from Components::SessionComponent.
+
+ void
+ Bar_exec_i::set_session_context (
+ ::Components::SessionContext_ptr ctx)
+ {
+ this->context_ =
+ ::CCM_Bar_Context::_narrow (ctx);
+
+ if ( ::CORBA::is_nil (this->context_.in ()))
+ {
+ throw ::CORBA::INTERNAL ();
+ }
+ }
+
+ void
+ Bar_exec_i::run_test (void)
+ {
+ ::Foo_var foo_intf = this->context_->get_connection_foo_in ();
+
+ if (CORBA::is_nil (foo_intf))
+ {
+ CIAO_ERROR ((LM_ERROR, "ERROR: Local_Facet_Test: got a nil object reference for my connection\n"));
+ return;
+ }
+
+ CIAO_DEBUG ((LM_DEBUG, "Invoking simple\n"));
+ foo_intf->simple ();
+
+ CIAO_DEBUG ((LM_INFO, "Test successful!\n"));
+ }
+
+ void
+ Bar_exec_i::configuration_complete (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ Bar_exec_i::ccm_activate (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ Bar_exec_i::ccm_passivate (void)
+ {
+ /* Your code here. */
+ }
+
+ void
+ Bar_exec_i::ccm_remove (void)
+ {
+ /* Your code here. */
+ }
+
+ extern "C" LOCAL_FACET_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Bar_Impl (void)
+ {
+ ::Components::EnterpriseComponent_ptr retval =
+ ::Components::EnterpriseComponent::_nil ();
+
+ ACE_NEW_NORETURN (
+ retval,
+ Bar_exec_i);
+
+ return retval;
+ }
+}
+
diff --git a/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.h b/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.h
new file mode 100644
index 00000000000..4113d147adc
--- /dev/null
+++ b/CIAO/tests/CIAO_ComponentServer/Local_Facet/Local_Facet_exec.h
@@ -0,0 +1,81 @@
+// -*- C++ -*-
+// $Id$
+
+#ifndef CIAO_LOCAL_FACET_EXEC_H_
+#define CIAO_LOCAL_FACET_EXEC_H_
+
+#include /**/ "ace/pre.h"
+
+#include "Local_FacetEC.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include /**/ "Local_Facet_exec_export.h"
+#include "tao/LocalObject.h"
+
+
+namespace CIAO_Bar_Impl
+{
+ class LOCAL_FACET_EXEC_Export Foo_exec_i
+ : public virtual ::CCM_Foo,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Foo_exec_i (void);
+ virtual ~Foo_exec_i (void);
+
+ // Operations and attributes from ::Foo
+ virtual void simple (void);
+ };
+
+ class LOCAL_FACET_EXEC_Export Bar_exec_i
+ : public virtual Bar_Exec,
+ public virtual ::CORBA::LocalObject
+ {
+ public:
+ Bar_exec_i (void);
+ virtual ~Bar_exec_i (void);
+
+ //@{
+ /** Supported operations and attributes. */
+ virtual void run_test (void);
+
+ //@}
+
+ //@{
+ /** Component attributes and port operations. */
+
+
+ virtual ::CCM_Foo_ptr
+ get_foo_out (void);
+ //@}
+
+ //@{
+ /** Operations from Components::SessionComponent. */
+
+ 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:
+ ::CCM_Bar_Context_var context_;
+ };
+
+ extern "C" LOCAL_FACET_EXEC_Export ::Components::EnterpriseComponent_ptr
+ create_Bar_Impl (void);
+}
+
+#include /**/ "ace/post.h"
+
+#endif /* ifndef */
+
diff --git a/CIAO/tests/CIAO_ComponentServer/Local_Facet/client.cpp b/CIAO/tests/CIAO_ComponentServer/Local_Facet/client.cpp
new file mode 100644
index 00000000000..10009051d88
--- /dev/null
+++ b/CIAO/tests/CIAO_ComponentServer/Local_Facet/client.cpp
@@ -0,0 +1,186 @@
+// $Id$
+
+#include "ace/Get_Opt.h"
+#include "ciao/ComponentServer/CIAO_CS_ClientS.h"
+#include "ciao/ComponentServer/CIAO_ComponentServerC.h"
+#include "ciao/ComponentServer/CIAO_ServerActivator_Impl.h"
+#include "ciao/ComponentServer/CIAO_ComponentInstallation_Impl.h"
+#include "ciao/ComponentServer/CIAO_PropertiesC.h"
+#include "ciao/Valuetype_Factories/ConfigValue.h"
+#include "ciao/Logger/Logger_Service.h"
+
+#include "Local_FacetC.h"
+
+const char *cs_path = "ciao_componentserver";
+CORBA::ULong spawn_delay = 30;
+
+int
+parse_args (int argc, ACE_TCHAR *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("s:d:"));
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 's':
+ cs_path = ACE_TEXT_ALWAYS_CHAR (get_opts.opt_arg ());
+ break;
+
+ case 'd':
+ spawn_delay = ACE_OS::atoi (get_opts.opt_arg ());
+ break;
+
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-s <path> "
+ "-d <uint> "
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates sucessful parsing of the command line
+ return 0;
+}
+
+int
+ACE_TMAIN (int argc, ACE_TCHAR **argv)
+{
+ using namespace CIAO::Deployment;
+
+ CIAO::Logger_Service logger;
+
+ logger.init (argc, argv);
+ try
+ {
+ CORBA::ORB_var orb = CORBA::ORB_init (argc, argv);
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ CORBA::Object_var object =
+ orb->resolve_initial_references ("RootPOA");
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (object.in ());
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager ();
+
+ poa_manager->activate ();
+ ACE_DEBUG ((LM_DEBUG, "foo\n"));
+
+ CIAO::Deployment::ComponentInstallation_Impl *tmp_ci = 0;
+
+ ACE_NEW_THROW_EX (tmp_ci,
+ CIAO::Deployment::ComponentInstallation_Impl (),
+ CORBA::NO_MEMORY ());
+
+ PortableServer::ServantBase_var safe_servant = tmp_ci;
+
+ root_poa->activate_object (tmp_ci);
+
+ CIAO_ServerActivator_i *sa_tmp = new CIAO_ServerActivator_i (spawn_delay,
+ cs_path,
+ 0,
+ false,
+ tmp_ci->_this (),
+ orb.in (),
+ root_poa.in ());
+
+ PortableServer::ServantBase_var safe = sa_tmp;
+
+ ServerActivator_var sa = sa_tmp->_this ();
+
+ //ACE_DEBUG ((LM_DEBUG, "Attempting to create componentserver with no configvalues\n"));
+ // Make a componentserver with no configvalues
+ ComponentServer_var server1 (ComponentServer::_narrow (sa->create_component_server (0)));
+
+ if (CORBA::is_nil (server1.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Nil componentserver references"), -1);
+ }
+
+ Components::Deployment::Container_var tmp = server1->create_container (0);
+ Container_var cont1a = Container::_narrow (tmp.in ());
+
+ if (CORBA::is_nil (cont1a.in ()))
+ {
+ ACE_ERROR ((LM_ERROR, "Error: Got nil object reference from first create op on server 1 %u %u\n",
+ tmp.in (), cont1a.in ()));
+ return -1;
+ }
+
+ // Make our configvalues
+ // ::Components::ConfigValues_var configs = new
+ CORBA::Any val;
+ ::Components::ConfigValues configs(3);
+ configs.length (3);
+
+ val <<= "create_Bar_Servant";
+ configs[0] = new CIAO::ConfigValue_impl (CIAO::Deployment::SVNT_ENTRYPT,
+ val);
+ val <<= "Local_Facet_svnt";
+ configs[1] = new CIAO::ConfigValue_impl (CIAO::Deployment::SVNT_ARTIFACT,
+ val);
+ tmp_ci->install ("Local_Facet_svnt", "Local_Facet_svnt");
+ val <<= "Local_Facet_exec";
+ configs[2] = new CIAO::ConfigValue_impl (CIAO::Deployment::EXEC_ARTIFACT,
+ val);
+ tmp_ci->install ("Local_Facet_exec", "Local_Facet_exec");
+
+ // Install Components
+ Components::CCMObject_var comp1 = cont1a->install_component ("User",
+ "create_Bar_Impl",
+ configs);
+ Components::CCMObject_var comp2 = cont1a->install_component ("Provider",
+ "create_Bar_Impl",
+ configs);
+
+ if (CORBA::is_nil (comp1) || CORBA::is_nil (comp2))
+ {
+ ACE_ERROR ((LM_ERROR, "Got back a nil component ref from install_component\n"));
+ return -1;
+ }
+
+ ::Bar_var user = ::Bar::_narrow (comp1.in ());
+
+
+ if (CORBA::is_nil (user))
+ {
+ ACE_ERROR ((LM_ERROR, "Narrow failed from CCMObject to Bar\n"));
+ return -1;
+ }
+
+
+ cont1a->connect_local_facet (comp2, "foo_out", comp1, "foo_in");
+
+ user->run_test ();
+
+ cont1a->remove_component (comp1.in ());
+ cont1a->remove_component (comp2.in ());
+
+ server1->remove_container (cont1a.in ());
+
+ //ACE_DEBUG ((LM_DEBUG, "Removing component server\n"));
+ sa->remove_component_server (server1.in ());
+ //ACE_DEBUG ((LM_DEBUG, "Componentserver removed\n"));
+
+ orb->destroy ();
+ }
+ catch (::Components::CreateFailure &)
+ {
+ ACE_ERROR ((LM_ERROR, "Error: Caught CreateFailure exception.\n"));
+ }
+ catch (::Components::RemoveFailure &)
+ {
+ ACE_ERROR ((LM_ERROR, "Error: Caught RemoveFailure exception.\n"));
+ }
+ catch (...)
+ {
+ ACE_ERROR ((LM_ERROR, "Error: Caught unknown exception\n"));
+ }
+ return 0;
+}
diff --git a/CIAO/tests/CIAO_ComponentServer/Local_Facet/run_test.pl b/CIAO/tests/CIAO_ComponentServer/Local_Facet/run_test.pl
new file mode 100755
index 00000000000..5d8a72f7694
--- /dev/null
+++ b/CIAO/tests/CIAO_ComponentServer/Local_Facet/run_test.pl
@@ -0,0 +1,33 @@
+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;
+
+$status = 0;
+$ciao_root = "$ENV{CIAO_ROOT}";
+
+foreach $i (@ARGV) {
+ if ($i eq '-debug') {
+ $ENV{"DANCE_TRACE_ENABLE"} = 1;
+ $ENV{"CIAO_TRACE_ENABLE"} = 1;
+ }
+}
+
+my $target = PerlACE::TestTarget::create_target ($PerlACE::TestConfig);
+
+$TG = $target->CreateProcess ("client", "-s $ciao_root/bin/ciao_componentserver -d 120");
+$server_status = $TG->SpawnWaitKill ($target->ProcessStartWaitInterval ());
+
+if ($server_status != 0) {
+ print STDERR "ERROR: process returned $server_status\n";
+ exit 1;
+}
+
+$target->GetStderrLog();
+
+exit $status;