diff options
author | iliyan <iliyan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2007-01-04 04:19:49 +0000 |
---|---|---|
committer | iliyan <iliyan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2007-01-04 04:19:49 +0000 |
commit | fb8beece146cdc92a1e75139f1f22b7989aef4d5 (patch) | |
tree | 178609c656de61dcfe819221732875e62fca2552 | |
parent | 1eb2cd7af4556c39dcd17045f05cd18279bfa4cb (diff) | |
download | ATCD-fb8beece146cdc92a1e75139f1f22b7989aef4d5.tar.gz |
ChangeLogTag: Thu Jan 4 04:11:02 UTC 2007 Iliyan Jeliazkov <iliyan@ociweb.com>
19 files changed, 774 insertions, 73 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 251734d2932..a63d7a4e13d 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,43 @@ +Thu Jan 4 04:11:02 UTC 2007 Iliyan Jeliazkov <iliyan@ociweb.com> + + * tests/TransportCurrent/Framework/Framework.mpc: + * tests/TransportCurrent/Framework/run_test.pl: + * tests/TransportCurrent/IIOP/Current_Test_Impl.cpp: + * tests/TransportCurrent/IIOP/IIOP.mpc: + * tests/TransportCurrent/IIOP/IIOP_Server_Request_Interceptor.h: + * tests/TransportCurrent/IIOP/client.cpp: + * tests/TransportCurrent/IIOP/run_test.pl: + * tests/TransportCurrent/IIOP/server.cpp: + * tests/TransportCurrent/lib: + * tests/TransportCurrent/lib/Client_Request_Interceptor.h: + * tests/TransportCurrent/lib/Client_Request_Interceptor.cpp: + * tests/TransportCurrent/lib/Current_Test.idl: + * tests/TransportCurrent/lib/Current_Test_Export.h: + * tests/TransportCurrent/lib/Current_Test_Impl.h: + * tests/TransportCurrent/lib/Current_Test_Lib.mpc: + * tests/TransportCurrent/lib/ORBInitializer_T.h: + * tests/TransportCurrent/lib/ORBInitializer_T.cpp: + * tests/TransportCurrent/lib/Server_Request_Interceptor.h: + * tests/TransportCurrent/lib/Server_Request_Interceptor.cpp: + + Split off the IDL and the common stuff fro the two tests into a + lib directory and adjusted the references. This will hopefully + deal with the build dependency issues we have been seeing + recently and will eliminate the cases of duplicate compilation + of the IDL. Thanks to Johnny Willemsen and J.T. Conklin for the + ideas. + + * tests/TransportCurrent/Framework/Client_Request_Interceptor.h: + * tests/TransportCurrent/Framework/Client_Request_Interceptor.cpp: + * tests/TransportCurrent/Framework/Current_Test.idl: + * tests/TransportCurrent/Framework/Current_Test_Impl.h: + * tests/TransportCurrent/Framework/ORBInitializer_T.h: + * tests/TransportCurrent/Framework/ORBInitializer_T.cpp: + * tests/TransportCurrent/Framework/Server_Request_Interceptor.h: + * tests/TransportCurrent/Framework/Server_Request_Interceptor.cpp: + + Moved these files to lib directory. + Wed Jan 3 22:23:57 UTC 2007 Phil Mesnier <mesnier_p@ociweb.com> * tao/Profile_Transport_Resolver.cpp: diff --git a/TAO/tests/TransportCurrent/Framework/Framework.mpc b/TAO/tests/TransportCurrent/Framework/Framework.mpc index d5ed3a99985..c2077db199e 100644 --- a/TAO/tests/TransportCurrent/Framework/Framework.mpc +++ b/TAO/tests/TransportCurrent/Framework/Framework.mpc @@ -1,33 +1,21 @@ // -*- MPC -*- // $Id$ -project(*idl): taoidldefaults { - - IDL_Files { - Current_Test.idl - } - - custom_only = 1 -} - project(*Server): taoserver, tc, interceptors, pi_server { - after += *idl + after += Curren_Test_Lib_Client Current_Test_Lib_Server includes += . + includes += ../lib + libs += Current_Test_Lib_Client Current_Test_Lib_Server + libpaths += ../lib Source_Files { server.cpp Current_Test_Impl.cpp - Server_Request_Interceptor.cpp Tester.cpp Server_Main.cpp } - Source_Files { - Current_TestC.cpp - Current_TestS.cpp - } - IDL_Files { } @@ -35,20 +23,16 @@ project(*Server): taoserver, tc, interceptors, pi_server { project(*Client): taoclient, tc, interceptors, pi, dynamicinterface { - after += *idl - after += *Server - includes += . + after += *Server Current_Test_Lib_Client Current_Test_Lib_Server + includes += . ../lib + libs += Current_Test_Lib_Client Current_Test_Lib_Server + libpaths += ../lib Source_Files { - Client_Request_Interceptor.cpp client.cpp Tester.cpp } - Source_Files { - Current_TestC.cpp - } - IDL_Files { } diff --git a/TAO/tests/TransportCurrent/Framework/run_test.pl b/TAO/tests/TransportCurrent/Framework/run_test.pl index 182fa250db0..278f652e875 100755 --- a/TAO/tests/TransportCurrent/Framework/run_test.pl +++ b/TAO/tests/TransportCurrent/Framework/run_test.pl @@ -8,6 +8,23 @@ eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' use lib "$ENV{ACE_ROOT}/bin"; use PerlACE::Run_Test; +sub add_path { + my($name) = shift; + my($value) = shift; + if (defined $ENV{$name}) { + $ENV{$name} .= ':' . $value + } + else { + $ENV{$name} = $value; + } +} + +# Set the library path for the client to be able to load +# the commom library. +add_path('LD_LIBRARY_PATH', '../lib'); +add_path('LIBPATH', '../lib'); +add_path('SHLIB_PATH', '../lib'); + my $status = 0; my $confmod = ""; diff --git a/TAO/tests/TransportCurrent/IIOP/Current_Test_Impl.cpp b/TAO/tests/TransportCurrent/IIOP/Current_Test_Impl.cpp index e80298d2bde..8687263dbc3 100644 --- a/TAO/tests/TransportCurrent/IIOP/Current_Test_Impl.cpp +++ b/TAO/tests/TransportCurrent/IIOP/Current_Test_Impl.cpp @@ -3,7 +3,7 @@ #include "tao/TransportCurrent/TC_IIOPC.h" #include "tao/TransportCurrent/TCC.h" -#include "tests/TransportCurrent/Framework/Current_Test_Impl.h" +#include "Current_Test_Impl.h" ACE_RCSID (Transport_Current, Current_Test_Impl, diff --git a/TAO/tests/TransportCurrent/IIOP/IIOP.mpc b/TAO/tests/TransportCurrent/IIOP/IIOP.mpc index 37ab11369e8..34b326bf227 100644 --- a/TAO/tests/TransportCurrent/IIOP/IIOP.mpc +++ b/TAO/tests/TransportCurrent/IIOP/IIOP.mpc @@ -1,67 +1,40 @@ // -*- MPC -*- // $Id$ -project(*idl): taoidldefaults { - after += Framework_IDL - - idlflags += -o ../Framework - - IDL_Files { - ../Framework/Current_Test.idl - } - custom_only = 1 -} - project(*Server): taoserver, tc_iiop, interceptors, pi_server { - after += *idl - after += Framework_Server - - includes += ../Framework + after += Curren_Test_Lib_Client Current_Test_Lib_Server + includes += . + includes += ../lib + libs += Current_Test_Lib_Client Current_Test_Lib_Server + libpaths += ../lib Source_Files { - ../Framework/server.cpp - ../Framework/Server_Request_Interceptor.cpp + server.cpp +// Server_Request_Interceptor.cpp Current_Test_Impl.cpp IIOP_Server_Request_Interceptor.cpp IIOP_Server_Main.cpp IIOP_Tester.cpp } - Source_Files { - ../Framework/Current_TestC.cpp - ../Framework/Current_TestS.cpp - } - - Template_Files { - ../Framework/ORBInitializer_T.cpp - } - IDL_Files { } } project(*Client): taoclient, tc_iiop, interceptors, pi, dynamicinterface { - after += *idl - after += *Server - - includes += ../Framework + after += *Server Current_Test_Lib_Client Current_Test_Lib_Server + includes += . ../lib + libs += Current_Test_Lib_Client Current_Test_Lib_Server + libpaths += ../lib Source_Files { - ../Framework/Client_Request_Interceptor.cpp - ../Framework/client.cpp +// Client_Request_Interceptor.cpp + client.cpp IIOP_Tester.cpp } - Source_Files { - ../Framework/Current_TestC.cpp - } - - Template_Files { - ../Framework/ORBInitializer_T.cpp - } - IDL_Files { } } diff --git a/TAO/tests/TransportCurrent/IIOP/IIOP_Server_Request_Interceptor.h b/TAO/tests/TransportCurrent/IIOP/IIOP_Server_Request_Interceptor.h index 77a04c0f5ad..00cd81bdb31 100644 --- a/TAO/tests/TransportCurrent/IIOP/IIOP_Server_Request_Interceptor.h +++ b/TAO/tests/TransportCurrent/IIOP/IIOP_Server_Request_Interceptor.h @@ -25,7 +25,7 @@ #include "tao/TransportCurrent/IIOP_Transport_Current.h" -#include "tests/TransportCurrent/Framework/Server_Request_Interceptor.h" +#include "Server_Request_Interceptor.h" namespace Test { diff --git a/TAO/tests/TransportCurrent/IIOP/client.cpp b/TAO/tests/TransportCurrent/IIOP/client.cpp new file mode 100644 index 00000000000..f910a35d8e2 --- /dev/null +++ b/TAO/tests/TransportCurrent/IIOP/client.cpp @@ -0,0 +1,303 @@ +// -*- C++ -*- + +#include "ace/Get_Opt.h" +#include "ace/Task.h" + +#include "tao/DynamicInterface/Request.h" +#include "tao/ORBInitializer_Registry.h" + +#include "tao/TransportCurrent/Transport_Current.h" + +#include "Client_Request_Interceptor.h" +#include "Current_TestC.h" + +#include "ORBInitializer_T.h" + +ACE_RCSID (PICurrent, + client, + "$Id$") + +// Prototype + +int +test_transport_current (CORBA::ORB_ptr + ACE_ENV_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException, + CORBA::UserException)); + +using namespace TAO; + +const ACE_TCHAR* CLIENT_ORB_ID = ACE_TEXT ("client orb"); +const ACE_TCHAR* ior = "file://server.ior"; + +int nthreads = 1; +int niterations = 1; +int use_dii = 1; + + +int +parse_args (int argc, ACE_TCHAR *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, "yt:n:k:"); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'y': + use_dii = 0; // Do not use DII + break; + case 'k': + ior = get_opts.opt_arg (); + break; + case 't': + nthreads = ACE_OS::atoi (get_opts.opt_arg ()); + break; + case 'n': + niterations = ACE_OS::atoi (get_opts.opt_arg ()); + break; + default: + ACE_ERROR_RETURN ((LM_ERROR, + "Usage: %s " + "-k IOR " + "-t threads " + "-n iterations " + "-y " + "\n", + argv[0]), + -1); + } + return 0; +} + + +/// A helper class to encapsulate a task + +class Worker : public ACE_Task_Base +{ +public: + Worker (Test::Transport::CurrentTest_ptr server, int niterations, int use_dii_too); + virtual int svc (void); + +private: + // The server. + Test::Transport::CurrentTest_var server_; + + // The number of iterations on each client thread. + int niterations_; + + // Whether to use DII in addition to SII + int use_dii_too_; +}; + + +/// Ctor + +Worker::Worker (Test::Transport::CurrentTest_ptr server, + int niterations, + int use_dii_too) + : server_ (Test::Transport::CurrentTest::_duplicate (server)) + , niterations_ (niterations) + , use_dii_too_ (use_dii_too) +{ +} + + +/// Test referencing the TC data *inside* the context of a client-side +/// interceptor + +int +Worker::svc (void) +{ + ACE_TRY_NEW_ENV + { + + for (int i = 0; i < this->niterations_; ++i) + { + + // Minimum CORBA does not define Object::_request, so we're just + // skipping the DII part in those cases. +#if (TAO_HAS_MINIMUM_CORBA != 0) + + if (this->use_dii_too_) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("Client (%P|%t) Invoking server->invoked_by_client() via DII\n"))); + + CORBA::Request_var request = + this->server_->_request ("invoked_by_client" + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + request->set_return_type (CORBA::_tc_void); + + request->invoke (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + } + +#endif /* (TAO_HAS_MINIMUM_CORBA != 0) */ + + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("Client (%P|%t) Invoking server->invoked_by_client() via SII\n"))); + + this->server_->invoked_by_client (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (TAO_debug_level > 0 && i % 100 == 0) + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Client (%P|%t) Iteration = %d\n"), + i)); + } + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + "Client: exception raised"); + } + ACE_ENDTRY; + return 0; +} + + +/// The main driver +int +ACE_TMAIN (int argc, ACE_TCHAR *argv[]) +{ + ACE_DECLARE_NEW_CORBA_ENV; + ACE_TRY + { + Test::Client_Request_Interceptor cri (CLIENT_ORB_ID, test_transport_current); + + PortableInterceptor::ORBInitializer_ptr temp_initializer = + PortableInterceptor::ORBInitializer::_nil (); + + ACE_NEW_RETURN (temp_initializer, + Test::ORBInitializer<PortableInterceptor::ClientRequestInterceptor> (&cri), + -1); + + PortableInterceptor::ORBInitializer_var orb_initializer = + temp_initializer; + + PortableInterceptor::register_orb_initializer (orb_initializer.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + CORBA::ORB_var orb = + CORBA::ORB_init (argc, + argv, + CLIENT_ORB_ID + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (parse_args (argc, argv) != 0) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("Client (%P|%t) Failure to parse the command line.\n"), + ior), + -1); + + + ACE_TRY + { + test_transport_current (orb.in () ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("Client (%P|%t) ERROR: ") + ACE_TEXT ("TC invocation, outside of ") + ACE_TEXT ("interceptor context is undefined.") + ACE_TEXT (" Expected exception was not thrown\n")), + -1); + } + ACE_CATCH (Transport::NoContext, ex) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("Client (%P|%t) Expected exception occured when trying ") + ACE_TEXT ("to access traits outside the ") + ACE_TEXT ("interceptor or upcall context.\n"))); + } + ACE_ENDTRY; + + // Resolve the target object + CORBA::Object_var obj = orb->string_to_object (ior ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + Test::Transport::CurrentTest_var server = + Test::Transport::CurrentTest::_narrow (obj.in () ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (CORBA::is_nil (server.in ())) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("Client (%P|%t) The server object reference <%s> is nil.\n"), + ior), + -1); + + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Client (%P|%t) Spawning %d threads\n"), nthreads)); + + // Spawn a number of clients doing the same thing for a + // predetermined number of times + Worker client (server.in (), niterations, use_dii); + +#if defined (ACE_HAS_THREADS) + if (client.activate (THR_NEW_LWP | THR_JOINABLE, + nthreads) != 0) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("Client (%P|%t) Cannot activate %d client threads\n"), + nthreads), + -1); + client.thr_mgr ()->wait (); +#else + if (nthreads > 1) + ACE_ERROR ((LM_WARNING, + ACE_TEXT ("Client (%P|%t) Cannot use threads other than ") + ACE_TEXT ("the only one available.\n"))); + client.svc (); +#endif + + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Client (%P|%t) Collected any threads\n"))); + + CORBA::Long result = 0; + + // Verify enough interception points have been triggered + if (cri.interceptions () != 2 * // request & response + niterations * // iterations + nthreads * // threads + (2*use_dii)) // sii and dii, if needed + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("Client (%P|%t) Expected %d client-side interceptions, but detected %d\n"), + 2 * niterations * nthreads * (2*use_dii), + cri.interceptions ())); + } + else + { + + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Client (%P|%t) Invoking server->self_test()\n"))); + + // Self-test the server side + result = server->self_test (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (result != 0) + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("Client (%P|%t) Server self-test reported failure\n"))); + } + + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Client (%P|%t) Invoking oneway server->shutdown()\n"))); + + server->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + ACE_DEBUG ((LM_INFO, + ACE_TEXT ("Client (%P|%t) Completed %s\n"), + ((result == 0) ? ACE_TEXT ("successfuly") : ACE_TEXT ("with failure")))); + return result; + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + ACE_TEXT ("Client: Transport Current test (client-side) failed:")); + return -1; + } + ACE_ENDTRY; +} diff --git a/TAO/tests/TransportCurrent/IIOP/run_test.pl b/TAO/tests/TransportCurrent/IIOP/run_test.pl index 5daa7f993e2..9db8ca35798 100755 --- a/TAO/tests/TransportCurrent/IIOP/run_test.pl +++ b/TAO/tests/TransportCurrent/IIOP/run_test.pl @@ -8,6 +8,23 @@ eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' use lib "$ENV{ACE_ROOT}/bin"; use PerlACE::Run_Test; +sub add_path { + my($name) = shift; + my($value) = shift; + if (defined $ENV{$name}) { + $ENV{$name} .= ':' . $value + } + else { + $ENV{$name} = $value; + } +} + +# Set the library path for the client to be able to load +# the common library library. +add_path('LD_LIBRARY_PATH', '../lib'); +add_path('LIBPATH', '../lib'); +add_path('SHLIB_PATH', '../lib'); + $status = 0; $client = PerlACE::LocalFile ("client"); diff --git a/TAO/tests/TransportCurrent/IIOP/server.cpp b/TAO/tests/TransportCurrent/IIOP/server.cpp new file mode 100644 index 00000000000..31dbb014e90 --- /dev/null +++ b/TAO/tests/TransportCurrent/IIOP/server.cpp @@ -0,0 +1,242 @@ +// -*- C++ -*- + +#include "ace/Get_Opt.h" +#include "ace/OS_NS_stdio.h" +#include "ace/Task.h" + +#include "tao/ORBInitializer_Registry.h" + +#include "Current_Test_Impl.h" +#include "Server_Request_Interceptor.h" +#include "ORBInitializer_T.h" + + +ACE_RCSID (Transport_Current, + server, + "$Id$") + +const char *ior_output_file = "server.ior"; +int nthreads = 1; +int use_collocated_call = 1; + +int +parse_args (int argc, char *argv[]) +{ + ACE_Get_Opt get_opts (argc, argv, "t:o:n:c:"); + int c; + + while ((c = get_opts ()) != -1) + switch (c) + { + case 'c': + use_collocated_call = ACE_OS::atoi (get_opts.opt_arg ()); + break; + case 'o': + ior_output_file = get_opts.opt_arg (); + break; + case 't': + nthreads = ACE_OS::atoi (get_opts.opt_arg ()); + break; + case 'n': // Does nothing. Added just for symetry with the client. + break; + default: + ACE_ERROR_RETURN ((LM_ERROR, + "Usage: %s " + "-o <iorfile>" + "-t threads " + "-n n (ignored, if provided) " + "-c make_collocated_calls " + "\n", + argv[0]), + -1); + } + + // Indicates sucessful parsing of the command line + return 0; +} + + + +/// A helper class to encapsulate a task + +class Worker : public ACE_Task_Base +{ +public: + Worker (CORBA::ORB_ptr); + virtual int svc (void); + +private: + // The ORB + CORBA::ORB_var orb_; +}; + + +/// Ctor + +Worker::Worker (CORBA::ORB_ptr orb) + : orb_ (CORBA::ORB::_duplicate (orb)) +{ +} + + +/// Test referencing the TC data *inside* the context of a client-side +/// interceptor + +int +Worker::svc (void) +{ + ACE_TRY_NEW_ENV + { + this->orb_->run (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + "Server: exception raised"); + } + ACE_ENDTRY; + return 0; +} + + + +/// Main driver + +int +server_main (int argc, + ACE_TCHAR *argv[], + Test::Server_Request_Interceptor *cri) +{ + ACE_DECLARE_NEW_CORBA_ENV; + ACE_TRY + { + PortableInterceptor::ORBInitializer_ptr temp_initializer = + PortableInterceptor::ORBInitializer::_nil (); + + ACE_NEW_RETURN (temp_initializer, + Test::ORBInitializer <PortableInterceptor::ServerRequestInterceptor> (cri), + -1); // No exceptions yet! + + PortableInterceptor::ORBInitializer_var orb_initializer = + temp_initializer; + + PortableInterceptor::register_orb_initializer (orb_initializer.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + + CORBA::ORB_var orb = CORBA::ORB_init (argc, + argv, + ACE_TEXT ("test_orb") + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + CORBA::Object_var obj = + orb->resolve_initial_references ("RootPOA" + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + PortableServer::POA_var root_poa = + PortableServer::POA::_narrow (obj.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (CORBA::is_nil (root_poa.in ())) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("Server (%P|%t) Unable to obtain") + ACE_TEXT (" RootPOA reference.\n")), + -1); + + PortableServer::POAManager_var poa_manager = + root_poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (parse_args (argc, argv) != 0) + return -1; + + Current_Test_Impl server_impl (orb.in (), + root_poa.in (), + use_collocated_call); + + obj = server_impl._this (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + Test::Transport::CurrentTest_var server = + Test::Transport::CurrentTest::_narrow (obj.in () + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (CORBA::is_nil (server.in ())) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("Server (%P|%t) Unable to obtain ") + ACE_TEXT ("reference to CurrentTest object.\n")), + -1); + + CORBA::String_var ior = + orb->object_to_string (server.in () ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + // If the ior_output_file exists, output the IOR to it. + if (ior_output_file != 0) + { + FILE *output_file = ACE_OS::fopen (ior_output_file, "w"); + if (output_file == 0) + ACE_ERROR_RETURN ((LM_ERROR, + "Server (%P|%t) Cannot write " + "IOR: %s - %m", + ior_output_file), + -1); + ACE_OS::fprintf (output_file, "%s", ior.in ()); + ACE_OS::fclose (output_file); + } + + // Spawn a number of clients doing the same thing for a + // predetermined number of times + Worker worker (orb.in ()); + +#if defined (ACE_HAS_THREADS) + if (worker.activate (THR_NEW_LWP | THR_JOINABLE, + nthreads) != 0) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("Server (%P|%t) Cannot activate %d threads\n"), + nthreads), + -1); + worker.thr_mgr ()->wait (); +#else + if (nthreads > 1) + ACE_ERROR ((LM_WARNING, + ACE_TEXT ("Server (%P|%t) Cannot use threads other than ") + ACE_TEXT ("the only one available.\n"))); + worker.svc (); +#endif + + if (TAO_debug_level >= 1) + ACE_DEBUG ((LM_INFO, ACE_TEXT ("Server (%P|%t) Event loop finished.\n"))); + + if (!cri->self_test ()) + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("Server (%P|%t) ERROR: Interceptor self_test failed\n"))); + + server->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + orb->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + ACE_TEXT ("Server (%P|%t) ERROR: ")); + + return -1; + } + ACE_ENDTRY; + + ACE_DEBUG ((LM_INFO, ACE_TEXT ("Server (%P|%t) Completed successfuly.\n"))); + return 0; +} diff --git a/TAO/tests/TransportCurrent/Framework/Client_Request_Interceptor.cpp b/TAO/tests/TransportCurrent/lib/Client_Request_Interceptor.cpp index 723fda12963..723fda12963 100644 --- a/TAO/tests/TransportCurrent/Framework/Client_Request_Interceptor.cpp +++ b/TAO/tests/TransportCurrent/lib/Client_Request_Interceptor.cpp diff --git a/TAO/tests/TransportCurrent/Framework/Client_Request_Interceptor.h b/TAO/tests/TransportCurrent/lib/Client_Request_Interceptor.h index 3440a3e9288..c5ceadbf3f6 100644 --- a/TAO/tests/TransportCurrent/Framework/Client_Request_Interceptor.h +++ b/TAO/tests/TransportCurrent/lib/Client_Request_Interceptor.h @@ -16,7 +16,8 @@ #ifndef CLIENT_REQUEST_INTERCEPTOR_H #define CLIENT_REQUEST_INTERCEPTOR_H -#include "ace/config-all.h" +#include /**/ "ace/config-all.h" +#include /**/ "Current_Test_Export.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once @@ -49,7 +50,7 @@ namespace Test * only forwards the initial request. See the README file for * details. */ - class Client_Request_Interceptor + class Current_Test_Export Client_Request_Interceptor : public virtual PortableInterceptor::ClientRequestInterceptor, public virtual TAO_Local_RefCounted_Object { diff --git a/TAO/tests/TransportCurrent/Framework/Current_Test.idl b/TAO/tests/TransportCurrent/lib/Current_Test.idl index a7f00f7d29f..a7f00f7d29f 100644 --- a/TAO/tests/TransportCurrent/Framework/Current_Test.idl +++ b/TAO/tests/TransportCurrent/lib/Current_Test.idl diff --git a/TAO/tests/TransportCurrent/lib/Current_Test_Export.h b/TAO/tests/TransportCurrent/lib/Current_Test_Export.h new file mode 100644 index 00000000000..cfdf16fe60e --- /dev/null +++ b/TAO/tests/TransportCurrent/lib/Current_Test_Export.h @@ -0,0 +1,58 @@ + +// -*- C++ -*- +// $Id$ +// Definition for Win32 Export directives. +// This file is generated automatically by generate_export_file.pl -d Current_Test +// ------------------------------ +#ifndef CURRENT_TEST_EXPORT_H +#define CURRENT_TEST_EXPORT_H + +#include "ace/config-all.h" + +#if defined (ACE_AS_STATIC_LIBS) && !defined (CURRENT_TEST_HAS_DLL) +# define CURRENT_TEST_HAS_DLL 0 +#endif /* ACE_AS_STATIC_LIBS && CURRENT_TEST_HAS_DLL */ + +#if !defined (CURRENT_TEST_HAS_DLL) +# define CURRENT_TEST_HAS_DLL 1 +#endif /* ! CURRENT_TEST_HAS_DLL */ + +#if defined (CURRENT_TEST_HAS_DLL) && (CURRENT_TEST_HAS_DLL == 1) +# if defined (CURRENT_TEST_BUILD_DLL) +# define Current_Test_Export ACE_Proper_Export_Flag +# define CURRENT_TEST_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION (T) +# define CURRENT_TEST_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# else /* CURRENT_TEST_BUILD_DLL */ +# define Current_Test_Export ACE_Proper_Import_Flag +# define CURRENT_TEST_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION (T) +# define CURRENT_TEST_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +# endif /* CURRENT_TEST_BUILD_DLL */ +#else /* CURRENT_TEST_HAS_DLL == 1 */ +# define Current_Test_Export +# define CURRENT_TEST_SINGLETON_DECLARATION(T) +# define CURRENT_TEST_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) +#endif /* CURRENT_TEST_HAS_DLL == 1 */ + +// Set CURRENT_TEST_NTRACE = 0 to turn on library specific tracing even if +// tracing is turned off for ACE. +#if !defined (CURRENT_TEST_NTRACE) +# if (ACE_NTRACE == 1) +# define CURRENT_TEST_NTRACE 1 +# else /* (ACE_NTRACE == 1) */ +# define CURRENT_TEST_NTRACE 0 +# endif /* (ACE_NTRACE == 1) */ +#endif /* !CURRENT_TEST_NTRACE */ + +#if (CURRENT_TEST_NTRACE == 1) +# define CURRENT_TEST_TRACE(X) +#else /* (CURRENT_TEST_NTRACE == 1) */ +# if !defined (ACE_HAS_TRACE) +# define ACE_HAS_TRACE +# endif /* ACE_HAS_TRACE */ +# define CURRENT_TEST_TRACE(X) ACE_TRACE_IMPL(X) +# include "ace/Trace.h" +#endif /* (CURRENT_TEST_NTRACE == 1) */ + +#endif /* CURRENT_TEST_EXPORT_H */ + +// End of auto generated file. diff --git a/TAO/tests/TransportCurrent/Framework/Current_Test_Impl.h b/TAO/tests/TransportCurrent/lib/Current_Test_Impl.h index 84710ddbd86..84710ddbd86 100644 --- a/TAO/tests/TransportCurrent/Framework/Current_Test_Impl.h +++ b/TAO/tests/TransportCurrent/lib/Current_Test_Impl.h diff --git a/TAO/tests/TransportCurrent/lib/Current_Test_Lib.mpc b/TAO/tests/TransportCurrent/lib/Current_Test_Lib.mpc new file mode 100644 index 00000000000..2e1e35b150e --- /dev/null +++ b/TAO/tests/TransportCurrent/lib/Current_Test_Lib.mpc @@ -0,0 +1,65 @@ +// -*- MPC -*- +// $Id$ + +project(*idl): taoidldefaults { + + dynamicflags += CURRENT_TEST_BUILD_DLL + idlflags += -Wb,export_include=Current_Test_Export.h \ + -Wb,export_macro=Current_Test_Export + + idlflags -= -Sa -St + + IDL_Files { + Current_Test.idl + } + + custom_only = 1 +} + +project(*Client): taolib_with_idl, tao_versioning_idl_defaults { + + after += *idl + includes += . + libout = . + dynamicflags += CURRENT_TEST_BUILD_DLL + + Source_Files { + Client_Request_Interceptor.cpp + } + + Source_Files { + Current_TestC.cpp + } + + Template_Files { + ORBInitializer_T.cpp + } + + IDL_Files { + } +} + +project(*Server): taolib_with_idl, tao_versioning_idl_defaults, pi_server { + + after += *idl + includes += . + libout = . + dynamicflags += CURRENT_TEST_BUILD_DLL + + Source_Files { + Server_Request_Interceptor.cpp + } + + Source_Files { + Current_TestC.cpp + Current_TestS.cpp + } + + Template_Files { + ORBInitializer_T.cpp + } + + IDL_Files { + } +} + diff --git a/TAO/tests/TransportCurrent/Framework/ORBInitializer_T.cpp b/TAO/tests/TransportCurrent/lib/ORBInitializer_T.cpp index 31781bcb5cf..31781bcb5cf 100644 --- a/TAO/tests/TransportCurrent/Framework/ORBInitializer_T.cpp +++ b/TAO/tests/TransportCurrent/lib/ORBInitializer_T.cpp diff --git a/TAO/tests/TransportCurrent/Framework/ORBInitializer_T.h b/TAO/tests/TransportCurrent/lib/ORBInitializer_T.h index 62dc5caeba0..00d0fc7de9d 100644 --- a/TAO/tests/TransportCurrent/Framework/ORBInitializer_T.h +++ b/TAO/tests/TransportCurrent/lib/ORBInitializer_T.h @@ -13,8 +13,8 @@ #ifndef ORBINITIALIZER_T_H #define ORBINITIALIZER_T_H #include /**/ "ace/pre.h" - -#include "ace/config-all.h" +#include /**/ "ace/config-all.h" +#include /**/ "Current_Test_Export.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once @@ -29,7 +29,7 @@ namespace Test // interceptors. Partial specializations exist to handle client and // server request interceptors. template <typename I> - class ORBInitializer : public PortableInterceptor::ORBInitializer + class Current_Test_Export ORBInitializer : public PortableInterceptor::ORBInitializer { public: ORBInitializer (typename I::_ptr_type interceptor); diff --git a/TAO/tests/TransportCurrent/Framework/Server_Request_Interceptor.cpp b/TAO/tests/TransportCurrent/lib/Server_Request_Interceptor.cpp index 7b287231601..7b287231601 100644 --- a/TAO/tests/TransportCurrent/Framework/Server_Request_Interceptor.cpp +++ b/TAO/tests/TransportCurrent/lib/Server_Request_Interceptor.cpp diff --git a/TAO/tests/TransportCurrent/Framework/Server_Request_Interceptor.h b/TAO/tests/TransportCurrent/lib/Server_Request_Interceptor.h index 9f168bb7321..a1d96b50b38 100644 --- a/TAO/tests/TransportCurrent/Framework/Server_Request_Interceptor.h +++ b/TAO/tests/TransportCurrent/lib/Server_Request_Interceptor.h @@ -16,7 +16,8 @@ #ifndef SERVER_REQUEST_INTERCEPTOR_H #define SERVER_REQUEST_INTERCEPTOR_H -#include "ace/config-all.h" +#include /**/ "ace/config-all.h" +#include /**/ "Current_Test_Export.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once @@ -44,7 +45,7 @@ namespace Test * @brief Simple concrete server request interceptor. * */ - class Server_Request_Interceptor + class Current_Test_Export Server_Request_Interceptor : public virtual PortableInterceptor::ServerRequestInterceptor, public virtual TAO_Local_RefCounted_Object { |