You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@etch.apache.org by ve...@apache.org on 2014/03/18 14:22:21 UTC

svn commit: r1578866 - in /etch/trunk/binding-cpp/runtime: CMakeLists.txt include/support/EtchRuntime.h include/util/EtchLogger.h src/main/support/EtchRuntime.cpp src/test/support/EtchRuntimeTest.cpp

Author: veithm
Date: Tue Mar 18 13:22:21 2014
New Revision: 1578866

URL: http://svn.apache.org/r1578866
Log:
ETCH-282 Runtime accepts now log configuration

A new constructor for the EtchRuntime has been added.
It enables the client/server to register a different log appender for
different log levels.
This is especially useful if you e.g. would like to log errors to your console,
but log info and debug messages to a file.

Change-Id: I0952b4019ef8dc9c5a227fa18a60cc3f5e428058

Modified:
    etch/trunk/binding-cpp/runtime/CMakeLists.txt
    etch/trunk/binding-cpp/runtime/include/support/EtchRuntime.h
    etch/trunk/binding-cpp/runtime/include/util/EtchLogger.h
    etch/trunk/binding-cpp/runtime/src/main/support/EtchRuntime.cpp
    etch/trunk/binding-cpp/runtime/src/test/support/EtchRuntimeTest.cpp

Modified: etch/trunk/binding-cpp/runtime/CMakeLists.txt
URL: http://svn.apache.org/viewvc/etch/trunk/binding-cpp/runtime/CMakeLists.txt?rev=1578866&r1=1578865&r2=1578866&view=diff
==============================================================================
--- etch/trunk/binding-cpp/runtime/CMakeLists.txt (original)
+++ etch/trunk/binding-cpp/runtime/CMakeLists.txt Tue Mar 18 13:22:21 2014
@@ -41,12 +41,12 @@ ENDIF (NOT CMAKE_TOOLCHAIN_FILE)
 #VLD
 SET(VLD ${ETCH_EXTERNAL_DEPENDS}/vld/1.9h)
 
-# GTest
-SET(GTEST ${ETCH_EXTERNAL_DEPENDS}/gtest/1.6.0)
-
 # GMock
 SET(GMOCK ${ETCH_EXTERNAL_DEPENDS}/gmock/1.6.0)
 
+# GTest
+SET(GTEST ${GMOCK}/gtest)
+
 #Build external CAPU project (OS Abstraction)
 set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR})
 find_package(Capu)

Modified: etch/trunk/binding-cpp/runtime/include/support/EtchRuntime.h
URL: http://svn.apache.org/viewvc/etch/trunk/binding-cpp/runtime/include/support/EtchRuntime.h?rev=1578866&r1=1578865&r2=1578866&view=diff
==============================================================================
--- etch/trunk/binding-cpp/runtime/include/support/EtchRuntime.h (original)
+++ etch/trunk/binding-cpp/runtime/include/support/EtchRuntime.h Tue Mar 18 13:22:21 2014
@@ -43,10 +43,18 @@ public:
 
   /**
    * Create a new instance of the EtchRuntime class
+   * It uses the default Console Log Appender for logging.
    */
   EtchRuntime();
 
   /**
+   * Create a new instance of the EtchRuntime class
+   * @param logAppender the log appender
+   * @param logLevel the log level
+   */
+  EtchRuntime(IEtchLogAppender& logAppender, EtchLogLevel logLevel);
+
+  /**
    * Destructor
    */
   virtual ~EtchRuntime();
@@ -94,12 +102,18 @@ public:
 private:
   capu::bool_t mIsClosed;
   EtchLogger mLogger;
-  EtchConsoleLogAppender mLogAppender;
+  EtchConsoleLogAppender mDefaultLogAppender;
   static capu::uint64_t sId;
   capu::uint64_t mId;
   capu::Mutex mMutex;
   capu::List<EtchRuntimeListener*> mListeners;
 
+
+  /**
+   * Assigns an unique id to the runtime
+   */
+  void generateRuntimeId();
+
   /**
    * Return the next id
    */

Modified: etch/trunk/binding-cpp/runtime/include/util/EtchLogger.h
URL: http://svn.apache.org/viewvc/etch/trunk/binding-cpp/runtime/include/util/EtchLogger.h?rev=1578866&r1=1578865&r2=1578866&view=diff
==============================================================================
--- etch/trunk/binding-cpp/runtime/include/util/EtchLogger.h (original)
+++ etch/trunk/binding-cpp/runtime/include/util/EtchLogger.h Tue Mar 18 13:22:21 2014
@@ -25,6 +25,7 @@
 #include "capu/util/ILogAppender.h"
 
 typedef capu::ILogAppender IEtchLogAppender;
+typedef capu::ELogLevel EtchLogLevel;
 typedef capu::ConsoleLogAppender EtchConsoleLogAppender;
 typedef capu::LogContext EtchLogContext;
 
@@ -82,14 +83,14 @@ public:
     return mRuntimeContext;
   }
 private:
