[yocto] [PATCH] [meta-ivi] audiomanager: Fix runtime exception from AmNodeStateCommunicatorTest

Shakeel, Muhammad muhammad_shakeel at mentor.com
Mon Jul 22 00:59:01 PDT 2013


From: Muhammad Shakeel <muhammad_shakeel at mentor.com>

- Fixed data type issues
- Fixed some error log messages
- Modified the way for reading XML file
- Explicitly type cast the variables before sending message to
  sendLifeCycleRequest interface

- This commit has been merged into upstream Audiomanager (master) but
required here for tag 3.2

Signed-off-by: Muhammad Shakeel <muhammad_shakeel at mentor.com>
---
 ...-78-AmNodeStateCommunicatorTest-throws-a-.patch |  174 ++++++++++++++++++++
 .../audiomanager/audiomanager_3.2.bb               |    3 +-
 2 files changed, 176 insertions(+), 1 deletion(-)

diff --git a/recipes-multimedia/audiomanager/audiomanager/0001-Fix-for-bug-78-AmNodeStateCommunicatorTest-throws-a-.patch b/recipes-multimedia/audiomanager/audiomanager/0001-Fix-for-bug-78-AmNodeStateCommunicatorTest-throws-a-.patch
new file mode 100644
index 0000000..c360149
--- /dev/null
+++ b/recipes-multimedia/audiomanager/audiomanager/0001-Fix-for-bug-78-AmNodeStateCommunicatorTest-throws-a-.patch
@@ -0,0 +1,174 @@
+From 72a1c8d4fbf5ca1ef919e9463d21476d0a8c6f3a Mon Sep 17 00:00:00 2001
+From: Muhammad Shakeel <muhammad_shakeel at mentor.com>
+Date: Thu, 18 Jul 2013 15:37:39 +0500
+Subject: [PATCH] Fix for bug 78: AmNodeStateCommunicatorTest throws a runtime
+ exception
+
+- Fixed data type issues
+- Fixed some error log messages
+- Modified the way for reading XML file
+- Explicitly type cast the variables before sending message to
+  sendLifeCycleRequest interface
+
+Signed-off-by: Muhammad Shakeel <muhammad_shakeel at mentor.com>
+---
+ .../src/CAmNodeStateCommunicator.cpp               |   33 +++++++++++---------
+ .../test/AmNodeStateCommunicatorTest/send2nsm.py   |    2 +-
+ 2 files changed, 19 insertions(+), 16 deletions(-)
+
+diff --git a/AudioManagerDaemon/src/CAmNodeStateCommunicator.cpp b/AudioManagerDaemon/src/CAmNodeStateCommunicator.cpp
+index 01c4c6e..689b975 100644
+--- a/AudioManagerDaemon/src/CAmNodeStateCommunicator.cpp
++++ b/AudioManagerDaemon/src/CAmNodeStateCommunicator.cpp
+@@ -27,6 +27,7 @@
+ #include "CAmControlSender.h"
+ #include "shared/CAmDltWrapper.h"
+ #include "config.h"
++#include <sstream>
+ 
+ namespace am
+ {
+@@ -167,13 +168,13 @@ NsmErrorStatus_e CAmNodeStateCommunicator::nsmGetSessionState(const std::string&
+ 
+     if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &sessionName))
+     {
+-        logError( "CAmNodeStateCommunicator::nsmRegisterShutdownClient no more memory");
++        logError( "CAmNodeStateCommunicator::nsmGetSessionState no more memory");
+         return (NsmErrorStatus_Dbus);
+     }
+ 
+     if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32, &seatID))
+     {
+-        logError( "CAmNodeStateCommunicator::nsmRegisterShutdownClient no more memory");
++        logError( "CAmNodeStateCommunicator::nsmGetSessionState no more memory");
+         return (NsmErrorStatus_Dbus);
+     }
+ 
+@@ -242,7 +243,7 @@ NsmErrorStatus_e CAmNodeStateCommunicator::nsmRegisterShutdownClient(const uint3
+     DBusError error;
+     DBusMessageIter iter;
+     dbus_error_init(&error);
+-    int16_t returnError(0);
++    int32_t returnError(0);
+     std::string path = std::string(DBUS_SERVICE_OBJECT_PATH) + "/LifeCycleConsumer";
+     const char* charPath = path.c_str();
+     const char* service =DBUS_SERVICE_PREFIX;
+@@ -309,7 +310,7 @@ NsmErrorStatus_e CAmNodeStateCommunicator::nsmUnRegisterShutdownClient(const uin
+     DBusError error;
+     DBusMessageIter iter;
+     dbus_error_init(&error);
+-    int16_t returnError(0);
++    int32_t returnError(0);
+     std::string path = std::string(DBUS_SERVICE_OBJECT_PATH) + "/LifeCycleConsumer";
+     const char* charPath = path.c_str();
+     const char* service =DBUS_SERVICE_PREFIX;
+@@ -317,26 +318,26 @@ NsmErrorStatus_e CAmNodeStateCommunicator::nsmUnRegisterShutdownClient(const uin
+ 
+     if (!message)
+     {
+-        logError( "CAmNodeStateCommunicator::nsmRegisterShutdownClient dbus error:", error.message);
++        logError( "CAmNodeStateCommunicator::nsmUnRegisterShutdownClient dbus error:", error.message);
+         return (NsmErrorStatus_Dbus);
+     }
+     dbus_message_iter_init_append(message, &iter);
+ 
+     if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &service))
+     {
+-        logError( "CAmNodeStateCommunicator::nsmRegisterShutdownClient no more memory");
++        logError( "CAmNodeStateCommunicator::nsmUnRegisterShutdownClient no more memory");
+         return (NsmErrorStatus_Dbus);
+     }
+ 
+     if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &charPath))
+     {
+-        logError( "CAmNodeStateCommunicator::nsmRegisterShutdownClient no more memory");
++        logError( "CAmNodeStateCommunicator::nsmUnRegisterShutdownClient no more memory");
+         return (NsmErrorStatus_Dbus);
+     }
+ 
+     if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_UINT32, &shutdownMode))
+     {
+-        logError( "CAmNodeStateCommunicator::nsmRegisterShutdownClient no more memory");
++        logError( "CAmNodeStateCommunicator::nsmUnRegisterShutdownClient no more memory");
+         return (NsmErrorStatus_Dbus);
+     }
+ 
+@@ -345,13 +346,13 @@ NsmErrorStatus_e CAmNodeStateCommunicator::nsmUnRegisterShutdownClient(const uin
+ 
+     if (!reply)
+     {
+-        logError( "CAmNodeStateCommunicator::nsmRegisterShutdownClient failed, dbus error", error.message);
++        logError( "CAmNodeStateCommunicator::nsmUnRegisterShutdownClient failed, dbus error", error.message);
+         return (NsmErrorStatus_Dbus);
+     }
+ 
+     if(!dbus_message_get_args(reply, &error, DBUS_TYPE_INT32, &returnError, DBUS_TYPE_INVALID))
+     {
+-        logError( "CAmNodeStateCommunicator::nsmRegisterShutdownClient failed, dbus error", error.message);
++        logError( "CAmNodeStateCommunicator::nsmUnRegisterShutdownClient failed, dbus error", error.message);
+         return (NsmErrorStatus_Dbus);
+     }
+     dbus_message_unref(reply);
+@@ -409,7 +410,7 @@ NsmErrorStatus_e CAmNodeStateCommunicator::nsmSendLifecycleRequestComplete(const
+     DBusError error;
+     DBusMessageIter iter;
+     dbus_error_init(&error);
+-    int16_t returnError(0);
++    int32_t returnError(0);
+     DBusMessage * message = dbus_message_new_method_call(NSM_BUS_INTERFACE, NSM_PATH, NSM_INTERFACE, "LifecycleRequestComplete");
+ 
+     if (!message)
+@@ -473,7 +474,7 @@ DBusHandlerResult CAmNodeStateCommunicator::receiveCallbackDelegate(DBusConnecti
+     else
+     {
+         DBusMessage * returnMessage;
+-        dbus_uint16_t Request(0),RequestId(0);
++        dbus_uint32_t Request(0),RequestId(0);
+         //no introspection - ok. So we are only interested in out LifecycleRequest message...
+         std::string method(dbus_message_get_member(msg));
+         if (method=="LifecycleRequest")
+@@ -490,7 +491,7 @@ DBusHandlerResult CAmNodeStateCommunicator::receiveCallbackDelegate(DBusConnecti
+             if (dbus_message_iter_get_arg_type(&iter)!=DBUS_TYPE_UINT32)
+             {
+                 logError("CAmNodeStateCommunicator::receiveCallbackDelegate DBus Message has invalid arguments!");
+-                returnMessage = dbus_message_new_error(msg,DBUS_ERROR_INVALID_ARGS,"DBus argument is no uint16_t!");
++                returnMessage = dbus_message_new_error(msg,DBUS_ERROR_INVALID_ARGS,"DBus argument is not uint32_t!");
+                 sendMessage(returnMessage,msg);
+                 return (DBUS_HANDLER_RESULT_HANDLED);
+             }
+@@ -501,7 +502,7 @@ DBusHandlerResult CAmNodeStateCommunicator::receiveCallbackDelegate(DBusConnecti
+             if (dbus_message_iter_get_arg_type(&iter)!=DBUS_TYPE_UINT32)
+             {
+                 logError("CAmNodeStateCommunicator::receiveCallbackDelegate DBus Message has invalid arguments!");
+-                returnMessage = dbus_message_new_error(msg,DBUS_ERROR_INVALID_ARGS,"DBus argument is no uint16_t!");
++                returnMessage = dbus_message_new_error(msg,DBUS_ERROR_INVALID_ARGS,"DBus argument is not uint32_t!");
+                 sendMessage(returnMessage,msg);
+                 return (DBUS_HANDLER_RESULT_HANDLED);
+             }
+@@ -552,7 +553,9 @@ void CAmNodeStateCommunicator::sendIntrospection(DBusConnection* conn, DBusMessa
+        logError("IAmCommandReceiverShadow::sendIntrospection could not load xml file ",fullpath);
+        throw std::runtime_error("IAmCommandReceiverShadow::sendIntrospection Could not load introspecton XML");
+     }
+-    std::string introspect((std::istreambuf_iterator<char>(in)), std::istreambuf_iterator<char>());
++    std::stringstream buffer;
++    buffer << in.rdbuf();
++    std::string introspect = buffer.str();
+     const char* string = introspect.c_str();
+ 
+     // add the arguments to the reply
+diff --git a/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/send2nsm.py b/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/send2nsm.py
+index 3b6cad3..c7e8bf5 100644
+--- a/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/send2nsm.py
++++ b/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/send2nsm.py
+@@ -53,7 +53,7 @@ def LifecycleRequest(Request,RequestID):
+ 	bus = dbus.SessionBus()
+ 	remote_object = bus.get_object('org.genivi.NodeStateManager','/org/genivi/NodeStateManager')
+ 	iface = dbus.Interface(remote_object, 'org.genivi.NodeStateManager.Control')
+-	iface.sendLifeCycleRequest(Request,RequestID)
++	iface.sendLifeCycleRequest(dbus.UInt32(Request),dbus.UInt32(RequestID))
+ 
+ command=sys.argv[1]
+ if command=="nodeState":
+-- 
+1.7.9.5
+
diff --git a/recipes-multimedia/audiomanager/audiomanager_3.2.bb b/recipes-multimedia/audiomanager/audiomanager_3.2.bb
index d3dcb56..e3092b0 100644
--- a/recipes-multimedia/audiomanager/audiomanager_3.2.bb
+++ b/recipes-multimedia/audiomanager/audiomanager_3.2.bb
@@ -11,7 +11,8 @@ DEPENDS = "dlt-daemon sqlite3 dbus"
 
 SRC_URI = "git://git.projects.genivi.org/AudioManager.git;protocol=git;tag=${PV} \
            file://AudioManager.service file://setup_amgr.sh \
-           file://0001-Build-plugins-as-modules-instead-of-shared-libraries.patch"
+           file://0001-Build-plugins-as-modules-instead-of-shared-libraries.patch \
+           file://0001-Fix-for-bug-78-AmNodeStateCommunicatorTest-throws-a-.patch "
 
 S = "${WORKDIR}/git"
 inherit autotools gettext cmake pkgconfig systemd
-- 
1.7.9.5




More information about the yocto mailing list