diff options
27 files changed, 1901 insertions, 248 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index d64170a33c5..653c02e080c 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,75 @@ +Fri Dec 13 00:10:23 2002 Pradeep Gore <pradeep@oomworks.com> + + * orbsvcs/orbsvcs/Notify/AdminProperties.cpp: + Added missing template instantiation for TAO_NS_AdminProperties_var + + * orbsvcs/orbsvcs/Notify/Builder.cpp: + Added a 2 step initialization of TAO_NS_AdminProperties object + to appease Borland compiler. + + * orbsvcs/orbsvcs/Notify/CosNotify_Initializer.cpp: + * orbsvcs/orbsvcs/Notify/CosNotify_Initializer.h: + Moved Initializer from Notify_Service.cpp to a seperate file. + This should fix the bug related to multiple instances of the + Initalizer. Thanks to Shelton Tang <stang@altigen.com> for + reporting this. + + * orbsvcs/orbsvcs/Notify/Notify_Service.cpp: + * orbsvcs/orbsvcs/Notify/Notify_Service.h: + Removed Initializer class and implementation. + + * orbsvcs/orbsvcs/Makefile.CosNotification: + * orbsvcs/Orbsvcs/CosNotification.dsp: + * orbsvcs/Orbsvcs/CosNotification_Static.dsp: + * orbsvcs/Orbsvcs/CosNotification.bor: + Updated. + + * orbsvcs/Notify_Service/Makefile: + * orbsvcs/Notify_Service/Notify_Service.h: + Replaced include for Initializer to "CosNotify_Initializer.h" + + * orbsvcs/tests/Notify/Basic/AdminProperties.h: + * orbsvcs/tests/Notify/Basic/AdminProperties.cpp: + Modified the test to check MaxQueueLength and MaxSuppliers and + MaxConsumers seperately. Events are dispatched in a seperate + thread. The main thread receives events, an initial delay and + a consumer delay can be configured to provide a lag in event + delivery to force the Notification to buffer events. + + * orbsvcs/tests/Notify/Basic/Sequence.h: + * orbsvcs/tests/Notify/Basic/Sequence.cpp: + Added a test for sequences. In the default run, this test sends 15 events in batches + of 5 events via a sequence supplier. It sets the consumer's batch + size to 3 and sets a pacing interval of 2 seconds. it checks to + see if 15 events are indeed received. + + * orbsvcs/tests/Notify/Basic/adminproperties.conf: + Svc Conf file for the AdminProperties test - This prevents the + supplier's event sending thread from reading incomming requests. + + * orbsvcs/tests/Notify/Basic/Makefile: + * orbsvcs/tests/Notify/Basic/Makefile.bor: + * orbsvcs/tests/Notify/Basic/Sequence.dsp: + * orbsvcs/tests/Notify/Notify_Tests.dsw: + * orbsvcs/tests/Notify/Basic/run_test.pl: + Added Sequence Test. + + * orbsvcs/tests/Notify/Discarding/notify.conf: + To apply the MaxEventsPerConsumer QoS we need configure a queue + per proxysupplier. + + * orbsvcs/tests/Notify/Discarding/Notify_Structured_Push_Consumer.cpp: + * orbsvcs/tests/Notify/Discarding/Notify_Structured_Push_Consumer.h: + * orbsvcs/tests/Notify/Discarding/Structured_Consumer.cpp: + * orbsvcs/tests/Notify/Discarding/Structured_Supplier.cpp: + This test was expecting to receive the same number of events as + the MaxEventsPerConsumer. We know that atleast 1 *extra* event + will be delivered because the 1st event delivery causes the + channel queue to fill up and discard events. Thus, we send 40 + events, set the MaxEventsPerConsumer at 10 and really expect to + see 11 events, but we give some leeway and set the expected count + at 13. far less compared to 40. + Thu Dec 12 10:10:53 2002 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu> * orbsvcs/orbsvcs/Naming/Persistent_Context_Index.cpp: Fixed diff --git a/TAO/orbsvcs/Notify_Service/Makefile b/TAO/orbsvcs/Notify_Service/Makefile index 37863ee875e..df13a457d47 100644 --- a/TAO/orbsvcs/Notify_Service/Makefile +++ b/TAO/orbsvcs/Notify_Service/Makefile @@ -98,8 +98,6 @@ Notify_Service: $(addprefix $(VDIR),$(NOTIFY_OBJS)) $(ACE_ROOT)/ace/Thread_Adapter.inl \ $(ACE_ROOT)/ace/Thread.i \ $(ACE_ROOT)/ace/Thread_Exit.h \ - $(ACE_ROOT)/ace/Thread_Control.h \ - $(ACE_ROOT)/ace/Thread_Control.inl \ $(ACE_ROOT)/ace/Synch.h \ $(ACE_ROOT)/ace/Synch.i \ $(ACE_ROOT)/ace/Synch_T.h \ @@ -107,6 +105,8 @@ Notify_Service: $(addprefix $(VDIR),$(NOTIFY_OBJS)) $(ACE_ROOT)/ace/Synch_T.cpp \ $(ACE_ROOT)/ace/Log_Msg.h \ $(ACE_ROOT)/ace/Log_Priority.h \ + $(ACE_ROOT)/ace/Thread_Control.h \ + $(ACE_ROOT)/ace/Thread_Control.inl \ $(ACE_ROOT)/ace/Unbounded_Queue.h \ $(ACE_ROOT)/ace/Node.h \ $(ACE_ROOT)/ace/Node.cpp \ @@ -295,7 +295,6 @@ Notify_Service: $(addprefix $(VDIR),$(NOTIFY_OBJS)) $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyFilterC.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommC.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosEvent/event_export.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyFilterC.i \ @@ -303,7 +302,7 @@ Notify_Service: $(addprefix $(VDIR),$(NOTIFY_OBJS)) $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventChannelAdminC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/Naming/naming_export.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Log/notifylog_export.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.i \ ../orbsvcs/Notify/Service.h ../orbsvcs/Notify/notify_export.h \ $(ACE_ROOT)/ace/Service_Config.h \ @@ -364,7 +363,8 @@ Notify_Service: $(addprefix $(VDIR),$(NOTIFY_OBJS)) $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminS_T.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminS_T.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminS_T.cpp \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminS.i + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminS.i \ + ../orbsvcs/Notify/CosNotify_Initializer.h .obj/Notify_Service.o .obj/Notify_Service.so .shobj/Notify_Service.o .shobj/Notify_Service.so: Notify_Service.cpp Notify_Service.h \ $(ACE_ROOT)/ace/Task.h \ @@ -413,8 +413,6 @@ Notify_Service: $(addprefix $(VDIR),$(NOTIFY_OBJS)) $(ACE_ROOT)/ace/Thread_Adapter.inl \ $(ACE_ROOT)/ace/Thread.i \ $(ACE_ROOT)/ace/Thread_Exit.h \ - $(ACE_ROOT)/ace/Thread_Control.h \ - $(ACE_ROOT)/ace/Thread_Control.inl \ $(ACE_ROOT)/ace/Synch.h \ $(ACE_ROOT)/ace/Synch.i \ $(ACE_ROOT)/ace/Synch_T.h \ @@ -422,6 +420,8 @@ Notify_Service: $(addprefix $(VDIR),$(NOTIFY_OBJS)) $(ACE_ROOT)/ace/Synch_T.cpp \ $(ACE_ROOT)/ace/Log_Msg.h \ $(ACE_ROOT)/ace/Log_Priority.h \ + $(ACE_ROOT)/ace/Thread_Control.h \ + $(ACE_ROOT)/ace/Thread_Control.inl \ $(ACE_ROOT)/ace/Unbounded_Queue.h \ $(ACE_ROOT)/ace/Node.h \ $(ACE_ROOT)/ace/Node.cpp \ @@ -610,7 +610,6 @@ Notify_Service: $(addprefix $(VDIR),$(NOTIFY_OBJS)) $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyFilterC.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommC.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosEvent/event_export.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyFilterC.i \ @@ -618,7 +617,7 @@ Notify_Service: $(addprefix $(VDIR),$(NOTIFY_OBJS)) $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventChannelAdminC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/Naming/naming_export.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Log/notifylog_export.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.i \ ../orbsvcs/Notify/Service.h ../orbsvcs/Notify/notify_export.h \ $(ACE_ROOT)/ace/Service_Config.h \ @@ -680,6 +679,7 @@ Notify_Service: $(addprefix $(VDIR),$(NOTIFY_OBJS)) $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminS_T.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminS.i \ + ../orbsvcs/Notify/CosNotify_Initializer.h \ $(TAO_ROOT)/tao/debug.h \ $(TAO_ROOT)/tao/IORTable/IORTable.h \ $(TAO_ROOT)/tao/IORTable/iortable_export.h \ @@ -736,6 +736,8 @@ Notify_Service: $(addprefix $(VDIR),$(NOTIFY_OBJS)) $(ACE_ROOT)/ace/Dynamic_Service.h \ $(ACE_ROOT)/ace/Dynamic_Service_Base.h \ $(ACE_ROOT)/ace/Dynamic_Service.i \ - $(ACE_ROOT)/ace/Dynamic_Service.cpp + $(ACE_ROOT)/ace/Dynamic_Service.cpp \ + ../orbsvcs/Notify/Notify_Service.h \ + ../orbsvcs/Notify/Notify_Service.inl # IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/TAO/orbsvcs/Notify_Service/Notify_Service.h b/TAO/orbsvcs/Notify_Service/Notify_Service.h index df529d9d58a..8629250f4c1 100644 --- a/TAO/orbsvcs/Notify_Service/Notify_Service.h +++ b/TAO/orbsvcs/Notify_Service/Notify_Service.h @@ -22,6 +22,7 @@ #include "orbsvcs/CosNotifyChannelAdminC.h" #include "orbsvcs/CosNamingC.h" #include "../orbsvcs/Notify/Service.h" +#include "../orbsvcs/Notify/CosNotify_Initializer.h" #define NOTIFY_KEY "NotifyEventChannelFactory" #define NOTIFY_CHANNEL_NAME "NotifyEventChannel" @@ -131,7 +132,7 @@ protected: #else CosNaming::NamingContextExt_var naming_; #endif /* TAO_NOTIFY_USE_NAMING_CONTEXT */ - + // A naming context. Worker worker_; diff --git a/TAO/orbsvcs/orbsvcs/CosNotification.bor b/TAO/orbsvcs/orbsvcs/CosNotification.bor index 9a12b62ce45..1005829f60b 100644 --- a/TAO/orbsvcs/orbsvcs/CosNotification.bor +++ b/TAO/orbsvcs/orbsvcs/CosNotification.bor @@ -100,7 +100,8 @@ OBJFILES = \ $(OBJDIR)\Method_Request_Updates.obj \ $(OBJDIR)\Timer_Queue.obj \ $(OBJDIR)\Timer_Reactor.obj \ - $(OBJDIR)\Batch_Buffering_Strategy.obj + $(OBJDIR)\Batch_Buffering_Strategy.obj \ + $(OBJDIR)\CosNotify_Initializer.obj RESOURCE = $(OBJDIR)\CosNotification.res diff --git a/TAO/orbsvcs/orbsvcs/Makefile.CosNotification b/TAO/orbsvcs/orbsvcs/Makefile.CosNotification index ca8fc84498b..57d28d15de6 100644 --- a/TAO/orbsvcs/orbsvcs/Makefile.CosNotification +++ b/TAO/orbsvcs/orbsvcs/Makefile.CosNotification @@ -113,7 +113,8 @@ CPP_SRCS += \ Notify/Method_Request_Updates \ Notify/Timer_Reactor \ Notify/Timer_Queue \ - Notify/Sequence/Batch_Buffering_Strategy + Notify/Sequence/Batch_Buffering_Strategy \ + Notify/CosNotify_Initializer CPP_SRCS += \ Notify/ETCL_Filter \ @@ -20122,6 +20123,276 @@ realclean: clean Notify/Sequence/../Buffering_Strategy.inl \ Notify/Sequence/Batch_Buffering_Strategy.inl +.obj/CosNotify_Initializer.o .obj/CosNotify_Initializer.so .shobj/CosNotify_Initializer.o .shobj/CosNotify_Initializer.so: Notify/CosNotify_Initializer.cpp \ + Notify/CosNotify_Initializer.h \ + $(ACE_ROOT)/ace/pre.h \ + Notify/notify_export.h \ + $(ACE_ROOT)/ace/post.h \ + $(ACE_ROOT)/ace/ace_wchar.h \ + $(ACE_ROOT)/ace/ace_wchar.inl \ + Notify/Notify_Service.h Notify/Service.h \ + $(ACE_ROOT)/ace/Service_Config.h \ + $(ACE_ROOT)/ace/Service_Types.h \ + $(ACE_ROOT)/ace/Service_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.h \ + $(ACE_ROOT)/ace/ACE_export.h \ + $(ACE_ROOT)/ace/OS.h \ + $(ACE_ROOT)/ace/OS_Dirent.h \ + $(ACE_ROOT)/ace/OS_Export.h \ + $(ACE_ROOT)/ace/OS_Errno.h \ + $(ACE_ROOT)/ace/OS_Errno.inl \ + $(ACE_ROOT)/ace/OS_Dirent.inl \ + $(ACE_ROOT)/ace/OS_String.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/OS_String.inl \ + $(ACE_ROOT)/ace/OS_Memory.h \ + $(ACE_ROOT)/ace/OS_Memory.inl \ + $(ACE_ROOT)/ace/OS_TLI.h \ + $(ACE_ROOT)/ace/OS_TLI.inl \ + $(ACE_ROOT)/ace/Time_Value.h \ + $(ACE_ROOT)/ace/Time_Value.inl \ + $(ACE_ROOT)/ace/Default_Constants.h \ + $(ACE_ROOT)/ace/Global_Macros.h \ + $(ACE_ROOT)/ace/Min_Max.h \ + $(ACE_ROOT)/ace/streams.h \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(ACE_ROOT)/ace/Shared_Object.i \ + $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.i \ + $(ACE_ROOT)/ace/DLL.h \ + $(ACE_ROOT)/ace/Service_Object.i \ + $(ACE_ROOT)/ace/ACE.h \ + $(ACE_ROOT)/ace/Flag_Manip.h \ + $(ACE_ROOT)/ace/Flag_Manip.i \ + $(ACE_ROOT)/ace/Handle_Ops.h \ + $(ACE_ROOT)/ace/Handle_Ops.i \ + $(ACE_ROOT)/ace/Lib_Find.h \ + $(ACE_ROOT)/ace/Lib_Find.i \ + $(ACE_ROOT)/ace/Init_ACE.h \ + $(ACE_ROOT)/ace/Init_ACE.i \ + $(ACE_ROOT)/ace/Sock_Connect.h \ + $(ACE_ROOT)/ace/Sock_Connect.i \ + $(ACE_ROOT)/ace/ACE.i \ + $(ACE_ROOT)/ace/Synch.h \ + $(ACE_ROOT)/ace/Synch.i \ + $(ACE_ROOT)/ace/Synch_T.h \ + $(ACE_ROOT)/ace/Synch_T.i \ + $(ACE_ROOT)/ace/Thread.h \ + $(ACE_ROOT)/ace/Thread_Adapter.h \ + $(ACE_ROOT)/ace/Base_Thread_Adapter.h \ + $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.h \ + $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.inl \ + $(ACE_ROOT)/ace/Base_Thread_Adapter.inl \ + $(ACE_ROOT)/ace/Thread_Adapter.inl \ + $(ACE_ROOT)/ace/Thread.i \ + $(ACE_ROOT)/ace/Synch_T.cpp \ + $(ACE_ROOT)/ace/Log_Msg.h \ + $(ACE_ROOT)/ace/Log_Priority.h \ + $(ACE_ROOT)/ace/Service_Types.i \ + $(ACE_ROOT)/ace/Signal.h \ + $(ACE_ROOT)/ace/Signal.i \ + $(ACE_ROOT)/ace/Unbounded_Queue.h \ + $(ACE_ROOT)/ace/Node.h \ + $(ACE_ROOT)/ace/Node.cpp \ + $(ACE_ROOT)/ace/Unbounded_Queue.inl \ + $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ + $(ACE_ROOT)/ace/Malloc_Base.h \ + $(ACE_ROOT)/ace/Unbounded_Set.h \ + $(ACE_ROOT)/ace/Unbounded_Set.inl \ + $(ACE_ROOT)/ace/Unbounded_Set.cpp \ + $(ACE_ROOT)/ace/SString.h \ + $(ACE_ROOT)/ace/String_Base.h \ + $(ACE_ROOT)/ace/String_Base_Const.h \ + $(ACE_ROOT)/ace/String_Base.i \ + $(ACE_ROOT)/ace/String_Base.cpp \ + $(ACE_ROOT)/ace/Malloc.h \ + $(ACE_ROOT)/ace/Malloc.i \ + $(ACE_ROOT)/ace/Malloc_T.h \ + $(ACE_ROOT)/ace/Malloc_Allocator.h \ + $(ACE_ROOT)/ace/Malloc_Allocator.i \ + $(ACE_ROOT)/ace/Free_List.h \ + $(ACE_ROOT)/ace/Free_List.i \ + $(ACE_ROOT)/ace/Free_List.cpp \ + $(ACE_ROOT)/ace/Malloc_T.i \ + $(ACE_ROOT)/ace/Malloc_T.cpp \ + $(ACE_ROOT)/ace/Memory_Pool.h \ + $(ACE_ROOT)/ace/Mem_Map.h \ + $(ACE_ROOT)/ace/Mem_Map.i \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ + $(ACE_ROOT)/ace/Memory_Pool.i \ + $(ACE_ROOT)/ace/Auto_Ptr.h \ + $(ACE_ROOT)/ace/Auto_Ptr.i \ + $(ACE_ROOT)/ace/Auto_Ptr.cpp \ + $(ACE_ROOT)/ace/SString.i \ + $(ACE_ROOT)/ace/XML_Svc_Conf.h \ + $(ACE_ROOT)/ace/Service_Config.i \ + $(ACE_ROOT)/ace/Reactor.h \ + $(ACE_ROOT)/ace/Handle_Set.h \ + $(ACE_ROOT)/ace/Handle_Set.i \ + $(ACE_ROOT)/ace/Timer_Queue.h \ + $(ACE_ROOT)/ace/Timer_Queue_T.h \ + $(ACE_ROOT)/ace/Test_and_Set.h \ + $(ACE_ROOT)/ace/Test_and_Set.i \ + $(ACE_ROOT)/ace/Test_and_Set.cpp \ + $(ACE_ROOT)/ace/Timer_Queue_T.i \ + $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ + $(ACE_ROOT)/ace/Reactor.i \ + $(ACE_ROOT)/ace/Reactor_Impl.h \ + CosNotifyChannelAdminS.h \ + CosNotificationS.h \ + CosNotificationC.h \ + $(TAO_ROOT)/tao/corba.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Base.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/Message_Block.i \ + $(ACE_ROOT)/ace/Message_Block_T.h \ + $(ACE_ROOT)/ace/Message_Block_T.i \ + $(ACE_ROOT)/ace/Message_Block_T.cpp \ + $(ACE_ROOT)/ace/CDR_Base.inl \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(ACE_ROOT)/ace/Exception_Macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(TAO_ROOT)/tao/varbase.h \ + $(TAO_ROOT)/tao/TAO_Export.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/CDR.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Policy_ForwardC.h \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(TAO_ROOT)/tao/Sequence.i \ + $(TAO_ROOT)/tao/Sequence_T.h \ + $(TAO_ROOT)/tao/Sequence_T.i \ + $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/Policy_ForwardC.i \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/Any.i \ + $(TAO_ROOT)/tao/NVList.h \ + $(TAO_ROOT)/tao/NVList.i \ + $(TAO_ROOT)/tao/LocalObject.h \ + $(TAO_ROOT)/tao/LocalObject.i \ + $(TAO_ROOT)/tao/Principal.h \ + $(TAO_ROOT)/tao/OctetSeqC.h \ + $(TAO_ROOT)/tao/OctetSeqC.i \ + $(TAO_ROOT)/tao/Principal.i \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/CORBA_String.h \ + $(TAO_ROOT)/tao/CORBA_String.inl \ + $(TAO_ROOT)/tao/objectid.h \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/Remote_Object_Proxy_Impl.h \ + $(TAO_ROOT)/tao/Object_Proxy_Impl.h \ + $(TAO_ROOT)/tao/Encodable.h \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/ORB.i \ + $(TAO_ROOT)/tao/BoundsC.h \ + $(TAO_ROOT)/tao/BoundsC.i \ + $(TAO_ROOT)/tao/ValueBase.h \ + $(TAO_ROOT)/tao/ValueBase.i \ + $(TAO_ROOT)/tao/ValueFactory.h \ + $(TAO_ROOT)/tao/ValueFactory.i \ + $(TAO_ROOT)/tao/AbstractBase.h \ + $(TAO_ROOT)/tao/AbstractBase.inl \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/WrongTransactionC.h \ + $(TAO_ROOT)/tao/WrongTransactionC.i \ + $(TAO_ROOT)/tao/Object_KeyC.h \ + $(TAO_ROOT)/tao/Object_KeyC.i \ + $(TAO_ROOT)/tao/ObjectIDList.h \ + $(TAO_ROOT)/tao/ObjectIDList.i \ + $(TAO_ROOT)/tao/StringSeqC.h \ + $(TAO_ROOT)/tao/StringSeqC.i \ + $(TAO_ROOT)/tao/PortableInterceptorC.h \ + $(TAO_ROOT)/tao/DynamicC.h \ + $(TAO_ROOT)/tao/DynamicC.i \ + $(TAO_ROOT)/tao/ObjectReferenceTemplateC.h \ + $(TAO_ROOT)/tao/ObjectReferenceTemplateC.i \ + $(TAO_ROOT)/tao/Messaging_SyncScopeC.h \ + $(TAO_ROOT)/tao/Messaging_SyncScopeC.i \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PortableInterceptorC.i \ + Notify/notify_export.h \ + CosNotificationC.i \ + $(TAO_ROOT)/tao/PortableServer/PortableServer.h \ + $(TAO_ROOT)/tao/PortableServer/portableserver_export.h \ + $(TAO_ROOT)/tao/PortableServer/PortableServerC.h \ + $(TAO_ROOT)/tao/PortableServer/PortableServerC.i \ + $(TAO_ROOT)/tao/PortableServer/Servant_Base.h \ + $(TAO_ROOT)/tao/Abstract_Servant_Base.h \ + $(ACE_ROOT)/ace/Atomic_Op.h \ + $(ACE_ROOT)/ace/Atomic_Op_T.h \ + $(ACE_ROOT)/ace/Atomic_Op_T.i \ + $(ACE_ROOT)/ace/Atomic_Op_T.cpp \ + $(ACE_ROOT)/ace/Atomic_Op.i \ + $(TAO_ROOT)/tao/PortableServer/Servant_Base.i \ + $(TAO_ROOT)/tao/PortableServer/Collocated_Object.h \ + $(TAO_ROOT)/tao/PortableServer/Collocated_Object.i \ + $(TAO_ROOT)/tao/PortableServer/ThruPOA_Object_Proxy_Impl.h \ + $(TAO_ROOT)/tao/PortableServer/Direct_Object_Proxy_Impl.h \ + CosNotificationS_T.h \ + CosNotificationS_T.i \ + CosNotificationS_T.cpp \ + CosNotificationS.i \ + CosNotifyFilterS.h \ + CosNotifyCommS.h \ + CosEventCommS.h \ + CosEventCommC.h \ + CosEventCommC.i \ + CosEventCommS_T.h \ + CosEventCommS_T.i \ + CosEventCommS_T.cpp \ + CosEventCommS.i \ + CosNotifyCommC.h \ + CosNotifyCommC.i \ + CosNotifyCommS_T.h \ + CosNotifyCommS_T.i \ + CosNotifyCommS_T.cpp \ + CosNotifyCommS.i \ + CosNotifyFilterC.h \ + CosNotifyFilterC.i \ + CosNotifyFilterS_T.h \ + CosNotifyFilterS_T.i \ + CosNotifyFilterS_T.cpp \ + CosNotifyFilterS.i \ + CosEventChannelAdminS.h \ + CosEventChannelAdminC.h \ + CosEventChannelAdminC.i \ + CosEventChannelAdminS_T.h \ + CosEventChannelAdminS_T.i \ + CosEventChannelAdminS_T.cpp \ + CosEventChannelAdminS.i \ + CosNotifyChannelAdminC.h \ + CosNotifyChannelAdminC.i \ + CosNotifyChannelAdminS_T.h \ + CosNotifyChannelAdminS_T.i \ + CosNotifyChannelAdminS_T.cpp \ + CosNotifyChannelAdminS.i \ + Notify/Notify_Service.inl + .obj/ETCL_Filter.o .obj/ETCL_Filter.so .shobj/ETCL_Filter.o .shobj/ETCL_Filter.so: Notify/ETCL_Filter.cpp Notify/ETCL_Filter.h \ $(ACE_ROOT)/ace/pre.h \ Notify/notify_export.h \ diff --git a/TAO/orbsvcs/orbsvcs/Notify/AdminProperties.cpp b/TAO/orbsvcs/orbsvcs/Notify/AdminProperties.cpp index 49ea7774141..46b3d3c0ec2 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/AdminProperties.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/AdminProperties.cpp @@ -59,10 +59,12 @@ TAO_NS_AdminProperties::queue_full (void) template class ACE_Atomic_Op<TAO_SYNCH_MUTEX,int>; template class ACE_Atomic_Op_Ex<TAO_SYNCH_MUTEX,int>; +template class ACE_Refcounted_Auto_Ptr<TAO_NS_AdminProperties, TAO_SYNCH_MUTEX>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #pragma instantiate ACE_Atomic_Op<TAO_SYNCH_MUTEX,int> #pragma instantiate ACE_Atomic_Op_Ex<TAO_SYNCH_MUTEX,int> +#pragma ACE_Refcounted_Auto_Ptr<TAO_NS_AdminProperties, TAO_SYNCH_MUTEX> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Builder.cpp b/TAO/orbsvcs/orbsvcs/Notify/Builder.cpp index 61a642275ca..b5c196dea28 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Builder.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Builder.cpp @@ -134,11 +134,15 @@ TAO_NS_Builder::build_event_channel (TAO_NS_EventChannelFactory* ecf, const CosN PortableServer::ServantBase_var servant_var (ec); + TAO_NS_AdminProperties* admin_properties = 0; + // set the admin properties. - ACE_NEW_THROW_EX (ec->admin_properties_, + ACE_NEW_THROW_EX (admin_properties, TAO_NS_AdminProperties (), CORBA::NO_MEMORY ()); + ec->admin_properties_ = admin_properties; + // set the parent - ec->parent_ = ecf; diff --git a/TAO/orbsvcs/orbsvcs/Notify/CosNotify_Initializer.cpp b/TAO/orbsvcs/orbsvcs/Notify/CosNotify_Initializer.cpp new file mode 100644 index 00000000000..9ff92aa6e50 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/Notify/CosNotify_Initializer.cpp @@ -0,0 +1,17 @@ +// $Id$ + +#include "CosNotify_Initializer.h" + +#if ! defined (__ACE_INLINE__) +#include "CosNotify_Initializer.inl" +#endif /* __ACE_INLINE__ */ + +ACE_RCSID(Notify, TAO_NS_CosNotify_Initializer, "$id$") + +#include "Notify_Service.h" + +TAO_NS_CosNotify_Initializer::TAO_NS_CosNotify_Initializer (void) +{ + ACE_Service_Config::static_svcs ()->insert (&ace_svc_desc_TAO_NS_Notify_Service); + ACE_Service_Config::static_svcs ()->insert (&ace_svc_desc_TAO_Notify_Default_EMO_Factory_OLD); +} diff --git a/TAO/orbsvcs/orbsvcs/Notify/CosNotify_Initializer.h b/TAO/orbsvcs/orbsvcs/Notify/CosNotify_Initializer.h new file mode 100644 index 00000000000..a2e73f4898a --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/Notify/CosNotify_Initializer.h @@ -0,0 +1,38 @@ +/* -*- C++ -*- */ +/** + * @file CosNotify_Initializer.h + * + * $Id$ + * + * @author Pradeep Gore <pradeep@oomworks.com> + * + * + */ + +#ifndef TAO_NS_COSNOTIFY_INITIALIZER_H +#define TAO_NS_COSNOTIFY_INITIALIZER_H +#include "ace/pre.h" + +#include "notify_export.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +/** + * @class TAO_NS_CosNotify_Initializer + * + * @brief Helper to load the Cos Notification service into the service conf. for static links. + * + */ +class TAO_Notify_Export TAO_NS_CosNotify_Initializer +{ +public: + /// Constuctor + TAO_NS_CosNotify_Initializer (void); +}; + +static TAO_NS_CosNotify_Initializer TAO_NS_CosNotify_initializer; + +#include "ace/post.h" +#endif /* TAO_NS_COSNOTIFY_INITIALIZER_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Service.cpp b/TAO/orbsvcs/orbsvcs/Notify/Notify_Service.cpp index 62b9d34b596..0fa7993dcaa 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Service.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Notify_Service.cpp @@ -330,15 +330,6 @@ TAO_NS_Notify_Service::remove (TAO_NS_EventChannelFactory* /*ecf*/ ACE_ENV_ARG_D // NOP. } - -/*********************************************************************************************************************/ - -TAO_NS_Cos_Notification_Service_Initializer::TAO_NS_Cos_Notification_Service_Initializer (void) -{ - ACE_Service_Config::static_svcs ()->insert (&ace_svc_desc_TAO_NS_Notify_Service); - ACE_Service_Config::static_svcs ()->insert (&ace_svc_desc_TAO_Notify_Default_EMO_Factory_OLD); -} - /*********************************************************************************************************************/ ACE_STATIC_SVC_DEFINE (TAO_Notify_Default_EMO_Factory_OLD, diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_Service.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_Service.h index 566c75b4b7c..51da268298d 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_Service.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Notify_Service.h @@ -89,22 +89,6 @@ protected: TAO_NS_Builder* builder_; }; -/*********************************************************************************************************************/ - -/** - * @class TAO_NS_CosNotification_Service_Initializer - * - * @brief Helper to load the Cos Notification service into the service conf. for static links. - * - */ -class TAO_Notify_Export TAO_NS_Cos_Notification_Service_Initializer -{ -public: - /// Constuctor - TAO_NS_Cos_Notification_Service_Initializer (void); -}; - -static TAO_NS_Cos_Notification_Service_Initializer TAO_NS_Cos_Notification_Service_initializer; ACE_STATIC_SVC_DECLARE (TAO_NS_Notify_Service) ACE_FACTORY_DECLARE (TAO_Notify, TAO_NS_Notify_Service) diff --git a/TAO/orbsvcs/tests/Notify/Basic/AdminProperties.cpp b/TAO/orbsvcs/tests/Notify/Basic/AdminProperties.cpp index ecea254392f..f4f11a33e12 100644 --- a/TAO/orbsvcs/tests/Notify/Basic/AdminProperties.cpp +++ b/TAO/orbsvcs/tests/Notify/Basic/AdminProperties.cpp @@ -3,17 +3,131 @@ #include "AdminProperties.h" #include "ace/Arg_Shifter.h" #include "ace/Get_Opt.h" -#include "Notify_StructuredPushConsumer.h" -#include "Notify_StructuredPushSupplier.h" +#include "tao/debug.h" + +/***************************************************************************/ + +AdminProperties_Task::AdminProperties_Task (void) + :supplier_ (0), client_ (0) +{ +} + +void +AdminProperties_Task::init (TAO_Notify_StructuredPushSupplier *supplier, AdminProperties* client) +{ + supplier_ = supplier; + client_ = client; +} + +int +AdminProperties_Task::svc (void) +{ + // operations: + CosNotification::StructuredEvent event; + + // EventHeader + + // FixedEventHeader + // EventType + // string + event.header.fixed_header.event_type.domain_name = CORBA::string_dup("*"); + // string + event.header.fixed_header.event_type.type_name = CORBA::string_dup("*"); + // string + event.header.fixed_header.event_name = CORBA::string_dup("myevent"); + + // OptionalHeaderFields + // PropertySeq + // sequence<Property>: string name, any value + event.header.variable_header.length (0); // put nothing here + + // FilterableEventBody + // PropertySeq + // sequence<Property>: string name, any value + event.filterable_data.length (3); + event.filterable_data[0].name = CORBA::string_dup("threshold"); + + event.filterable_data[1].name = CORBA::string_dup("temperature"); + event.filterable_data[1].value <<= (CORBA::Long)70; + + event.filterable_data[2].name = CORBA::string_dup("pressure"); + event.filterable_data[2].value <<= (CORBA::Long)80; + + // @@ CORBA::Short prio = CosNotification::LowestPriority; + + int event_count = this->client_->event_count_; + + ACE_DEBUG ((LM_DEBUG, "Supplier sending %d events...\n", event_count)); + + ACE_DECLARE_NEW_CORBA_ENV; + + for (int i = 0 ; i < event_count; ++i) + { + event.filterable_data[0].value <<= (CORBA::Long)i; + + // Any. + event.remainder_of_body <<= (CORBA::Long)i; + + ACE_TRY + { + this->supplier_->send_event (event ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } + ACE_CATCH (CORBA::IMP_LIMIT, impl_limit) + { + if (TAO_debug_level) + ACE_DEBUG ((LM_DEBUG, "Event %d was not send due to Impl Limit reached\n", i)); + + this->client_->was_rejected_ = 1; + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Exception sending event\n"); + } + ACE_ENDTRY; + } + +return 0; +} +/***************************************************************************/ + +AdminProperties_StructuredPushConsumer::AdminProperties_StructuredPushConsumer (AdminProperties* client) + :client_ (client), events_received_ (0) +{ +} + +void +AdminProperties_StructuredPushConsumer::push_structured_event (const CosNotification::StructuredEvent & /*notification*/ + ACE_ENV_ARG_DECL_NOT_USED + ) + ACE_THROW_SPEC (( + CORBA::SystemException, + CosEventComm::Disconnected + )) +{ + ++events_received_; + + if (TAO_debug_level) + ACE_DEBUG ((LM_DEBUG, "Consumer %x received event %d\n", this, events_received_.value ())); + + ACE_OS::sleep (this->client_->consumer_delay_); +} + +/***************************************************************************/ AdminProperties::AdminProperties (void) : max_queue_length_ (10), - max_consumers_ (5), - max_suppliers_ (5), + max_consumers_ (3), + max_suppliers_ (3), reject_new_events_ (0), - consumers_ (3), - suppliers_ (3), - event_count_ (30) + consumer_delay_ (0, 0), + initial_delay_ (5, 0), + consumers_ (4), + suppliers_ (4), + event_count_ (30), + suppliers_connected_count_ (0), + consumers_connected_count_ (0), + was_rejected_ (0) { } @@ -66,6 +180,18 @@ AdminProperties::parse_args(int argc, char *argv[]) // Number of suppliers to create. arg_shifter.consume_arg (); } + else if ((current_arg = arg_shifter.get_the_parameter ("-ConsumerDelay"))) + { + this->consumer_delay_ = ACE_Time_Value (ACE_OS::atoi (current_arg), 0); // Consumer delay in secs. + + arg_shifter.consume_arg (); + } + else if ((current_arg = arg_shifter.get_the_parameter ("-InitialDelay"))) + { + this->initial_delay_ = ACE_Time_Value (ACE_OS::atoi (current_arg), 0); // Initial delay in secs. + + arg_shifter.consume_arg (); + } else if (arg_shifter.cur_arg_strncasecmp ("-?") == 0) { ACE_DEBUG((LM_DEBUG, @@ -76,7 +202,9 @@ AdminProperties::parse_args(int argc, char *argv[]) "-reject_new_events [reject_new_events] " "-consumers [consumers] " "-suppliers [suppliers] " - "-event_count [event_count]\n", + "-event_count [event_count] " + "-ConsumerDelay [delay_in_sec] " + "-InitialDelay [delay_in_secs]\n", argv[0], argv[0])); @@ -159,14 +287,115 @@ AdminProperties::init (int argc, void AdminProperties::run_test (ACE_ENV_SINGLE_ARG_DECL) { + this->test_max_queue_length (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + this->test_max_clients (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + // Destroy the EC and hence release server resources. + this->ec_->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); +} + +void +AdminProperties::test_max_queue_length (ACE_ENV_SINGLE_ARG_DECL) +{ + // Create the consumer + AdminProperties_StructuredPushConsumer *consumer; + + ACE_NEW (consumer, + AdminProperties_StructuredPushConsumer (this)); + + consumer->init (root_poa_.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + consumer->connect (this->consumer_admin_.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + // Create the supplier + TAO_Notify_StructuredPushSupplier *supplier = 0; + ACE_NEW (supplier, + TAO_Notify_StructuredPushSupplier ()); + + supplier->init (root_poa_.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + supplier->connect (this->supplier_admin_.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + AdminProperties_Task supplier_task; + + // Init the Task to send events; + supplier_task.init (supplier, this); + + if (supplier_task.activate (THR_NEW_LWP | THR_JOINABLE, + 1) != 0) + { + ACE_ERROR ((LM_ERROR, + "Cannot activate supplier task\n")); + } + + ACE_OS::sleep (initial_delay_); // Consumers receive events in the main thread. delay receiving the 1st event. + + CORBA::Long previous_count = 0; + + do{ + previous_count = consumer->events_received_.value (); + + // we add a full 1 sec. to the waiting period for a new event. + ACE_Time_Value waiting_period (this->consumer_delay_.sec () + 1, 0); + + this->orb_->run (waiting_period); + + }while (previous_count != consumer->events_received_.value ()); + + // Test ended. + // wait for the supplier task to finish. + supplier_task.wait (); + + CORBA::Long received_count = consumer->events_received_.value (); + + // disconnect the participants. + consumer->disconnect (ACE_ENV_SINGLE_ARG_PARAMETER); + supplier->disconnect (ACE_ENV_SINGLE_ARG_PARAMETER); + + // check the results and print the assessment. + // we expect to see event_count_+1 events + + ACE_DEBUG ((LM_DEBUG, "Supplier send %d events, consumer received %d events, max_queue_length = %d\n", + event_count_, received_count, max_queue_length_)); + + if (received_count > this->max_queue_length_ + 1) + { + ACE_DEBUG ((LM_ERROR, "MaxQueueLength exceeded, try increasing consumer delay (currently = %d)\n", + this->consumer_delay_.sec ())); + + if (this->reject_new_events_ == 1 && was_rejected_ == 0) + ACE_DEBUG ((LM_ERROR, "RejectNewEvents failed\n")); + } +} + +void +AdminProperties::test_max_clients (ACE_ENV_SINGLE_ARG_DECL) +{ this->create_suppliers (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; this->create_consumers (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; - this->send_events (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; + // check the results and print the assessment. + if (this->consumers_connected_count_ > this->max_consumers_) + ACE_DEBUG ((LM_ERROR, "Connected consumers %d, exceed MaxConsumers %d\n", + this->consumers_connected_count_ > this->max_consumers_)); + + if (this->suppliers_connected_count_ > this->max_suppliers_) + ACE_DEBUG ((LM_ERROR, "Connected suppliers %d, exceed MaxSuppliers %d\n", + this->suppliers_connected_count_ > this->max_suppliers_)); } void @@ -194,8 +423,15 @@ AdminProperties::create_suppliers (ACE_ENV_SINGLE_ARG_DECL) supplier->connect (this->supplier_admin_.in () ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; + + this->suppliers_connected_count_++; } } + ACE_CATCH (CORBA::IMP_LIMIT, impl_limit) + { + if (TAO_debug_level) + ACE_DEBUG ((LM_DEBUG, "Impl Limit excpetion when connecting supplier\n")); + } ACE_CATCHANY { ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, @@ -229,82 +465,20 @@ AdminProperties::create_consumers (ACE_ENV_SINGLE_ARG_DECL) consumer->connect (this->consumer_admin_.in () ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; + + this->consumers_connected_count_++; } } - ACE_CATCHANY + ACE_CATCH (CORBA::IMP_LIMIT, impl_limit) { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "Exception in connecting consumer \n"); - } - ACE_ENDTRY; -} - -void -AdminProperties::send_events (ACE_ENV_SINGLE_ARG_DECL) -{ - // operations: - CosNotification::StructuredEvent event; - - // EventHeader - - // FixedEventHeader - // EventType - // string - event.header.fixed_header.event_type.domain_name = CORBA::string_dup("*"); - // string - event.header.fixed_header.event_type.type_name = CORBA::string_dup("*"); - // string - event.header.fixed_header.event_name = CORBA::string_dup("myevent"); - - // OptionalHeaderFields - // PropertySeq - // sequence<Property>: string name, any value - event.header.variable_header.length (0); // put nothing here - - // FilterableEventBody - // PropertySeq - // sequence<Property>: string name, any value - event.filterable_data.length (3); - event.filterable_data[0].name = CORBA::string_dup("threshold"); - - event.filterable_data[1].name = CORBA::string_dup("temperature"); - event.filterable_data[1].value <<= (CORBA::Long)70; - - event.filterable_data[2].name = CORBA::string_dup("pressure"); - event.filterable_data[2].value <<= (CORBA::Long)80; - - // @@ CORBA::Short prio = CosNotification::LowestPriority; - - TAO_Notify_StructuredPushSupplier *supplier = 0; - ACE_NEW (supplier, - TAO_Notify_StructuredPushSupplier ()); - - supplier->init (root_poa_.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - supplier->connect (this->supplier_admin_.in () - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - - int i = 0; - ACE_TRY - { - for (i = 0 ; i < this->event_count_; ++i) - { - event.filterable_data[0].value <<= (CORBA::Long)i; - - // Any. - event.remainder_of_body <<= (CORBA::Long)i; - - supplier->send_event (event ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } + if (TAO_debug_level) + ACE_DEBUG ((LM_DEBUG, "Impl Limit excpetion when connecting consumer\n")); } ACE_CATCHANY { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, - "Exception sending event\n"); + if (TAO_debug_level) + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, + "Exception in connecting consumer \n"); } ACE_ENDTRY; } @@ -316,11 +490,6 @@ main (int argc, char* argv[]) { AdminProperties test; - if (test.parse_args (argc, argv) == -1) - { - return 1; - } - ACE_TRY_NEW_ENV { test.init (argc, diff --git a/TAO/orbsvcs/tests/Notify/Basic/AdminProperties.h b/TAO/orbsvcs/tests/Notify/Basic/AdminProperties.h index 6836e329e17..69c5bd3309a 100644 --- a/TAO/orbsvcs/tests/Notify/Basic/AdminProperties.h +++ b/TAO/orbsvcs/tests/Notify/Basic/AdminProperties.h @@ -16,7 +16,64 @@ #ifndef ADMINPROPERTIES #define ADMINPROPERTIES +#include "ace/Task.h" #include "Notify_Test_Client.h" +#include "Notify_StructuredPushConsumer.h" +#include "Notify_StructuredPushSupplier.h" + +class AdminProperties; +/***************************************************************************/ + +class AdminProperties_StructuredPushConsumer : public TAO_Notify_StructuredPushConsumer +{ + friend class AdminProperties; +public: + AdminProperties_StructuredPushConsumer (AdminProperties* client); + + // = StructuredPushSupplier methods + virtual void push_structured_event (const CosNotification::StructuredEvent & notification + ACE_ENV_ARG_DECL + ) + ACE_THROW_SPEC (( + CORBA::SystemException, + CosEventComm::Disconnected + )); + +protected: + AdminProperties* client_; + + ACE_Atomic_Op <TAO_SYNCH_MUTEX, CORBA::Long> events_received_; +}; + + +class AdminProperties_Task : public ACE_Task_Base +{ + // = TITLE + // Run a thread to dispatch events. + // + // = DESCRIPTION + // Use the ACE_Task_Base class. + // + +public: + AdminProperties_Task (void); + // Constructor. + + /// Init this object. + void init (TAO_Notify_StructuredPushSupplier *supplier, AdminProperties* client); + + virtual int svc (void); + // The thread entry point. + +private: + /// Supplier + TAO_Notify_StructuredPushSupplier *supplier_; + + /// Client Object. + AdminProperties* client_; +}; + +/***************************************************************************/ class AdminProperties : public Notify_Test_Client { @@ -30,6 +87,10 @@ class AdminProperties : public Notify_Test_Client // max_suppliers // reject_new_events // + + friend class AdminProperties_StructuredPushConsumer; + friend class AdminProperties_Task; + public: AdminProperties (void); ~AdminProperties (void); @@ -48,7 +109,12 @@ public: protected: void create_suppliers (ACE_ENV_SINGLE_ARG_DECL); void create_consumers (ACE_ENV_SINGLE_ARG_DECL); - void send_events (ACE_ENV_SINGLE_ARG_DECL); + + /// Test MaxSuppliers and MaxConsumers + void test_max_clients (ACE_ENV_SINGLE_ARG_DECL); + + /// Test MaxQueueLength properties + void test_max_queue_length (ACE_ENV_SINGLE_ARG_DECL); // Data Members CosNotifyChannelAdmin::EventChannel_var ec_; @@ -66,12 +132,30 @@ protected: CORBA::Boolean reject_new_events_; // Values for Admin Properties supplied by user. + /// Consumer Delay. + ACE_Time_Value consumer_delay_; + + /// Inital delay. + ACE_Time_Value initial_delay_; + + /// Number of consumers to connect to check MaxConsumers property. CORBA::Long consumers_; + + /// Number of suppliers to connect to check MaxSuppliers property. CORBA::Long suppliers_; - // Number of consumers and suppliers to connect. CORBA::Long event_count_; // Number of events to send to the channel. + + /// Count of consumers successfully connect to the EC. + int suppliers_connected_count_; + + /// Count of consumers successfully connect to the EC. + int consumers_connected_count_; + + /// Boolean flag that is set if the IMPL_LIMIT exception is thrown when trying to + /// exceed the Max_Queue_Length + CORBA::Boolean was_rejected_; }; #endif /* ADMINPROPERTIES */ diff --git a/TAO/orbsvcs/tests/Notify/Basic/Makefile b/TAO/orbsvcs/tests/Notify/Basic/Makefile index cc0294b184e..a9c8aeebfa0 100644 --- a/TAO/orbsvcs/tests/Notify/Basic/Makefile +++ b/TAO/orbsvcs/tests/Notify/Basic/Makefile @@ -19,8 +19,8 @@ BIN2 = ConnectDisconnect \ AdminProperties \ Simple \ Filter \ - MultiTypes - + MultiTypes \ + Sequence #### If the orbsvcs library wasn't built with all components, don't #### try to build certain tests. @@ -302,7 +302,6 @@ realclean: clean $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosEvent/event_export.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS_T.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS_T.i \ @@ -654,7 +653,6 @@ realclean: clean $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotificationC.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotificationC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosEvent/event_export.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommC.i \ IdAssignment.h \ @@ -890,7 +888,6 @@ realclean: clean $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosEvent/event_export.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS_T.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS_T.i \ @@ -928,21 +925,14 @@ realclean: clean ../lib/Notify_StructuredPushSupplier.h .obj/AdminProperties.o .obj/AdminProperties.so .shobj/AdminProperties.o .shobj/AdminProperties.so: AdminProperties.cpp AdminProperties.h \ - ../lib/Notify_Test_Client.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminS.h \ + $(ACE_ROOT)/ace/Task.h \ $(ACE_ROOT)/ace/pre.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotificationS.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotificationC.h \ - $(TAO_ROOT)/tao/corba.h \ + $(ACE_ROOT)/ace/Service_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.h \ + $(ACE_ROOT)/ace/ACE_export.h \ $(ACE_ROOT)/ace/post.h \ $(ACE_ROOT)/ace/ace_wchar.h \ $(ACE_ROOT)/ace/ace_wchar.inl \ - $(TAO_ROOT)/tao/corbafwd.h \ - $(ACE_ROOT)/ace/CDR_Base.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/ACE_export.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/Message_Block.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/OS_Dirent.h \ $(ACE_ROOT)/ace/OS_Export.h \ @@ -950,6 +940,8 @@ realclean: clean $(ACE_ROOT)/ace/OS_Errno.inl \ $(ACE_ROOT)/ace/OS_Dirent.inl \ $(ACE_ROOT)/ace/OS_String.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ $(ACE_ROOT)/ace/OS_String.inl \ $(ACE_ROOT)/ace/OS_Memory.h \ $(ACE_ROOT)/ace/OS_Memory.inl \ @@ -963,22 +955,13 @@ realclean: clean $(ACE_ROOT)/ace/streams.h \ $(ACE_ROOT)/ace/Trace.h \ $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/Message_Block_T.h \ - $(ACE_ROOT)/ace/Message_Block_T.i \ - $(ACE_ROOT)/ace/Message_Block_T.cpp \ - $(ACE_ROOT)/ace/CDR_Base.inl \ - $(ACE_ROOT)/ace/CORBA_macros.h \ - $(ACE_ROOT)/ace/Exception_Macros.h \ - $(TAO_ROOT)/tao/orbconf.h \ - $(TAO_ROOT)/tao/varbase.h \ - $(TAO_ROOT)/tao/TAO_Export.h \ - $(TAO_ROOT)/tao/corbafwd.i \ - $(TAO_ROOT)/tao/Typecode.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ + $(ACE_ROOT)/ace/Shared_Object.i \ + $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.i \ + $(ACE_ROOT)/ace/DLL.h \ + $(ACE_ROOT)/ace/Service_Object.i \ + $(ACE_ROOT)/ace/Thread_Manager.h \ $(ACE_ROOT)/ace/Thread.h \ $(ACE_ROOT)/ace/Thread_Adapter.h \ $(ACE_ROOT)/ace/Base_Thread_Adapter.h \ @@ -987,12 +970,46 @@ realclean: clean $(ACE_ROOT)/ace/Base_Thread_Adapter.inl \ $(ACE_ROOT)/ace/Thread_Adapter.inl \ $(ACE_ROOT)/ace/Thread.i \ + $(ACE_ROOT)/ace/Thread_Exit.h \ + $(ACE_ROOT)/ace/Synch.h \ + $(ACE_ROOT)/ace/Synch.i \ + $(ACE_ROOT)/ace/Synch_T.h \ + $(ACE_ROOT)/ace/Synch_T.i \ $(ACE_ROOT)/ace/Synch_T.cpp \ $(ACE_ROOT)/ace/Log_Msg.h \ $(ACE_ROOT)/ace/Log_Priority.h \ - $(TAO_ROOT)/tao/Exception.h \ - $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/String_Base.h \ + $(ACE_ROOT)/ace/Thread_Control.h \ + $(ACE_ROOT)/ace/Thread_Control.inl \ + $(ACE_ROOT)/ace/Unbounded_Queue.h \ + $(ACE_ROOT)/ace/Node.h \ + $(ACE_ROOT)/ace/Node.cpp \ + $(ACE_ROOT)/ace/Unbounded_Queue.inl \ + $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ + $(ACE_ROOT)/ace/Malloc_Base.h \ + $(ACE_ROOT)/ace/Containers.h \ + $(ACE_ROOT)/ace/Containers.i \ + $(ACE_ROOT)/ace/Containers_T.h \ + $(ACE_ROOT)/ace/Array_Base.h \ + $(ACE_ROOT)/ace/Array_Base.inl \ + $(ACE_ROOT)/ace/Array_Base.cpp \ + $(ACE_ROOT)/ace/Unbounded_Set.h \ + $(ACE_ROOT)/ace/Unbounded_Set.inl \ + $(ACE_ROOT)/ace/Unbounded_Set.cpp \ + $(ACE_ROOT)/ace/Containers_T.i \ + $(ACE_ROOT)/ace/Containers_T.cpp \ + $(ACE_ROOT)/ace/Free_List.h \ + $(ACE_ROOT)/ace/Free_List.i \ + $(ACE_ROOT)/ace/Free_List.cpp \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(ACE_ROOT)/ace/Object_Manager.h \ + $(ACE_ROOT)/ace/Object_Manager.i \ + $(ACE_ROOT)/ace/Managed_Object.h \ + $(ACE_ROOT)/ace/Managed_Object.i \ + $(ACE_ROOT)/ace/Managed_Object.cpp \ + $(ACE_ROOT)/ace/Framework_Component.h \ + $(ACE_ROOT)/ace/Framework_Component.inl \ $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/Flag_Manip.h \ $(ACE_ROOT)/ace/Flag_Manip.i \ @@ -1005,23 +1022,61 @@ realclean: clean $(ACE_ROOT)/ace/Sock_Connect.h \ $(ACE_ROOT)/ace/Sock_Connect.i \ $(ACE_ROOT)/ace/ACE.i \ + $(ACE_ROOT)/ace/Framework_Component_T.h \ + $(ACE_ROOT)/ace/Framework_Component_T.inl \ + $(ACE_ROOT)/ace/Framework_Component_T.cpp \ + $(ACE_ROOT)/ace/Thread_Manager.i \ + $(ACE_ROOT)/ace/Task.i \ + $(ACE_ROOT)/ace/Task_T.h \ + $(ACE_ROOT)/ace/Message_Queue.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/Message_Block.i \ + $(ACE_ROOT)/ace/Message_Block_T.h \ + $(ACE_ROOT)/ace/Message_Block_T.i \ + $(ACE_ROOT)/ace/Message_Block_T.cpp \ + $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ + $(ACE_ROOT)/ace/Message_Queue_T.h \ + $(ACE_ROOT)/ace/Message_Queue_T.i \ + $(ACE_ROOT)/ace/Message_Queue_T.cpp \ + $(ACE_ROOT)/ace/Notification_Strategy.h \ + $(ACE_ROOT)/ace/Notification_Strategy.inl \ + $(ACE_ROOT)/ace/Message_Queue.i \ + $(ACE_ROOT)/ace/Task_T.i \ + $(ACE_ROOT)/ace/Task_T.cpp \ + $(ACE_ROOT)/ace/Module.h \ + $(ACE_ROOT)/ace/Module.i \ + $(ACE_ROOT)/ace/Module.cpp \ + $(ACE_ROOT)/ace/Stream_Modules.h \ + $(ACE_ROOT)/ace/Stream_Modules.cpp \ + ../lib/Notify_Test_Client.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotificationS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotificationC.h \ + $(TAO_ROOT)/tao/corba.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Base.h \ + $(ACE_ROOT)/ace/CDR_Base.inl \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(ACE_ROOT)/ace/Exception_Macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(TAO_ROOT)/tao/varbase.h \ + $(TAO_ROOT)/tao/TAO_Export.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(ACE_ROOT)/ace/SString.h \ + $(ACE_ROOT)/ace/String_Base.h \ $(ACE_ROOT)/ace/String_Base_Const.h \ $(ACE_ROOT)/ace/String_Base.i \ - $(ACE_ROOT)/ace/Malloc_Base.h \ $(ACE_ROOT)/ace/String_Base.cpp \ $(ACE_ROOT)/ace/Malloc.h \ $(ACE_ROOT)/ace/Malloc.i \ $(ACE_ROOT)/ace/Malloc_T.h \ $(ACE_ROOT)/ace/Malloc_Allocator.h \ $(ACE_ROOT)/ace/Malloc_Allocator.i \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ $(ACE_ROOT)/ace/Malloc_T.i \ $(ACE_ROOT)/ace/Malloc_T.cpp \ $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ $(ACE_ROOT)/ace/Signal.h \ $(ACE_ROOT)/ace/Signal.i \ $(ACE_ROOT)/ace/Mem_Map.h \ @@ -1030,11 +1085,6 @@ realclean: clean $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Unbounded_Set.h \ - $(ACE_ROOT)/ace/Node.h \ - $(ACE_ROOT)/ace/Node.cpp \ - $(ACE_ROOT)/ace/Unbounded_Set.inl \ - $(ACE_ROOT)/ace/Unbounded_Set.cpp \ $(ACE_ROOT)/ace/Memory_Pool.i \ $(ACE_ROOT)/ace/Auto_Ptr.h \ $(ACE_ROOT)/ace/Auto_Ptr.i \ @@ -1062,9 +1112,6 @@ realclean: clean $(TAO_ROOT)/tao/Object.i \ $(TAO_ROOT)/tao/Any.i \ $(TAO_ROOT)/tao/NVList.h \ - $(ACE_ROOT)/ace/Unbounded_Queue.h \ - $(ACE_ROOT)/ace/Unbounded_Queue.inl \ - $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ $(TAO_ROOT)/tao/NVList.i \ $(TAO_ROOT)/tao/LocalObject.h \ $(TAO_ROOT)/tao/LocalObject.i \ @@ -1140,7 +1187,6 @@ realclean: clean $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosEvent/event_export.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS_T.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS_T.i \ @@ -1174,20 +1220,12 @@ realclean: clean $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Naming/naming_export.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.i \ - ../lib/notify_test_export.h \ + ../lib/notify_test_export.h ../lib/Notify_StructuredPushConsumer.h \ + ../lib/Notify_StructuredPushSupplier.h \ $(ACE_ROOT)/ace/Arg_Shifter.h \ $(ACE_ROOT)/ace/Get_Opt.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Array_Base.h \ - $(ACE_ROOT)/ace/Array_Base.inl \ - $(ACE_ROOT)/ace/Array_Base.cpp \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ $(ACE_ROOT)/ace/Get_Opt.i \ - ../lib/Notify_StructuredPushConsumer.h \ - ../lib/Notify_StructuredPushSupplier.h + $(TAO_ROOT)/tao/debug.h .obj/Simple.o .obj/Simple.so .shobj/Simple.o .shobj/Simple.so: Simple.cpp \ $(ACE_ROOT)/ace/Arg_Shifter.h \ @@ -1414,7 +1452,6 @@ realclean: clean $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosEvent/event_export.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS_T.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS_T.i \ @@ -1676,7 +1713,6 @@ realclean: clean $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosEvent/event_export.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS_T.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS_T.i \ @@ -1938,7 +1974,6 @@ realclean: clean $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosEvent/event_export.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS_T.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS_T.i \ @@ -1977,6 +2012,285 @@ realclean: clean ../lib/Notify_PushSupplier.h ../lib/Notify_SequencePushConsumer.h \ ../lib/Notify_SequencePushSupplier.h +.obj/Sequence.o .obj/Sequence.so .shobj/Sequence.o .shobj/Sequence.so: Sequence.cpp \ + $(ACE_ROOT)/ace/Arg_Shifter.h \ + $(ACE_ROOT)/ace/pre.h \ + $(ACE_ROOT)/ace/ACE_export.h \ + $(ACE_ROOT)/ace/post.h \ + $(ACE_ROOT)/ace/ace_wchar.h \ + $(ACE_ROOT)/ace/ace_wchar.inl \ + $(ACE_ROOT)/ace/Get_Opt.h \ + $(ACE_ROOT)/ace/SString.h \ + $(ACE_ROOT)/ace/String_Base.h \ + $(ACE_ROOT)/ace/ACE.h \ + $(ACE_ROOT)/ace/OS.h \ + $(ACE_ROOT)/ace/OS_Dirent.h \ + $(ACE_ROOT)/ace/OS_Export.h \ + $(ACE_ROOT)/ace/OS_Errno.h \ + $(ACE_ROOT)/ace/OS_Errno.inl \ + $(ACE_ROOT)/ace/OS_Dirent.inl \ + $(ACE_ROOT)/ace/OS_String.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/OS_String.inl \ + $(ACE_ROOT)/ace/OS_Memory.h \ + $(ACE_ROOT)/ace/OS_Memory.inl \ + $(ACE_ROOT)/ace/OS_TLI.h \ + $(ACE_ROOT)/ace/OS_TLI.inl \ + $(ACE_ROOT)/ace/Time_Value.h \ + $(ACE_ROOT)/ace/Time_Value.inl \ + $(ACE_ROOT)/ace/Default_Constants.h \ + $(ACE_ROOT)/ace/Global_Macros.h \ + $(ACE_ROOT)/ace/Min_Max.h \ + $(ACE_ROOT)/ace/streams.h \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(ACE_ROOT)/ace/Flag_Manip.h \ + $(ACE_ROOT)/ace/Flag_Manip.i \ + $(ACE_ROOT)/ace/Handle_Ops.h \ + $(ACE_ROOT)/ace/Handle_Ops.i \ + $(ACE_ROOT)/ace/Lib_Find.h \ + $(ACE_ROOT)/ace/Lib_Find.i \ + $(ACE_ROOT)/ace/Init_ACE.h \ + $(ACE_ROOT)/ace/Init_ACE.i \ + $(ACE_ROOT)/ace/Sock_Connect.h \ + $(ACE_ROOT)/ace/Sock_Connect.i \ + $(ACE_ROOT)/ace/ACE.i \ + $(ACE_ROOT)/ace/String_Base_Const.h \ + $(ACE_ROOT)/ace/String_Base.i \ + $(ACE_ROOT)/ace/Malloc_Base.h \ + $(ACE_ROOT)/ace/String_Base.cpp \ + $(ACE_ROOT)/ace/Malloc.h \ + $(ACE_ROOT)/ace/Log_Msg.h \ + $(ACE_ROOT)/ace/Log_Priority.h \ + $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.h \ + $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.inl \ + $(ACE_ROOT)/ace/Malloc.i \ + $(ACE_ROOT)/ace/Malloc_T.h \ + $(ACE_ROOT)/ace/Synch.h \ + $(ACE_ROOT)/ace/Synch.i \ + $(ACE_ROOT)/ace/Synch_T.h \ + $(ACE_ROOT)/ace/Synch_T.i \ + $(ACE_ROOT)/ace/Thread.h \ + $(ACE_ROOT)/ace/Thread_Adapter.h \ + $(ACE_ROOT)/ace/Base_Thread_Adapter.h \ + $(ACE_ROOT)/ace/Base_Thread_Adapter.inl \ + $(ACE_ROOT)/ace/Thread_Adapter.inl \ + $(ACE_ROOT)/ace/Thread.i \ + $(ACE_ROOT)/ace/Synch_T.cpp \ + $(ACE_ROOT)/ace/Malloc_Allocator.h \ + $(ACE_ROOT)/ace/Malloc_Allocator.i \ + $(ACE_ROOT)/ace/Free_List.h \ + $(ACE_ROOT)/ace/Free_List.i \ + $(ACE_ROOT)/ace/Free_List.cpp \ + $(ACE_ROOT)/ace/Malloc_T.i \ + $(ACE_ROOT)/ace/Malloc_T.cpp \ + $(ACE_ROOT)/ace/Memory_Pool.h \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.i \ + $(ACE_ROOT)/ace/Signal.h \ + $(ACE_ROOT)/ace/Signal.i \ + $(ACE_ROOT)/ace/Mem_Map.h \ + $(ACE_ROOT)/ace/Mem_Map.i \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ + $(ACE_ROOT)/ace/Unbounded_Set.h \ + $(ACE_ROOT)/ace/Node.h \ + $(ACE_ROOT)/ace/Node.cpp \ + $(ACE_ROOT)/ace/Unbounded_Set.inl \ + $(ACE_ROOT)/ace/Unbounded_Set.cpp \ + $(ACE_ROOT)/ace/Memory_Pool.i \ + $(ACE_ROOT)/ace/Auto_Ptr.h \ + $(ACE_ROOT)/ace/Auto_Ptr.i \ + $(ACE_ROOT)/ace/Auto_Ptr.cpp \ + $(ACE_ROOT)/ace/SString.i \ + $(ACE_ROOT)/ace/Containers.h \ + $(ACE_ROOT)/ace/Containers.i \ + $(ACE_ROOT)/ace/Containers_T.h \ + $(ACE_ROOT)/ace/Array_Base.h \ + $(ACE_ROOT)/ace/Array_Base.inl \ + $(ACE_ROOT)/ace/Array_Base.cpp \ + $(ACE_ROOT)/ace/Unbounded_Queue.h \ + $(ACE_ROOT)/ace/Unbounded_Queue.inl \ + $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ + $(ACE_ROOT)/ace/Containers_T.i \ + $(ACE_ROOT)/ace/Containers_T.cpp \ + $(ACE_ROOT)/ace/Get_Opt.i \ + $(TAO_ROOT)/tao/debug.h \ + $(TAO_ROOT)/tao/TAO_Export.h \ + Sequence.h ../lib/Notify_Test_Client.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotificationS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotificationC.h \ + $(TAO_ROOT)/tao/corba.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Base.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/Message_Block.i \ + $(ACE_ROOT)/ace/Message_Block_T.h \ + $(ACE_ROOT)/ace/Message_Block_T.i \ + $(ACE_ROOT)/ace/Message_Block_T.cpp \ + $(ACE_ROOT)/ace/CDR_Base.inl \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(ACE_ROOT)/ace/Exception_Macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(TAO_ROOT)/tao/varbase.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/CDR.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Policy_ForwardC.h \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(TAO_ROOT)/tao/Sequence.i \ + $(TAO_ROOT)/tao/Sequence_T.h \ + $(TAO_ROOT)/tao/Sequence_T.i \ + $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/Policy_ForwardC.i \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/Any.i \ + $(TAO_ROOT)/tao/NVList.h \ + $(TAO_ROOT)/tao/NVList.i \ + $(TAO_ROOT)/tao/LocalObject.h \ + $(TAO_ROOT)/tao/LocalObject.i \ + $(TAO_ROOT)/tao/Principal.h \ + $(TAO_ROOT)/tao/OctetSeqC.h \ + $(TAO_ROOT)/tao/OctetSeqC.i \ + $(TAO_ROOT)/tao/Principal.i \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/CORBA_String.h \ + $(TAO_ROOT)/tao/CORBA_String.inl \ + $(TAO_ROOT)/tao/objectid.h \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/Remote_Object_Proxy_Impl.h \ + $(TAO_ROOT)/tao/Object_Proxy_Impl.h \ + $(TAO_ROOT)/tao/Encodable.h \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/ORB.i \ + $(TAO_ROOT)/tao/BoundsC.h \ + $(TAO_ROOT)/tao/BoundsC.i \ + $(TAO_ROOT)/tao/ValueBase.h \ + $(TAO_ROOT)/tao/ValueBase.i \ + $(TAO_ROOT)/tao/ValueFactory.h \ + $(TAO_ROOT)/tao/ValueFactory.i \ + $(TAO_ROOT)/tao/AbstractBase.h \ + $(TAO_ROOT)/tao/AbstractBase.inl \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/WrongTransactionC.h \ + $(TAO_ROOT)/tao/WrongTransactionC.i \ + $(TAO_ROOT)/tao/Object_KeyC.h \ + $(TAO_ROOT)/tao/Object_KeyC.i \ + $(TAO_ROOT)/tao/ObjectIDList.h \ + $(TAO_ROOT)/tao/ObjectIDList.i \ + $(TAO_ROOT)/tao/StringSeqC.h \ + $(TAO_ROOT)/tao/StringSeqC.i \ + $(TAO_ROOT)/tao/PortableInterceptorC.h \ + $(TAO_ROOT)/tao/DynamicC.h \ + $(TAO_ROOT)/tao/DynamicC.i \ + $(TAO_ROOT)/tao/ObjectReferenceTemplateC.h \ + $(TAO_ROOT)/tao/ObjectReferenceTemplateC.i \ + $(TAO_ROOT)/tao/Messaging_SyncScopeC.h \ + $(TAO_ROOT)/tao/Messaging_SyncScopeC.i \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/PortableInterceptorC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Notify/notify_export.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotificationC.i \ + $(TAO_ROOT)/tao/PortableServer/PortableServer.h \ + $(TAO_ROOT)/tao/PortableServer/portableserver_export.h \ + $(TAO_ROOT)/tao/PortableServer/PortableServerC.h \ + $(TAO_ROOT)/tao/PortableServer/PortableServerC.i \ + $(TAO_ROOT)/tao/PortableServer/Servant_Base.h \ + $(TAO_ROOT)/tao/Abstract_Servant_Base.h \ + $(ACE_ROOT)/ace/Atomic_Op.h \ + $(ACE_ROOT)/ace/Atomic_Op_T.h \ + $(ACE_ROOT)/ace/Atomic_Op_T.i \ + $(ACE_ROOT)/ace/Atomic_Op_T.cpp \ + $(ACE_ROOT)/ace/Atomic_Op.i \ + $(TAO_ROOT)/tao/PortableServer/Servant_Base.i \ + $(TAO_ROOT)/tao/PortableServer/Collocated_Object.h \ + $(TAO_ROOT)/tao/PortableServer/Collocated_Object.i \ + $(TAO_ROOT)/tao/PortableServer/ThruPOA_Object_Proxy_Impl.h \ + $(TAO_ROOT)/tao/PortableServer/Direct_Object_Proxy_Impl.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotificationS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotificationS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotificationS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotificationS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyFilterS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyFilterC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyFilterC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyFilterS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyFilterS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyFilterS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyFilterS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventChannelAdminS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventChannelAdminC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventChannelAdminC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventChannelAdminS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventChannelAdminS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventChannelAdminS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventChannelAdminS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyChannelAdminS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Naming/naming_export.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.i \ + ../lib/notify_test_export.h ../lib/Notify_SequencePushConsumer.h \ + ../lib/Notify_SequencePushSupplier.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/svc_utils_export.h \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/SmartProxies/Smart_Proxies.h \ + $(TAO_ROOT)/tao/SmartProxies/smartproxies_export.h \ + $(TAO_ROOT)/tao/TAO_Singleton.h \ + $(TAO_ROOT)/tao/TAO_Singleton.inl \ + $(TAO_ROOT)/tao/TAO_Singleton.cpp \ + $(ACE_ROOT)/ace/Object_Manager.h \ + $(ACE_ROOT)/ace/Object_Manager.i \ + $(ACE_ROOT)/ace/Managed_Object.h \ + $(ACE_ROOT)/ace/Managed_Object.i \ + $(ACE_ROOT)/ace/Managed_Object.cpp \ + $(TAO_ROOT)/tao/TAO_Singleton_Manager.h \ + $(TAO_ROOT)/tao/TAO_Singleton_Manager.inl \ + $(TAO_ROOT)/tao/SmartProxies/Smart_Proxies.inl \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.i + .obj/Updates.o .obj/Updates.so .shobj/Updates.o .shobj/Updates.so: Updates.cpp \ $(ACE_ROOT)/ace/Arg_Shifter.h \ $(ACE_ROOT)/ace/pre.h \ @@ -2202,7 +2516,6 @@ realclean: clean $(TAO_ROOT)/orbsvcs/orbsvcs/CosNotifyCommS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/CosEvent/event_export.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS_T.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosEventCommS_T.i \ diff --git a/TAO/orbsvcs/tests/Notify/Basic/Makefile.bor b/TAO/orbsvcs/tests/Notify/Basic/Makefile.bor index 82cecbe712c..0ed3da0b589 100644 --- a/TAO/orbsvcs/tests/Notify/Basic/Makefile.bor +++ b/TAO/orbsvcs/tests/Notify/Basic/Makefile.bor @@ -12,7 +12,8 @@ NAMES = \ Simple \ Updates \ MultiTypes \ - Filter + Filter \ + Sequence OBJFILES = $(OBJDIR)\$(NAME).obj diff --git a/TAO/orbsvcs/tests/Notify/Basic/README b/TAO/orbsvcs/tests/Notify/Basic/README index 1e4db35a9e5..ed9a0128716 100644 --- a/TAO/orbsvcs/tests/Notify/Basic/README +++ b/TAO/orbsvcs/tests/Notify/Basic/README @@ -1,4 +1,6 @@ -Basic Tests: + + Basic Tests + =========== Updates: ------- @@ -6,9 +8,7 @@ This test will check if the subscription and publication update messages from the event channel are properly received from the Notify Service. Command line parameters: -"-updates <update_count>", - -where <update_count> is how many updates to send. +none. ConnectDisconnect: ----------------- @@ -55,11 +55,55 @@ command line parameters: -consumers [consumers] -suppliers [suppliers] -event_count [event_count] +-ConsumerDelay [delay in secs] +// sleep period per push for the consumer created to test MaxQueueLength +-InitialDelay [delay in secs] Events: ---------- -(Under construction) - -Priority: ------------- -(Under construction)
\ No newline at end of file +This test creates 1 structured supplier and 2 structured consumers. +Each consumer should receive all the events send by the supplier. +The uses the default ConsumerAdmin and default Supplier Admin if the +-use_default_admin option is specified. + +command line options: +-use_default_admin +-events [number of events to send] + +MultiTypes: +----------- +Creates a Supplier and Consumer each for the 3 Client types that send +and receive Any, Structured and Sequence event types. +Each type of the supplier then sends an event each to the Notification +channel. All 3 types of consumers should receive 3 events each. + +command line options: +none. + +Simple: +------- +Creates 1 Any Supplier and 1 Any Consumer. Events received by the +supplier must be equal to the count send. + +command line options: +-events [number of events to send] + +Filter: +------ +Tests the FilterAdmin and Filter interface methods. + +command line options: +none. + +Sequence: +--------- +In the default run, this test sends 15 events in batches of 5 events +via a sequence supplier. It sets the consumer's batch size to 3 and +sets a pacing interval of 2 seconds. It checks to see if 15 events are indeed received. + +command line options: +-events [count] +-SupplierBatchSize [count] +-ConsumerBatchSize [count] +-ConsumerDelay [delay] +-InitialDelay [delay]
\ No newline at end of file diff --git a/TAO/orbsvcs/tests/Notify/Basic/Sequence.cpp b/TAO/orbsvcs/tests/Notify/Basic/Sequence.cpp new file mode 100644 index 00000000000..b215b4e17d7 --- /dev/null +++ b/TAO/orbsvcs/tests/Notify/Basic/Sequence.cpp @@ -0,0 +1,393 @@ +//$Id$ + +#include "ace/Arg_Shifter.h" +#include "ace/Get_Opt.h" +#include "tao/debug.h" +#include "Sequence.h" + +ACE_RCSID (Notify_Tests, Sequence, "$Id$") + +/***************************************************************************/ + +SequencePushConsumer::SequencePushConsumer (Sequence *test_client) + : test_client_ (test_client) +{ +} + +void +SequencePushConsumer::push_structured_events ( + const CosNotification::EventBatch &batch + ACE_ENV_ARG_DECL_NOT_USED + ) + ACE_THROW_SPEC ((CORBA::SystemException, + CosEventComm::Disconnected)) +{ + this->test_client_->events_received_ += batch.length (); + + if (batch.length () > this->test_client_->consumer_batch_size_) + if (TAO_debug_level) + ACE_DEBUG ((LM_ERROR, + "Error: Received more than max event batch %d\n", + batch.length ())); + + /* int event_num; + notification.filterable_data[0].value >>= event_num; + + if (TAO_debug_level) + ACE_DEBUG ((LM_DEBUG, + "Received event# %d\n", + event_num)); + */ + + this->test_client_->on_event_received (); + + ACE_OS::sleep (this->test_client_->consumer_delay_); +} + +/***************************************************************************/ + +SequencePushSupplier::SequencePushSupplier ( + Sequence* test_client + ) + : test_client_ (test_client) +{ +} + +SequencePushSupplier::~SequencePushSupplier (void) +{ +} + +/***************************************************************************/ +Sequence::Sequence (void) + : event_count_ (15), supplier_batch_size_ (5), consumer_batch_size_ (3), + pacing_ (2), order_policy_ (CosNotification::PriorityOrder), events_received_ (0), + consumer_delay_ (ACE_Time_Value (1, 0)) +{ +} + +Sequence::~Sequence (void) +{ +} + +int +Sequence::init (int argc, + char* argv [] + ACE_ENV_ARG_DECL) +{ + // Initialize the base class. + Notify_Test_Client::init (argc, + argv + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (-1); + + // Create all participents. + this->create_EC (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (-1); + + CosNotifyChannelAdmin::AdminID adminid; + + this->supplier_admin_ = + this->ec_->new_for_suppliers (this->ifgop_, + adminid + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (-1); + + ACE_ASSERT (!CORBA::is_nil (supplier_admin_.in ())); + + this->consumer_admin_ = + this->ec_->new_for_consumers (this->ifgop_, + adminid + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (-1); + + ACE_ASSERT (!CORBA::is_nil (consumer_admin_.in ())); + + ACE_NEW_RETURN (this->consumer_, + SequencePushConsumer (this), + -1); + this->consumer_->init (root_poa_.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (-1); + this->consumer_->connect (this->consumer_admin_.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (-1); + + CosNotification::QoSProperties properties (3); + properties.length (3); + + properties[0].name = CORBA::string_dup (CosNotification::MaximumBatchSize); + properties[0].value <<= (CORBA::Long) this->consumer_batch_size_; + properties[1].name = CORBA::string_dup (CosNotification::PacingInterval); + properties[1].value <<= (TimeBase::TimeT) this->pacing_; + properties[2].name = CORBA::string_dup (CosNotification::OrderPolicy); + properties[2].value <<= this->order_policy_; + + this->consumer_->get_proxy_supplier ()->set_qos (properties); + + ACE_NEW_RETURN (this->supplier_, + SequencePushSupplier (this), + -1); + this->supplier_->init (root_poa_.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (-1); + + this->supplier_->connect (this->supplier_admin_.in () + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (-1); + + return 0; +} + +int +Sequence::parse_args (int argc, + char *argv[]) +{ + ACE_Arg_Shifter arg_shifter (argc, + argv); + const char *current_arg = 0; + + while (arg_shifter.is_anything_left ()) + { + if ((current_arg = arg_shifter.get_the_parameter ("-events"))) + { + this->event_count_ = ACE_OS::atoi (current_arg); // The number of events to send/receive. + + arg_shifter.consume_arg (); + } + else if ((current_arg = arg_shifter.get_the_parameter ("-SupplierBatchSize"))) + { + this->supplier_batch_size_ = ACE_OS::atoi (current_arg); // Supplier batch size + + arg_shifter.consume_arg (); + } + else if ((current_arg = arg_shifter.get_the_parameter ("-ConsumerBatchSize"))) + { + this->consumer_batch_size_ = ACE_OS::atoi (current_arg); // Consumer batch size + + arg_shifter.consume_arg (); + } + else if ((current_arg = arg_shifter.get_the_parameter ("-ConsumerDelay"))) + { + this->consumer_delay_ = ACE_Time_Value (ACE_OS::atoi (current_arg), 0); // Consumer delay in secs. + + arg_shifter.consume_arg (); + } + else if ((current_arg = arg_shifter.get_the_parameter ("-Pacing"))) + { + this->pacing_ = (TimeBase::TimeT) ACE_OS::atoi (current_arg); // pacing + + arg_shifter.consume_arg (); + } + + else if (arg_shifter.cur_arg_strncasecmp ("-?") == 0) + { + ACE_DEBUG((LM_DEBUG, + "usage: %s " + "-events event_count " + "-SupplierBatchSize size " + "-ConsumerBatchSize size " + "-ConsumerDelay delay " + "-Pacing pacing \n", + argv[0], argv[0])); + + arg_shifter.consume_arg (); + + return -1; + } + else + { + arg_shifter.ignore_arg (); + } + } + + return 0; +} + +void +Sequence::create_EC (ACE_ENV_SINGLE_ARG_DECL) +{ + CosNotifyChannelAdmin::ChannelID id; + + this->ec_ = notify_factory_->create_channel (this->initial_qos_, + this->initial_admin_, + id + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + ACE_ASSERT (!CORBA::is_nil (this->ec_.in ())); +} + +void +Sequence::on_event_received (void) +{ + if (TAO_debug_level) + ACE_DEBUG ((LM_DEBUG, + "Events received = %d\n", + this->events_received_.value ())); + + if (this->events_received_.value () == this->event_count_) + { + ACE_DECLARE_NEW_CORBA_ENV; + this->end_test (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + } +} + +void +Sequence::run_test (ACE_ENV_SINGLE_ARG_DECL) +{ + // operations: + CosNotification::StructuredEvent event; + + // EventHeader. + + // FixedEventHeader. + // EventType. + // string. + event.header.fixed_header.event_type.domain_name = CORBA::string_dup("*"); + // string + event.header.fixed_header.event_type.type_name = CORBA::string_dup("*"); + // string + event.header.fixed_header.event_name = CORBA::string_dup("myevent"); + + // OptionalHeaderFields. + // PropertySeq. + // sequence<Property>: string name, any value + CosNotification::PropertySeq& qos = event.header.variable_header; + qos.length (1); // put nothing here + + // FilterableEventBody + // PropertySeq + // sequence<Property>: string name, any value + event.filterable_data.length (3); + event.filterable_data[0].name = CORBA::string_dup("threshold"); + + event.filterable_data[1].name = CORBA::string_dup("temperature"); + event.filterable_data[1].value <<= (CORBA::Long)70; + + event.filterable_data[2].name = CORBA::string_dup("pressure"); + event.filterable_data[2].value <<= (CORBA::Long)80; + + CORBA::Short prio = CosNotification::LowestPriority; + + CosNotification::EventBatch batch; + batch.length (this->supplier_batch_size_); + CORBA::ULong batch_index = 0; + + for (int i = 0; i < this->event_count_; ++i) + { + event.filterable_data[0].value <<= (CORBA::Long)i; + + // any + event.remainder_of_body <<= (CORBA::Long)i; + + qos[0].name = CORBA::string_dup (CosNotification::Priority); + qos[0].value <<= (CORBA::Short)prio++; + + batch[batch_index] = event; + batch_index++; + + if (batch_index == this->supplier_batch_size_) + { + batch.length (batch_index); // set the correct length + + if (TAO_debug_level) + ACE_DEBUG ((LM_DEBUG, "Sending batch with %d events\n", batch.length ())); + + this->supplier_->send_events (batch + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + // reset + batch.length (this->supplier_batch_size_); + batch_index = 0; + } + } // for + + // send the last batch. + if (batch_index > 0) + { + batch.length (batch_index); // set the correct length + + this->supplier_->send_events (batch + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + +} + +void +Sequence::end_test (ACE_ENV_SINGLE_ARG_DECL) +{ + this->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); +} + +int +Sequence::check_results (void) +{ + // Destroy the channel. + ACE_DECLARE_NEW_CORBA_ENV; + this->ec_->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (-1); + + if (this->events_received_.value () == this->event_count_) + { + ACE_DEBUG ((LM_DEBUG, + "Sequence test success\n")); + return 0; + } + else + { + ACE_DEBUG ((LM_DEBUG, + "Sequence test failed!\n")); + return 1; + } +} + +/***************************************************************************/ + +int +main (int argc, char* argv[]) +{ + Sequence events; + + if (events.parse_args (argc, argv) == -1) + { + return 1; + } + + ACE_TRY_NEW_ENV + { + events.init (argc, + argv + ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + events.run_test (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + + events.ORB_run (); + } + ACE_CATCH (CORBA::UserException, ue) + { + ACE_PRINT_EXCEPTION (ue, + "Sequence user error: "); + return 1; + } + ACE_CATCH (CORBA::SystemException, se) + { + ACE_PRINT_EXCEPTION (se, + "Sequence system error: "); + return 1; + } + ACE_ENDTRY; + + return events.check_results (); +} + +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) + + +#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) + + +#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/tests/Notify/Basic/Sequence.dsp b/TAO/orbsvcs/tests/Notify/Basic/Sequence.dsp new file mode 100644 index 00000000000..1de66e94698 --- /dev/null +++ b/TAO/orbsvcs/tests/Notify/Basic/Sequence.dsp @@ -0,0 +1,109 @@ +# Microsoft Developer Studio Project File - Name="Basic Sequence" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=Basic Sequence - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Sequence.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Sequence.mak" CFG="Basic Sequence - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Basic Sequence - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "Basic Sequence - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "Basic Sequence - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\\" /I "..\..\..\..\\" /I "..\..\..\..\..\\" /I "..\lib" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ace.lib TAO.lib TAO_PortableServer.lib TAO_ETCL.lib TAO_CosNotification.lib TAO_CosNaming.lib TAO_NotifyTests.lib /nologo /subsystem:console /pdb:"Sequence.pdb" /machine:I386 /pdbtype:sept /libpath:"..\lib" /libpath:"..\..\..\orbsvcs" /libpath:"..\..\..\orbsvcs\ETCL" /libpath:"..\..\..\..\tao" /libpath:"..\..\..\..\tao\PortableServer" /libpath:"..\..\..\..\..\ace"
+# SUBTRACT LINK32 /pdb:none /incremental:yes /map /debug
+
+!ELSEIF "$(CFG)" == "Basic Sequence - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Basic Sequence___Win32_Debug"
+# PROP BASE Intermediate_Dir "Basic Sequence___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\..\\" /I "..\..\..\..\\" /I "..\..\..\..\..\\" /I "..\lib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 aced.lib TAOd.lib TAO_PortableServerd.lib TAO_ETCLd.lib TAO_CosNotificationd.lib TAO_CosNamingd.lib TAO_NotifyTestsd.lib /nologo /subsystem:console /pdb:"Sequence.pdb" /map:"Debug/Sequence.map" /debug /machine:I386 /pdbtype:sept /libpath:"..\lib" /libpath:"..\..\..\orbsvcs" /libpath:"..\..\..\orbsvcs\ETCL" /libpath:"..\..\..\..\tao" /libpath:"..\..\..\..\tao\PortableServer" /libpath:"..\..\..\..\..\ace"
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "Basic Sequence - Win32 Release"
+# Name "Basic Sequence - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\Sequence.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\Sequence.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/TAO/orbsvcs/tests/Notify/Basic/Sequence.h b/TAO/orbsvcs/tests/Notify/Basic/Sequence.h new file mode 100644 index 00000000000..04c75b78c0f --- /dev/null +++ b/TAO/orbsvcs/tests/Notify/Basic/Sequence.h @@ -0,0 +1,144 @@ +/* -*- C++ -*- */ +// $Id$ +// ========================================================================== +// +// = FILENAME +// Events.h +// +// = DESCRIPTION +// Test Sequence support in Notification. +// +// = AUTHOR +// Pradeep Gore <pradeep@cs.wustl.edu> +// +// ========================================================================== + +#ifndef NOTIFY_TESTS_SEQUENCE_H +#define NOTIFY_TESTS_SEQUENCE_H + +#include "Notify_Test_Client.h" +#include "Notify_SequencePushConsumer.h" +#include "Notify_SequencePushSupplier.h" +#include "orbsvcs/TimeBaseC.h" + +#if defined(_MSC_VER) +#if (_MSC_VER >= 1200) +#pragma warning(push) +#endif /* _MSC_VER >= 1200 */ +#pragma warning(disable:4250) +#endif /* _MSC_VER */ + +class Sequence; + +class SequencePushConsumer : public TAO_Notify_SequencePushConsumer +{ +public: + SequencePushConsumer (Sequence* client); + + // = SequencePushConsumer methods + virtual void push_structured_events ( + const CosNotification::EventBatch & notifications + ACE_ENV_ARG_DECL + ) + ACE_THROW_SPEC (( + CORBA::SystemException, + CosEventComm::Disconnected + )); + +protected: + Sequence* test_client_; +}; + +/***************************************************************************/ + +class SequencePushSupplier : public TAO_Notify_SequencePushSupplier +{ +public: + SequencePushSupplier (Sequence * test_client); + // Constructor. + + virtual ~SequencePushSupplier (void); + // Destructor. + +protected: + Sequence* test_client_; +}; + +/***************************************************************************/ + +class Sequence : public Notify_Test_Client +{ +public: + // Initialization and termination code. + Sequence (void); + virtual ~Sequence (void); + + int parse_args (int argc, + char *argv[]) ; + + int init (int argc, + char *argv [] + ACE_ENV_ARG_DECL); + // Initialization. + + void on_event_received (void); + // Called when an event is received. + + void run_test (ACE_ENV_SINGLE_ARG_DECL); + // Run the test. + + void end_test (ACE_ENV_SINGLE_ARG_DECL); + // End the test. + + int check_results (void); + // check if we got the expected results. + +protected: + void create_EC (ACE_ENV_SINGLE_ARG_DECL); + // Create EC + + int event_count_; + // Number of events to send + + /// Batch size send by supplier. + CORBA::ULong supplier_batch_size_; + + /// Max Batch size expected by consumer. + CORBA::ULong consumer_batch_size_; + + TimeBase::TimeT pacing_; + + CORBA::Short order_policy_; + + /// Count the number of events received by the consumer. + ACE_Atomic_Op <TAO_SYNCH_MUTEX, int> events_received_; + + ACE_Time_Value consumer_delay_; + + CosNotifyChannelAdmin::EventChannel_var ec_; + // The one channel that we create using the factory. + + CosNotifyChannelAdmin::ConsumerAdmin_var consumer_admin_; + // The consumer admin used by consumers. + + CosNotifyChannelAdmin::SupplierAdmin_var supplier_admin_; + // The supplier admin used by suppliers. + + TAO_Notify_SequencePushConsumer* consumer_; + // Consumer + + TAO_Notify_SequencePushSupplier* supplier_; + // Supplier + +private: + friend class SequencePushSupplier; + friend class SequencePushConsumer; +}; + +/***************************************************************************/ + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +#pragma warning(pop) +#endif /* _MSC_VER */ + +#endif /* NOTIFY_TESTS_SEQUENCE_H */ diff --git a/TAO/orbsvcs/tests/Notify/Basic/adminproperties.conf b/TAO/orbsvcs/tests/Notify/Basic/adminproperties.conf new file mode 100644 index 00000000000..d0f06676cb4 --- /dev/null +++ b/TAO/orbsvcs/tests/Notify/Basic/adminproperties.conf @@ -0,0 +1,4 @@ +## $Id$ + +## Load the static Cos Notification Service +static Client_Strategy_Factory "-ORBClientConnectionHandler RW" diff --git a/TAO/orbsvcs/tests/Notify/Basic/run_test.pl b/TAO/orbsvcs/tests/Notify/Basic/run_test.pl index 11adf4f3a6d..8822afdfeb8 100755 --- a/TAO/orbsvcs/tests/Notify/Basic/run_test.pl +++ b/TAO/orbsvcs/tests/Notify/Basic/run_test.pl @@ -25,6 +25,7 @@ $status = 0; "MultiTypes", "Filter", "Updates", + "Sequence" ); @default_test_configs = diff --git a/TAO/orbsvcs/tests/Notify/Discarding/Notify_Structured_Push_Consumer.cpp b/TAO/orbsvcs/tests/Notify/Discarding/Notify_Structured_Push_Consumer.cpp index 5a01d3261b2..8c9c313ad13 100644 --- a/TAO/orbsvcs/tests/Notify/Discarding/Notify_Structured_Push_Consumer.cpp +++ b/TAO/orbsvcs/tests/Notify/Discarding/Notify_Structured_Push_Consumer.cpp @@ -7,10 +7,12 @@ Notify_Structured_Push_Consumer::Notify_Structured_Push_Consumer ( const char* name, CORBA::Short policy, unsigned int expected, + CORBA::Long max_events_per_consumer, CORBA::Boolean& done) : name_ (name), discard_policy_ (policy), expected_ (expected), + max_events_per_consumer_ (max_events_per_consumer), count_ (0), done_ (done) { @@ -44,7 +46,7 @@ Notify_Structured_Push_Consumer::connect ( properties[0].name = CORBA::string_dup (CosNotification::DiscardPolicy); properties[0].value <<= this->discard_policy_; properties[1].name = CORBA::string_dup (CosNotification::MaxEventsPerConsumer); - properties[1].value <<= (CORBA::Long)this->expected_; + properties[1].value <<= this->max_events_per_consumer_; this->proxy_supplier_->set_qos (properties); this->proxy_supplier_->connect_structured_push_consumer (objref.in () @@ -87,9 +89,9 @@ Notify_Structured_Push_Consumer::push_structured_event ( this->done_ = 1; ACE_ERROR ((LM_ERROR, ACE_TEXT ("Structured Consumer (%P|%t): ERROR: too " - "many events received.\n"))); + "many events received (%d).\n"), this->count_)); } - else if (this->count_ == this->expected_) + else if (this->count_ == this->max_events_per_consumer_) { this->done_ = 1; } diff --git a/TAO/orbsvcs/tests/Notify/Discarding/Notify_Structured_Push_Consumer.h b/TAO/orbsvcs/tests/Notify/Discarding/Notify_Structured_Push_Consumer.h index 4e950fe3174..6b24113584f 100644 --- a/TAO/orbsvcs/tests/Notify/Discarding/Notify_Structured_Push_Consumer.h +++ b/TAO/orbsvcs/tests/Notify/Discarding/Notify_Structured_Push_Consumer.h @@ -28,6 +28,7 @@ public: const char* name, CORBA::Short policy, unsigned int expected, + CORBA::Long max_events_per_consumer, CORBA::Boolean& done); void connect (CosNotifyChannelAdmin::ConsumerAdmin_ptr consumer_admin @@ -42,6 +43,7 @@ protected: ACE_CString name_; CORBA::Short discard_policy_; unsigned int expected_; + CORBA::Long max_events_per_consumer_; unsigned int count_; CORBA::Boolean& done_; }; diff --git a/TAO/orbsvcs/tests/Notify/Discarding/Structured_Consumer.cpp b/TAO/orbsvcs/tests/Notify/Discarding/Structured_Consumer.cpp index ee9295a084e..9d98e24ff94 100644 --- a/TAO/orbsvcs/tests/Notify/Discarding/Structured_Consumer.cpp +++ b/TAO/orbsvcs/tests/Notify/Discarding/Structured_Consumer.cpp @@ -19,7 +19,8 @@ static const char* ior = "file://supplier.ior"; static CORBA::Short discard_policy = CosNotification::FifoOrder; -static unsigned int expected = 12; +static unsigned int expected = 13; +CORBA::Long max_events_per_consumer = 10; // ****************************************************************** // Subroutine Section @@ -120,6 +121,8 @@ create_consumers (CosNotifyChannelAdmin::ConsumerAdmin_ptr admin, Notify_Test_Client* client ACE_ENV_ARG_DECL) { + ACE_DEBUG ((LM_DEBUG, "Max Events per Consumer = %d...\n", max_events_per_consumer)); + // startup the consumer Notify_Structured_Push_Consumer* consumer_1; ACE_NEW_THROW_EX (consumer_1, @@ -127,6 +130,7 @@ create_consumers (CosNotifyChannelAdmin::ConsumerAdmin_ptr admin, "consumer1", discard_policy, expected, + max_events_per_consumer, client->done ()), CORBA::NO_MEMORY ()); consumer_1->init (client->root_poa () ACE_ENV_ARG_PARAMETER); diff --git a/TAO/orbsvcs/tests/Notify/Discarding/Structured_Supplier.cpp b/TAO/orbsvcs/tests/Notify/Discarding/Structured_Supplier.cpp index 30124895d31..aee3a6ee9d1 100644 --- a/TAO/orbsvcs/tests/Notify/Discarding/Structured_Supplier.cpp +++ b/TAO/orbsvcs/tests/Notify/Discarding/Structured_Supplier.cpp @@ -242,6 +242,9 @@ int main (int argc, char* argv[]) CosNotifyChannelAdmin::SupplierAdmin_var admin = create_supplieradmin (ec.in () ACE_ENV_ARG_PARAMETER); + + ACE_DEBUG ((LM_DEBUG, "Supplier sending %d events...\n", max_events)); + if (!CORBA::is_nil (admin.in ())) { create_suppliers (admin.in (), client.root_poa () ACE_ENV_ARG_PARAMETER); diff --git a/TAO/orbsvcs/tests/Notify/Discarding/notify.conf b/TAO/orbsvcs/tests/Notify/Discarding/notify.conf index f64fecac0c5..9e16b94ddc1 100644 --- a/TAO/orbsvcs/tests/Notify/Discarding/notify.conf +++ b/TAO/orbsvcs/tests/Notify/Discarding/notify.conf @@ -1,4 +1,4 @@ ## $Id$ ## Load the static Cos Notification Service -static Notify_Default_Event_Manager_Objects_Factory "-MTDispatching -DispatchingThreads 1"
\ No newline at end of file +static Notify_Default_Event_Manager_Objects_Factory "-AllocateTaskperProxy -MTListenerEval -ListenerThreads 1" diff --git a/TAO/orbsvcs/tests/Notify/Notify_Tests.dsw b/TAO/orbsvcs/tests/Notify/Notify_Tests.dsw index a52b7b40e46..4a305d80b4b 100644 --- a/TAO/orbsvcs/tests/Notify/Notify_Tests.dsw +++ b/TAO/orbsvcs/tests/Notify/Notify_Tests.dsw @@ -102,6 +102,18 @@ Package=<4> ###############################################################################
+Project: "Basic Sequence"=.\Basic\Sequence.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
Project: "Basic Simple"=.\BASIC\Simple.dsp - Package Owner=<4>
Package=<5>
@@ -132,7 +144,7 @@ Package=<4> ###############################################################################
-Project: "RedGreen"=".\PERFORMANCE-TESTS\REDGREEN\RedGreen.dsp" - Package Owner=<4>
+Project: "Blocking Structured Consumer"=.\Blocking\Structured_Consumer.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -144,7 +156,7 @@ Package=<4> ###############################################################################
-Project: "Sequence_Consumer"=.\Sequence_Multi_ETCL_Filter\Sequence_Consumer.dsp - Package Owner=<4>
+Project: "Blocking Structured Supplier"=.\Blocking\Structured_Supplier.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -156,7 +168,7 @@ Package=<4> ###############################################################################
-Project: "Sequence_Consumer"=.\Sequence_Multi_Filter\Sequence_Consumer.dsp - Package Owner=<4>
+Project: "Discarding Sequence Consumer"=.\Discarding\Sequence_Consumer.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -168,7 +180,7 @@ Package=<4> ###############################################################################
-Project: "Sequence_Consumer"=".\performance-tests\Filter\Sequence_Consumer.dsp" - Package Owner=<4>
+Project: "Discarding Sequence Supplier"=.\Discarding\Sequence_Supplier.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -180,7 +192,7 @@ Package=<4> ###############################################################################
-Project: "Sequence_Consumer"=.\Ordering\Sequence_Consumer.dsp - Package Owner=<4>
+Project: "Discarding Structured Consumer"=.\Discarding\Structured_Consumer.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -192,7 +204,7 @@ Package=<4> ###############################################################################
-Project: "Sequence_Consumer"=.\Discarding\Sequence_Consumer.dsp - Package Owner=<4>
+Project: "Discarding Structured Supplier"=.\Discarding\Structured_Supplier.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -204,7 +216,7 @@ Package=<4> ###############################################################################
-Project: "Sequence_Supplier"=.\Sequence_Multi_ETCL_Filter\Sequence_Supplier.dsp - Package Owner=<4>
+Project: "Filter Structured Consumer"=.\Structured_Filter\Structured_Filter_Consumer.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -216,7 +228,7 @@ Package=<4> ###############################################################################
-Project: "Sequence_Supplier"=.\Sequence_Multi_Filter\Sequence_Supplier.dsp - Package Owner=<4>
+Project: "Filter Structured Supplier"=.\Structured_Filter\Structured_Filter_Supplier.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -228,7 +240,7 @@ Package=<4> ###############################################################################
-Project: "Sequence_Supplier"=".\performance-tests\Filter\Sequence_Supplier.dsp" - Package Owner=<4>
+Project: "MT_Dispatching Structured Consumer"=.\MT_Dispatching\Structured_Consumer.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -240,7 +252,7 @@ Package=<4> ###############################################################################
-Project: "Sequence_Supplier"=.\Ordering\Sequence_Supplier.dsp - Package Owner=<4>
+Project: "MT_Dispatching Structured Supplier"=.\MT_Dispatching\Structured_Supplier.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -252,7 +264,7 @@ Package=<4> ###############################################################################
-Project: "Sequence_Supplier"=.\Discarding\Sequence_Supplier.dsp - Package Owner=<4>
+Project: "Multi ETCL Filter Sequence Consumer"=.\Sequence_Multi_ETCL_Filter\Sequence_Consumer.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -264,7 +276,7 @@ Package=<4> ###############################################################################
-Project: "Structured_Consumer"=".\performance-tests\Filter\Structured_Consumer.dsp" - Package Owner=<4>
+Project: "Multi ETCL Filter Sequence Supplier"=.\Sequence_Multi_ETCL_Filter\Sequence_Supplier.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -276,7 +288,7 @@ Package=<4> ###############################################################################
-Project: "Structured_Consumer"=.\Ordering\Structured_Consumer.dsp - Package Owner=<4>
+Project: "Multi Filter Sequence Consumer"=.\Sequence_Multi_Filter\Sequence_Consumer.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -288,7 +300,7 @@ Package=<4> ###############################################################################
-Project: "Structured_Consumer"=.\MT_Dispatching\Structured_Consumer.dsp - Package Owner=<4>
+Project: "Multi Filter Sequence Supplier"=.\Sequence_Multi_Filter\Sequence_Supplier.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -300,7 +312,7 @@ Package=<4> ###############################################################################
-Project: "Structured_Consumer"=.\Discarding\Structured_Consumer.dsp - Package Owner=<4>
+Project: "Multi Filter Structured Consumer"=.\Structured_Multi_Filter\Structured_Multi_Filter_Consumer.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -312,7 +324,7 @@ Package=<4> ###############################################################################
-Project: "Structured_Consumer"=.\Blocking\Structured_Consumer.dsp - Package Owner=<4>
+Project: "Multi Filter Structured Supplier"=.\Structured_Multi_Filter\Structured_Multi_Filter_Supplier.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -324,7 +336,7 @@ Package=<4> ###############################################################################
-Project: "Structured_Filter_Consumer"=.\Structured_Filter\Structured_Filter_Consumer.dsp - Package Owner=<4>
+Project: "Ordering Sequence Consumer"=.\Ordering\Sequence_Consumer.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -332,14 +344,11 @@ Package=<5> Package=<4>
{{{
- Begin Project Dependency
- Project_Dep_Name TAO_NotifyTests DLL
- End Project Dependency
}}}
###############################################################################
-Project: "Structured_Filter_Supplier"=.\Structured_Filter\Structured_Filter_Supplier.dsp - Package Owner=<4>
+Project: "Ordering Sequence Supplier"=.\Ordering\Sequence_Supplier.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -347,14 +356,11 @@ Package=<5> Package=<4>
{{{
- Begin Project Dependency
- Project_Dep_Name TAO_NotifyTests DLL
- End Project Dependency
}}}
###############################################################################
-Project: "Structured_Multi_Filter_Consumer"=.\Structured_Multi_Filter\Structured_Multi_Filter_Consumer.dsp - Package Owner=<4>
+Project: "Ordering Structured Consumer"=.\Ordering\Structured_Consumer.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -362,14 +368,11 @@ Package=<5> Package=<4>
{{{
- Begin Project Dependency
- Project_Dep_Name TAO_NotifyTests DLL
- End Project Dependency
}}}
###############################################################################
-Project: "Structured_Multi_Filter_Supplier"=.\Structured_Multi_Filter\Structured_Multi_Filter_Supplier.dsp - Package Owner=<4>
+Project: "Ordering Structured Supplier"=.\Ordering\Structured_Supplier.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -377,14 +380,11 @@ Package=<5> Package=<4>
{{{
- Begin Project Dependency
- Project_Dep_Name TAO_NotifyTests DLL
- End Project Dependency
}}}
###############################################################################
-Project: "Structured_Supplier"=".\performance-tests\Filter\Structured_Supplier.dsp" - Package Owner=<4>
+Project: "Performance Filter Sequence Consumer"=".\performance-tests\Filter\Sequence_Consumer.dsp" - Package Owner=<4>
Package=<5>
{{{
@@ -396,7 +396,7 @@ Package=<4> ###############################################################################
-Project: "Structured_Supplier"=.\Ordering\Structured_Supplier.dsp - Package Owner=<4>
+Project: "Performance Filter Sequence Supplier"=".\performance-tests\Filter\Sequence_Supplier.dsp" - Package Owner=<4>
Package=<5>
{{{
@@ -408,7 +408,7 @@ Package=<4> ###############################################################################
-Project: "Structured_Supplier"=.\MT_Dispatching\Structured_Supplier.dsp - Package Owner=<4>
+Project: "Performance Filter Structured Consumer"=".\performance-tests\Filter\Structured_Consumer.dsp" - Package Owner=<4>
Package=<5>
{{{
@@ -420,7 +420,7 @@ Package=<4> ###############################################################################
-Project: "Structured_Supplier"=.\Discarding\Structured_Supplier.dsp - Package Owner=<4>
+Project: "Performance Filter Structured Supplier"=".\performance-tests\Filter\Structured_Supplier.dsp" - Package Owner=<4>
Package=<5>
{{{
@@ -432,7 +432,7 @@ Package=<4> ###############################################################################
-Project: "Structured_Supplier"=.\Blocking\Structured_Supplier.dsp - Package Owner=<4>
+Project: "Performance RedGreen"=".\PERFORMANCE-TESTS\REDGREEN\RedGreen.dsp" - Package Owner=<4>
Package=<5>
{{{
@@ -444,7 +444,7 @@ Package=<4> ###############################################################################
-Project: "TAO_NotifyTests DLL"=.\lib\TAO_NotifyTests.dsp - Package Owner=<4>
+Project: "Performance Throughput"=".\PERFORMANCE-TESTS\THROUGHPUT\Throughput.dsp" - Package Owner=<4>
Package=<5>
{{{
@@ -456,7 +456,7 @@ Package=<4> ###############################################################################
-Project: "Throughput"=".\PERFORMANCE-TESTS\THROUGHPUT\Throughput.dsp" - Package Owner=<4>
+Project: "TAO_NotifyTests DLL"=.\lib\TAO_NotifyTests.dsp - Package Owner=<4>
Package=<5>
{{{
@@ -464,9 +464,6 @@ Package=<5> Package=<4>
{{{
- Begin Project Dependency
- Project_Dep_Name TAO_NotifyTests
- End Project Dependency
}}}
###############################################################################
|