-  EtchLogContext mSerializerContext;
-  EtchLogContext mDeliveryServiceContext;
-  EtchLogContext mTransportContext;
-  EtchLogContext mPacketizerContext;
-  EtchLogContext mMessagizerContext;
-  EtchLogContext mValidatorContext;
-  EtchLogContext mMailboxContext;
-  EtchLogContext mRuntimeContext;
+  EtchLogContext& mSerializerContext;
+  EtchLogContext& mDeliveryServiceContext;
+  EtchLogContext& mTransportContext;
+  EtchLogContext& mPacketizerContext;
+  EtchLogContext& mMessagizerContext;
+  EtchLogContext& mValidatorContext;
+  EtchLogContext& mMailboxContext;
+  EtchLogContext& mRuntimeContext;
 
 };
 

Modified: etch/trunk/binding-cpp/runtime/src/main/support/EtchRuntime.cpp
URL: http://svn.apache.org/viewvc/etch/trunk/binding-cpp/runtime/src/main/support/EtchRuntime.cpp?rev=1578866&r1=1578865&r2=1578866&view=diff
==============================================================================
--- etch/trunk/binding-cpp/runtime/src/main/support/EtchRuntime.cpp (original)
+++ etch/trunk/binding-cpp/runtime/src/main/support/EtchRuntime.cpp Tue Mar 18 13:22:21 2014
@@ -23,13 +23,24 @@
 
 EtchRuntime::EtchRuntime()
   :   mIsClosed(false)
-    , mLogger(mLogAppender)
+    , mLogger(mDefaultLogAppender)
 {
-  mMutex.lock();
-  mId = getNextId();
-  mMutex.unlock();
+  //Default log level is WARN
+  mLogger.setLogLevel(capu::LL_WARN);
 
-  mLogger.setLogLevel(capu::LL_ALL);
+  //assign a unique id to this runtime
+  generateRuntimeId();
+}
+
+EtchRuntime::EtchRuntime(IEtchLogAppender& logAppender, EtchLogLevel logLevel)
+  :   mIsClosed(false)
+    , mLogger(logAppender)
+{
+  //Default log level is WARN
+  mLogger.setLogLevel(logLevel);
+
+  //assign a unique id to this runtime
+  generateRuntimeId();
 }
 
 EtchRuntime::~EtchRuntime() {
@@ -94,6 +105,12 @@ status_t EtchRuntime::fireOnRuntimeChang
   return ETCH_OK;
 }
 
+void EtchRuntime::generateRuntimeId() {
+  mMutex.lock();
+  mId = getNextId();
+  mMutex.unlock();
+}
+
 capu::uint64_t EtchRuntime::getNextId() {
   static capu::uint64_t sId = 0;
   return sId++;

Modified: etch/trunk/binding-cpp/runtime/src/test/support/EtchRuntimeTest.cpp
URL: http://svn.apache.org/viewvc/etch/trunk/binding-cpp/runtime/src/test/support/EtchRuntimeTest.cpp?rev=1578866&r1=1578865&r2=1578866&view=diff
==============================================================================
--- etch/trunk/binding-cpp/runtime/src/test/support/EtchRuntimeTest.cpp (original)
+++ etch/trunk/binding-cpp/runtime/src/test/support/EtchRuntimeTest.cpp Tue Mar 18 13:22:21 2014
@@ -18,6 +18,12 @@
 #include "gtest/gtest.h"
 #include "gmock/gmock.h"
 #include "support/EtchRuntime.h"
+#include "capu/util/LogMessage.h"
+
+class MockLogAppender : public IEtchLogAppender {
+public:
+  MOCK_METHOD1(log, void(const capu::LogMessage& message));
+};
 
 capu::uint64_t currentIdCount;
 
@@ -27,13 +33,30 @@ TEST(EtchRuntime, Default) {
   delete runtime;
 }
 
-TEST(EtchRuntime, getId) {
-  EtchRuntime* runtime = new EtchRuntime(); //ID = 1
-  EXPECT_EQ(currentIdCount + 1, runtime->getId());
+TEST(EtchRuntime, Logging) {
+  MockLogAppender* logAppender = new MockLogAppender();
+
+  EtchRuntime* runtime = new EtchRuntime(*logAppender, capu::LL_ALL); //ID = 2
+
+  EXPECT_CALL(*logAppender, log(::testing::_)).Times(2);
+
+  EtchLogContext testContext = runtime->getLogger().createContext("testcontext");
+  testContext.setLogLevel(capu::LL_ALL);
+
+  ETCH_LOG_DEBUG(runtime->getLogger(), testContext, "test log message for runtime " << runtime->getId());
+  ETCH_LOG_DEBUG(runtime->getLogger(), runtime->getLogger().getMessagizerContext(), "test log message for runtime " << runtime->getId());
+
   delete runtime;
-  runtime = new EtchRuntime(); //ID = 2
+  delete logAppender;
+}
+
+TEST(EtchRuntime, getId) {
+  EtchRuntime* runtime = new EtchRuntime(); //ID = 3
   EXPECT_EQ(currentIdCount + 2, runtime->getId());
   delete runtime;
+  runtime = new EtchRuntime(); //ID = 4
+  EXPECT_EQ(currentIdCount + 3, runtime->getId());
+  delete runtime;
 }
 
 TEST(EtchRuntime, isClosed) {