diff options
Diffstat (limited to 'TAO')
-rw-r--r-- | TAO/orbsvcs/tests/Makefile | 3 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/Metrics/Makefile | 632 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/Metrics/Metrics_Local_Cache_Test.cpp | 956 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/Metrics/Metrics_Local_Cache_Test.h | 174 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/Metrics/Remote_Metrics_Logger.cpp | 466 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/Metrics/Remote_Metrics_Logger.h | 91 |
6 files changed, 2320 insertions, 2 deletions
diff --git a/TAO/orbsvcs/tests/Makefile b/TAO/orbsvcs/tests/Makefile index eb1c3692c51..d0e615f08eb 100644 --- a/TAO/orbsvcs/tests/Makefile +++ b/TAO/orbsvcs/tests/Makefile @@ -52,8 +52,7 @@ DIRS += Concurrency \ Security \ Miop \ LoadBalancing \ - Log \ - Metrics + Log #---------------------------------------------------------------------------- # Include macros and targets diff --git a/TAO/orbsvcs/tests/Metrics/Makefile b/TAO/orbsvcs/tests/Metrics/Makefile new file mode 100644 index 00000000000..1bc9de9eb86 --- /dev/null +++ b/TAO/orbsvcs/tests/Metrics/Makefile @@ -0,0 +1,632 @@ +#---------------------------------------------------------------------------- +# +# $Id$ +# +#---------------------------------------------------------------------------- + +#---------------------------------------------------------------------------- +# Local macros +#---------------------------------------------------------------------------- + +ifndef TAO_ROOT + TAO_ROOT = $(ACE_ROOT)/TAO +endif + +#LDLIBS = -lTAO_CosTime -lTAO_CosNaming -lTAO_Svc_Utils -lTAO_IORTable -lTAO_PortableServer -lTAO +LDLIBS = -lTAO_Metrics -lTAO_RTEvent -lTAO_RTSched -lTAO_RTCORBA -lTAO_PortableServer -lTAO + +PROG_SRCS = \ + Metrics_Local_Cache_Test.cpp \ + Remote_Metrics_Logger.cpp + +SRC = $(PROG_SRCS) + +REMOTE_LOGGER_OBJS = Remote_Metrics_Logger.o +LOCAL_CACHE_OBJS = Metrics_Local_Cache_Test.o + +BIN2 = Metrics_Local_Cache Remote_Logger + +#### If the TAO orbsvcs library wasn't built with sufficient components, +#### don't try to build here. +TAO_ORBSVCS := $(shell sh $(ACE_ROOT)/bin/ace_components --orbsvcs) +ifeq (Metrics,$(findstring Metrics,$(TAO_ORBSVCS))) + BIN = $(BIN2) +endif # Time + +#---------------------------------------------------------------------------- +# Include macros and targets +#---------------------------------------------------------------------------- + +include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU +include $(ACE_ROOT)/include/makeinclude/macros.GNU +include $(TAO_ROOT)/rules.tao.GNU +include $(ACE_ROOT)/include/makeinclude/rules.common.GNU +include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU +include $(ACE_ROOT)/include/makeinclude/rules.local.GNU +include $(TAO_ROOT)/taoconfig.mk + +#---------------------------------------------------------------------------- +# Local targets +#---------------------------------------------------------------------------- + + +#LDFLAGS += -L$(TAO_ROOT)/orbsvcs/orbsvcs -L$(TAO_ROOT)/tao -L$(TAO_ROOT)/orbsvcs/Naming_Service +CPPFLAGS += -I$(TAO_ROOT)/orbsvcs + +#.PRECIOUS: TimeServiceC.cpp TimeServiceC.i TimeServiceC.h +#.PRECIOUS: TimeServiceS.cpp TimeServiceS.i TimeServiceS.h +#.PRECIOUS: TimeServiceS_T.cpp TimeServiceS_T.i TimeServiceS_T.h + +Remote_Logger: $(addprefix $(VDIR),$(REMOTE_LOGGER_OBJS)) + $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK) + +Metrics_Local_Cache: $(addprefix $(VDIR),$(LOCAL_CACHE_OBJS)) + $(LINK.cc) $(LDFLAGS) -o $@ $^ $(VLDLIBS) $(POSTLINK) + +realclean: clean + -$(RM) TimeServiceC.* TimeServiceS.* TimeServiceS_T.* + +# DO NOT DELETE THIS LINE -- g++dep uses it. +# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. + + +.obj/Metrics_Local_Cache_Test.o .obj/Metrics_Local_Cache_Test.o .obj/Metrics_Local_Cache_Test.o .obj/Metrics_Local_Cache_Test.o: Metrics_Local_Cache_Test.cpp \ + $(ACE_ROOT)/ace/OS.h $(ACE_ROOT)/ace/pre.h \ + $(ACE_ROOT)/ace/ace_wchar.h $(ACE_ROOT)/ace/ace_wchar.inl \ + $(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/ACE_export.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/ARGV.h \ + $(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/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/ARGV.i $(ACE_ROOT)/ace/Arg_Shifter.h \ + $(ACE_ROOT)/ace/Sched_Params.h \ + $(ACE_ROOT)/ace/Sched_Params.i $(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 $(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 $(TAO_ROOT)/tao/Exception.h \ + $(ACE_ROOT)/ace/SString.h $(ACE_ROOT)/ace/String_Base.h \ + $(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/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/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/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 $(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)/tao/RTCORBA/Multi_Priority_Mapping.h \ + $(TAO_ROOT)/tao/RTCORBA/RTCORBA.h \ + $(TAO_ROOT)/tao/RTCORBA/rtcorba_export.h \ + $(TAO_ROOT)/tao/RTCORBA/RTCORBAC.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)/tao/RTCORBA/RTCORBAC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_Logger.h \ + $(ACE_ROOT)/ace/Task.h $(ACE_ROOT)/ace/Service_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.i \ + $(ACE_ROOT)/ace/Svc_Conf_Tokens.h $(ACE_ROOT)/ace/DLL.h \ + $(ACE_ROOT)/ace/Service_Object.i \ + $(ACE_ROOT)/ace/Thread_Manager.h \ + $(ACE_ROOT)/ace/Thread_Exit.h \ + $(ACE_ROOT)/ace/Thread_Control.h \ + $(ACE_ROOT)/ace/Thread_Control.inl \ + $(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/Singleton.h $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(ACE_ROOT)/ace/Framework_Component.h \ + $(ACE_ROOT)/ace/Framework_Component.inl \ + $(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/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 \ + $(ACE_ROOT)/ace/Functor.h $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Service_Config.h \ + $(ACE_ROOT)/ace/Service_Types.h \ + $(ACE_ROOT)/ace/Service_Types.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 \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Naming/naming_export.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/svc_utils_export.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/MetricsS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseS_T.h \ + $(TAO_ROOT)/tao/TimeBaseS_T.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ + $(TAO_ROOT)/tao/TimeBaseS.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/TimeBaseS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecBaseS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecBaseC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecBaseC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecBaseS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/MetricsC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/MetricsC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/MetricsS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/MetricsS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/MetricsS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/MetricsS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_Utils.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/orbsvcs_export.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_Utils.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Rate_Group_Info.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Rate_Group_Info.i \ + Metrics_Local_Cache_Test.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache.h \ + $(ACE_ROOT)/ace/Metrics_Cache.h \ + $(ACE_ROOT)/ace/Metrics_Cache.i \ + $(ACE_ROOT)/ace/Metrics_Cache_T.h \ + $(ACE_ROOT)/ace/Timeprobe.h $(ACE_ROOT)/ace/Timeprobe.i \ + $(ACE_ROOT)/ace/Timeprobe_T.h \ + $(ACE_ROOT)/ace/Timeprobe_T.cpp \ + $(ACE_ROOT)/ace/High_Res_Timer.h \ + $(ACE_ROOT)/ace/High_Res_Timer.i \ + $(ACE_ROOT)/ace/Metrics_Cache_T.i \ + $(ACE_ROOT)/ace/Metrics_Cache_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Scheduler_Factory.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosNamingC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Sched/sched_export.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Scheduler_Factory.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_UpcallMonitor.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_FrameManager.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_FrameManager.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_FrameManager_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_FrameManager_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_FrameManager_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_UpcallMonitor.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_UpcallMonitor_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_UpcallMonitor_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_UpcallMonitor_T.i + +.obj/Remote_Metrics_Logger.o .obj/Remote_Metrics_Logger.o .obj/Remote_Metrics_Logger.o .obj/Remote_Metrics_Logger.o: Remote_Metrics_Logger.cpp \ + $(ACE_ROOT)/ace/OS.h $(ACE_ROOT)/ace/pre.h \ + $(ACE_ROOT)/ace/ace_wchar.h $(ACE_ROOT)/ace/ace_wchar.inl \ + $(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/ACE_export.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/Arg_Shifter.h \ + $(ACE_ROOT)/ace/ARGV.h $(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/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/ARGV.i $(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 $(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 $(TAO_ROOT)/tao/Exception.h \ + $(ACE_ROOT)/ace/SString.h $(ACE_ROOT)/ace/String_Base.h \ + $(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/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/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/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 $(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)/tao/TAO_Internal.h Remote_Metrics_Logger.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_Logger.h \ + $(ACE_ROOT)/ace/Task.h $(ACE_ROOT)/ace/Service_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.i \ + $(ACE_ROOT)/ace/Svc_Conf_Tokens.h $(ACE_ROOT)/ace/DLL.h \ + $(ACE_ROOT)/ace/Service_Object.i \ + $(ACE_ROOT)/ace/Thread_Manager.h \ + $(ACE_ROOT)/ace/Thread_Exit.h \ + $(ACE_ROOT)/ace/Thread_Control.h \ + $(ACE_ROOT)/ace/Thread_Control.inl \ + $(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/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/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/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 \ + $(ACE_ROOT)/ace/Functor.h $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Service_Config.h \ + $(ACE_ROOT)/ace/Service_Types.h \ + $(ACE_ROOT)/ace/Service_Types.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 \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Naming/naming_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 \ + $(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 \ + $(TAO_ROOT)/orbsvcs/orbsvcs/svc_utils_export.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/MetricsS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseS_T.h \ + $(TAO_ROOT)/tao/TimeBaseS_T.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ + $(TAO_ROOT)/tao/TimeBaseS.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/TimeBaseS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecBaseS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecBaseC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecBaseC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecBaseS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/MetricsC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/MetricsC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/MetricsS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/MetricsS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/MetricsS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/MetricsS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_Utils.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/orbsvcs_export.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Metrics/Metrics_Utils.i + +# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/TAO/orbsvcs/tests/Metrics/Metrics_Local_Cache_Test.cpp b/TAO/orbsvcs/tests/Metrics/Metrics_Local_Cache_Test.cpp new file mode 100644 index 00000000000..1a5c9b8a062 --- /dev/null +++ b/TAO/orbsvcs/tests/Metrics/Metrics_Local_Cache_Test.cpp @@ -0,0 +1,956 @@ +// $Id$ + +#include "ace/OS.h" +#include "ace/ARGV.h" +#include "ace/Arg_Shifter.h" +#include "ace/Sched_Params.h" + +#include "tao/corba.h" +#include "tao/RTCORBA/Multi_Priority_Mapping.h" +#include "tao/RTCORBA/RTCORBA.h" +#include "orbsvcs/Metrics/Metrics_Logger.h" +#include "orbsvcs/Rate_Group_Info.h" + +#include "Metrics_Local_Cache_Test.h" + +ACE_RCSID(Metrics_Local_Cache_Test, Metrics_Local_Cache_Test, "$Id$") + +const int base_port = 10015; + +const unsigned int TAO_Metrics_Local_Cache_Test::number_of_hrt_rates_ = 5; +const unsigned int TAO_Metrics_Local_Cache_Test::number_of_srt_rates_ = 1; + +const unsigned long TAO_Metrics_Local_Cache_Test::the_hrt_Rates_in_microseconds_[] = +{ + 25000, // 25 msec + 50000, // 50 msec + 100000, // 100 msec + 200000, // 200 msec + 1000000 // 1 sec +}; + +const int TAO_Metrics_Local_Cache_Test::highest_rate_group_priority_ = +// VxWorks targets +#ifdef VXWORKS + // Priorities on VxWorks range from 0 to 255 with 255 being the lowest priority. + // Recommended priority is below the lowest net task of VxWorks. (60 is a safe number) + 150; +#else +// Windows targets +#ifdef ACE_WIN32 + +#if defined (ACE_THR_PRI_FIFO_DEF) + ACE_Sched_Params::priority_max (ACE_SCHED_FIFO); +#else + ACE_DEFAULT_THREAD_PRIORITY; +#endif /* ACE_THR_PRI_FIFO_DEF */ + +// Other targets including Linux +#else + 50; +#endif + +#endif + +char *orb_init_params = +#if defined INFRA_HAS_TOA_GIOP_LITE && defined INFRA_HAS_TAO_DEBUG + "-ORBObjRefStyle URL -ORBDebugLevel 1 -ORBGIOPlite -ORBCollocationStrategy direct"; +#elif defined INFRA_HAS_TOA_GIOP_LITE + "-ORBObjRefStyle URL -ORBGIOPlite -ORBCollocationStrategy direct"; +#elif defined INFRA_HAS_TAO_DEBUG + "-ORBObjRefStyle URL -ORBDebugLevel 10 -ORBCollocationStrategy direct"; +#else + "-ORBObjRefStyle URL -ORBCollocationStrategy direct"; +#endif // ORB Init options + +int enable_debug = 0; +// Used to enable LM_DEBUG messages + +int enable_trace = 0; + // Used to enable LM_TRACE messages + +////////////////////////////////////////// +// class TAO_Metrics_Local_Cache_Test // +////////////////////////////////////////// + +// Default Constructor. + +TAO_Metrics_Local_Cache_Test::TAO_Metrics_Local_Cache_Test (int local_monitor, + int local_logger) + : orb_(CORBA::ORB::_nil()), + logger_impl_ (0), + upcall_monitor_impl_(0), + H40_push_consumer_adapter_ (0), + H20_push_consumer_adapter_ (0), + H10_push_consumer_adapter_ (0), + H05_push_consumer_adapter_ (0), + H01_push_consumer_adapter_ (0), + S40_push_consumer_adapter_ (0), + S20_push_consumer_adapter_ (0), + S10_push_consumer_adapter_ (0), + S05_push_consumer_adapter_ (0), + S01_push_consumer_adapter_ (0), + logger_ior_file_name_ (0), + monitor_ior_file_name_ (0), + log_file_name_ (0), + log_output_ (0), + visualize_ (0), + local_monitor_(local_monitor), + local_logger_(local_logger), + rate_group_info_(0), + master_host_name_(0), + master_host_ip_(0) +{ +} + + +TAO_Metrics_Local_Cache_Test::TAO_Metrics_Local_Cache_Test (int argc, + char *argv[], + int local_monitor, + int local_logger) + : orb_(CORBA::ORB::_nil()), + logger_impl_ (0), + H40_push_consumer_adapter_ (0), + H20_push_consumer_adapter_ (0), + H10_push_consumer_adapter_ (0), + H05_push_consumer_adapter_ (0), + H01_push_consumer_adapter_ (0), + S40_push_consumer_adapter_ (0), + S20_push_consumer_adapter_ (0), + S10_push_consumer_adapter_ (0), + S05_push_consumer_adapter_ (0), + S01_push_consumer_adapter_ (0), + logger_ior_file_name_ (0), + monitor_ior_file_name_ (0), + log_file_name_ (0), + log_output_ (0), + visualize_ (0), + local_monitor_(local_monitor), + local_logger_(local_logger), + rate_group_info_(0) +{ + this->init (argc, argv); +} + +// Destructor. + +TAO_Metrics_Local_Cache_Test::~TAO_Metrics_Local_Cache_Test (void) +{ +} + +void +TAO_Metrics_Local_Cache_Test::generate_orb_args (char *& orb_init_str) +{ + int port = 0; + char endpoint[255]; // Just use a large value to ensure the buffer is large enough for an endpoint + RTCORBA::Priority the_corba_priority; + + const unsigned int number_of_rates = TAO_Metrics_Local_Cache_Test::number_of_hrt_rates_ + + TAO_Metrics_Local_Cache_Test::number_of_srt_rates_; + + rate_group_info_ = new TAO_Rate_Group_Info* [number_of_rates]; + + // Set the number of rate groups + TAO_Rate_Group_Info::set_num_rate_groups(number_of_rates); + + // Set the base corba priority. Priority of the highest endpoint + TAO_Rate_Group_Info::set_corba_base_priority(50); + + // Set the spacing between consecutive endpoints. + TAO_Rate_Group_Info::set_priority_spacing(1); + +#ifdef ACE_WIN32 // WINDOWS + // Priorities are not contiguous on Windows Platforms + TAO_Rate_Group_Info::set_priorities_contiguous(0); +#else // !WINDOWS + TAO_Rate_Group_Info::set_priorities_contiguous(1); +#endif + + unsigned int rate_ndx = 0; + for (rate_ndx = 0; rate_ndx < number_of_rates; rate_ndx++) + { + rate_group_info_[rate_ndx] = new TAO_Rate_Group_Info; + } + + int next_priority = 0; + int prev_priority = 0; + for (rate_ndx = 0; + rate_ndx < TAO_Metrics_Local_Cache_Test::number_of_hrt_rates_; + rate_ndx++) + { + // Rate for this HRT Rate Group + rate_group_info_[rate_ndx]->set_rate( TAO_Metrics_Local_Cache_Test::the_hrt_Rates_in_microseconds_[rate_ndx] ); + + // OS Priority of the highest rate group + if (rate_ndx == 0) + { + next_priority = highest_rate_group_priority_; + } + else + { + next_priority = ACE_Sched_Params::previous_priority (ACE_SCHED_FIFO, + prev_priority, + ACE_SCOPE_THREAD); + } + + prev_priority = next_priority; + rate_group_info_[rate_ndx]->set_rate_group_priority( next_priority ); + } + + if ( TAO_Metrics_Local_Cache_Test::number_of_srt_rates_ > 0 ) + { + const unsigned int index_of_srt_rates = TAO_Metrics_Local_Cache_Test::number_of_hrt_rates_; + + // Temporary rate patch for Dynamic Queue + rate_group_info_[index_of_srt_rates]->set_rate(1375000); + if ( TAO_Metrics_Local_Cache_Test::number_of_hrt_rates_ == 0 ) + { + next_priority = TAO_Metrics_Local_Cache_Test::highest_rate_group_priority_; + } + else + { + next_priority = ACE_Sched_Params::previous_priority (ACE_SCHED_FIFO, + prev_priority, + ACE_SCOPE_THREAD); + } + + rate_group_info_[index_of_srt_rates]->set_rate_group_priority(next_priority); // Dynamic Rate Group Priority + } + + TAO_Multi_Priority_Mapping priorityMapping (rate_group_info_[0]->get_rate_group_priority(), // Priority for the highest rate group + TAO_Rate_Group_Info::get_corba_base_priority(), // The starting CORBA priority value + TAO_Rate_Group_Info::get_priority_spacing(), // Priority spacing between rate groups. + TAO_Rate_Group_Info::get_priorities_contiguous(), // Priority spacing between rate groups. + ACE_SCHED_FIFO); + + u_int init_str_len = 0; + if (master_host_ip_ != 0) + { + // Allocate an orb init string + init_str_len = (number_of_rates) * ( + 21 + // " -ORBendpoint iiop://" + ACE_OS::strlen(this->master_host_ip_) + + 6 + // ":" + Port Number length + 10 + // "/priority=" + 5 ) + // Port Number length + 1 /* Null Terminator */; + } + else if (master_host_name_ != 0) + { + // Allocate an orb init string + init_str_len = (number_of_rates) * ( + 21 + // " -ORBendpoint iiop://" + ACE_OS::strlen(this->master_host_name_) + + 6 + // ":" + Port Number length + 10 + // "/priority=" + 5 ) + // Port Number length + 1 /* Null Terminator */; + } + else + { + ACE_ERROR((LM_ERROR,"You must specify either a master host name or master host IP\n%a")); + } + + + // Include the application provided init string. + if (init_str_len) + { + init_str_len += ACE_OS::strlen(orb_init_params) + 1; + } + + orb_init_str = CORBA::string_alloc (init_str_len); + *orb_init_str =0; + + // Build the endpoint string; + for (rate_ndx = 0; rate_ndx < number_of_rates; rate_ndx++) + { + port = base_port + rate_ndx; + priorityMapping.to_CORBA(rate_group_info_[rate_ndx]->get_rate_group_priority(), the_corba_priority); + + // Build the endpoint string + ACE_OS::sprintf(endpoint, + " -ORBendpoint iiop://%s:%d/priority=%d", + this->master_host_name_, + port, + the_corba_priority ); + + // Append to the string + ACE_OS::strcat( orb_init_str, endpoint ); + } + + if (orb_init_str) + { + // Concatenate the application defined init string + ACE_OS::strcat( orb_init_str, " " ); + ACE_OS::strcat( orb_init_str, orb_init_params ); + } + + ACE_DEBUG((LM_DEBUG, "ORB _init string is %s\n",orb_init_str )); +} + +int +TAO_Metrics_Local_Cache_Test::parse_args (int argc, + char *argv[]) +{ + int num_orb_args = 0; + + ACE_Arg_Shifter arg_shifter (argc, argv); + + // Ignore the first argument. Program Name + arg_shifter.ignore_arg (); + + while (arg_shifter.is_anything_left ()) + { + const ACE_TCHAR *current_arg = 0; + + if ( (current_arg = arg_shifter.get_the_parameter("-masterHostName")) ) + { + this->master_host_name_ = CORBA::string_dup(current_arg); + arg_shifter.consume_arg(); + } + else if ( (current_arg = arg_shifter.get_the_parameter("-masterHostIP")) ) + { + this->master_host_ip_ = CORBA::string_dup(current_arg); + arg_shifter.consume_arg(); + } + else if ( (current_arg = arg_shifter.get_the_parameter("-logger_ior")) ) + { + this->logger_ior_file_name_ = CORBA::string_dup(current_arg);; + arg_shifter.consume_arg(); + } + else if ( arg_shifter.cur_arg_strncasecmp("-debug") >= 0 ) + { + enable_debug = 1; + arg_shifter.consume_arg(); + } + else if ( arg_shifter.cur_arg_strncasecmp("-trace") >= 0 ) + { + enable_trace = 1; + arg_shifter.consume_arg(); + } + else if ( arg_shifter.cur_arg_strncasecmp("?") >= 0 ) + { + ACE_DEBUG ((LM_DEBUG, + "Usage: %s " + "[-masterHostName <master host name>] " + "[-masterHostIP <master host IP address>] " + "[-logger_ior logger_ior_file_name] " + + "[-debug] (Enable LM_DEBUG log priority)" + "[-trace] (Enable LM_TRACE log priority)" + "\n", + argv[0])); + } + else + { + ACE_DEBUG((LM_DEBUG, "Unrecognized Command Line Arg: %s. Assuming user-defined parameter\n", arg_shifter.get_current())); + arg_shifter.ignore_arg (); + num_orb_args++; + } + } + return num_orb_args; +} + +// Initialize the logger driver with the command line arguments. +int +TAO_Metrics_Local_Cache_Test::init (int argc, char *argv[]) +{ + char *orb_init_string = 0; + + // Parse User supplied arguments leaving any ORB init arguments + int orb_argc = this->parse_args (argc, argv); + if (enable_debug) + { + ACE_Log_Msg::enable_debug_messages(); + } + else + { + ACE_Log_Msg::disable_debug_messages(); + } + + if (enable_trace) + { + ACE_Log_Msg::enable_debug_messages(LM_TRACE); + } + else + { + ACE_Log_Msg::disable_debug_messages(LM_TRACE); + } + + char** orb_argv = 0; + ACE_ARGV *the_orb_args = 0; + + if (orb_argc == 0) + { + this->generate_orb_args(orb_init_string); + the_orb_args = new ACE_ARGV (orb_init_string); + orb_argc = the_orb_args->argc (); + orb_argv = the_orb_args->argv (); + } + else + { + // If the user specified ORB args, then assume that the user is handling + // proper setup of the ORB. + orb_argv = argv; + } + + ACE_TRY_NEW_ENV + { + // Initialize ORB. + this->orb_ = CORBA::ORB_init (orb_argc, orb_argv); + + // Connect to the RootPOA. + CORBA::Object_var poa_object = + this->orb_->resolve_initial_references("RootPOA"); + + if (CORBA::is_nil (poa_object.in ())) + ACE_ERROR_RETURN ((LM_ERROR, + " (%P|%t) Unable to initialize the POA.\n"), + 1); + + this->root_poa_ = PortableServer::POA::_narrow (poa_object.in (), ACE_TRY_ENV); + ACE_TRY_CHECK; + + if (CORBA::is_nil (poa_manager_.in ())) + { + this->poa_manager_ = root_poa_->the_POAManager (ACE_TRY_ENV); + ACE_TRY_CHECK; + + // Activate the POA manager. + poa_manager_->activate (ACE_TRY_ENV); + ACE_TRY_CHECK; + } + + // Create a child poa with USER_ID and PERSISTENT policies. + CORBA::PolicyList policies; + policies.length (2); + + policies[0] = this->root_poa_->create_id_assignment_policy (PortableServer::USER_ID, + ACE_TRY_ENV); + ACE_TRY_CHECK; + + policies[1] = this->root_poa_->create_lifespan_policy(PortableServer::PERSISTENT, + ACE_TRY_ENV); + ACE_TRY_CHECK; + + + this->persistent_poa_ = this->root_poa_->create_POA("TheChildPOA", + this->poa_manager_.in (), + policies, + ACE_TRY_ENV); + ACE_TRY_CHECK; + + // Cleanup the POA Policies + policies[0]->destroy (ACE_TRY_ENV); + ACE_TRY_CHECK; + + policies[1]->destroy (ACE_TRY_ENV); + ACE_TRY_CHECK; + + if (local_logger_) + { + // Now construct the logger implementation, using the settings. + ACE_NEW_THROW_EX (this->logger_impl_, + TAO_Metrics_Logger (this->visualize_, + this->log_output_, + 1, // 1 == generate_export_file + this->log_file_name_), + CORBA::NO_MEMORY ()); + ACE_TRY_CHECK; + + // Implicitly activate and store a reference to the logger. + this->logger_ref_ = this->logger_impl_->_this (ACE_TRY_ENV); + ACE_TRY_CHECK; + + // Output and log the logger IOR. + ACE_DEBUG ((LM_DEBUG, + "\n\nThe TAO_Metrics logger IOR is:\n\n%s\n\n", + this->orb_->object_to_string (this->logger_ref_.in()))); + } + else + { + if (this->logger_ior_file_name_ == 0) + { + ACE_ERROR((LM_ERROR, "You must specify a logger ior filename using the -logger_ior command line argument\n%a")); + } + + u_int ior_str_len = + ACE_OS::strlen("file:") + + ACE_OS::strlen(this->logger_ior_file_name_); + + char *ior_str = CORBA::string_alloc (ior_str_len); + *ior_str = 0; + ACE_OS::strcat(ior_str, "file://"); + ACE_OS::strcat(ior_str, this->logger_ior_file_name_); + + CORBA::Object_var logger_obj = this->orb_->string_to_object ( ior_str , ACE_TRY_ENV); + ACE_TRY_CHECK; + + // Turn Off priority selection for this reference. + //TAO::PrioritySpecification ps; + //ps.mode = TAO::USE_NO_PRIORITY; + //CORBA::Any value; + //value <<= ps; + + //CORBA::PolicyList policy_list (1); + //policy_list.length (1); + //policy_list[0] = this->orb_->create_policy (TAO::CLIENT_PRIORITY_POLICY_TYPE, + // value, + // ACE_TRY_ENV); + //ACE_TRY_CHECK; + + + // Obtain an object reference without endpoint profiles + //CORBA::Object_var logger_obj_no_priority_ref = logger_obj->_set_policy_overrides (policy_list, + //CORBA::SET_OVERRIDE, + // ACE_TRY_ENV); + //ACE_TRY_CHECK; + + //this->logger_ref_ = Metrics::QoSLogger::_narrow (logger_obj_no_priority_ref.in(), ACE_TRY_ENV); + this->logger_ref_ = Metrics::QoSLogger::_narrow (logger_obj.in(), ACE_TRY_ENV); + ACE_TRY_CHECK; + + } + + if (local_monitor_) + { + // Now construct the logger implementation, using the settings. + ACE_NEW_THROW_EX (this->upcall_monitor_impl_, + TAO_Metrics_ReportingUpcallMonitor (), + CORBA::NO_MEMORY ()); + ACE_TRY_CHECK; + + if (this->monitor_ior_file_name_ != 0) + { + FILE *miorf = fopen (this->monitor_ior_file_name_, "w"); + if (miorf != 0) + { + ACE_OS::fprintf (miorf, + "%s\n", + this->orb_->object_to_string (this->upcall_monitor_ref_.in())); + ACE_OS::fclose (miorf); + } + } + + // Implicitly activate and store a reference to the upcall monitor. + this->upcall_monitor_ref_ = this->upcall_monitor_impl_->_this (ACE_TRY_ENV); + ACE_TRY_CHECK; + } + + // Output and log the upcall monitor IOR. + ACE_DEBUG ((LM_DEBUG, + "\n\nThe TAO_Metrics upcall monitor IOR is:\n\n%s\n\n", + this->orb_->object_to_string (this->upcall_monitor_ref_.in()))); + + + // Create all the push consumer upcall adapters. + TAO_String_Manager string_manager; + string_manager = (const char *) "H40"; // forces a copy (for lame platforms w/ non-const "") + ACE_NEW_THROW_EX (this->H40_push_consumer_adapter_, + METRICS_UPCALL_ADAPTER_TYPE + (*upcall_monitor_impl_, cache_, frame_manager_, H40_push_consumer_, + string_manager, 1, 250000, 125000, RtecScheduler::VERY_HIGH_CRITICALITY, 0, logger_ref_.in()), + CORBA::NO_MEMORY ()); + ACE_TRY_CHECK; + + string_manager = (const char *) "H20"; // forces a copy (for lame platforms w/ non-const "") + ACE_NEW_THROW_EX (this->H20_push_consumer_adapter_, + METRICS_UPCALL_ADAPTER_TYPE + (*upcall_monitor_impl_, cache_, frame_manager_, H20_push_consumer_, + string_manager, 2, 500000, 250000, RtecScheduler::VERY_HIGH_CRITICALITY, 0, logger_ref_.in()), + CORBA::NO_MEMORY ()); + ACE_TRY_CHECK; + + string_manager = (const char *) "H10"; // forces a copy (for lame platforms w/ non-const "") + ACE_NEW_THROW_EX (this->H10_push_consumer_adapter_, + METRICS_UPCALL_ADAPTER_TYPE + (*upcall_monitor_impl_, cache_, frame_manager_, H10_push_consumer_, + string_manager, 3, 1000000, 500000, RtecScheduler::VERY_HIGH_CRITICALITY, 0, logger_ref_.in()), + CORBA::NO_MEMORY ()); + ACE_TRY_CHECK; + + string_manager = (const char *) "H05"; // forces a copy (for lame platforms w/ non-const "") + ACE_NEW_THROW_EX (this->H05_push_consumer_adapter_, + METRICS_UPCALL_ADAPTER_TYPE + (*upcall_monitor_impl_, cache_, frame_manager_, H05_push_consumer_, + string_manager, 4, 2000000, 1000000, RtecScheduler::VERY_HIGH_CRITICALITY, 0, logger_ref_.in()), + CORBA::NO_MEMORY ()); + ACE_TRY_CHECK; + + string_manager = (const char *) "H01"; // forces a copy (for lame platforms w/ non-const "") + ACE_NEW_THROW_EX (this->H01_push_consumer_adapter_, + METRICS_UPCALL_ADAPTER_TYPE + (*upcall_monitor_impl_, cache_, frame_manager_, H01_push_consumer_, + string_manager, 5, 10000000, 5000000, RtecScheduler::VERY_HIGH_CRITICALITY, 0, logger_ref_.in()), + CORBA::NO_MEMORY ()); + ACE_TRY_CHECK; + + string_manager = (const char *) "S40"; // forces a copy (for lame platforms w/ non-const "") + ACE_NEW_THROW_EX (this->S40_push_consumer_adapter_, + METRICS_UPCALL_ADAPTER_TYPE + (*upcall_monitor_impl_, cache_, frame_manager_, S40_push_consumer_, + string_manager, 6, 250000, 125000, RtecScheduler::VERY_LOW_CRITICALITY, 0, logger_ref_.in()), + CORBA::NO_MEMORY ()); + ACE_TRY_CHECK; + + string_manager = (const char *) "S20"; // forces a copy (for lame platforms w/ non-const "") + ACE_NEW_THROW_EX (this->S20_push_consumer_adapter_, + METRICS_UPCALL_ADAPTER_TYPE + (*upcall_monitor_impl_, cache_, frame_manager_, S20_push_consumer_, + string_manager, 7, 500000, 250000, RtecScheduler::VERY_LOW_CRITICALITY, 0, logger_ref_.in()), + CORBA::NO_MEMORY ()); + ACE_TRY_CHECK; + + string_manager = (const char *) "S10"; // forces a copy (for lame platforms w/ non-const "") + ACE_NEW_THROW_EX (this->S10_push_consumer_adapter_, + METRICS_UPCALL_ADAPTER_TYPE + (*upcall_monitor_impl_, cache_, frame_manager_, S10_push_consumer_, + string_manager, 8, 1000000, 500000, RtecScheduler::VERY_LOW_CRITICALITY, 0, logger_ref_.in()), + CORBA::NO_MEMORY ()); + ACE_TRY_CHECK; + + string_manager = (const char *) "S05"; // forces a copy (for lame platforms w/ non-const "") + ACE_NEW_THROW_EX (this->S05_push_consumer_adapter_, + METRICS_UPCALL_ADAPTER_TYPE + (*upcall_monitor_impl_, cache_, frame_manager_, S05_push_consumer_, + string_manager, 9, 2000000, 1000000, RtecScheduler::VERY_LOW_CRITICALITY, 0, logger_ref_.in()), + CORBA::NO_MEMORY ()); + ACE_TRY_CHECK; + + string_manager = (const char *) "S01"; // forces a copy (for lame platforms w/ non-const "") + ACE_NEW_THROW_EX (this->S01_push_consumer_adapter_, + METRICS_UPCALL_ADAPTER_TYPE + (*upcall_monitor_impl_, cache_, frame_manager_, S01_push_consumer_, + string_manager, 10, 10000000, 5000000, RtecScheduler::VERY_LOW_CRITICALITY, 0, logger_ref_.in()), + CORBA::NO_MEMORY ()); + ACE_TRY_CHECK; + + frame_manager_.register_period (10000000); // 1 Hz + frame_manager_.register_period ( 2000000); // 5 Hz + frame_manager_.register_period ( 1000000); // 10 Hz + frame_manager_.register_period ( 500000); // 20 Hz + frame_manager_.register_period ( 250000); // 40 Hz + frame_manager_.reset_all_frames (); + + // Register base metrics segments. + cache_.register_base_metrics ("QUO", + TAO_Metrics_Utils::QUO, + logger_ref_.in()); + cache_.register_base_metrics ("Sched", + TAO_Metrics_Utils::SCHED, + logger_ref_.in()); + cache_.register_base_metrics ("RTARM", + TAO_Metrics_Utils::RTARM, + logger_ref_.in()); + + // Register all the probes with the logger. + cache_.register_probes (logger_ref_.in()); + + } + + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "TAO_Metrics_Local_Cache_Test::init"); + return -1; + } + ACE_ENDTRY; + + delete the_orb_args; + return 0; +} + + +// Runs the TAO_Metrics_Local_Cache_Test. + +int +TAO_Metrics_Local_Cache_Test::run (CORBA_Environment& ACE_TRY_ENV) +{ + int result = 0; + ACE_Thread_Manager orb_thread_manager; + + ACE_TRY + { + ///////////////////////////// + // Initialization sequence // + ///////////////////////////// + + // Spawn a thread that runs the orb event loop + orb_thread_manager.spawn (TAO_Metrics_Local_Cache_Test::run_orb, this); + + //////////////////////// + // Operation sequence // + //////////////////////// + + ACE_Time_Value start_tv, end_tv; + Metrics::Time interval; + for (int i = 0; i < 5; ++i) + { + char buf[32]; + ACE_OS::sprintf (buf, "mission state %d\n", i); + logger_ref_->send_banner (buf); + ACE_TRY_CHECK; + + ACE_DEBUG ((LM_DEBUG, "(%P | %t) %s", buf)); + + // Advance to current next frame for each period. + start_tv = ACE_OS::gettimeofday (); + frame_manager_.update_all_frames (start_tv); + + ACE_Time_Value start_tv; + u_int j; + // Push a bunch of events to the consumer adapters. + for (j = 0; j < 5; ++j) + { + // TBD - update these to do something interesting. + cache_.report_base_metrics_start (0); + cache_.report_base_metrics_stop (0); + cache_.report_enqueue_start (0); + cache_.report_enqueue_stop (0); + cache_.report_enqueue_suspend (0); + cache_.report_enqueue_resume (0); + cache_.report_dequeue_start (0); + cache_.report_dequeue_stop (0); + cache_.report_dequeue_suspend (0); + cache_.report_dequeue_resume (0); + + H01_push_consumer_adapter_->push (event_set_); + H05_push_consumer_adapter_->push (event_set_); + H10_push_consumer_adapter_->push (event_set_); + H20_push_consumer_adapter_->push (event_set_); + H40_push_consumer_adapter_->push (event_set_); + + S01_push_consumer_adapter_->push (event_set_); + S05_push_consumer_adapter_->push (event_set_); + S10_push_consumer_adapter_->push (event_set_); + S20_push_consumer_adapter_->push (event_set_); + S40_push_consumer_adapter_->push (event_set_); + } + + end_tv = ACE_OS::gettimeofday (); + end_tv -= start_tv; + ORBSVCS_Time::Time_Value_to_TimeT (interval, end_tv); + + upcall_monitor_ref_->report_aggregate_QoS (logger_ref_.in(), interval); + ACE_TRY_CHECK; + + Metrics::QoSParameter_t qos; + Metrics::QoSParameter_t_var qos_var(&qos); + Metrics::QoSParameter_t_out qos_out(qos_var); + Metrics::QoSParameter_Set_var qos_set_var; + Metrics::Handle_Set_t handle_set (10); + handle_set.length (10); + + ACE_DEBUG ((LM_DEBUG, "Querying individual handle QoS\n")); + + for (j = 1; j <= 10; ++j) + { + handle_set [j-1] = j; + upcall_monitor_ref_->get_aggregate_QoS (j, qos_out); + ACE_TRY_CHECK; + ACE_DEBUG ((LM_DEBUG, + "[handle = %u] [entry_point = %s] [made = %u] " + "[missed = %u] [cancelled = %u] [is_hrt = %d]\n", + qos_var.in().handle, + qos_var.in().entry_point.in(), + qos_var.in().deadlines_made, + qos_var.in().deadlines_missed, + qos_var.in().operations_cancelled, + qos_var.in().is_hrt)); + } + + ACE_DEBUG ((LM_DEBUG, "Querying handle set QoS\n")); + + upcall_monitor_ref_->get_aggregate_QoS_set (handle_set, qos_set_var); + ACE_TRY_CHECK; + for (j = 0; j < qos_set_var.ptr()->length (); ++j) + { + ACE_DEBUG ((LM_DEBUG, + "[handle = %u] [entry_point = %s] [made = %u] " + "[missed = %u] [cancelled = %u] [is_hrt = %d]\n", + qos_set_var[j].handle, + qos_set_var[j].entry_point.in(), + qos_set_var[j].deadlines_made, + qos_set_var[j].deadlines_missed, + qos_set_var[j].operations_cancelled, + qos_set_var[j].is_hrt)); + } + + cache_.flush_ACE_Metrics_Cache (); + cache_.flush_TAO_Metrics_LocalCache (); + cache_.output_statistics (logger_ref_.in()); + cache_.flip_supplier_and_consumer (); + cache_.flush_ACE_Metrics_Cache (); + cache_.flush_TAO_Metrics_LocalCache (); + + CORBA::ULong frame_id; + frame_manager_.get_frame_data (10000000, start_tv, end_tv, frame_id); // get 1 Hz data + ACE_DEBUG ((LM_DEBUG, + "ending 1 Hz data frame: [id = %u] " + "[start = %u sec %u usec] [end = %u sec %u usec]\n", + frame_id, start_tv.sec (), start_tv.usec (), end_tv.sec (), end_tv.usec ())); + + frame_manager_.get_frame_data ( 2000000, start_tv, end_tv, frame_id); // get 5 Hz data + ACE_DEBUG ((LM_DEBUG, + "ending 5 Hz data frame: [id = %u] " + "[start = %u sec %u usec] [end = %u sec %u usec]\n", + frame_id, start_tv.sec (), start_tv.usec (), end_tv.sec (), end_tv.usec ())); + + frame_manager_.get_frame_data ( 1000000, start_tv, end_tv, frame_id); // get 10 Hz data + ACE_DEBUG ((LM_DEBUG, + "ending 10 Hz data frame: [id = %u] " + "[start = %u sec %u usec] [end = %u sec %u usec]\n", + frame_id, start_tv.sec (), start_tv.usec (), end_tv.sec (), end_tv.usec ())); + + frame_manager_.get_frame_data ( 500000, start_tv, end_tv, frame_id); // get 20 Hz data + ACE_DEBUG ((LM_DEBUG, + "ending 20 Hz data frame: [id = %u] " + "[start = %u sec %u usec] [end = %u sec %u usec]\n", + frame_id, start_tv.sec (), start_tv.usec (), end_tv.sec (), end_tv.usec ())); + + frame_manager_.get_frame_data ( 250000, start_tv, end_tv, frame_id); // get 40 Hz data + ACE_DEBUG ((LM_DEBUG, + "ending 40 Hz data frame: [id = %u] " + "[start = %u sec %u usec] [end = %u sec %u usec]\n", + frame_id, start_tv.sec (), start_tv.usec (), end_tv.sec (), end_tv.usec ())); + } + + ////////////////////////// + // Termination sequence // + ////////////////////////// + + ACE_DEBUG ((LM_DEBUG, "about to clean up push consumers\n")); + + H40_push_consumer_adapter_->disconnect_push_consumer (); + H20_push_consumer_adapter_->disconnect_push_consumer (); + H10_push_consumer_adapter_->disconnect_push_consumer (); + H05_push_consumer_adapter_->disconnect_push_consumer (); + H01_push_consumer_adapter_->disconnect_push_consumer (); + S40_push_consumer_adapter_->disconnect_push_consumer (); + S20_push_consumer_adapter_->disconnect_push_consumer (); + S10_push_consumer_adapter_->disconnect_push_consumer (); + S05_push_consumer_adapter_->disconnect_push_consumer (); + S01_push_consumer_adapter_->disconnect_push_consumer (); + } + + ACE_CATCHANY + { + ACE_DEBUG ((LM_DEBUG, "caught an exception\n")); + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "TAO_Metrics_Local_Cache_Test::run"); + result = -1; + } + ACE_ENDTRY; + + ACE_DEBUG ((LM_DEBUG, "about to shut down orb\n")); + + // Shut down orb, then wait for the ORB thread to exit. + this->orb_->shutdown (); + + ACE_DEBUG ((LM_DEBUG, "about to wait on orb thread\n")); + + orb_thread_manager.wait (); + + ACE_DEBUG ((LM_DEBUG, "all done with run\n")); + + return result; +} + + +// Parses the command line arguments. + +// Run the ORB event loop. +void * +TAO_Metrics_Local_Cache_Test::run_orb (void *that) +{ + ACE_TRY_NEW_ENV + { + ACE_static_cast (TAO_Metrics_Local_Cache_Test *, that)->orb_->run (); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "TAO_Metrics_Local_Cache_Test::run_orb"); + } + ACE_ENDTRY; + + return 0; +} + + +void TAO_Metrics_Local_Cache_Test_PushConsumer:: +push (const RtecEventComm::EventSet &, CORBA_Environment &) +{ + ACE_Time_Value pause_tv; + + switch (state_variable_) + { + case 0: + pause_tv.set (0,0); // instantaneous - all should succeed + break; + case 1: + pause_tv.set (0, 25000); // 40 Hz may miss + break; + case 2: + pause_tv.set (0, 50000); // 20 Hz may miss + break; + case 3: + pause_tv.set (0, 100000); // 10 Hz may miss + break; + case 4: + pause_tv.set (0, 200000); // 5 Hz may miss + break; + case 5: + pause_tv.set (1, 0); // 1 Hz may miss + break; + case 6: + default: + pause_tv.set (2, 0); // 1/2 Hz - none should succeed + break; + } + + state_variable_ = (state_variable_ + 1) % 7; + ACE_OS::sleep (pause_tv); +} + +void TAO_Metrics_Local_Cache_Test_PushConsumer:: +disconnect_push_consumer (CORBA_Environment &) +{ + ACE_DEBUG ((LM_DEBUG, + "TAO_Metrics_Local_Cache_Test_PushConsumer::" + "disconnect_push_consumer\n")); +} + +int +main (int argc, char *argv[]) +{ + ACE_TRY_NEW_ENV + { + TAO_Metrics_Local_Cache_Test logger_driver; + + ACE_DEBUG ((LM_DEBUG, + "%s; initializing TAO_Metrics logger driver\n", __FILE__)); + + if (logger_driver.init (argc, argv) < 0) + { + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "TAO_Metrics logger driver init failed."), 1); + } + + ACE_DEBUG ((LM_DEBUG, + "%s; running TAO_Metrics logger driver\n", __FILE__)); + + logger_driver.run (ACE_TRY_ENV); + ACE_TRY_CHECK; + } + + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "TAO_Metrics logger test driver exception in main."); + return 1; + } + ACE_ENDTRY; + + return 0; +} + +#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/Metrics/Metrics_Local_Cache_Test.h b/TAO/orbsvcs/tests/Metrics/Metrics_Local_Cache_Test.h new file mode 100644 index 00000000000..09b6dd7aa6f --- /dev/null +++ b/TAO/orbsvcs/tests/Metrics/Metrics_Local_Cache_Test.h @@ -0,0 +1,174 @@ +// $Id$ + +#ifndef METRICS_LOGGER_TEST_H +#define METRICS_LOGGER_TEST_H + +#include "orbsvcs/Metrics/Metrics_LocalCache.h" +#include "orbsvcs/Metrics/Metrics_Utils.h" +#include "orbsvcs/Metrics/Metrics_UpcallMonitor.h" +#include "orbsvcs/Metrics/Metrics_FrameManager.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_Metrics_Logger; +class TAO_Rate_Group_Info; + +class TAO_Metrics_Local_Cache_Test_PushConsumer : public POA_RtecEventComm::PushConsumer +{ +public: + + TAO_Metrics_Local_Cache_Test_PushConsumer (int state = 0) : state_variable_ (state) {} + + virtual void push (const RtecEventComm::EventSet &, + CORBA_Environment &); + + virtual void disconnect_push_consumer (CORBA_Environment &); + +private: + + int state_variable_; +}; + +class TAO_Metrics_Local_Cache_Test +{ + // = TITLE + // Defines a class that implements a test driver for + // the testing the Metrics Cache and sending data to the + // Metrics Logger. + // +public: + TAO_Metrics_Local_Cache_Test (int local_monitor = 1, // Default is to create a local monitor + int local_logger = 0); // Default is not to create a local logger + // Default Constructor. + + TAO_Metrics_Local_Cache_Test (int argc, + char *argv[], + int local_monitor = 1, + int local_logger = 0); + // Constructor taking command line arguments. + + virtual ~TAO_Metrics_Local_Cache_Test (void); + // Destructor. + + int init (int argc, + char *argv[]); + // Initialize the Scheduling Service with the arguments. + + int run (CORBA_Environment& ACE_TRY_ENV); + // Run the TAO_Metrics_Local_Cache_Test. + +private: + + typedef TAO_Metrics_ReportingUpcallMonitorAdapter<ACE_SYNCH_MUTEX, ACE_New_Allocator> METRICS_UPCALL_ADAPTER_TYPE; + + void generate_orb_args (char *& orb_init_str); + // parses the arguments. + + int parse_args (int argc, char *argv[]); + // parses the arguments. + + static void * run_orb (void *); + // Run the orb event loop (can be spawned as a separate thread). + + // ORB reference. + CORBA::ORB_ptr orb_; + + // Root POA reference. + PortableServer::POA_var root_poa_; + + // Child (persistent) POA reference. + PortableServer::POA_var persistent_poa_; + + // POA manager. + PortableServer::POAManager_var poa_manager_; + + TAO_Metrics_Local_Cache_Test_PushConsumer H40_push_consumer_; + TAO_Metrics_Local_Cache_Test_PushConsumer H20_push_consumer_; + TAO_Metrics_Local_Cache_Test_PushConsumer H10_push_consumer_; + TAO_Metrics_Local_Cache_Test_PushConsumer H05_push_consumer_; + TAO_Metrics_Local_Cache_Test_PushConsumer H01_push_consumer_; + TAO_Metrics_Local_Cache_Test_PushConsumer S40_push_consumer_; + TAO_Metrics_Local_Cache_Test_PushConsumer S20_push_consumer_; + TAO_Metrics_Local_Cache_Test_PushConsumer S10_push_consumer_; + TAO_Metrics_Local_Cache_Test_PushConsumer S05_push_consumer_; + TAO_Metrics_Local_Cache_Test_PushConsumer S01_push_consumer_; + // Push consumers with varying execution time state sequence + // (0, 0.025, 0.05, 0.1, 0.2, 1, 2 seconds) for push call. + + TAO_Metrics_Logger * logger_impl_; + // Logger instance. + + Metrics::QoSLogger_var logger_ref_; + // Logger reference. + + TAO_Metrics_ReportingUpcallMonitor* upcall_monitor_impl_; + // Upcall monitor instance. + + Metrics::ReportingQoSMonitor_var upcall_monitor_ref_; + // Upcall monitor instance. + + TAO_Metrics_ReportingLocalCache<ACE_SYNCH_MUTEX, ACE_New_Allocator> cache_; + // Upcall metrics cache. + + TAO_Metrics_FrameManager<ACE_SYNCH_MUTEX> frame_manager_; + // The time frame manager. + + RtecEventComm::EventSet event_set_; + // A dummy event set for pushing to the adapters (who push it to + // their respective consumers). + + METRICS_UPCALL_ADAPTER_TYPE * H40_push_consumer_adapter_; + METRICS_UPCALL_ADAPTER_TYPE * H20_push_consumer_adapter_; + METRICS_UPCALL_ADAPTER_TYPE * H10_push_consumer_adapter_; + METRICS_UPCALL_ADAPTER_TYPE * H05_push_consumer_adapter_; + METRICS_UPCALL_ADAPTER_TYPE * H01_push_consumer_adapter_; + METRICS_UPCALL_ADAPTER_TYPE * S40_push_consumer_adapter_; + METRICS_UPCALL_ADAPTER_TYPE * S20_push_consumer_adapter_; + METRICS_UPCALL_ADAPTER_TYPE * S10_push_consumer_adapter_; + METRICS_UPCALL_ADAPTER_TYPE * S05_push_consumer_adapter_; + METRICS_UPCALL_ADAPTER_TYPE * S01_push_consumer_adapter_; + // Upcall adapters for the push consumers. This is where all + // the real action happens. + + const char * logger_ior_file_name_; + // Name of the logger IOR output file. Used when the logger is remote. + + const char * monitor_ior_file_name_; + // Name of the monitor IOR output file. Used when the monitor is remote. + + const char * log_file_name_; + // Name of the process id output file. Used when the logger is local. + + int log_output_; + // Whether or not to log output to file. + + int visualize_; + // Whether or not visualization is activated. + + int local_monitor_; + int local_logger_; + + static const unsigned int number_of_hrt_rates_; + static const unsigned int number_of_srt_rates_; + + static const unsigned long the_hrt_Rates_in_microseconds_[]; + + static const int highest_rate_group_priority_; + + // Pointer to our local rate group info + TAO_Rate_Group_Info ** rate_group_info_; + + char* master_host_name_; + char* master_host_ip_; +}; + + +#endif /* METRICS_LOGGER_TEST_H */ + + + + + + diff --git a/TAO/orbsvcs/tests/Metrics/Remote_Metrics_Logger.cpp b/TAO/orbsvcs/tests/Metrics/Remote_Metrics_Logger.cpp new file mode 100644 index 00000000000..d41d3072086 --- /dev/null +++ b/TAO/orbsvcs/tests/Metrics/Remote_Metrics_Logger.cpp @@ -0,0 +1,466 @@ +// $Id$ +#include "ace/OS.h" +#include "ace/Arg_Shifter.h" +#include "ace/ARGV.h" + +#include "tao/corba.h" +#include "tao/TAO_Internal.h" + +#include "Remote_Metrics_Logger.h" + +int enable_debug = 0; +// Used to enable LM_DEBUG messages + +int enable_trace = 0; + // Used to enable LM_TRACE messages + +int logger_host_name_set = 0; +// Trap missing logger hostname + +int logger_host_ip_set = 0; +// Trap missing logger ip + +ACE_RCSID(Remote_Metrics_Logger, Remote_Metrics_Logger, "$Id$") + +void CatchError(void) +{ + cout << "This is a real problem. " << endl; +} + +//////////////////////////////////////////// +// class TAO_Remote_Metrics_Logger_Driver // +//////////////////////////////////////////// + +// Default Constructor. +TAO_Remote_Metrics_Logger_Driver::TAO_Remote_Metrics_Logger_Driver (void) + : logger_impl_ (0), + logger_ior_file_name_ (0), + log_file_name_ (0), + logger_host_name_(0), + logger_host_ip_(0), + log_output_ (1), + generate_tabbed_output_(1), + visualize_ (0) +{ + log_file_name_ = CORBA::string_dup("remote_logger.txt"); + logger_ior_file_name_ = CORBA::string_dup("remote_logger.ior"); +} + +// Destructor. +TAO_Remote_Metrics_Logger_Driver::~TAO_Remote_Metrics_Logger_Driver (void) +{ + delete logger_impl_; + delete log_file_name_; + delete logger_host_name_; + delete logger_ior_file_name_; +} + +// Initialize the logger driver with the command line arguments. +int +TAO_Remote_Metrics_Logger_Driver::init () +{ + ACE_TRY_NEW_ENV + { + TAO_Internal::default_svc_conf_entries + ("static Resource_Factory \"-ORBresources tss -ORBReactorType select_st -ORBPriorityMapping multi -ORBPriorityNativeBase 50 -ORBPriorityCORBABase 50 -ORBPrioritiesContiguous %d -ORBSchedPolicy SCHED_FIFO -ORBInputCDRAllocator null \"", + TAO_DEFAULT_SERVER_STRATEGY_FACTORY_ARGS, + TAO_DEFAULT_CLIENT_STRATEGY_FACTORY_ARGS); + + char *orb_init_string = 0; + this->generate_orb_args (orb_init_string); + + ACE_ARGV * the_orb_args = new ACE_ARGV (orb_init_string); + + int orb_argc = the_orb_args->argc (); + char ** orb_argv = the_orb_args->argv (); + + // Initialize the ORB + this->orb_ = CORBA::ORB_init (orb_argc, orb_argv, 0, ACE_TRY_ENV); + ACE_TRY_CHECK; + + // Delete the orb_init_string since we're finished using it. + delete orb_init_string; + + // Connect to the RootPOA. + CORBA::Object_var poa_object = + this->orb_->resolve_initial_references(TAO_OBJID_ROOTPOA, + ACE_TRY_ENV); + ACE_TRY_CHECK; + + if (CORBA::is_nil (poa_object.in ())) + ACE_ERROR_RETURN ((LM_ERROR, + " (%P|%t) Unable to initialize the Root POA.\n"), + 1); + + this->root_poa_ = PortableServer::POA::_narrow (poa_object.in (), ACE_TRY_ENV); + ACE_TRY_CHECK; + + if (CORBA::is_nil (poa_manager_.in ())) + { + this->poa_manager_ = + this->root_poa_->the_POAManager (ACE_TRY_ENV); + ACE_TRY_CHECK; + + // Activate the POA manager. + this->poa_manager_->activate (ACE_TRY_ENV); + ACE_TRY_CHECK; + } + + // Create a child poa with USER_ID and PERSISTENT policies. + CORBA::PolicyList policies; + policies.length (2); + + policies[0] = this->root_poa_->create_id_assignment_policy (PortableServer::USER_ID, + ACE_TRY_ENV); + ACE_TRY_CHECK; + + policies[1] = this->root_poa_->create_lifespan_policy(PortableServer::PERSISTENT, + ACE_TRY_ENV); + ACE_TRY_CHECK; + + + this->persistent_poa_ = this->root_poa_->create_POA("TheChildPOA", + this->poa_manager_.in (), + policies, + ACE_TRY_ENV); + ACE_TRY_CHECK; + + // Cleanup the POA Policies + policies[0]->destroy (ACE_TRY_ENV); + ACE_TRY_CHECK; + + policies[1]->destroy (ACE_TRY_ENV); + ACE_TRY_CHECK; + + ACE_DEBUG ((LM_DEBUG, + "Constructing Logger with visualize_=%d, log_output_=%d\n", + visualize_, log_output_)); + + // Now construct the logger implementation, using the settings. + ACE_NEW_THROW_EX (this->logger_impl_, + TAO_Metrics_Logger (this->visualize_, + this->log_output_, + this->generate_tabbed_output_, + this->log_file_name_), + CORBA::NO_MEMORY ()); + ACE_TRY_CHECK; + + // Register and activate the logger servant object in the + // persistent child POA, under a specific name. + PortableServer::ObjectId_var rml_id = + PortableServer::string_to_ObjectId ("remote_metrics_logger"); + + this->persistent_poa_-> + activate_object_with_id (rml_id.in (), + this->logger_impl_, + ACE_TRY_ENV); + ACE_TRY_CHECK; + + // Get and store a reference to the logger servant. + CORBA::Object_var logger_ref = + this->persistent_poa_->id_to_reference(rml_id.in (), ACE_TRY_ENV); + ACE_TRY_CHECK; + + // Output and log the logger IOR. + ACE_DEBUG ((LM_DEBUG, + "\n\nThe TAO_Metrics logger IOR is:\n\n%s\n\n", + this->orb_->object_to_string (logger_ref))); + + if (this->logger_ior_file_name_ != 0) + { + FILE *liorf = fopen (this->logger_ior_file_name_, "w"); + if (liorf != 0) + { + ACE_OS::fprintf (liorf, + "%s\n", + this->orb_->object_to_string (logger_ref)); + ACE_OS::fclose (liorf); + ACE_DEBUG ((LM_DEBUG, + "\n\nThe TAO_Metrics logger IOR was stored in: %s\n\n", + this->logger_ior_file_name_)); + } + } + } + + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Unhandled Exception Generated by TAO_Remote_Metrics_Logger_Driver::init"); + ACE_ERROR_RETURN((LM_ERROR, "(%t) File: %N, Line: %l, Fatal Exception Enountered During TAO_Remote_Metrics_Logger_Driver::init\n"), -1); + } + ACE_ENDTRY; + + return 0; +} + +// Runs the TAO_Remote_Metrics_Logger_Driver. +int +TAO_Remote_Metrics_Logger_Driver::run (CORBA_Environment& ACE_TRY_ENV) +{ + int result = 0; + ACE_Thread_Manager orb_thread_manager; + + ACE_TRY + { + ///////////////////////////// + // Initialization sequence // + ///////////////////////////// + + // Spawn a thread that runs the orb event loop + orb_thread_manager.spawn (TAO_Remote_Metrics_Logger_Driver::run_orb, this); + + //////////////////////// + // Operation sequence // + //////////////////////// + + // Run the logger's service task: pulls messages of the log + // queue, processes them by logging to a file and/or generating + // visualization events. + + this->logger_impl_->svc (); + + ////////////////////////// + // Termination sequence // + ////////////////////////// + + ACE_DEBUG ((LM_DEBUG, "about to shut down orb\n")); + + // Shut down orb, then wait for the ORB thread to exit. + this->orb_->shutdown (); + ACE_TRY_CHECK; + } + + ACE_CATCHANY + { + ACE_DEBUG ((LM_DEBUG, "caught an exception\n")); + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "TAO_Remote_Metrics_Logger_Driver::run"); + result = -1; + } + + ACE_ENDTRY; + ACE_DEBUG ((LM_DEBUG, "about to wait on orb thread\n")); + + orb_thread_manager.wait (); + ACE_DEBUG ((LM_DEBUG, "all done with run\n")); + return result; + +} + +// Parses the command line arguments. +int +TAO_Remote_Metrics_Logger_Driver::parse_args (int argc, char *argv[]) +{ + ACE_Arg_Shifter arg_shifter (argc, argv); + + // Ignore the first argument. Program Name + arg_shifter.ignore_arg (); + + while (arg_shifter.is_anything_left ()) + { + char *current_arg = 0; + + if ( current_arg = arg_shifter.get_the_parameter("-log_name") ) + { + // Activate logging, using passed log file name. + log_output_ = 1; + delete log_file_name_; + this->log_file_name_ = CORBA::string_dup(current_arg); + arg_shifter.consume_arg(); + } + else if ( current_arg = arg_shifter.get_the_parameter("-logger_ior") ) + { + delete logger_ior_file_name_; + this->logger_ior_file_name_ = CORBA::string_dup(current_arg);; + arg_shifter.consume_arg(); + } + else if ( current_arg = arg_shifter.get_the_parameter("-logger_host") ) + { + logger_host_name_set = 1; + + delete logger_host_name_; + this->logger_host_name_ = CORBA::string_dup(current_arg);; + arg_shifter.consume_arg(); + } + else if ( current_arg = arg_shifter.get_the_parameter("-logger_ip") ) + { + logger_host_ip_set = 1; + + delete logger_host_ip_; + this->logger_host_ip_ = CORBA::string_dup(current_arg);; + arg_shifter.consume_arg(); + } + else if ( arg_shifter.cur_arg_strncasecmp("-no_log_export") >= 0 ) + { + // Activate logging, using passed log file name. + this->generate_tabbed_output_ = 0; + arg_shifter.consume_arg(); + } + else if ( arg_shifter.cur_arg_strncasecmp("-debug") >= 0 ) + { + enable_debug = 1; + arg_shifter.consume_arg(); + } + else if ( arg_shifter.cur_arg_strncasecmp("-trace") >= 0 ) + { + enable_trace = 1; + arg_shifter.consume_arg(); + } + else if ( arg_shifter.cur_arg_strncasecmp("-log") >= 0 ) + { + log_output_ = 1; + arg_shifter.consume_arg(); + } + else if ( arg_shifter.cur_arg_strncasecmp("-visualize") >= 0 ) + { + visualize_ = 1; + arg_shifter.consume_arg(); + } + else if ( arg_shifter.cur_arg_strncasecmp("?") >= 0 ) + { + ACE_DEBUG ((LM_DEBUG, + "Usage: %s " + "[-log_name log_file_name] " + "[-ior_name logger_ior_file_name] " + "[-log] (log to stdout)" + "[-debug] (Enable LM_DEBUG log priority)" + "[-trace] (Enable LM_TRACE log priority)" + "[-visualize] (Turn on Visualization)" + "\n", + argv[0])); + return 0; + } + else + { + ACE_DEBUG((LM_DEBUG, "Unrecognized Command Line Arg: %s. Assuming user-defined parameter\n", arg_shifter.get_current())); + arg_shifter.ignore_arg (); + } + } + + if (!logger_host_name_set && !logger_host_ip_set) + return -1; + else + return 1; +} + +// Run the ORB event loop. +void * +TAO_Remote_Metrics_Logger_Driver::run_orb (void *that) +{ + ACE_TRY_NEW_ENV + { + ACE_static_cast (TAO_Remote_Metrics_Logger_Driver *, that)-> + orb_->run (ACE_TRY_ENV); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "TAO_Remote_Metrics_Logger_Driver::run_orb"); + } + ACE_ENDTRY; + + return 0; +} + +void +TAO_Remote_Metrics_Logger_Driver::generate_orb_args (char *& orb_init_str) +{ + u_int init_str_len = 0; + + if (logger_host_name_set) + { + init_str_len = 21 + // " -ORBendpoint iiop://" + ACE_OS::strlen(this->logger_host_name_) + + 6 + // ":10030" + 1 /* Null Terminator */; + } + else + { + init_str_len = 21 + // " -ORBendpoint iiop://" + ACE_OS::strlen(this->logger_host_ip_) + + 6 + // ":10030" + 1 /* Null Terminator */; + } + + + orb_init_str = CORBA::string_alloc (init_str_len); + *orb_init_str =0; + + if (logger_host_name_set) + { + ACE_OS::sprintf(orb_init_str, + " -ORBendpoint iiop://%s:10030", + this->logger_host_name_); + } + else + { + ACE_OS::sprintf(orb_init_str, + " -ORBendpoint iiop://%s:10030", + this->logger_host_ip_); + } + + ACE_DEBUG((LM_DEBUG, "ORB _init string is %s\n",orb_init_str )); +} + +int +main (int argc, char *argv[]) +{ + + ACE_TRY_NEW_ENV + { + TAO_Remote_Metrics_Logger_Driver logger_driver; + + int result = logger_driver.parse_args (argc, argv); + if (result < 0) + { + ACE_ERROR ((LM_ERROR, + "You must specify a logger hostname- Usage: %s " + "Remote_Logger -logger_host <log_host_name>\n", + argv[0])); + return 0; + } + + if (enable_debug) + { + ACE_Log_Msg::enable_debug_messages(); + } + else + { + ACE_Log_Msg::disable_debug_messages(); + } + + if (enable_trace) + { + ACE_Log_Msg::enable_debug_messages(LM_TRACE); + } + else + { + ACE_Log_Msg::disable_debug_messages(LM_TRACE); + } + + ACE_DEBUG ((LM_DEBUG, + "%s; initializing TAO_Metrics logger driver\n", __FILE__)); + + if (logger_driver.init () < 0) + { + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "TAO_Metrics logger driver init failed."), 1); + } + + ACE_DEBUG ((LM_DEBUG, + "%s; running TAO_Metrics logger driver\n", __FILE__)); + + logger_driver.run (ACE_TRY_ENV); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "TAO_Metrics logger test driver exception in main."); + return 1; + } + ACE_ENDTRY; + + return 0; +} + +#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/Metrics/Remote_Metrics_Logger.h b/TAO/orbsvcs/tests/Metrics/Remote_Metrics_Logger.h new file mode 100644 index 00000000000..5860a06e20b --- /dev/null +++ b/TAO/orbsvcs/tests/Metrics/Remote_Metrics_Logger.h @@ -0,0 +1,91 @@ +// $Id$ +#ifndef REMOTE_METRICS_LOGGER_H +#define REMOTE_METRICS_LOGGER_H + +#include "orbsvcs/Metrics/Metrics_Logger.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +class TAO_Remote_Metrics_Logger_Driver +{ + // = TITLE + // Defines a class that implements a remote driver for + // the TAO_Metrics_Logger class. + // + // = DESCRIPTION + // This class makes use of the <TAO_Metrics_Logger> class to + // implement a Metrics::QoSLogger servant. It can optionally log + // data to a file or to stdout, and/or generate events for a DOVE + // visualizer. + +public: + TAO_Remote_Metrics_Logger_Driver (void); + // Default Constructor. + + int init (); + // Initialize the Scheduling Service with the arguments. + + int run (CORBA_Environment& ACE_TRY_ENV); + // Run the TAO_Remote_Metrics_Logger_Driver. + + ~TAO_Remote_Metrics_Logger_Driver (void); + // Destructor. + + int parse_args (int argc, char *argv[]); + // parses the arguments. + +private: + static void * run_orb (void *); + // Run the orb event loop (can be spawned as a separate thread). + + void generate_orb_args (char *& orb_init_str); + // Generate the ORB args using the parsed logger host name + + // ORB reference. + CORBA::ORB_ptr orb_; + + // Root POA reference. + PortableServer::POA_var root_poa_; + + // Child (persistent) POA reference. + PortableServer::POA_var persistent_poa_; + + // POA manager. + PortableServer::POAManager_var poa_manager_; + + TAO_Metrics_Logger * logger_impl_; + // Logger instance. + + char * logger_ior_file_name_; + // Name of the logger IOR output file. + + char * log_file_name_; + // Name of the process id output file. + + char * logger_host_name_; + + char * logger_host_ip_; + + int log_output_; + // Whether or not to log output. + + int generate_tabbed_output_; + // Whether or not to generate a tab delimited output file for excel import. + + int visualize_; + // Whether or not visualization is activated. +}; + +#endif /* REMOTE_METRICS_LOGGER_H */ + + + + + + + + + + |