summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstorri <storri@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-04-26 05:39:44 +0000
committerstorri <storri@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-04-26 05:39:44 +0000
commit4f25546f67d7b78c865f6e4b20a130c80a2931a5 (patch)
treeed14f22a6b96ee181332f1c75423037876fac0d7
parent0e6abc980f8ec03b164436164799690fee93f089 (diff)
downloadATCD-4f25546f67d7b78c865f6e4b20a130c80a2931a5.tar.gz
Adding new tests for TAO_Metrics
-rw-r--r--TAO/orbsvcs/tests/Metrics/Makefile632
-rw-r--r--TAO/orbsvcs/tests/Metrics/Metrics_Local_Cache_Test.cpp956
-rw-r--r--TAO/orbsvcs/tests/Metrics/Metrics_Local_Cache_Test.cpp~947
-rw-r--r--TAO/orbsvcs/tests/Metrics/Metrics_Local_Cache_Test.h174
-rw-r--r--TAO/orbsvcs/tests/Metrics/Metrics_Test.dsw170
-rw-r--r--TAO/orbsvcs/tests/Metrics/Metrics_Test.ncbbin0 -> 5293022 bytes
-rw-r--r--TAO/orbsvcs/tests/Metrics/Metrics_Test.optbin0 -> 120832 bytes
-rw-r--r--TAO/orbsvcs/tests/Metrics/Metrics_Test.opt.keepbin0 -> 126976 bytes
-rw-r--r--TAO/orbsvcs/tests/Metrics/Remote_Metrics_Logger.cpp466
-rw-r--r--TAO/orbsvcs/tests/Metrics/Remote_Metrics_Logger.h91
-rw-r--r--TAO/orbsvcs/tests/Metrics/log304
-rw-r--r--TAO/orbsvcs/tests/Metrics/logger_test_additions.txt301
-rw-r--r--TAO/orbsvcs/tests/Metrics/mets.log21
-rw-r--r--TAO/orbsvcs/tests/Metrics/remote_logger.ior1
-rw-r--r--TAO/orbsvcs/tests/Metrics/remote_logger.txt5
-rw-r--r--TAO/orbsvcs/tests/Metrics/remote_logger_export.excel5
16 files changed, 4073 insertions, 0 deletions
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.cpp~ b/TAO/orbsvcs/tests/Metrics/Metrics_Local_Cache_Test.cpp~
new file mode 100644
index 00000000000..06b6e18ddb7
--- /dev/null
+++ b/TAO/orbsvcs/tests/Metrics/Metrics_Local_Cache_Test.cpp~
@@ -0,0 +1,947 @@
+// $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_)));
+ }
+ 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);
+ 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_));
+ 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_)));
+
+
+ // 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_),
+ 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_),
+ 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_),
+ 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_),
+ 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_),
+ 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_),
+ 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_),
+ 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_),
+ 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_),
+ 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_),
+ 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::Base_Metrics_Type::QUO,
+ logger_ref_);
+ cache_.register_base_metrics ("Sched",
+ TAO_Metrics_Utils::Base_Metrics_Type::SCHED,
+ logger_ref_);
+ cache_.register_base_metrics ("RTARM",
+ TAO_Metrics_Utils::Base_Metrics_Type::RTARM,
+ logger_ref_);
+
+ // Register all the probes with the logger.
+ cache_.register_probes (logger_ref_);
+
+ }
+
+ 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.
+ ACE_OS::gettimeofday (start_tv);
+ 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_);
+ }
+
+ ACE_OS::gettimeofday (end_tv);
+ end_tv -= start_tv;
+ ORBSVCS_Time::Time_Value_to_TimeT (interval, end_tv);
+
+ upcall_monitor_ref_->report_aggregate_QoS (logger_ref_, interval);
+ ACE_TRY_CHECK;
+
+ Metrics::QoSParameter_t_ptr qos_ptr;
+ Metrics::QoSParameter_Set_ptr qos_set_ptr;
+ 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_ptr);
+ ACE_TRY_CHECK;
+ ACE_DEBUG ((LM_DEBUG,
+ "[handle = %u] [entry_point = %s] [made = %u] "
+ "[missed = %u] [cancelled = %u] [is_hrt = %d]\n",
+ qos_ptr->handle, qos_ptr->entry_point,
+ qos_ptr->deadlines_made, qos_ptr->deadlines_missed,
+ qos_ptr->operations_cancelled, qos_ptr->is_hrt));
+ }
+
+ ACE_DEBUG ((LM_DEBUG, "Querying handle set QoS\n"));
+
+ upcall_monitor_ref_->get_aggregate_QoS_set (handle_set, qos_set_ptr);
+ ACE_TRY_CHECK;
+ for (j = 0; j < qos_set_ptr->length (); ++j)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ "[handle = %u] [entry_point = %s] [made = %u] "
+ "[missed = %u] [cancelled = %u] [is_hrt = %d]\n",
+ (*qos_set_ptr)[j].handle, (*qos_set_ptr)[j].entry_point,
+ (*qos_set_ptr)[j].deadlines_made, (*qos_set_ptr)[j].deadlines_missed,
+ (*qos_set_ptr)[j].operations_cancelled, (*qos_set_ptr)[j].is_hrt));
+ }
+
+ cache_.flush_ACE_Metrics_Cache ();
+ cache_.flush_TAO_Metrics_LocalCache ();
+ cache_.output_statistics (logger_ref_);
+ 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_TRY_ENV)
+{
+ 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_TRY_ENV)
+{
+ 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/Metrics_Test.dsw b/TAO/orbsvcs/tests/Metrics/Metrics_Test.dsw
new file mode 100644
index 00000000000..434a8074609
--- /dev/null
+++ b/TAO/orbsvcs/tests/Metrics/Metrics_Test.dsw
@@ -0,0 +1,170 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "ACE DLL"=..\..\..\..\ace\ace_dll.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "ACE LIB (No DTE)"=..\..\..\..\ace\ace_lib_no_DTE.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "Metrics_Local_Cache_Test"=.\Metrics_Local_Cache.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name ORB Services Static
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "Metrics_Test"=.\Metrics_Test.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name Remote_Metrics_Logger
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name Metrics_Local_Cache_Test
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "ORB Services Static"=..\..\orbsvcs\orbsvcs_static.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name TAO LIB
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name TAO_IDL Compiler
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "Remote_Metrics_Logger"=.\Remote_Metrics_Logger.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name ORB Services Static
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "TAO LIB"=..\..\..\tao\TAO_Static.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name ACE LIB (No DTE)
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "TAO_IDL Compiler"=..\..\..\TAO_IDL\tao_idl.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name gperf
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name ACE DLL
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "gperf"=..\..\..\..\apps\gperf\src\gperf.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name gperf_lib
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name ACE DLL
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "gperf_lib"=..\..\..\..\apps\gperf\src\gperf_lib.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/TAO/orbsvcs/tests/Metrics/Metrics_Test.ncb b/TAO/orbsvcs/tests/Metrics/Metrics_Test.ncb
new file mode 100644
index 00000000000..1f2d904b5e4
--- /dev/null
+++ b/TAO/orbsvcs/tests/Metrics/Metrics_Test.ncb
Binary files differ
diff --git a/TAO/orbsvcs/tests/Metrics/Metrics_Test.opt b/TAO/orbsvcs/tests/Metrics/Metrics_Test.opt
new file mode 100644
index 00000000000..e557b2c4d2c
--- /dev/null
+++ b/TAO/orbsvcs/tests/Metrics/Metrics_Test.opt
Binary files differ
diff --git a/TAO/orbsvcs/tests/Metrics/Metrics_Test.opt.keep b/TAO/orbsvcs/tests/Metrics/Metrics_Test.opt.keep
new file mode 100644
index 00000000000..867c1887f10
--- /dev/null
+++ b/TAO/orbsvcs/tests/Metrics/Metrics_Test.opt.keep
Binary files differ
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 */
+
+
+
+
+
+
+
+
+
+
diff --git a/TAO/orbsvcs/tests/Metrics/log b/TAO/orbsvcs/tests/Metrics/log
new file mode 100644
index 00000000000..3f2c779825d
--- /dev/null
+++ b/TAO/orbsvcs/tests/Metrics/log
@@ -0,0 +1,304 @@
+g++ -W -Wall -Wpointer-arith -pipe -g -fno-exceptions -fcheck-new -DACE_USE_RCSID=0 -D_REENTRANT -DACE_HAS_AIO_CALLS -I/u/storri/ACE_CVS -I/u/storri/ACE_CVS/TAO -I/u/storri/ACE_CVS/TAO/orbsvcs -c -o .obj/Metrics_Local_Cache_Test.o Metrics_Local_Cache_Test.cpp
+Metrics_Local_Cache_Test.cpp:12:37: orbsvcs/Rate_Group_Info.h: No such file or directory
+Metrics_Local_Cache_Test.h: In constructor
+ `TAO_Metrics_Local_Cache_Test::TAO_Metrics_Local_Cache_Test(int, int)':
+Metrics_Local_Cache_Test.h:131: warning: member initializers for `
+ TAO_Metrics_ReportingUpcallMonitorAdapter<ACE_Thread_Mutex,
+ ACE_New_Allocator>*TAO_Metrics_Local_Cache_Test::S01_push_consumer_adapter_'
+Metrics_Local_Cache_Test.h:100: warning: and `
+ TAO_Metrics_Logger*TAO_Metrics_Local_Cache_Test::logger_impl_'
+Metrics_Local_Cache_Test.cpp:103: warning: will be re-ordered to match
+ declaration order
+Metrics_Local_Cache_Test.h: In constructor
+ `TAO_Metrics_Local_Cache_Test::TAO_Metrics_Local_Cache_Test(int, char**,
+ int, int)':
+Metrics_Local_Cache_Test.h:131: warning: member initializers for `
+ TAO_Metrics_ReportingUpcallMonitorAdapter<ACE_Thread_Mutex,
+ ACE_New_Allocator>*TAO_Metrics_Local_Cache_Test::S01_push_consumer_adapter_'
+Metrics_Local_Cache_Test.h:100: warning: and `
+ TAO_Metrics_Logger*TAO_Metrics_Local_Cache_Test::logger_impl_'
+Metrics_Local_Cache_Test.cpp:131: warning: will be re-ordered to match
+ declaration order
+Metrics_Local_Cache_Test.cpp: In member function `void
+ TAO_Metrics_Local_Cache_Test::generate_orb_args(char*&)':
+Metrics_Local_Cache_Test.cpp:146: `RTCORBA' undeclared (first use this
+ function)
+Metrics_Local_Cache_Test.cpp:146: (Each undeclared identifier is reported only
+ once for each function it appears in.)
+Metrics_Local_Cache_Test.cpp:146: parse error before `::' token
+Metrics_Local_Cache_Test.cpp:154: no method `TAO_Rate_Group_Info::
+ set_num_rate_groups'
+Metrics_Local_Cache_Test.cpp:157: no method `TAO_Rate_Group_Info::
+ set_corba_base_priority'
+Metrics_Local_Cache_Test.cpp:160: no method `TAO_Rate_Group_Info::
+ set_priority_spacing'
+Metrics_Local_Cache_Test.cpp:166: no method `TAO_Rate_Group_Info::
+ set_priorities_contiguous'
+Metrics_Local_Cache_Test.cpp:172: invalid use of undefined type `struct
+ TAO_Rate_Group_Info'
+Metrics_Local_Cache_Test.h:16: forward declaration of `struct
+ TAO_Rate_Group_Info'
+Metrics_Local_Cache_Test.cpp:182: invalid use of undefined type `struct
+ TAO_Rate_Group_Info'
+Metrics_Local_Cache_Test.h:16: forward declaration of `struct
+ TAO_Rate_Group_Info'
+Metrics_Local_Cache_Test.cpp:197: invalid use of undefined type `struct
+ TAO_Rate_Group_Info'
+Metrics_Local_Cache_Test.h:16: forward declaration of `struct
+ TAO_Rate_Group_Info'
+Metrics_Local_Cache_Test.cpp:205: invalid use of undefined type `struct
+ TAO_Rate_Group_Info'
+Metrics_Local_Cache_Test.h:16: forward declaration of `struct
+ TAO_Rate_Group_Info'
+Metrics_Local_Cache_Test.cpp:217: invalid use of undefined type `struct
+ TAO_Rate_Group_Info'
+Metrics_Local_Cache_Test.h:16: forward declaration of `struct
+ TAO_Rate_Group_Info'
+Metrics_Local_Cache_Test.cpp:220: `TAO_Multi_Priority_Mapping' undeclared
+ (first use this function)
+Metrics_Local_Cache_Test.cpp:220: parse error before `(' token
+Metrics_Local_Cache_Test.cpp:268: `priorityMapping' undeclared (first use this
+ function)
+Metrics_Local_Cache_Test.cpp:268: invalid use of undefined type `struct
+ TAO_Rate_Group_Info'
+Metrics_Local_Cache_Test.h:16: forward declaration of `struct
+ TAO_Rate_Group_Info'
+Metrics_Local_Cache_Test.cpp:268: `the_corba_priority' undeclared (first use
+ this function)
+Metrics_Local_Cache_Test.cpp: In member function `int
+ TAO_Metrics_Local_Cache_Test::parse_args(int, char**)':
+Metrics_Local_Cache_Test.cpp:306: invalid conversion from `const ACE_TCHAR*' to
+ `char*'
+Metrics_Local_Cache_Test.cpp:306: warning: suggest parentheses around
+ assignment used as truth value
+Metrics_Local_Cache_Test.cpp:311: invalid conversion from `const ACE_TCHAR*' to
+ `char*'
+Metrics_Local_Cache_Test.cpp:311: warning: suggest parentheses around
+ assignment used as truth value
+Metrics_Local_Cache_Test.cpp:316: invalid conversion from `const ACE_TCHAR*' to
+ `char*'
+Metrics_Local_Cache_Test.cpp:316: warning: suggest parentheses around
+ assignment used as truth value
+Metrics_Local_Cache_Test.cpp: In member function `int
+ TAO_Metrics_Local_Cache_Test::init(int, char**)':
+Metrics_Local_Cache_Test.cpp:468: warning: choosing `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger*&()' over `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger* const&() const'
+Metrics_Local_Cache_Test.cpp:468: warning: for conversion from `
+ Metrics::QoSLogger_var' to `CORBA_Object*'
+Metrics_Local_Cache_Test.cpp:468: warning: because conversion sequence for
+ the argument is better
+Metrics_Local_Cache_Test.cpp:490: `TAO' undeclared (first use this function)
+Metrics_Local_Cache_Test.cpp:490: parse error before `::' token
+Metrics_Local_Cache_Test.cpp:491: `ps' undeclared (first use this function)
+Metrics_Local_Cache_Test.cpp:491: parse error before `::' token
+Metrics_Local_Cache_Test.cpp:497: parse error before `::' token
+Metrics_Local_Cache_Test.cpp:529: warning: choosing `
+ Metrics::ReportingQoSMonitor_var::operator Metrics::ReportingQoSMonitor*&()'
+ over `Metrics::ReportingQoSMonitor_var::operator
+ Metrics::ReportingQoSMonitor* const&() const'
+Metrics_Local_Cache_Test.cpp:529: warning: for conversion from `
+ Metrics::ReportingQoSMonitor_var' to `CORBA_Object*'
+Metrics_Local_Cache_Test.cpp:529: warning: because conversion sequence for
+ the argument is better
+Metrics_Local_Cache_Test.cpp:542: warning: choosing `
+ Metrics::ReportingQoSMonitor_var::operator Metrics::ReportingQoSMonitor*&()'
+ over `Metrics::ReportingQoSMonitor_var::operator
+ Metrics::ReportingQoSMonitor* const&() const'
+Metrics_Local_Cache_Test.cpp:542: warning: for conversion from `
+ Metrics::ReportingQoSMonitor_var' to `CORBA_Object*'
+Metrics_Local_Cache_Test.cpp:542: warning: because conversion sequence for
+ the argument is better
+Metrics_Local_Cache_Test.cpp:552: warning: choosing `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger*&()' over `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger* const&() const'
+Metrics_Local_Cache_Test.cpp:552: warning: for conversion from `
+ Metrics::QoSLogger_var' to `Metrics::QoSLogger*'
+Metrics_Local_Cache_Test.cpp:552: warning: because conversion sequence for
+ the argument is better
+Metrics_Local_Cache_Test.cpp:560: warning: choosing `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger*&()' over `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger* const&() const'
+Metrics_Local_Cache_Test.cpp:560: warning: for conversion from `
+ Metrics::QoSLogger_var' to `Metrics::QoSLogger*'
+Metrics_Local_Cache_Test.cpp:560: warning: because conversion sequence for
+ the argument is better
+Metrics_Local_Cache_Test.cpp:568: warning: choosing `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger*&()' over `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger* const&() const'
+Metrics_Local_Cache_Test.cpp:568: warning: for conversion from `
+ Metrics::QoSLogger_var' to `Metrics::QoSLogger*'
+Metrics_Local_Cache_Test.cpp:568: warning: because conversion sequence for
+ the argument is better
+Metrics_Local_Cache_Test.cpp:576: warning: choosing `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger*&()' over `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger* const&() const'
+Metrics_Local_Cache_Test.cpp:576: warning: for conversion from `
+ Metrics::QoSLogger_var' to `Metrics::QoSLogger*'
+Metrics_Local_Cache_Test.cpp:576: warning: because conversion sequence for
+ the argument is better
+Metrics_Local_Cache_Test.cpp:584: warning: choosing `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger*&()' over `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger* const&() const'
+Metrics_Local_Cache_Test.cpp:584: warning: for conversion from `
+ Metrics::QoSLogger_var' to `Metrics::QoSLogger*'
+Metrics_Local_Cache_Test.cpp:584: warning: because conversion sequence for
+ the argument is better
+Metrics_Local_Cache_Test.cpp:592: warning: choosing `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger*&()' over `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger* const&() const'
+Metrics_Local_Cache_Test.cpp:592: warning: for conversion from `
+ Metrics::QoSLogger_var' to `Metrics::QoSLogger*'
+Metrics_Local_Cache_Test.cpp:592: warning: because conversion sequence for
+ the argument is better
+Metrics_Local_Cache_Test.cpp:600: warning: choosing `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger*&()' over `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger* const&() const'
+Metrics_Local_Cache_Test.cpp:600: warning: for conversion from `
+ Metrics::QoSLogger_var' to `Metrics::QoSLogger*'
+Metrics_Local_Cache_Test.cpp:600: warning: because conversion sequence for
+ the argument is better
+Metrics_Local_Cache_Test.cpp:608: warning: choosing `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger*&()' over `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger* const&() const'
+Metrics_Local_Cache_Test.cpp:608: warning: for conversion from `
+ Metrics::QoSLogger_var' to `Metrics::QoSLogger*'
+Metrics_Local_Cache_Test.cpp:608: warning: because conversion sequence for
+ the argument is better
+Metrics_Local_Cache_Test.cpp:616: warning: choosing `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger*&()' over `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger* const&() const'
+Metrics_Local_Cache_Test.cpp:616: warning: for conversion from `
+ Metrics::QoSLogger_var' to `Metrics::QoSLogger*'
+Metrics_Local_Cache_Test.cpp:616: warning: because conversion sequence for
+ the argument is better
+Metrics_Local_Cache_Test.cpp:624: warning: choosing `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger*&()' over `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger* const&() const'
+Metrics_Local_Cache_Test.cpp:624: warning: for conversion from `
+ Metrics::QoSLogger_var' to `Metrics::QoSLogger*'
+Metrics_Local_Cache_Test.cpp:624: warning: because conversion sequence for
+ the argument is better
+Metrics_Local_Cache_Test.cpp:636: `TAO_Metrics_Utils::Base_Metrics_Type' is not
+ an aggregate type
+Metrics_Local_Cache_Test.cpp:639: `TAO_Metrics_Utils::Base_Metrics_Type' is not
+ an aggregate type
+Metrics_Local_Cache_Test.cpp:642: `TAO_Metrics_Utils::Base_Metrics_Type' is not
+ an aggregate type
+Metrics_Local_Cache_Test.cpp:646: warning: choosing `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger*&()' over `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger* const&() const'
+Metrics_Local_Cache_Test.cpp:646: warning: for conversion from `
+ Metrics::QoSLogger_var' to `Metrics::QoSLogger*'
+Metrics_Local_Cache_Test.cpp:646: warning: because conversion sequence for
+ the argument is better
+Metrics_Local_Cache_Test.cpp: In member function `int
+ TAO_Metrics_Local_Cache_Test::run(CORBA_Environment&)':
+Metrics_Local_Cache_Test.cpp:695: no matching function for call to `ACE_OS::
+ gettimeofday(ACE_Time_Value&)'
+/u/storri/ACE_CVS/ace/OS.i:617: candidates are: static ACE_Time_Value
+ ACE_OS::gettimeofday()
+Metrics_Local_Cache_Test.cpp:728: no matching function for call to `ACE_OS::
+ gettimeofday(ACE_Time_Value&)'
+/u/storri/ACE_CVS/ace/OS.i:617: candidates are: static ACE_Time_Value
+ ACE_OS::gettimeofday()
+Metrics_Local_Cache_Test.cpp:732: warning: choosing `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger*&()' over `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger* const&() const'
+Metrics_Local_Cache_Test.cpp:732: warning: for conversion from `
+ Metrics::QoSLogger_var' to `Metrics::QoSLogger*'
+Metrics_Local_Cache_Test.cpp:732: warning: because conversion sequence for
+ the argument is better
+Metrics_Local_Cache_Test.cpp:735: `QoSParameter_t_ptr' undeclared in namespace
+ `Metrics'
+Metrics_Local_Cache_Test.cpp:735: parse error before `;' token
+Metrics_Local_Cache_Test.cpp:736: `QoSParameter_Set_ptr' undeclared in
+ namespace `Metrics'
+Metrics_Local_Cache_Test.cpp:736: parse error before `;' token
+Metrics_Local_Cache_Test.cpp:745: `qos_ptr' undeclared (first use this
+ function)
+Metrics_Local_Cache_Test.cpp:757: `qos_set_ptr' undeclared (first use this
+ function)
+Metrics_Local_Cache_Test.cpp:771: warning: choosing `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger*&()' over `
+ Metrics::QoSLogger_var::operator Metrics::QoSLogger* const&() const'
+Metrics_Local_Cache_Test.cpp:771: warning: for conversion from `
+ Metrics::QoSLogger_var' to `Metrics::QoSLogger*'
+Metrics_Local_Cache_Test.cpp:771: warning: because conversion sequence for
+ the argument is better
+Metrics_Local_Cache_Test.cpp: In member function `virtual void
+ TAO_Metrics_Local_Cache_Test_PushConsumer::push(const
+ RtecEventComm::EventSet&, CORBA_Environment&)':
+Metrics_Local_Cache_Test.cpp:872: warning: unused parameter `
+ CORBA_Environment&_ACE_CORBA_Environment_variable'
+Metrics_Local_Cache_Test.cpp: In member function `virtual void
+ TAO_Metrics_Local_Cache_Test_PushConsumer::disconnect_push_consumer(CORBA_Environment&)':
+Metrics_Local_Cache_Test.cpp:907: warning: unused parameter `
+ CORBA_Environment&_ACE_CORBA_Environment_variable'
+/u/storri/ACE_CVS/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.i: In member
+ function `void TAO_Metrics_ReportingLocalCache<ACE_LOCK,
+ ALLOCATOR>::output_statistics(Metrics::QoSLogger*) [with ACE_LOCK =
+ ACE_Thread_Mutex, ALLOCATOR = ACE_New_Allocator]':
+Metrics_Local_Cache_Test.cpp:771: instantiated from here
+/u/storri/ACE_CVS/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.i:1289: cannot
+ dynamic_cast `*this->ACE_Metrics_Cache<ACE_Thread_Mutex,
+ ACE_New_Allocator>::enqueue_probes_[j]' (of type `class
+ ACE_Metrics_Timeprobe<ACE_Thread_Mutex, ACE_New_Allocator>*') to type `class
+ TAO_Metrics_LocalTimeprobe<ACE_Thread_Mutex, ACE_New_Allocator>*' (source
+ type is not polymorphic)
+Metrics_Local_Cache_Test.cpp:771: instantiated from here
+/u/storri/ACE_CVS/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.i:1345: `
+ TAO_Metrics_Cache_Data' is not a member of type `
+ TAO_Metrics_LocalCache<ACE_Thread_Mutex,
+ ACE_New_Allocator>::TAO_Metrics_Cache_Data_Base'
+/u/storri/ACE_CVS/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.i:1345: `
+ data' undeclared (first use this function)
+/u/storri/ACE_CVS/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.cpp: In
+ member function `void TAO_Metrics_LocalTimeprobe<ACE_LOCK,
+ ALLOCATOR>::report_intervals(int) [with ACE_LOCK = ACE_Thread_Mutex,
+ ALLOCATOR = ACE_New_Allocator]':
+/u/storri/ACE_CVS/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.i:1296: instantiated from `void TAO_Metrics_ReportingLocalCache<ACE_LOCK, ALLOCATOR>::output_statistics(Metrics::QoSLogger*) [with ACE_LOCK = ACE_Thread_Mutex, ALLOCATOR = ACE_New_Allocator]'
+Metrics_Local_Cache_Test.cpp:771: instantiated from here
+/u/storri/ACE_CVS/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.cpp:105: request
+ for member `sec' in `(this->ACE_Timeprobe_Ex<ACE_LOCK,
+ ALLOCATOR>::timeprobes() [with ACE_LOCK = ACE_Thread_Mutex, ALLOCATOR =
+ ACE_New_Allocator]() + (+(start_evt_ndx * 32)))->ACE_timeprobe_t::time_',
+ which is of non-aggregate type `long unsigned int'
+/u/storri/ACE_CVS/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.i:1296: instantiated from `void TAO_Metrics_ReportingLocalCache<ACE_LOCK, ALLOCATOR>::output_statistics(Metrics::QoSLogger*) [with ACE_LOCK = ACE_Thread_Mutex, ALLOCATOR = ACE_New_Allocator]'
+Metrics_Local_Cache_Test.cpp:771: instantiated from here
+/u/storri/ACE_CVS/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.cpp:105: request
+ for member `usec' in `(this->ACE_Timeprobe_Ex<ACE_LOCK,
+ ALLOCATOR>::timeprobes() [with ACE_LOCK = ACE_Thread_Mutex, ALLOCATOR =
+ ACE_New_Allocator]() + (+(start_evt_ndx * 32)))->ACE_timeprobe_t::time_',
+ which is of non-aggregate type `long unsigned int'
+/u/storri/ACE_CVS/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.i:1296: instantiated from `void TAO_Metrics_ReportingLocalCache<ACE_LOCK, ALLOCATOR>::output_statistics(Metrics::QoSLogger*) [with ACE_LOCK = ACE_Thread_Mutex, ALLOCATOR = ACE_New_Allocator]'
+Metrics_Local_Cache_Test.cpp:771: instantiated from here
+/u/storri/ACE_CVS/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.cpp:111: request
+ for member `sec' in `(this->ACE_Timeprobe_Ex<ACE_LOCK,
+ ALLOCATOR>::timeprobes() [with ACE_LOCK = ACE_Thread_Mutex, ALLOCATOR =
+ ACE_New_Allocator]() + (+(start_evt_ndx * 32)))->ACE_timeprobe_t::time_',
+ which is of non-aggregate type `long unsigned int'
+/u/storri/ACE_CVS/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.i:1296: instantiated from `void TAO_Metrics_ReportingLocalCache<ACE_LOCK, ALLOCATOR>::output_statistics(Metrics::QoSLogger*) [with ACE_LOCK = ACE_Thread_Mutex, ALLOCATOR = ACE_New_Allocator]'
+Metrics_Local_Cache_Test.cpp:771: instantiated from here
+/u/storri/ACE_CVS/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.cpp:111: request
+ for member `usec' in `(this->ACE_Timeprobe_Ex<ACE_LOCK,
+ ALLOCATOR>::timeprobes() [with ACE_LOCK = ACE_Thread_Mutex, ALLOCATOR =
+ ACE_New_Allocator]() + (+(start_evt_ndx * 32)))->ACE_timeprobe_t::time_',
+ which is of non-aggregate type `long unsigned int'
+/u/storri/ACE_CVS/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.i:1296: instantiated from `void TAO_Metrics_ReportingLocalCache<ACE_LOCK, ALLOCATOR>::output_statistics(Metrics::QoSLogger*) [with ACE_LOCK = ACE_Thread_Mutex, ALLOCATOR = ACE_New_Allocator]'
+Metrics_Local_Cache_Test.cpp:771: instantiated from here
+/u/storri/ACE_CVS/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.cpp:165: request
+ for member `sec' in `(this->ACE_Timeprobe_Ex<ACE_LOCK,
+ ALLOCATOR>::timeprobes() [with ACE_LOCK = ACE_Thread_Mutex, ALLOCATOR =
+ ACE_New_Allocator]() + (+(stop_or_suspend_evt_ndx *
+ 32)))->ACE_timeprobe_t::time_', which is of non-aggregate type `long
+ unsigned int'
+/u/storri/ACE_CVS/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.i:1296: instantiated from `void TAO_Metrics_ReportingLocalCache<ACE_LOCK, ALLOCATOR>::output_statistics(Metrics::QoSLogger*) [with ACE_LOCK = ACE_Thread_Mutex, ALLOCATOR = ACE_New_Allocator]'
+Metrics_Local_Cache_Test.cpp:771: instantiated from here
+/u/storri/ACE_CVS/TAO/orbsvcs/orbsvcs/Metrics/Metrics_LocalCache_T.cpp:165: request
+ for member `usec' in `(this->ACE_Timeprobe_Ex<ACE_LOCK,
+ ALLOCATOR>::timeprobes() [with ACE_LOCK = ACE_Thread_Mutex, ALLOCATOR =
+ ACE_New_Allocator]() + (+(stop_or_suspend_evt_ndx *
+ 32)))->ACE_timeprobe_t::time_', which is of non-aggregate type `long
+ unsigned int'
+make: *** [.obj/Metrics_Local_Cache_Test.o] Error 1
diff --git a/TAO/orbsvcs/tests/Metrics/logger_test_additions.txt b/TAO/orbsvcs/tests/Metrics/logger_test_additions.txt
new file mode 100644
index 00000000000..60150601b51
--- /dev/null
+++ b/TAO/orbsvcs/tests/Metrics/logger_test_additions.txt
@@ -0,0 +1,301 @@
+TAO_METRICS_LOGGER_SINGLETON::instance(); // access as C++ pointer to local object
+
+*TAO_METRICS_LOGGER_REF_SINGLETON::instance() = logger_ref; // access as CORBA object via IOR
+
+logger_ref->send_banner ("Logger Ref Singleton Initialized", ACE_TRY_ENV);
+ACE_TRY_CHECK;
+
+TAO_METRICS_CACHE * cache_ptr = TAO_METRICS_CACHE_SINGLETON::instance();
+
+TAO_METRICS_FRAME_MGR_TYPE * frame_mgr_ptr = TAO_METRICS_FRAME_MGR_SINGLETON::instance();
+
+// Handle for METRICS INSTRUMENTATION
+RtecScheduler::handle_t RTARM_triggered_adaptation_metrics_handle_;
+
+// Obtain local handle for WSOA METRICS INSTRUMENTATION
+this->RTARM_triggered_adaptation_metrics_handle_ =
+ WSOA_METRICS_HANDLES_SINGLETON::instance()->
+ RTARM_triggered_adaptation_metrics_handle_;
+
+// METRICS INSTRUMENTATION POINT (RTARM triggered adaptation overhead start)
+START_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ this->RTARM_triggered_adaptation_metrics_handle_);
+
+
+// METRICS INSTRUMENTATION POINT (RTARM triggered adaptation overhead stop)
+STOP_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ this->RTARM_triggered_adaptation_metrics_handle_);
+
+// METRICS INSTRUMENTATION: local copy of metrics reporting handles
+RtecScheduler::handle_t tile_processed_first_metrics_handle_;
+RtecScheduler::handle_t image_processed_metrics_handle_;
+
+this->tile_processed_first_metrics_handle_ =
+ WSOA_METRICS_HANDLES_SINGLETON::instance()->
+ tile_processed_first_metrics_handle_;
+
+this->image_processed_metrics_handle_ =
+ WSOA_METRICS_HANDLES_SINGLETON::instance()->
+ image_processed_metrics_handle_;
+
+
+// METRICS INSTRUMENTATION POINT (stop tile processed interval)
+// uses tilesProcessedSC_ to determine the handle
+// Note: the image and tile metrics are different from the others in that they record latency of progress points
+// rather than latency of processing overhead - i.e., they include time spent on the network and C2 server.
+STOP_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ tile_processed_first_metrics_handle_ + tilesProcessedSC_->longValue());
+
+tilesProcessedSC_->longValue(tilesProcessedSC_->longValue() + 1);
+
+// METRICS INSTRUMENTATION POINT (stop image processed interval)
+if (tilesProcessedSC_->longValue()
+ == WSOA_METRICS_HANDLES_SINGLETON::instance()->tiles_requested_)
+ {
+ STOP_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ image_processed_metrics_handle_);
+ }
+
+
+
+ // Obtain local handles for WSOA METRICS INSTRUMENTATION
+ this->RTARM_region_transition_metrics_handle_ =
+ WSOA_METRICS_HANDLES_SINGLETON::instance()->RTARM_region_transition_metrics_handle_;
+ this->QuO_contract_eval_metrics_handle_ =
+ WSOA_METRICS_HANDLES_SINGLETON::instance()->QuO_contract_eval_metrics_handle_;
+ this->tile_request_delegate_metrics_handle_ =
+ WSOA_METRICS_HANDLES_SINGLETON::instance()->tile_request_delegate_metrics_handle_;
+
+ // METRICS INSTRUMENTATION POINT (tile request delegate overhead suspend)
+ PAUSE_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ this->tile_request_delegate_metrics_handle_);
+
+ // METRICS INSTRUMENTATION POINT (quo contract eval suspend)
+ PAUSE_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ this->QuO_contract_eval_metrics_handle_);
+
+ // METRICS INSTRUMENTATION POINT (RTARM region transition overhead start)
+ START_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ this->RTARM_region_transition_metrics_handle_);
+
+ rtarmPtr_->SetGroupQOS_Region("imageload", targetRegion, ACE_TRY_ENV);
+
+ // METRICS INSTRUMENTATION POINT (RTARM region transition overhead stop)
+ STOP_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ this->RTARM_region_transition_metrics_handle_);
+
+ // METRICS INSTRUMENTATION POINT (quo contract eval resume)
+ RESUME_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ this->QuO_contract_eval_metrics_handle_);
+
+ // METRICS INSTRUMENTATION POINT (tile request delegate overhead resume)
+ RESUME_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ this->tile_request_delegate_metrics_handle_);
+
+
+
+ // Local handles for WSOA METRICS INSTRUMENTATION
+ RtecScheduler::handle_t RTARM_region_transition_metrics_handle_;
+ RtecScheduler::handle_t QuO_contract_eval_metrics_handle_;
+ RtecScheduler::handle_t tile_request_delegate_metrics_handle_;
+
+
+ // Obtain local handles for WSOA METRICS INSTRUMENTATION
+ this->QuO_contract_eval_metrics_handle_ =
+ WSOA_METRICS_HANDLES_SINGLETON::instance()->QuO_contract_eval_metrics_handle_;
+
+ this->tile_request_delegate_metrics_handle_ =
+ WSOA_METRICS_HANDLES_SINGLETON::instance()->tile_request_delegate_metrics_handle_;
+
+ this->image_received_metrics_handle_ =
+ WSOA_METRICS_HANDLES_SINGLETON::instance()->image_received_metrics_handle_;
+
+ this->image_processed_metrics_handle_ =
+ WSOA_METRICS_HANDLES_SINGLETON::instance()->image_processed_metrics_handle_;
+
+ this->image_quiescent_metrics_handle_ =
+ WSOA_METRICS_HANDLES_SINGLETON::instance()->image_quiescent_metrics_handle_;
+
+ this->tile_received_first_metrics_handle_ =
+ WSOA_METRICS_HANDLES_SINGLETON::instance()->tile_received_first_metrics_handle_;
+
+ this->tile_processed_first_metrics_handle_ =
+ WSOA_METRICS_HANDLES_SINGLETON::instance()->tile_processed_first_metrics_handle_;
+
+
+ // METRICS INSTRUMENTATION POINT (tile request delegate overhead start)
+ START_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ this->tile_request_delegate_metrics_handle_);
+
+ // METRICS INSTRUMENTATION POINT (quo contract eval start)
+ START_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ this->QuO_contract_eval_metrics_handle_);
+
+
+ CurrentTime->wsoa_update();
+ ExpectedBytesIfEarly->wsoa_update();
+ ExpectedBytesIfLate->wsoa_update();
+
+ quo::SignalEvent quo_sig1;
+ quo::RegionSeq* quo_currentRegions = quo_ProgressContract->signalAndEvalAndGetCurrentRegion(quo_sig1);
+
+ // METRICS INSTRUMENTATION POINT (quo contract eval stop)
+ STOP_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ this->QuO_contract_eval_metrics_handle_);
+
+
+ // METRICS INSTRUMENTATION POINT (stop image quiescent interval)
+ // This is where we're again quiescent, i.e., we've *detected*
+ // that the image is done being processed.
+ STOP_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ image_quiescent_metrics_handle_);
+
+ // METRICS INSTRUMENTATION: reset the tiles requested count to zero until we
+ // request a new image from the C2 server.
+ WSOA_METRICS_HANDLES_SINGLETON::instance()->tiles_requested_ = 0;
+
+
+
+ // METRICS INSTRUMENTATION POINT (start tile received interval)
+ // uses numberOfTilesRequested to determine the handle
+ // Note: the image and tile metrics are different from the others in that they record latency of progress points
+ // rather than latency of processing overhead - i.e., they include time spent on the network and C2 server.
+ START_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ tile_received_first_metrics_handle_ + numberOfTilesRequested);
+
+ // METRICS INSTRUMENTATION POINT (start tile processed interval)
+ // uses numberOfTilesRequested to determine the handle
+ // Note: the image and tile metrics are different from the others in that they record latency of progress points
+ // rather than latency of processing overhead - i.e., they include time spent on the network and C2 server.
+ START_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ tile_processed_first_metrics_handle_ + numberOfTilesRequested);
+
+
+ // METRICS INSTRUMENTATION POINT (tile request delegate overhead stop)
+ STOP_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ this->tile_request_delegate_metrics_handle_);
+
+
+ // METRICS INSTRUMENTATION: store number of tiles requested, in metrics handle class.
+ WSOA_METRICS_HANDLES_SINGLETON::instance()->tiles_requested_ = totalNumberOfTiles;
+
+
+ // METRICS INSTRUMENTATION POINT (start image received interval)
+ // Note: the image and tile metrics are different from the others in that they record latency of progress points
+ // rather than latency of processing overhead - i.e., they include time spent on the network and C2 server.
+ START_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ image_received_metrics_handle_);
+
+ // METRICS INSTRUMENTATION POINT (start image processed interval)
+ START_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ image_processed_metrics_handle_);
+
+ // METRICS INSTRUMENTATION POINT (start image quiescent interval)
+ START_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ image_quiescent_metrics_handle_);
+
+ // CDG - TBD - METRICS INSTRUMENTATION POINT (requested compression ratio)
+ // use value in compressionRatio
+
+ // METRICS INSTRUMENTATION POINT (start tile received interval)
+ // uses base handle as this is the first tile request
+ // Note: the image and tile metrics are different from the others in that they record latency of progress points
+ // rather than latency of processing overhead - i.e., they include time spent on the network and C2 server.
+ START_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ tile_received_first_metrics_handle_);
+
+ // METRICS INSTRUMENTATION POINT (start tile processed interval)
+ // uses base handle as this is the first tile request
+ // Note: the image and tile metrics are different from the others in that they record latency of progress points
+ // rather than latency of processing overhead - i.e., they include time spent on the network and C2 server.
+ START_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ tile_processed_first_metrics_handle_);
+
+
+ // METRICS INSTRUMENTATION POINT (start tile received interval)
+ // uses numberOfTilesRequested to determine the handle
+ // Note: the image and tile metrics are different from the others in that they record latency of progress points
+ // rather than latency of processing overhead - i.e., they include time spent on the network and C2 server.
+ START_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ tile_received_first_metrics_handle_ + numberOfTilesRequested);
+
+ // METRICS INSTRUMENTATION POINT (start tile processed interval)
+ // uses numberOfTilesRequested to determine the handle
+ // Note: the image and tile metrics are different from the others in that they record latency of progress points
+ // rather than latency of processing overhead - i.e., they include time spent on the network and C2 server.
+ START_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ tile_processed_first_metrics_handle_ + numberOfTilesRequested);
+
+
+ // Local handles for METRICS INSTRUMENTATION
+ RtecScheduler::handle_t QuO_contract_eval_metrics_handle_;
+ RtecScheduler::handle_t tile_request_delegate_metrics_handle_;
+ RtecScheduler::handle_t image_received_metrics_handle_;
+ RtecScheduler::handle_t image_processed_metrics_handle_;
+ RtecScheduler::handle_t image_quiescent_metrics_handle_;
+ RtecScheduler::handle_t tile_received_first_metrics_handle_;
+ RtecScheduler::handle_t tile_processed_first_metrics_handle_;
+
+
+ // METRICS INSTRUMENTATION: initialize local handles
+
+ this->tile_received_first_metrics_handle_ =
+ WSOA_METRICS_HANDLES_SINGLETON::instance()->tile_received_first_metrics_handle_;
+
+ this->image_received_metrics_handle_ =
+ WSOA_METRICS_HANDLES_SINGLETON::instance()->image_received_metrics_handle_;
+
+
+ // METRICS INSTRUMENTATION POINT (stop tile received interval)
+ // uses tilesReceivedSC_ to determine the handle
+ // Note: the image and tile metrics are different from the others in that they record latency of progress points
+ // rather than latency of processing overhead - i.e., they include time spent on the network and C2 server.
+ STOP_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ tile_received_first_metrics_handle_ + tilesReceivedSC_->longValue());
+
+ tilesReceivedSC_->longValue(tilesReceivedSC_->longValue() + 1);
+
+ // METRICS INSTRUMENTATION POINT (stop image processed interval)
+ if (tilesReceivedSC_->longValue()
+ == WSOA_METRICS_HANDLES_SINGLETON::instance()->tiles_requested_)
+ {
+ STOP_DISPATCH_METRIC(TAO_METRICS_CACHE_SINGLETON::instance(),
+ base_metrics,
+ image_received_metrics_handle_);
+ }
+
+
+ // METRICS INSTRUMENTATION: local copies of metrics reporting handles.
+ RtecScheduler::handle_t tile_received_first_metrics_handle_;
+ RtecScheduler::handle_t image_received_metrics_handle_;
+
+
+
+
+
+
diff --git a/TAO/orbsvcs/tests/Metrics/mets.log b/TAO/orbsvcs/tests/Metrics/mets.log
new file mode 100644
index 00000000000..fb69c55e5a1
--- /dev/null
+++ b/TAO/orbsvcs/tests/Metrics/mets.log
@@ -0,0 +1,21 @@
+g++ -W -Wall -Wpointer-arith -pipe -g -fno-exceptions -fcheck-new -DACE_USE_RCSID=0 -D_REENTRANT -DACE_HAS_AIO_CALLS -I/u/storri/ACE_CVS -I/u/storri/ACE_CVS/TAO -I/u/storri/ACE_CVS/TAO/orbsvcs -L/u/storri/ACE_CVS/TAO/tao -L/u/storri/ACE_CVS/ace -L./ -o Metrics_Local_Cache .obj/Metrics_Local_Cache_Test.o -lTAO_Metrics -lTAO_RTCORBA -lTAO_PortableServer -lTAO -lACE -ldl -lpthread -lrt
+/u/storri/ACE_CVS/ace/libACE.a(Log_Msg.o)(.text+0x4f82): In function `ACE_Log_Msg::log(char const*, ACE_Log_Priority, void*)':
+itimerspec/Log_Msg.cpp:1161: `sys_nerr' is deprecated; use `strerror' or `strerror_r' instead
+.obj/Metrics_Local_Cache_Test.o(.text+0x402): In function `TAO_Metrics_Local_Cache_Test::TAO_Metrics_Local_Cache_Test[not-in-charge](int, int)':
+sockaddr_storage::operator=(sockaddr_storage const&)/Metrics_Local_Cache_Test.cpp:103: undefined reference to `RtecEventComm::EventSet::EventSet[in-charge]()'
+.obj/Metrics_Local_Cache_Test.o(.text+0xa22): In function `TAO_Metrics_Local_Cache_Test::TAO_Metrics_Local_Cache_Test[in-charge](int, int)':
+sockaddr_storage::operator=(sockaddr_storage const&)/Metrics_Local_Cache_Test.cpp:103: undefined reference to `RtecEventComm::EventSet::EventSet[in-charge]()'
+.obj/Metrics_Local_Cache_Test.o(.text+0x1122): In function `TAO_Metrics_Local_Cache_Test::TAO_Metrics_Local_Cache_Test[not-in-charge](int, char**, int, int)':
+sockaddr_storage::operator=(sockaddr_storage const&)/Metrics_Local_Cache_Test.cpp:131: undefined reference to `RtecEventComm::EventSet::EventSet[in-charge]()'
+.obj/Metrics_Local_Cache_Test.o(.text+0x18b2): In function `TAO_Metrics_Local_Cache_Test::TAO_Metrics_Local_Cache_Test[in-charge](int, char**, int, int)':
+sockaddr_storage::operator=(sockaddr_storage const&)/Metrics_Local_Cache_Test.cpp:131: undefined reference to `RtecEventComm::EventSet::EventSet[in-charge]()'
+.obj/Metrics_Local_Cache_Test.o(.text+0x1bc2): In function `TAO_Metrics_Local_Cache_Test::~TAO_Metrics_Local_Cache_Test [not-in-charge]()':
+sockaddr_storage::operator=(sockaddr_storage const&)/Metrics_Local_Cache_Test.cpp:139: undefined reference to `RtecEventComm::EventSet::~EventSet [in-charge]()'
+.obj/Metrics_Local_Cache_Test.o(.text+0x1fd2): In function `TAO_Metrics_Local_Cache_Test::~TAO_Metrics_Local_Cache_Test [in-charge]()':
+sockaddr_storage::operator=(sockaddr_storage const&)/Metrics_Local_Cache_Test.cpp:139: undefined reference to `RtecEventComm::EventSet::~EventSet [in-charge]()'
+.obj/Metrics_Local_Cache_Test.o(.text+0x23e2): In function `TAO_Metrics_Local_Cache_Test::~TAO_Metrics_Local_Cache_Test [in-charge deleting]()':
+sockaddr_storage::operator=(sockaddr_storage const&)/Metrics_Local_Cache_Test.cpp:139: undefined reference to `RtecEventComm::EventSet::~EventSet [in-charge]()'
+.obj/Metrics_Local_Cache_Test.o(.text+0x2982): In function `TAO_Metrics_Local_Cache_Test::generate_orb_args(char*&)':
+sockaddr_storage::operator=(sockaddr_storage const&)/Metrics_Local_Cache_Test.cpp:172: undefined reference to `TAO_Rate_Group_Info::TAO_Rate_Group_Info[in-charge]()'
+collect2: ld returned 1 exit status
+make: *** [Metrics_Local_Cache] Error 1
diff --git a/TAO/orbsvcs/tests/Metrics/remote_logger.ior b/TAO/orbsvcs/tests/Metrics/remote_logger.ior
new file mode 100644
index 00000000000..fe0c4e91b16
--- /dev/null
+++ b/TAO/orbsvcs/tests/Metrics/remote_logger.ior
@@ -0,0 +1 @@
+IOR:010000001a00000049444c3a4d6574726963732f516f534c6f676765723a312e300000000100000000000000a8000000010101cd1b00000050423830303131352e6d772e6e6f732e626f65696e672e636f6d00cd2e27cdcd3d00000014010f004e5550000000150000000001000000005468654368696c64504f4100000000000100000072656d6f74655f6d6574726963735f6c6f67676572cdcdcd03000000000000000800000001cdcdcd004f4154010000001400000001cdcdcd01000100000000000901010000000000004f41540400000001cd0000
diff --git a/TAO/orbsvcs/tests/Metrics/remote_logger.txt b/TAO/orbsvcs/tests/Metrics/remote_logger.txt
new file mode 100644
index 00000000000..b67c8c5e2ee
--- /dev/null
+++ b/TAO/orbsvcs/tests/Metrics/remote_logger.txt
@@ -0,0 +1,5 @@
+
+
+TAO_Metrics Metrics Logging Session: Mon Nov 25 16:53:14 2002
+
+
diff --git a/TAO/orbsvcs/tests/Metrics/remote_logger_export.excel b/TAO/orbsvcs/tests/Metrics/remote_logger_export.excel
new file mode 100644
index 00000000000..b67c8c5e2ee
--- /dev/null
+++ b/TAO/orbsvcs/tests/Metrics/remote_logger_export.excel
@@ -0,0 +1,5 @@
+
+
+TAO_Metrics Metrics Logging Session: Mon Nov 25 16:53:14 2002
+
+