summaryrefslogtreecommitdiff
path: root/AudioManagerDaemon/test
diff options
context:
space:
mode:
authorchristian linke <christian.linke@bmw.de>2012-12-17 16:15:11 +0100
committerchristian linke <christian.linke@bmw.de>2012-12-17 16:15:11 +0100
commit54c5e965fe8f9a53a78834028fd65c792493da2b (patch)
tree560d7b1209e6a8d4798de9568e4b4a947c2ab42a /AudioManagerDaemon/test
parent215e8a72dc81e8a86dd5b3a8ca40fd2c7c6a0b9c (diff)
downloadaudiomanager-54c5e965fe8f9a53a78834028fd65c792493da2b.tar.gz
* added new interfaces & nsm support + nsm tests + fixed some unit tests + fixed rundown
Signed-off-by: christian linke <christian.linke@bmw.de>
Diffstat (limited to 'AudioManagerDaemon/test')
-rw-r--r--AudioManagerDaemon/test/AmControlInterfaceTest/CAmControlInterfaceTest.cpp2
-rw-r--r--AudioManagerDaemon/test/AmControlInterfaceTest/CMakeLists.txt2
-rw-r--r--AudioManagerDaemon/test/AmDatabaseHandlerTest/CAmDatabaseHandlerTest.cpp281
-rw-r--r--AudioManagerDaemon/test/AmDatabaseHandlerTest/CMakeLists.txt2
-rw-r--r--AudioManagerDaemon/test/AmNodeStateCommunicatorTest/CAmNodeStateCommunicatorTest.cpp240
-rw-r--r--AudioManagerDaemon/test/AmNodeStateCommunicatorTest/CAmNodeStateCommunicatorTest.h61
-rw-r--r--AudioManagerDaemon/test/AmNodeStateCommunicatorTest/CMakeLists.txt112
-rw-r--r--AudioManagerDaemon/test/AmNodeStateCommunicatorTest/nsm.py179
-rw-r--r--AudioManagerDaemon/test/AmNodeStateCommunicatorTest/org.genivi.NodeStateManager.Consumer.xml259
-rw-r--r--AudioManagerDaemon/test/AmNodeStateCommunicatorTest/send2nsm.py68
-rw-r--r--AudioManagerDaemon/test/AmRouterTest/CAmRouterTest.cpp28
-rw-r--r--AudioManagerDaemon/test/AmRouterTest/CMakeLists.txt2
-rw-r--r--AudioManagerDaemon/test/AmRoutingInterfaceTest/CAmRoutingInterfaceTest.cpp2
-rw-r--r--AudioManagerDaemon/test/AmRoutingInterfaceTest/CMakeLists.txt2
-rw-r--r--AudioManagerDaemon/test/AmTelnetServerTest/CAmTelnetServerTest.cpp13
-rw-r--r--AudioManagerDaemon/test/AmTelnetServerTest/CAmTelnetServerTest.h2
-rw-r--r--AudioManagerDaemon/test/AmTelnetServerTest/CMakeLists.txt2
-rw-r--r--AudioManagerDaemon/test/CMakeLists.txt1
-rw-r--r--AudioManagerDaemon/test/MockIAmCommandSend.h14
-rw-r--r--AudioManagerDaemon/test/MockIAmControlSend.h217
-rw-r--r--AudioManagerDaemon/test/MockIAmRoutingSend.h75
21 files changed, 1411 insertions, 153 deletions
diff --git a/AudioManagerDaemon/test/AmControlInterfaceTest/CAmControlInterfaceTest.cpp b/AudioManagerDaemon/test/AmControlInterfaceTest/CAmControlInterfaceTest.cpp
index c4f71e1..b126efc 100644
--- a/AudioManagerDaemon/test/AmControlInterfaceTest/CAmControlInterfaceTest.cpp
+++ b/AudioManagerDaemon/test/AmControlInterfaceTest/CAmControlInterfaceTest.cpp
@@ -43,7 +43,7 @@ CAmControlInterfaceTest::CAmControlInterfaceTest() :
pRoutingInterfaceBackdoor(), //
pCommandInterfaceBackdoor(), //
pControlInterfaceBackdoor(), //
- pControlSender(std::string("")), //
+ pControlSender(), //
pRouter(&pDatabaseHandler,&pControlSender), //
pDatabaseObserver(&pCommandSender, &pRoutingSender, &pSocketHandler), //
pControlReceiver(&pDatabaseHandler, &pRoutingSender, &pCommandSender, &pSocketHandler, &pRouter), //
diff --git a/AudioManagerDaemon/test/AmControlInterfaceTest/CMakeLists.txt b/AudioManagerDaemon/test/AmControlInterfaceTest/CMakeLists.txt
index 8d4b2e9..6107389 100644
--- a/AudioManagerDaemon/test/AmControlInterfaceTest/CMakeLists.txt
+++ b/AudioManagerDaemon/test/AmControlInterfaceTest/CMakeLists.txt
@@ -54,6 +54,8 @@ file(GLOB CONTROL_INTERFACE_SRCS_CXX
"../../src/CAmDltWrapper.cpp"
"../../src/CAmSocketHandler.cpp"
"../../src/CAmCommandReceiver.cpp"
+ "../../src/CAmNodeStateCommunicator.cpp"
+ "../../src/CAmDbusWrapper.cpp"
"../CAmCommonFunctions.cpp"
"*.cpp"
)
diff --git a/AudioManagerDaemon/test/AmDatabaseHandlerTest/CAmDatabaseHandlerTest.cpp b/AudioManagerDaemon/test/AmDatabaseHandlerTest/CAmDatabaseHandlerTest.cpp
index a1b7e39..a5143ef 100644
--- a/AudioManagerDaemon/test/AmDatabaseHandlerTest/CAmDatabaseHandlerTest.cpp
+++ b/AudioManagerDaemon/test/AmDatabaseHandlerTest/CAmDatabaseHandlerTest.cpp
@@ -45,7 +45,7 @@ CAmDatabaseHandlerTest::CAmDatabaseHandlerTest() :
pMockInterface(), //
pRoutingInterfaceBackdoor(), //
pCommandInterfaceBackdoor(), //
- pControlSender(""), //
+ pControlSender(), //
pRouter(&pDatabaseHandler, &pControlSender), //
pControlReceiver(&pDatabaseHandler, &pRoutingSender, &pCommandSender, &pSocketHandler, &pRouter), //
pObserver(&pCommandSender,&pRoutingSender, &pSocketHandler)
@@ -1915,6 +1915,285 @@ TEST_F(CAmDatabaseHandlerTest,enterSinksCorrect)
ASSERT_EQ(true, equal);
}
+TEST_F(CAmDatabaseHandlerTest,enterNotificationConfigurationCorrect)
+{
+ am_Sink_s testSinkData;
+ pCF.createSink(testSinkData);
+ testSinkData.sinkID = 4;
+ am_sinkID_t sinkID;
+ std::vector<am_Sink_s> listSinks;
+
+ am_NotificationConfiguration_s notify;
+ notify.notificationType=NT_UNKNOWN;
+ notify.notificationStatus=NS_CHANGE;
+ notify.notificationParameter=25;
+ testSinkData.listNotificationConfigurations.push_back(notify);
+
+ //enter the sink in the database
+ ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(testSinkData,sinkID))
+ << "ERROR: database error";
+
+ //read it again
+ ASSERT_EQ(E_OK,pDatabaseHandler.getListSinks(listSinks))
+ << "ERROR: database error";
+
+ ASSERT_EQ(listSinks.begin()->listNotificationConfigurations.begin()->notificationParameter,notify.notificationParameter);
+ ASSERT_EQ(listSinks.begin()->listNotificationConfigurations.begin()->notificationStatus,notify.notificationStatus);
+ ASSERT_EQ(listSinks.begin()->listNotificationConfigurations.begin()->notificationType,notify.notificationType);
+}
+
+TEST_F(CAmDatabaseHandlerTest,enterMainNotificationConfigurationCorrect)
+{
+ am_Sink_s testSinkData;
+ pCF.createSink(testSinkData);
+ testSinkData.sinkID = 4;
+ am_sinkID_t sinkID;
+ std::vector<am_Sink_s> listSinks;
+
+ am_NotificationConfiguration_s notify;
+ notify.notificationType=NT_UNKNOWN;
+ notify.notificationStatus=NS_CHANGE;
+ notify.notificationParameter=25;
+
+ testSinkData.listMainNotificationConfigurations.push_back(notify);
+
+ //enter the sink in the database
+ ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(testSinkData,sinkID))
+ << "ERROR: database error";
+
+ //read it again
+ ASSERT_EQ(E_OK,pDatabaseHandler.getListSinks(listSinks))
+ << "ERROR: database error";
+
+ ASSERT_EQ(listSinks.begin()->listMainNotificationConfigurations.begin()->notificationParameter,notify.notificationParameter);
+ ASSERT_EQ(listSinks.begin()->listMainNotificationConfigurations.begin()->notificationStatus,notify.notificationStatus);
+ ASSERT_EQ(listSinks.begin()->listMainNotificationConfigurations.begin()->notificationType,notify.notificationType);
+}
+
+TEST_F(CAmDatabaseHandlerTest,removeNotifications)
+{
+ am_Sink_s testSinkData;
+ pCF.createSink(testSinkData);
+ testSinkData.sinkID = 4;
+ am_sinkID_t sinkID;
+ std::vector<am_Sink_s> listSinks;
+
+ am_NotificationConfiguration_s notify;
+ notify.notificationType=NT_UNKNOWN;
+ notify.notificationStatus=NS_CHANGE;
+ notify.notificationParameter=25;
+
+ testSinkData.listMainNotificationConfigurations.push_back(notify);
+
+ //enter the sink in the database
+ ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(testSinkData,sinkID))
+ << "ERROR: database error";
+
+ //read it again
+ ASSERT_EQ(E_OK,pDatabaseHandler.getListSinks(listSinks))
+ << "ERROR: database error";
+
+ ASSERT_EQ(listSinks.begin()->listMainNotificationConfigurations.begin()->notificationParameter,notify.notificationParameter);
+ ASSERT_EQ(listSinks.begin()->listMainNotificationConfigurations.begin()->notificationStatus,notify.notificationStatus);
+ ASSERT_EQ(listSinks.begin()->listMainNotificationConfigurations.begin()->notificationType,notify.notificationType);
+
+ //now we remove the sink
+ ASSERT_EQ(E_OK,pDatabaseHandler.removeSinkDB(sinkID));
+}
+
+TEST_F(CAmDatabaseHandlerTest,getMainNotificationsSink)
+{
+ am_Sink_s testSinkData;
+ pCF.createSink(testSinkData);
+ testSinkData.sinkID = 4;
+ am_sinkID_t sinkID;
+ std::vector<am_Sink_s> listSinks;
+ std::vector<am_NotificationConfiguration_s>returnList;
+
+ am_NotificationConfiguration_s notify;
+ notify.notificationType=NT_UNKNOWN;
+ notify.notificationStatus=NS_CHANGE;
+ notify.notificationParameter=25;
+
+ testSinkData.listMainNotificationConfigurations.push_back(notify);
+
+ am_NotificationConfiguration_s notify1;
+ notify1.notificationType=NT_MAX;
+ notify1.notificationStatus=NS_PERIODIC;
+ notify1.notificationParameter=5;
+
+ testSinkData.listMainNotificationConfigurations.push_back(notify1);
+
+ //enter the sink in the database
+ ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(testSinkData,sinkID))
+ << "ERROR: database error";
+
+ //read it again
+ ASSERT_EQ(E_OK,pDatabaseHandler.getListSinkMainNotificationConfigurations(sinkID,returnList))
+ << "ERROR: database error";
+
+ ASSERT_EQ(returnList[0].notificationParameter,notify.notificationParameter);
+ ASSERT_EQ(returnList[0].notificationStatus,notify.notificationStatus);
+ ASSERT_EQ(returnList[0].notificationType,notify.notificationType);
+
+ ASSERT_EQ(returnList[1].notificationParameter,notify1.notificationParameter);
+ ASSERT_EQ(returnList[1].notificationStatus,notify1.notificationStatus);
+ ASSERT_EQ(returnList[1].notificationType,notify1.notificationType);
+
+}
+
+TEST_F(CAmDatabaseHandlerTest,getMainNotificationsSources)
+{
+ am_Source_s testSourceData;
+ pCF.createSource(testSourceData);
+ testSourceData.sourceID = 4;
+ am_sourceID_t sourceID;
+ std::vector<am_Source_s> listSources;
+ std::vector<am_NotificationConfiguration_s>returnList;
+
+ am_NotificationConfiguration_s notify;
+ notify.notificationType=NT_UNKNOWN;
+ notify.notificationStatus=NS_CHANGE;
+ notify.notificationParameter=25;
+
+ testSourceData.listMainNotificationConfigurations.push_back(notify);
+
+ am_NotificationConfiguration_s notify1;
+ notify1.notificationType=NT_MAX;
+ notify1.notificationStatus=NS_PERIODIC;
+ notify1.notificationParameter=5;
+
+ testSourceData.listMainNotificationConfigurations.push_back(notify1);
+
+ //enter the sink in the database
+ ASSERT_EQ(E_OK,pDatabaseHandler.enterSourceDB(testSourceData,sourceID))
+ << "ERROR: database error";
+
+ //read it again
+ ASSERT_EQ(E_OK,pDatabaseHandler.getListSourceMainNotificationConfigurations(sourceID,returnList))
+ << "ERROR: database error";
+
+ ASSERT_EQ(returnList[0].notificationParameter,notify.notificationParameter);
+ ASSERT_EQ(returnList[0].notificationStatus,notify.notificationStatus);
+ ASSERT_EQ(returnList[0].notificationType,notify.notificationType);
+
+ ASSERT_EQ(returnList[1].notificationParameter,notify1.notificationParameter);
+ ASSERT_EQ(returnList[1].notificationStatus,notify1.notificationStatus);
+ ASSERT_EQ(returnList[1].notificationType,notify1.notificationType);
+
+}
+
+TEST_F(CAmDatabaseHandlerTest,changeMainNotificationsSources)
+{
+ am_Source_s testSourceData;
+ pCF.createSource(testSourceData);
+ testSourceData.sourceID = 4;
+ am_sourceID_t sourceID;
+ std::vector<am_Source_s> listSources;
+ std::vector<am_NotificationConfiguration_s>returnList,returnList1;
+
+ am_NotificationConfiguration_s notify;
+ notify.notificationType=NT_UNKNOWN;
+ notify.notificationStatus=NS_CHANGE;
+ notify.notificationParameter=25;
+
+ testSourceData.listMainNotificationConfigurations.push_back(notify);
+
+ am_NotificationConfiguration_s notify1;
+ notify1.notificationType=NT_MAX;
+ notify1.notificationStatus=NS_PERIODIC;
+ notify1.notificationParameter=5;
+
+ am_NotificationConfiguration_s notify2;
+ notify2.notificationType=NT_MAX;
+ notify2.notificationStatus=NS_CHANGE;
+ notify2.notificationParameter=10;
+
+ testSourceData.listMainNotificationConfigurations.push_back(notify1);
+
+ //enter the sink in the database
+ ASSERT_EQ(E_OK,pDatabaseHandler.enterSourceDB(testSourceData,sourceID))
+ << "ERROR: database error";
+
+ //read it again
+ ASSERT_EQ(E_OK,pDatabaseHandler.getListSourceMainNotificationConfigurations(sourceID,returnList))
+ << "ERROR: database error";
+
+ ASSERT_EQ(returnList[0].notificationParameter,notify.notificationParameter);
+ ASSERT_EQ(returnList[0].notificationStatus,notify.notificationStatus);
+ ASSERT_EQ(returnList[0].notificationType,notify.notificationType);
+
+ ASSERT_EQ(returnList[1].notificationParameter,notify1.notificationParameter);
+ ASSERT_EQ(returnList[1].notificationStatus,notify1.notificationStatus);
+ ASSERT_EQ(returnList[1].notificationType,notify1.notificationType);
+
+ //change a setting
+ ASSERT_EQ(E_OK,pDatabaseHandler.changeMainSourceNotificationConfigurationDB(sourceID,notify2));
+
+ ASSERT_EQ(E_OK,pDatabaseHandler.getListSourceMainNotificationConfigurations(sourceID,returnList1))
+ << "ERROR: database error";
+
+ ASSERT_EQ(returnList1[1].notificationParameter,notify2.notificationParameter);
+ ASSERT_EQ(returnList1[1].notificationStatus,notify2.notificationStatus);
+ ASSERT_EQ(returnList1[1].notificationType,notify2.notificationType);
+
+}
+
+TEST_F(CAmDatabaseHandlerTest,changeMainNotificationsSink)
+{
+ am_Sink_s testSinkData;
+ pCF.createSink(testSinkData);
+ testSinkData.sinkID = 4;
+ am_sinkID_t sinkID;
+ std::vector<am_Sink_s> listSinks;
+ std::vector<am_NotificationConfiguration_s>returnList,returnList1;
+
+ am_NotificationConfiguration_s notify;
+ notify.notificationType=NT_UNKNOWN;
+ notify.notificationStatus=NS_CHANGE;
+ notify.notificationParameter=25;
+
+ testSinkData.listMainNotificationConfigurations.push_back(notify);
+
+ am_NotificationConfiguration_s notify1;
+ notify1.notificationType=NT_MAX;
+ notify1.notificationStatus=NS_PERIODIC;
+ notify1.notificationParameter=5;
+
+ am_NotificationConfiguration_s notify2;
+ notify2.notificationType=NT_MAX;
+ notify2.notificationStatus=NS_CHANGE;
+ notify2.notificationParameter=27;
+
+ testSinkData.listMainNotificationConfigurations.push_back(notify1);
+
+ //enter the sink in the database
+ ASSERT_EQ(E_OK,pDatabaseHandler.enterSinkDB(testSinkData,sinkID))
+ << "ERROR: database error";
+
+ //read it again
+ ASSERT_EQ(E_OK,pDatabaseHandler.getListSinkMainNotificationConfigurations(sinkID,returnList))
+ << "ERROR: database error";
+
+ ASSERT_EQ(returnList[0].notificationParameter,notify.notificationParameter);
+ ASSERT_EQ(returnList[0].notificationStatus,notify.notificationStatus);
+ ASSERT_EQ(returnList[0].notificationType,notify.notificationType);
+
+ ASSERT_EQ(returnList[1].notificationParameter,notify1.notificationParameter);
+ ASSERT_EQ(returnList[1].notificationStatus,notify1.notificationStatus);
+ ASSERT_EQ(returnList[1].notificationType,notify1.notificationType);
+
+ ASSERT_EQ(E_OK,pDatabaseHandler.changeMainSinkNotificationConfigurationDB(sinkID,notify2))
+ << "ERROR: database error";
+
+ ASSERT_EQ(E_OK,pDatabaseHandler.getListSinkMainNotificationConfigurations(sinkID,returnList1))
+ << "ERROR: database error";
+
+ ASSERT_EQ(returnList1[1].notificationParameter,notify2.notificationParameter);
+ ASSERT_EQ(returnList1[1].notificationStatus,notify2.notificationStatus);
+ ASSERT_EQ(returnList1[1].notificationType,notify2.notificationType);
+}
+
//Commented out - gives always a warning..
//TEST_F(databaseTest,registerDomainFailonID0)
//{
diff --git a/AudioManagerDaemon/test/AmDatabaseHandlerTest/CMakeLists.txt b/AudioManagerDaemon/test/AmDatabaseHandlerTest/CMakeLists.txt
index 184a50d..24f79be 100644
--- a/AudioManagerDaemon/test/AmDatabaseHandlerTest/CMakeLists.txt
+++ b/AudioManagerDaemon/test/AmDatabaseHandlerTest/CMakeLists.txt
@@ -55,6 +55,8 @@ file(GLOB DATABASE_SRCS_CXX
"../../src/CAmSocketHandler.cpp"
"../../src/CAmCommandReceiver.cpp"
"../../src/CAmRoutingReceiver.cpp"
+ "../../src/CAmNodeStateCommunicator.cpp"
+ "../../src/CAmDbusWrapper.cpp"
"../CAmCommonFunctions.cpp"
"*.cpp"
)
diff --git a/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/CAmNodeStateCommunicatorTest.cpp b/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/CAmNodeStateCommunicatorTest.cpp
new file mode 100644
index 0000000..0624ff4
--- /dev/null
+++ b/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/CAmNodeStateCommunicatorTest.cpp
@@ -0,0 +1,240 @@
+/**
+ * Copyright (C) 2012, BMW AG
+ *
+ * This file is part of GENIVI Project AudioManager.
+ *
+ * Contributions are licensed to the GENIVI Alliance under one or more
+ * Contribution License Agreements.
+ *
+ * \copyright
+ * This Source Code Form is subject to the terms of the
+ * Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with
+ * this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ *
+ * \author Christian Linke, christian.linke@bmw.de BMW 2012
+ *
+ * \file CAmNodeStateCommunicatorTest.cpp
+ * For further information see http://www.genivi.org/.
+ *
+ */
+
+#include "CAmNodeStateCommunicatorTest.h"
+#include <Python.h>
+#include "shared/CAmDltWrapper.h"
+#include "shared/CAmSocketHandler.h"
+#include "shared/CAmDbusWrapper.h"
+
+using namespace testing;
+using namespace am;
+
+static CAmEnvironment* env;
+
+CAmNodeStateCommunicatorTest::CAmNodeStateCommunicatorTest()
+{
+}
+
+CAmNodeStateCommunicatorTest::~CAmNodeStateCommunicatorTest()
+{
+ // TODO Auto-generated destructor stub
+}
+
+/**This is the thread for the nsm python fake
+ *
+ * @param
+ */
+void* nsmThread (void*)
+{
+ system("python nsm.py");
+ return (NULL);
+}
+
+/**this is the thread the mainloop runs in
+ *
+ * @param importHandler
+ */
+void* mainLoop(void* importHandler)
+{
+ CAmSocketHandler* handler=static_cast<CAmSocketHandler*>(importHandler);
+ handler->start_listenting();
+ return (NULL);
+}
+
+
+
+TEST_F(CAmNodeStateCommunicatorTest, nsmChangeNodeState)
+{
+ env->pControlInterfaceBackdoor.replaceController(&env->pControlSender,&pMockControlInterface);
+ NsmNodeState_e newstate(NsmNodeState_BaseRunning) ;
+ EXPECT_CALL(pMockControlInterface,hookSystemNodeStateChanged(newstate));
+ std::ostringstream send;
+ send<<"python send2nsm.py nodeState "<<static_cast<std::int32_t>(newstate);
+ system(send.str().c_str());
+}
+
+TEST_F(CAmNodeStateCommunicatorTest, nsmChangeApplicationMode)
+{
+ env->pControlInterfaceBackdoor.replaceController(&env->pControlSender,&pMockControlInterface);
+ NsmApplicationMode_e appmode(NsmApplicationMode_Swl) ;
+ EXPECT_CALL(pMockControlInterface,hookSystemNodeApplicationModeChanged(appmode));
+ std::ostringstream send;
+ send<<"python send2nsm.py appMode "<<static_cast<std::int32_t>(appmode);
+ system(send.str().c_str());
+}
+
+TEST_F(CAmNodeStateCommunicatorTest, nsmChangeSessionState)
+{
+ env->pControlInterfaceBackdoor.replaceController(&env->pControlSender,&pMockControlInterface);
+ std::string sessionName("mySession");
+ NsmSeat_e seatID(NsmSeat_CoDriver);
+ NsmSessionState_e sessionState(NsmSessionState_Inactive) ;
+ EXPECT_CALL(pMockControlInterface,hookSystemSessionStateChanged(sessionName,seatID,sessionState));
+ std::ostringstream send;
+ send<<"python send2nsm.py sessionState "<<sessionName<<" "<<static_cast<std::int32_t>(seatID)<<" "<<static_cast<int32_t>(sessionState);
+ system(send.str().c_str());
+}
+
+TEST_F(CAmNodeStateCommunicatorTest, getRestartReason)
+{
+ env->pControlInterfaceBackdoor.replaceController(&env->pControlSender,&pMockControlInterface);
+ NsmRestartReason_e restartReason;
+ ASSERT_EQ(E_OK,env->nsmController.nsmGetRestartReasonProperty(restartReason));
+ ASSERT_EQ(restartReason,1);
+}
+
+TEST_F(CAmNodeStateCommunicatorTest, getShutdownReason)
+{
+ env->pControlInterfaceBackdoor.replaceController(&env->pControlSender,&pMockControlInterface);
+ NsmShutdownReason_e ShutdownReason;
+ ASSERT_EQ(E_OK,env->nsmController.nsmGetShutdownReasonProperty(ShutdownReason));
+ ASSERT_EQ(ShutdownReason,2);
+}
+
+TEST_F(CAmNodeStateCommunicatorTest, getWakeUpReason)
+{
+ env->pControlInterfaceBackdoor.replaceController(&env->pControlSender,&pMockControlInterface);
+ NsmRunningReason_e WakeUpReason;
+ ASSERT_EQ(E_OK,env->nsmController.nsmGetRunningReasonProperty(WakeUpReason));
+ ASSERT_EQ(WakeUpReason,3);
+}
+
+TEST_F(CAmNodeStateCommunicatorTest, getNodeState)
+{
+ env->pControlInterfaceBackdoor.replaceController(&env->pControlSender,&pMockControlInterface);
+ NsmNodeState_e nodeState;
+ ASSERT_EQ(NsmErrorStatus_e::NsmErrorStatus_Ok,env->nsmController.nsmGetNodeState(nodeState));
+ ASSERT_EQ(nodeState,1);
+}
+
+TEST_F(CAmNodeStateCommunicatorTest, getApplicationMode)
+{
+ env->pControlInterfaceBackdoor.replaceController(&env->pControlSender,&pMockControlInterface);
+ NsmApplicationMode_e applicationMode;
+ ASSERT_EQ(NsmErrorStatus_e::NsmErrorStatus_Error,env->nsmController.nsmGetApplicationMode(applicationMode));
+ ASSERT_EQ(applicationMode,5);
+}
+
+TEST_F(CAmNodeStateCommunicatorTest, getSessionState)
+{
+ env->pControlInterfaceBackdoor.replaceController(&env->pControlSender,&pMockControlInterface);
+ std::string sessionName("mySession");
+ NsmSeat_e seatID(NsmSeat_Driver);
+ NsmSessionState_e sessionState;
+ ASSERT_EQ(NsmErrorStatus_e::NsmErrorStatus_Ok,env->nsmController.nsmGetSessionState(sessionName,seatID,sessionState));
+ ASSERT_EQ(sessionState,5);
+}
+
+TEST_F(CAmNodeStateCommunicatorTest, RegisterShutdownClient)
+{
+ env->pControlInterfaceBackdoor.replaceController(&env->pControlSender,&pMockControlInterface);
+ uint32_t shutdownmode(1), timeoutMs(100);
+ ASSERT_EQ(NsmErrorStatus_e::NsmErrorStatus_Ok,env->nsmController.nsmRegisterShutdownClient(shutdownmode,timeoutMs));
+}
+
+TEST_F(CAmNodeStateCommunicatorTest, receiveLifecycleRequest)
+{
+ env->pControlInterfaceBackdoor.replaceController(&env->pControlSender,&pMockControlInterface);
+ uint32_t shutdownmode(1),timeoutMs(100),Request(1),RequestID(4);
+ EXPECT_CALL(pMockControlInterface,hookSystemLifecycleRequest(Request,RequestID)).WillOnce(Return(NsmErrorStatus_e::NsmErrorStatus_Ok));
+ ASSERT_EQ(NsmErrorStatus_e::NsmErrorStatus_Ok,env->nsmController.nsmRegisterShutdownClient(shutdownmode,timeoutMs));
+ std::ostringstream send;
+ send << "python send2nsm.py LifecycleRequest "<<static_cast<std::int32_t>(Request)<<" "<<static_cast<int32_t>(RequestID);
+ system(send.str().c_str());
+}
+
+TEST_F(CAmNodeStateCommunicatorTest, UnRegisterShutdownClient)
+{
+ env->pControlInterfaceBackdoor.replaceController(&env->pControlSender,&pMockControlInterface);
+ uint32_t shutdownmode(1),timeoutMs(100);
+ ASSERT_EQ(NsmErrorStatus_e::NsmErrorStatus_Ok,env->nsmController.nsmRegisterShutdownClient(shutdownmode,timeoutMs));
+ ASSERT_EQ(NsmErrorStatus_e::NsmErrorStatus_Ok,env->nsmController.nsmUnRegisterShutdownClient(shutdownmode));
+
+}
+
+TEST_F(CAmNodeStateCommunicatorTest, sendLifecycleRequestComplete)
+{
+ env->pControlInterfaceBackdoor.replaceController(&env->pControlSender,&pMockControlInterface);
+ uint32_t RequestID(22);
+ NsmErrorStatus_e errorStatus(NsmErrorStatus_Internal);
+ ASSERT_EQ(NsmErrorStatus_e::NsmErrorStatus_Ok,env->nsmController.nsmSendLifecycleRequestComplete(RequestID,errorStatus));
+}
+
+TEST_F(CAmNodeStateCommunicatorTest, getInterfaceVersion)
+{
+ env->pControlInterfaceBackdoor.replaceController(&env->pControlSender,&pMockControlInterface);
+ uint32_t version(0);
+ ASSERT_EQ(E_OK,env->nsmController.nsmGetInterfaceVersion(version));
+ ASSERT_EQ(version,static_cast<uint32_t>(23));
+}
+
+void CAmNodeStateCommunicatorTest::SetUp()
+{
+}
+
+void CAmNodeStateCommunicatorTest::TearDown()
+{
+}
+
+int main(int argc, char **argv)
+{
+ CAmDltWrapper::instance()->registerApp("nsm", "nsmtest");
+ logInfo("nsmtest Test started ");
+ ::testing::InitGoogleTest(&argc, argv);
+ ::testing::Environment* const env = ::testing::AddGlobalTestEnvironment(new CAmEnvironment);
+ (void) env;
+ return RUN_ALL_TESTS();
+}
+
+CAmEnvironment::CAmEnvironment() :
+ pControlInterfaceBackdoor(),
+ pControlSender(),
+ iSocketHandler(),
+ wrapper(&iSocketHandler,DBusBusType::DBUS_BUS_SESSION),
+ nsmController(&wrapper)
+{
+ env=this;
+}
+
+CAmEnvironment::~CAmEnvironment()
+{
+}
+
+void CAmEnvironment::SetUp()
+{
+ //create the nsm thread
+ pthread_create(&pNsmThread, NULL, nsmThread, NULL);
+ nsmController.registerControlSender(&pControlSender);
+ //create the mainloop thread
+ pthread_create(&pMainLoopThread, NULL, mainLoop, (void*)&iSocketHandler);
+ sleep(1);
+}
+
+void CAmEnvironment::TearDown()
+{
+ //end the nsm per dbus
+ system("python send2nsm.py finish");
+ pthread_join(pNsmThread, NULL);
+ //end the mainloop
+ iSocketHandler.exit_mainloop();
+ pthread_join(pMainLoopThread, NULL);
+}
diff --git a/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/CAmNodeStateCommunicatorTest.h b/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/CAmNodeStateCommunicatorTest.h
new file mode 100644
index 0000000..bd83e97
--- /dev/null
+++ b/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/CAmNodeStateCommunicatorTest.h
@@ -0,0 +1,61 @@
+/**
+ * Copyright (C) 2012, BMW AG
+ *
+ * This file is part of GENIVI Project AudioManager.
+ *
+ * Contributions are licensed to the GENIVI Alliance under one or more
+ * Contribution License Agreements.
+ *
+ * \copyright
+ * This Source Code Form is subject to the terms of the
+ * Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with
+ * this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ *
+ * \author Christian Linke, christian.linke@bmw.de BMW 2012
+ *
+ * \file CAmNodeStateCommunicatorTest.h
+ * For further information see http://www.genivi.org/.
+ *
+ */
+#ifndef CAMNODESTATECOMMUNICATORTEST_H_
+#define CAMNODESTATECOMMUNICATORTEST_H_
+
+#include "CAmNodeStateCommunicator.h"
+#include "CAmControlSender.h"
+#include "gtest/gtest.h"
+#include "gmock/gmock.h"
+#include "../IAmControlBackdoor.h"
+#include "../MockIAmControlSend.h"
+
+using namespace testing;
+using namespace am;
+
+class CAmEnvironment : public ::testing::Environment
+{
+public:
+ IAmControlBackdoor pControlInterfaceBackdoor;
+ CAmControlSender pControlSender;
+ CAmSocketHandler iSocketHandler;
+ CAmDbusWrapper wrapper;
+ CAmNodeStateCommunicator nsmController;
+ pthread_t pNsmThread, pMainLoopThread;
+ CAmEnvironment();
+ ~CAmEnvironment();
+ void SetUp();
+ // Override this to define how to tear down the environment.
+ void TearDown();
+};
+
+class CAmNodeStateCommunicatorTest:public ::testing::Test
+{
+public:
+ MockIAmControlSend pMockControlInterface;
+ CAmNodeStateCommunicatorTest();
+ virtual ~CAmNodeStateCommunicatorTest();
+ void SetUp();
+ void TearDown();
+};
+
+
+#endif /* CAMNODESTATECOMMUNICATORTEST_H_ */
diff --git a/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/CMakeLists.txt b/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/CMakeLists.txt
new file mode 100644
index 0000000..4300e49
--- /dev/null
+++ b/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/CMakeLists.txt
@@ -0,0 +1,112 @@
+# Copyright (c) 2012 GENIVI Alliance
+# Copyright (c) 2012 BMW
+#
+# author Christian Linke, christian.linke@bmw.de BMW 2011,2012
+#
+# copyright
+# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,
+# including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+# THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# For further information see http://www.genivi.org/.
+#
+
+cmake_minimum_required(VERSION 2.6)
+
+PROJECT(AmNodeStateCommunicatorTest)
+
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -DUNIT_TEST=1")
+
+set(STD_INCLUDE_DIRS "/usr/include")
+set(EXECUTABLE_OUTPUT_PATH ${TEST_EXECUTABLE_OUTPUT_PATH})
+
+FIND_PACKAGE(Threads)
+FIND_PACKAGE(DBUS REQUIRED)
+FIND_PACKAGE(PkgConfig)
+FIND_PACKAGE(PythonLibs REQUIRED)
+pkg_check_modules(SQLITE REQUIRED sqlite3)
+
+
+IF(WITH_DLT)
+ pkg_check_modules(DLT REQUIRED automotive-dlt>=2.2.0)
+ENDIF(WITH_DLT)
+
+INCLUDE_DIRECTORIES(
+ ${STD_INCLUDE_DIRS}
+ ${CMAKE_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${AUDIO_INCLUDE_FOLDER}
+ ${DBUS_ARCH_INCLUDE_DIR}
+ ${DBUS_INCLUDE_FOLDER}
+ ${CMAKE_SOURCE_DIR}
+ ${DLT_INCLUDE_DIRS}
+ ${DBUS_INCLUDE_DIR}
+ ${INCLUDE_FOLDER}
+ ${PYTHON_INCLUDE_DIRS}
+ ${GOOGLE_TEST_INCLUDE_DIR}
+ ${GMOCK_INCLUDE_DIR}
+ "../../include"
+)
+
+file(GLOB NODESTATECOMMUNICATOR
+ "../../src/CAmDatabaseHandler.cpp"
+ "../../src/CAmDatabaseObserver.cpp"
+ "../../src/CAmRoutingSender.cpp"
+ "../../src/CAmRoutingReceiver.cpp"
+ "../../src/CAmDbusWrapper.cpp"
+ "../../src/CAmDltWrapper.cpp"
+ "../../src/CAmSocketHandler.cpp"
+ "../../src/CAmNodeStateCommunicator.cpp"
+ "../../src/CAmControlSender.cpp"
+ "../../src/CAmCommandSender.cpp"
+ "../../src/CAmCommandReceiver.cpp"
+ "../CAmCommonFunctions.cpp"
+ "../../src/CAmRouter.cpp"
+ "*.cpp"
+ )
+
+ADD_EXECUTABLE(AmNodeStateCommunicatorTest ${NODESTATECOMMUNICATOR})
+
+TARGET_LINK_LIBRARIES(AmNodeStateCommunicatorTest
+ ${SQLITE_LIBRARIES}
+ ${DLT_LIBRARIES}
+ ${DBUS_LIBRARY}
+ ${CMAKE_DL_LIBS}
+ ${CMAKE_THREAD_LIBS_INIT}
+ ${PYTHON_LIBRARY}
+ gtest
+ gmock
+)
+
+ADD_DEPENDENCIES(AmNodeStateCommunicatorTest gtest gmock)
+
+INSTALL(TARGETS AmNodeStateCommunicatorTest
+ DESTINATION "~/AudioManagerTest/"
+ PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
+ COMPONENT tests
+)
+
+INSTALL(FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/org.genivi.NodeStateManager.Consumer.xml
+ ${CMAKE_CURRENT_SOURCE_DIR}/nsm.py
+ ${CMAKE_CURRENT_SOURCE_DIR}/send2nsm.py
+ DESTINATION "~/AudioManagerTest/"
+ PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
+ COMPONENT tests
+)
+
+IF(USE_BUILD_LIBS)
+ execute_process(
+ COMMAND mkdir -p "${EXECUTABLE_OUTPUT_PATH}"
+ COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/org.genivi.NodeStateManager.Consumer.xml" ${EXECUTABLE_OUTPUT_PATH}/org.genivi.NodeStateManager.Consumer.xml
+ COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/nsm.py" ${EXECUTABLE_OUTPUT_PATH}/nsm.py
+ COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/send2nsm.py" ${EXECUTABLE_OUTPUT_PATH}/send2nsm.py)
+ENDIF(USE_BUILD_LIBS)
+
+SET(ADD_DEPEND "audiomanager-bin" "sqlite3(>=3.6.22)" "dlt" "libdbus-1-3(>=1.2.16)" "gtest" "libpthread-stubs0")
+set_property(GLOBAL APPEND PROPERTY tests_prop "${ADD_DEPEND}")
+
diff --git a/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/nsm.py b/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/nsm.py
new file mode 100644
index 0000000..7a02d05
--- /dev/null
+++ b/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/nsm.py
@@ -0,0 +1,179 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2012, BMW AG
+#
+# This file is part of GENIVI Project AudioManager.
+#
+# Contributions are licensed to the GENIVI Alliance under one or more
+# Contribution License Agreements.
+#
+# \copyright
+# This Source Code Form is subject to the terms of the
+# Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with
+# this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#
+# \author Christian Linke, christian.linke@bmw.de BMW 2012
+#
+# For further information see http://www.genivi.org/.
+#
+
+import sys
+import traceback
+import gobject
+import math
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+
+loop = gobject.MainLoop()
+dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+
+class NodeStateManager(dbus.service.Object):
+ def __init__(self, loop):
+ busName = dbus.service.BusName('org.genivi.NodeStateManager', bus = dbus.SessionBus())
+ dbus.service.Object.__init__(self, busName, '/org/genivi/NodeStateManager')
+ self.properties = {'RestartReason': 1, 'ShutdownReason': 2, 'WakeUpReason' :3, 'BootMode' :4}
+ self.ABus=""
+ self.APath=""
+ self.loop=loop
+
+ @dbus.service.method(dbus_interface='org.freedesktop.DBus.Introspectable', out_signature = 's')
+ def Introspect(self):
+ f = open('org.genivi.NodeStateManager.Consumer.xml', "r")
+ text = f.read()
+ return text
+
+ @dbus.service.method(dbus_interface='org.genivi.NodeStateManager.Consumer', out_signature = 'ii')
+ def GetNodeState(self):
+ NodeStateId=1
+ ErrorCode=1
+ print('[----------] send out nodeState' + str(NodeStateId) + ' ErrorCode '+ str(1))
+ return NodeStateId, ErrorCode
+
+ @dbus.service.method('org.genivi.NodeStateManager.Consumer', out_signature = 'ii')
+ def GetApplicationMode(self):
+ ApplicationModeId=5
+ ErrorCode=2
+ print('[----------] send out ApplicationMode' + str(ApplicationModeId) + ' ErrorCode '+ str(2))
+ return ApplicationModeId, ErrorCode
+
+ @dbus.service.method('org.genivi.NodeStateManager.Consumer', in_signature='si', out_signature = 'ii')
+ def GetSessionState(self,SessionName,seatID):
+ SessionState=0
+ ErrorCode=2
+
+ if SessionName=="mySession" and seatID==1:
+ SessionState=5
+ ErrorCode=1
+
+ print('[----------] GetSessionState for session ' + SessionName + ' seatID '+ str(seatID) + ' returnState ' + str (SessionState))
+ return SessionState, ErrorCode
+
+ @dbus.service.method('org.genivi.NodeStateManager.Consumer', in_signature='ssuu', out_signature = 'i')
+ def RegisterShutdownClient(self,BName,ObjName,ShutdownMode,TimeoutMs):
+ print('[----------] Busname: ' + BName)
+ print('[----------] ObjName: ' + ObjName)
+ print('[----------] ShutdownMode: ' + str(ShutdownMode))
+ print('[----------] TimeoutMs: ' + str(TimeoutMs))
+ ErrorCode=1
+ if TimeoutMs!=100:
+ ErrorCode=3
+ if BName!="org.genivi.audiomanager":
+ ErrorCode=4
+ if ShutdownMode!=1:
+ ErrorCode=5
+ if ObjName!="/org/genivi/audiomanager/LifeCycleConsumer":
+ ErrorCode=6
+ self.ABus=BName
+ self.APath=ObjName
+ return ErrorCode
+
+ @dbus.service.method('org.genivi.NodeStateManager.Consumer', in_signature='ssu', out_signature = 'i')
+ def UnRegisterShutdownClient(self,BusName,ObjName,ShutdownMode):
+ print('[----------] Busname: ' + str(BusName))
+ print('[----------] ObjName: ' + str(ObjName))
+ print('[----------] ShutdownMode: ' + str(ShutdownMode))
+ ErrorCode=1
+ if BusName!=self.ABus:
+ ErrorCode=2
+ if ObjName!=self.APath:
+ ErrorCode=2
+ if ShutdownMode!=1:
+ ErrorCode=2
+ return ErrorCode
+
+ @dbus.service.method(dbus_interface='org.genivi.NodeStateManager.Consumer', out_signature = 'u')
+ def GetInterfaceVersion(self):
+ version=23
+ return version
+
+ @dbus.service.method('org.genivi.NodeStateManager.Consumer', in_signature='ui', out_signature='i')
+ def LifecycleRequestComplete(self,RequestID,Status):
+ print('[----------] RequestId: ' + str(RequestID))
+ print('[----------] Status: ' + str(Status))
+ ErrorCode=1
+ if RequestID!=22:
+ ErrorCode=2
+ if Status!=4:
+ ErrorCode=2
+ return ErrorCode
+
+ @dbus.service.method(dbus.PROPERTIES_IFACE, in_signature='ss', out_signature='v')
+ def Get(self, interface, prop):
+ if prop in self.properties:
+ print('[----------] send out ' + str(self.properties[prop]) + ' for property '+ prop)
+ return self.properties[prop]
+ return 0
+
+ @dbus.service.method(dbus.PROPERTIES_IFACE, in_signature='ssv')
+ def Set(self, interface, prop, value):
+ return 3
+
+ @dbus.service.method(dbus.PROPERTIES_IFACE, in_signature='s', out_signature='a{sv}')
+ def GetAll(self, interface):
+ return self.properties
+
+ @dbus.service.signal(dbus_interface='org.genivi.NodeStateManager.Consumer', signature='i')
+ def NodeApplicationMode(self, ApplicationModeId):
+ print "[----------] Send out application mode ID %d" % (ApplicationModeId)
+
+ @dbus.service.signal(dbus_interface='org.genivi.NodeStateManager.Consumer', signature='i')
+ def NodeState(self, NodeState):
+ print "[----------] Send out NodeState %d" % (NodeState)
+
+ @dbus.service.signal(dbus_interface='org.genivi.NodeStateManager.Consumer', signature='sii')
+ def SessionStateChanged(self, SessionStateName,SeatID,SessionState):
+ print "[----------] Send out SessionStateChanged " + SessionStateName
+
+ @dbus.service.method('org.genivi.NodeStateManager.Control', in_signature='i')
+ def sendNodeApplicationMode(self, input):
+ self.NodeApplicationMode(input)
+ return input
+
+ @dbus.service.method('org.genivi.NodeStateManager.Control', in_signature='i')
+ def sendNodeState(self, input):
+ self.NodeState(input)
+ return input
+
+ @dbus.service.method('org.genivi.NodeStateManager.Control', in_signature='sii')
+ def sendSessionState(self, SessionStateName,SeatID,SessionState):
+ self.SessionStateChanged (SessionStateName,SeatID,SessionState)
+ return SeatID
+
+ @dbus.service.method('org.genivi.NodeStateManager.Control', in_signature='uu', out_signature='i')
+ def sendLifeCycleRequest(self, request, requestID):
+ bus = dbus.SessionBus()
+ remote_object = bus.get_object(self.ABus,self.APath)
+ iface = dbus.Interface(remote_object, 'org.genivi.NodeStateManager.LifeCycleConsumer')
+ iface.LifecycleRequest(request,requestID)
+ return 42
+
+ @dbus.service.method('org.genivi.NodeStateManager.Control')
+ def finish(self):
+ print '[----------] Going to exit now!'
+ self.loop.quit()
+ return 0
+
+nsm = NodeStateManager(loop)
+loop.run()
diff --git a/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/org.genivi.NodeStateManager.Consumer.xml b/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/org.genivi.NodeStateManager.Consumer.xml
new file mode 100644
index 0000000..bb40a96
--- /dev/null
+++ b/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/org.genivi.NodeStateManager.Consumer.xml
@@ -0,0 +1,259 @@
+<!-- Auto-Generated interface from Rhapsody: 'Repository::ssw_LifecycleSupport::NodeStateManagement::Concept::Interface::INSM_Consumer' -->
+<!-- Created at 2012-06-01 09:36:05 by uid65904 -->
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
+<node>
+<interface name="org.freedesktop.DBus.Introspectable">
+ <method name="Introspect">
+ <arg name="data" direction="out" type="s"/>
+ </method>
+</interface>
+<interface name="org.freedesktop.DBus.Properties">
+ <method name="Get">
+ <arg name="interface" direction="in" type="s"/>
+ <arg name="propname" direction="in" type="s"/>
+ <arg name="value" direction="out" type="v"/>
+ </method>
+
+ <method name="Set">
+ <arg name="interface" direction="in" type="s"/>
+ <arg name="propname" direction="in" type="s"/>
+ <arg name="value" direction="in" type="v"/>
+ </method>
+
+ <method name="GetAll">
+ <arg name="interface" direction="in" type="s"/>
+ <arg name="props" direction="out" type="a{sv}"/>
+ </method>
+</interface>
+ <!--
+ org.genivi.NodeStateManager.Consumer:
+ @short_description: "Consumer" interface of the NodeStateManager.
+
+ This interface contains functions which are not safety critical and can be accessed by "every" client without further restrictions.
+ -->
+ <interface name="org.genivi.NodeStateManager.Consumer">
+ <!--
+ RestartReason: This property informs clients about the reason for the last restart. The values are based upon the enummeration NsmRestartReason_e. Note: The value is only set once at start-up.
+ -->
+ <property name="RestartReason" type="i" access="read"/>
+
+ <!--
+ ShutdownReason: This property informs clients about the reason for the last shutdown. The values are based upon the enummeration NsmShutdownReason_e. Note: The value is only set once at start-up.
+ -->
+ <property name="ShutdownReason" type="i" access="read"/>
+
+ <!--
+ WakeUpReason: This property informs clients about the recent reason for waking up the target. The values are based upon the enummeration NsmWakeUpReason_e. Note: The value is only set once at start-up.
+ -->
+ <property name="WakeUpReason" type="i" access="read"/>
+
+ <!--
+ BootMode: This property informs clients about the recent BootMode of the target. The values will be defined by a third party header, which has not been delivered yet. The description needs to be updated as soon as the header is available.
+ -->
+ <property name="BootMode" type="i" access="read"/>
+
+ <!--
+ NodeState:
+ @NodeState: Numeric value for the current NodeState, defined in NsmNodeState_e.
+
+ Clients can register for notifications when the NodeState is updated inside the NodeStateManager. This signal is sent to registered clients and will include the current NodeState as a parameter.
+ -->
+ <signal name="NodeState">
+ <arg name="NodeState" type="i"/>
+ </signal>
+
+ <!--
+ NodeApplicationMode:
+ @ApplicationModeId: Numeric value for the current ApplicationMode, defined in NsmAplicationMode_e.
+
+ Clients can register for notifications when the NodeApplicationMode is updated inside the NodeStateManager. This signal is sent to registered clients and will include the current NodeApplicationMode as a parameter.
+ -->
+ <signal name="NodeApplicationMode">
+ <arg name="ApplicationModeId" type="i"/>
+ </signal>
+
+ <!--
+ SessionStateChanged:
+ @SessionStateName: The SessionName will be based upon either the pre-defined platform SessionNames or using a newly added product defined session name.
+ @SeatID: This parameter will be based upon the enum NsmSeat_e.
+ @SessionState: This parameter will be based upon the NsmSessionState_e but it will not be bounded by the values in that enumeration. The listed values are the default values that are mandatory for platform sessions, but product sessions may have additional session states.
+
+ This signal is sent to registered clients when a particular session is state is changed. The client can register for notification about a specific session through the use of the SessionName, as a "match rule".
+ -->
+ <signal name="SessionStateChanged">
+ <arg name="SessionStateName" type="s"/>
+ <arg name="SeatID" type="i"/>
+ <arg name="SessionState" type="i"/>
+ </signal>
+
+ <!--
+ GetNodeState:
+ @NodeStateId: Will be based on the NsmNodeState_e.
+ @ErrorCode: Return value passed to the caller, based upon NsmErrorStatus_e.
+
+ The method is used by other applications to get the NodeState without the need of registration to the signal.
+ -->
+ <method name="GetNodeState">
+ <arg name="NodeStateId" direction="out" type="i"/>
+ <arg name="ErrorCode" direction="out" type="i"/>
+ </method>
+
+ <!--
+ SetSessionState:
+ @SessionName: The SessionName will be based upon either the pre-defined platform SessionNames (see NSM content page) or using a newly added product defined session name.
+ @SessionOwner: This parameter defines the name of the application that is setting the state of the session. This must be the applications systemd unit filename.
+ @SeatID: This parameter will be based upon the enum NsmSeat_e
+ @SessionState: This parameter will be based upon the NsmSessionState_e but it will not be bounded by the values in that enumeration. The listed values are the default values that are mandatory for platform sessions, but product sessions may have additional SessionStates.
+ @ErrorCode: Return value passed to the caller, based upon NsmErrorStatus_e.
+
+ The method is used by applications to set the state of a session.
+ -->
+ <method name="SetSessionState">
+ <arg name="SessionName" direction="in" type="s"/>
+ <arg name="SessionOwner" direction="in" type="s"/>
+ <arg name="SeatID" direction="in" type="i"/>
+ <arg name="SessionState" direction="in" type="i"/>
+ <arg name="ErrorCode" direction="out" type="i"/>
+ </method>
+
+ <!--
+ GetSessionState:
+ @SessionName: The SessionName will be based upon either the pre-defined platform session names (see NSM content page) or using a newly added product defined SessionName.
+ @SeatID: This parameter will be based upon the enum NsmSeat_e.
+ @SessionState: This parameter will be based upon the NsmSessionState_e but it will not be bounded by the values in that enumeration. The listed values are the default values that are mandatory for platform sessions, but product sessions may have additional SessionStates.
+ @ErrorCode: Return value passed to the caller, based upon NsmErrorStatus_e.
+
+ The method is used by applications to get the state of a session.
+ -->
+ <method name="GetSessionState">
+ <arg name="SessionName" direction="in" type="s"/>
+ <arg name="SeatID" direction="in" type="i"/>
+ <arg name="SessionState" direction="out" type="i"/>
+ <arg name="ErrorCode" direction="out" type="i"/>
+ </method>
+
+ <!--
+ GetApplicationMode:
+ @ApplicationModeId: This parameter will be based upon the NsmNodeApplicationMode_e.
+ @ErrorCode: Return value passed to the caller, based upon NsmErrorStatus_e.
+
+ The method is used by other applications to get the application mode.
+ -->
+ <method name="GetApplicationMode">
+ <arg name="ApplicationModeId" direction="out" type="i"/>
+ <arg name="ErrorCode" direction="out" type="i"/>
+ </method>
+
+ <!--
+ RegisterShutdownClient:
+ @BusName: Bus name of remote application.
+ @ObjName: Object name of remote object that provides the shutdown interface.
+ @ShutdownMode: Shutdown mode for which client wants to be informed (i.e normal, fast etc).
+ @TimeoutMs: Max. Timeout to wait for response from shutdown client in ms.
+ @ErrorCode: Return value passed to the caller, based upon NsmErrorStatus_e.
+
+ The method is used by other applications to register themselves as shutdown client. Any client that registers must provide a method in their D-Bus object called "LifecycleRequest". This method will take one parameter which is the RequestType (NSM_SHUTDOWNTYPE_NORMAL, NSM_SHUTDOWNTYPE_FAST). For an example of the required client interface please see the BootManager component who will be a client of the NSM.
+ -->
+ <method name="RegisterShutdownClient">
+ <arg name="BusName" direction="in" type="s"/>
+ <arg name="ObjName" direction="in" type="s"/>
+ <arg name="ShutdownMode" direction="in" type="u"/>
+ <arg name="TimeoutMs" direction="in" type="u"/>
+ <arg name="ErrorCode" direction="out" type="i"/>
+ </method>
+
+ <!--
+ UnRegisterShutdownClient:
+ @BusName: Bus name of remote application.
+ @ObjName: Object name of remote object that provides the shutdown interface.
+ @ShutdownMode: Shutdown mode for which client wants to unregister (NSM_SHUTDOWNTYPE_NORMAL, NSM_SHUTDOWNTYPE_FAST).
+ @ErrorCode: Return value passed to the caller, based upon NsmErrorStatus_e.
+
+ The method is used by other applications to unregister themselves as shutdown client.
+ -->
+ <method name="UnRegisterShutdownClient">
+ <arg name="BusName" direction="in" type="s"/>
+ <arg name="ObjName" direction="in" type="s"/>
+ <arg name="ShutdownMode" direction="in" type="u"/>
+ <arg name="ErrorCode" direction="out" type="i"/>
+ </method>
+
+ <!--
+ RegisterSession:
+ @SessionName: The SessionName will be based upon either the pre-defined platform session names (see NSM content page) or using a newly added product defined SessionName.
+ @SessionOwner: This is the name of the application that is registering the new session (this must be the applications systemd unit filename).
+ @SeatID: This parameter will be based upon the enum NsmSeatId_e
+ @SessionState: This parameter will be based upon the NsmSessionState_e but it will not be bounded by the values in that enumeration. The listed values are the default values that are mandatory for platform sessions, but product sessions may have additional session states.
+ @ErrorCode: Return value passed to the caller, based upon NsmErrorStatus_e.
+
+ The method is used by other applications to register a new session whose state should be observed and distributed by the NSM.
+ -->
+ <method name="RegisterSession">
+ <arg name="SessionName" direction="in" type="s"/>
+ <arg name="SessionOwner" direction="in" type="s"/>
+ <arg name="SeatID" direction="in" type="i"/>
+ <arg name="SessionState" direction="in" type="i"/>
+ <arg name="ErrorCode" direction="out" type="i"/>
+ </method>
+
+ <!--
+ UnRegisterSession:
+ @SessionName: The SessionName will be based upon either the pre-defined platform session names (see NSM content page) or using a newly added product defined SessionName.
+ @SessionOwner: This is the name of the application that originally registered the session. It will be validated that this value matches the stored value from the registration.
+ @SeatID: This parameter will be based upon the enum NsmSeat_e.
+ @ErrorCode: Return value passed to the caller, based upon NsmErrorStatus_e.
+
+ The method is used by other applications to remove a new session from the session list hosted by NSM.
+ -->
+ <method name="UnRegisterSession">
+ <arg name="SessionName" direction="in" type="s"/>
+ <arg name="SessionOwner" direction="in" type="s"/>
+ <arg name="SeatID" direction="in" type="i"/>
+ <arg name="ErrorCode" direction="out" type="i"/>
+ </method>
+
+ <!--
+ GetAppHealthCount:
+ @Count: Return value passed to the caller. Number of applications that crashed or terminated accidentally.
+
+ The method returns the number of applications that crashed or terminated accidentally, within the current life cycle. It can be used to observe the system state.
+ -->
+ <method name="GetAppHealthCount">
+ <arg name="Count" direction="out" type="u"/>
+ </method>
+
+ <!--
+ GetInterfaceVersion:
+ @Version: Unsigned integer that represents the version number of the Node State Manager.
+
+ The method returns the version number of the Node State Manager. The number is organized in four bytes:
+
+ Version: VVV.RRR.PPP.BBB
+
+ <literallayout>
+ VVV => Version [1..255]
+ RRR => Release [0..255]
+ PPP => Patch [0..255]
+ BBB => Build [0..255]
+ </literallayout>
+ -->
+ <method name="GetInterfaceVersion">
+ <arg name="Version" direction="out" type="u"/>
+ </method>
+
+ <!--
+ LifecycleRequestComplete:
+ @RequestId: The request Id of the called life cycle client. The value has been passed when "LifecycleRequest" was called.
+ @Status: The result of the call to "LifecycleRequest". NsmErrorStatus_Ok: Request successfully processed. NsmErrorStatus_Error: An error occured while processing the "LifecycleRequest".
+ @ErrorCode: Return value passed to the caller, based upon NsmErrorStatus_e.
+
+ The function has to be called by a "asynchrounous" lifecycle client, when he processed the "LifecycleRequest".
+ -->
+ <method name="LifecycleRequestComplete">
+ <arg name="RequestId" direction="in" type="u"/>
+ <arg name="Status" direction="in" type="i"/>
+ <arg name="ErrorCode" direction="out" type="i"/>
+ </method>
+ </interface>
+</node>
diff --git a/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/send2nsm.py b/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/send2nsm.py
new file mode 100644
index 0000000..3b6cad3
--- /dev/null
+++ b/AudioManagerDaemon/test/AmNodeStateCommunicatorTest/send2nsm.py
@@ -0,0 +1,68 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2012, BMW AG
+#
+# This file is part of GENIVI Project AudioManager.
+#
+# Contributions are licensed to the GENIVI Alliance under one or more
+# Contribution License Agreements.
+#
+# \copyright
+# This Source Code Form is subject to the terms of the
+# Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with
+# this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#
+# \author Christian Linke, christian.linke@bmw.de BMW 2012
+#
+# For further information see http://www.genivi.org/.
+#
+
+import sys
+import traceback
+import gobject
+import math
+import dbus
+import dbus.service
+
+def nodeState (nodeState):
+ bus = dbus.SessionBus()
+ remote_object = bus.get_object('org.genivi.NodeStateManager','/org/genivi/NodeStateManager')
+ iface = dbus.Interface(remote_object, 'org.genivi.NodeStateManager.Control')
+ iface.sendNodeState(int(nodeState))
+
+def appMode (appMode):
+ bus = dbus.SessionBus()
+ remote_object = bus.get_object('org.genivi.NodeStateManager','/org/genivi/NodeStateManager')
+ iface = dbus.Interface(remote_object, 'org.genivi.NodeStateManager.Control')
+ iface.sendNodeApplicationMode(int(appMode))
+
+def sessionState (SessionStateName,SeatID,SessionState):
+ bus = dbus.SessionBus()
+ remote_object = bus.get_object('org.genivi.NodeStateManager','/org/genivi/NodeStateManager')
+ iface = dbus.Interface(remote_object, 'org.genivi.NodeStateManager.Control')
+ iface.sendSessionState(SessionStateName,int(SeatID),int(SessionState))
+
+def finish():
+ bus = dbus.SessionBus()
+ remote_object = bus.get_object('org.genivi.NodeStateManager','/org/genivi/NodeStateManager')
+ iface = dbus.Interface(remote_object, 'org.genivi.NodeStateManager.Control')
+ iface.finish()
+
+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)
+
+command=sys.argv[1]
+if command=="nodeState":
+ nodeState(sys.argv[2])
+if command=="finish":
+ finish()
+if command=="appMode":
+ appMode(sys.argv[2])
+if command=="sessionState":
+ sessionState(sys.argv[2],sys.argv[3],sys.argv[4])
+if command=="LifecycleRequest":
+ LifecycleRequest(sys.argv[2],sys.argv[3])
diff --git a/AudioManagerDaemon/test/AmRouterTest/CAmRouterTest.cpp b/AudioManagerDaemon/test/AmRouterTest/CAmRouterTest.cpp
index 0758a01..9f172be 100644
--- a/AudioManagerDaemon/test/AmRouterTest/CAmRouterTest.cpp
+++ b/AudioManagerDaemon/test/AmRouterTest/CAmRouterTest.cpp
@@ -30,7 +30,7 @@ CAmRouterTest::CAmRouterTest() :
plistCommandPluginDirs(), //
pSocketHandler(), //
pDatabaseHandler(std::string(":memory:")), //
- pControlSender(std::string("")), //
+ pControlSender(), //
pRouter(&pDatabaseHandler, &pControlSender), //
pRoutingSender(plistRoutingPluginDirs), //
pCommandSender(plistCommandPluginDirs), //
@@ -121,7 +121,7 @@ TEST_F(CAmRouterTest,simpleRoute2withDomainNoMatchFormats)
compareRoute.sourceID = sourceID;
ASSERT_EQ(E_OK, pRouter.getRoute(true,sourceID,sinkID,listRoutes));
- ASSERT_EQ(0, listRoutes.size());
+ ASSERT_EQ(static_cast<uint>(0), listRoutes.size());
}
@@ -182,7 +182,7 @@ TEST_F(CAmRouterTest,simpleRoute2withDomain)
compareRoute.sourceID = sourceID;
ASSERT_EQ(E_OK, pRouter.getRoute(true,sourceID,sinkID,listRoutes));
- ASSERT_EQ(1, listRoutes.size());
+ ASSERT_EQ(static_cast<uint>(1), listRoutes.size());
ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
}
@@ -290,7 +290,7 @@ TEST_F(CAmRouterTest,simpleRoute2DomainsOnlyFree)
compareRoute.sourceID = sourceID;
ASSERT_EQ(E_OK, pRouter.getRoute(true,sourceID,sinkID,listRoutes));
- ASSERT_EQ(1, listRoutes.size());
+ ASSERT_EQ(static_cast<uint>(1), listRoutes.size());
ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
}
@@ -412,10 +412,10 @@ TEST_F(CAmRouterTest,simpleRoute2DomainsOnlyFreeNotFree)
ASSERT_EQ(E_OK,pDatabaseHandler.enterConnectionDB(connection1,id2));
ASSERT_EQ(E_OK, pRouter.getRoute(true,sourceID,sinkID,listRoutes));
- ASSERT_EQ(0, listRoutes.size());
+ ASSERT_EQ(static_cast<uint>(0), listRoutes.size());
ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
- ASSERT_EQ(1, listRoutes.size());
+ ASSERT_EQ(static_cast<uint>(1), listRoutes.size());
ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
}
@@ -575,7 +575,7 @@ TEST_F(CAmRouterTest,simpleRoute3DomainsListConnectionFormats_2)
compareRoute.sourceID = sourceID;
ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
- ASSERT_EQ(1, listRoutes.size());
+ ASSERT_EQ(static_cast<uint>(1), listRoutes.size());
ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
}
@@ -729,7 +729,7 @@ TEST_F(CAmRouterTest,simpleRoute3DomainsListConnectionFormats_1)
compareRoute.sourceID = sourceID;
ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
- ASSERT_EQ(1, listRoutes.size());
+ ASSERT_EQ(static_cast<uint>(1), listRoutes.size());
ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
}
@@ -878,7 +878,7 @@ TEST_F(CAmRouterTest,simpleRoute3DomainsListConnectionFormats)
compareRoute.sourceID = sourceID;
ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
- ASSERT_EQ(1, listRoutes.size());
+ ASSERT_EQ(static_cast<uint>(1), listRoutes.size());
ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
}
@@ -1112,7 +1112,7 @@ TEST_F(CAmRouterTest,simpleRoute4Domains2Routes)
compareRoute1.sourceID = sourceID;
ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
- ASSERT_EQ(2, listRoutes.size());
+ ASSERT_EQ(static_cast<uint>(2), listRoutes.size());
ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
ASSERT_TRUE(pCF.compareRoute(compareRoute1,listRoutes[1]));
}
@@ -1259,7 +1259,7 @@ TEST_F(CAmRouterTest,simpleRoute3DomainsNoConnection)
compareRoute.sourceID = sourceID;
ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
- ASSERT_EQ(0, listRoutes.size());
+ ASSERT_EQ(static_cast<uint>(0), listRoutes.size());
}
//test that checks just 2 domains, one sink one source with only one connection format each
TEST_F(CAmRouterTest,simpleRoute2Domains)
@@ -1364,7 +1364,7 @@ TEST_F(CAmRouterTest,simpleRoute2Domains)
compareRoute.sourceID = sourceID;
ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
- ASSERT_EQ(1, listRoutes.size());
+ ASSERT_EQ(static_cast<uint>(1), listRoutes.size());
ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
}
@@ -1472,7 +1472,7 @@ TEST_F(CAmRouterTest,simpleRoute2DomainsNoMatchConnectionFormats)
compareRoute.sourceID = sourceID;
ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
- ASSERT_EQ(0, listRoutes.size());
+ ASSERT_EQ(static_cast<uint>(0), listRoutes.size());
}
//test that checks 3 domains, one sink one source.
@@ -1616,7 +1616,7 @@ TEST_F(CAmRouterTest,simpleRoute3Domains)
compareRoute.sourceID = sourceID;
ASSERT_EQ(E_OK, pRouter.getRoute(false,sourceID,sinkID,listRoutes));
- ASSERT_EQ(1, listRoutes.size());
+ ASSERT_EQ(static_cast<uint>(1), listRoutes.size());
ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0]));
}
diff --git a/AudioManagerDaemon/test/AmRouterTest/CMakeLists.txt b/AudioManagerDaemon/test/AmRouterTest/CMakeLists.txt
index aae97e5..2a0468f 100644
--- a/AudioManagerDaemon/test/AmRouterTest/CMakeLists.txt
+++ b/AudioManagerDaemon/test/AmRouterTest/CMakeLists.txt
@@ -55,6 +55,8 @@ file(GLOB ROUTING_SRCS_CXX
"../../src/CAmSocketHandler.cpp"
"../../src/CAmCommandReceiver.cpp"
"../../src/CAmRoutingReceiver.cpp"
+ "../../src/CAmNodeStateCommunicator.cpp"
+ "../../src/CAmDbusWrapper.cpp"
"../CAmCommonFunctions.cpp"
"*.cpp"
)
diff --git a/AudioManagerDaemon/test/AmRoutingInterfaceTest/CAmRoutingInterfaceTest.cpp b/AudioManagerDaemon/test/AmRoutingInterfaceTest/CAmRoutingInterfaceTest.cpp
index 47181b3..d7bb96d 100644
--- a/AudioManagerDaemon/test/AmRoutingInterfaceTest/CAmRoutingInterfaceTest.cpp
+++ b/AudioManagerDaemon/test/AmRoutingInterfaceTest/CAmRoutingInterfaceTest.cpp
@@ -31,7 +31,7 @@ CAmRoutingInterfaceTest::CAmRoutingInterfaceTest() :
pDatabaseHandler(std::string(":memory:")), //
pRoutingSender(plistRoutingPluginDirs), //
pCommandSender(plistCommandPluginDirs), //
- pControlSender(""), //
+ pControlSender(), //
pRouter(&pDatabaseHandler, &pControlSender), //
pMockInterface(), //
pRoutingInterfaceBackdoor(), //
diff --git a/AudioManagerDaemon/test/AmRoutingInterfaceTest/CMakeLists.txt b/AudioManagerDaemon/test/AmRoutingInterfaceTest/CMakeLists.txt
index 5b903b5..abda5c1 100644
--- a/AudioManagerDaemon/test/AmRoutingInterfaceTest/CMakeLists.txt
+++ b/AudioManagerDaemon/test/AmRoutingInterfaceTest/CMakeLists.txt
@@ -57,6 +57,8 @@ file(GLOB ROUTING_INTERFACE_SRCS_CXX
"../../src/CAmSocketHandler.cpp"
"../../src/CAmRoutingReceiver.cpp"
"../../src/CAmCommandReceiver.cpp"
+ "../../src/CAmNodeStateCommunicator.cpp"
+ "../../src/CAmDbusWrapper.cpp"
"*.cpp"
)
diff --git a/AudioManagerDaemon/test/AmTelnetServerTest/CAmTelnetServerTest.cpp b/AudioManagerDaemon/test/AmTelnetServerTest/CAmTelnetServerTest.cpp
index ebc3705..686ac92 100644
--- a/AudioManagerDaemon/test/AmTelnetServerTest/CAmTelnetServerTest.cpp
+++ b/AudioManagerDaemon/test/AmTelnetServerTest/CAmTelnetServerTest.cpp
@@ -44,9 +44,8 @@ static CAmSocketHandler* mpSocketHandler = NULL;
void* startSocketHandler(void* data)
{
CAmEnvironment* Env = static_cast<CAmEnvironment*>(data);
- CAmSocketHandler mySocketHandler;
- Env->setSocketHandler(&mySocketHandler);
- mySocketHandler.start_listenting();
+ Env->setSocketHandler(&Env->mSocketHandler);
+ Env->mSocketHandler.start_listenting();
Env->setSocketHandler(NULL);
return (NULL);
}
@@ -54,11 +53,11 @@ void* startSocketHandler(void* data)
CAmEnvironment::CAmEnvironment()
: mlistRoutingPluginDirs()
, mlistCommandPluginDirs()
-//, mpSocketHandler(NULL)
+, mSocketHandler()
, mDatabasehandler(std::string(":memory:"))
, mRoutingSender(mlistRoutingPluginDirs)
, mCommandSender(mlistRoutingPluginDirs)
-, mControlSender(controllerPlugin)
+, mControlSender(controllerPlugin,&mSocketHandler)
, mRouter(&mDatabasehandler,&mControlSender)
, mpCommandReceiver(NULL)
, mpRoutingReceiver(NULL)
@@ -172,7 +171,7 @@ TEST_F(CAmTelnetServerTest,sendCmdTelnetServer)
std::string string("help");
ssize_t sizesent = send(staticSocket, string.c_str(), string.size(), 0);
- ASSERT_EQ(sizesent,string.size());
+ ASSERT_EQ(static_cast<uint>(sizesent),string.size());
char buffer[1000];
memset(buffer,0,sizeof(buffer));
@@ -187,7 +186,7 @@ TEST_F(CAmTelnetServerTest,closeTelnetServerConnection)
mpSocketHandler->stop_listening();
ssize_t sizesent = send(staticSocket, string.c_str(), string.size(), 0);
- ASSERT_EQ(sizesent,string.size());
+ ASSERT_EQ(static_cast<uint>(sizesent),string.size());
char buffer[1000];
memset(buffer,0,sizeof(buffer));
diff --git a/AudioManagerDaemon/test/AmTelnetServerTest/CAmTelnetServerTest.h b/AudioManagerDaemon/test/AmTelnetServerTest/CAmTelnetServerTest.h
index 06d10fe..a584b97 100644
--- a/AudioManagerDaemon/test/AmTelnetServerTest/CAmTelnetServerTest.h
+++ b/AudioManagerDaemon/test/AmTelnetServerTest/CAmTelnetServerTest.h
@@ -63,7 +63,7 @@ class CAmEnvironment : public ::testing::Environment
std::vector<std::string> mlistRoutingPluginDirs;
std::vector<std::string> mlistCommandPluginDirs;
- //SocketHandler* mpSocketHandler;
+ CAmSocketHandler mSocketHandler;
CAmDatabaseHandler mDatabasehandler;
CAmRoutingSender mRoutingSender;
CAmCommandSender mCommandSender;
diff --git a/AudioManagerDaemon/test/AmTelnetServerTest/CMakeLists.txt b/AudioManagerDaemon/test/AmTelnetServerTest/CMakeLists.txt
index b2c44a9..181940c 100644
--- a/AudioManagerDaemon/test/AmTelnetServerTest/CMakeLists.txt
+++ b/AudioManagerDaemon/test/AmTelnetServerTest/CMakeLists.txt
@@ -63,6 +63,8 @@ file(GLOB TELNET_SRCS_CXX
"../../src/CAmRouter.cpp"
"../../src/CAmDltWrapper.cpp"
"../../src/CAmTelnetMenuHelper.cpp"
+ "../../src/CAmNodeStateCommunicator.cpp"
+ "../../src/CAmDbusWrapper.cpp"
"*.cpp"
)
diff --git a/AudioManagerDaemon/test/CMakeLists.txt b/AudioManagerDaemon/test/CMakeLists.txt
index fb93efa..2588e8f 100644
--- a/AudioManagerDaemon/test/CMakeLists.txt
+++ b/AudioManagerDaemon/test/CMakeLists.txt
@@ -25,6 +25,7 @@ add_subdirectory (AmDatabaseHandlerTest)
add_subdirectory (AmRouterTest)
add_subdirectory (AmRoutingInterfaceTest)
add_subdirectory (AmSocketHandlerTest)
+add_subdirectory (AmNodeStateCommunicatorTest)
IF(WITH_TELNET)
add_subdirectory (AmTelnetServerTest)
ENDIF(WITH_TELNET)
diff --git a/AudioManagerDaemon/test/MockIAmCommandSend.h b/AudioManagerDaemon/test/MockIAmCommandSend.h
index 11c1992..70cdc4f 100644
--- a/AudioManagerDaemon/test/MockIAmCommandSend.h
+++ b/AudioManagerDaemon/test/MockIAmCommandSend.h
@@ -71,6 +71,20 @@ class MockIAmCommandSend : public IAmCommandSend {
void(const am_mainConnectionID_t mainConnectionID, const am_timeSync_t time));
MOCK_CONST_METHOD1(getInterfaceVersion,
void(std::string& version));
+ MOCK_METHOD3(cbSinkUpdated,
+ void(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties));
+ MOCK_METHOD3(cbSourceUpdated,
+ void(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_MainSoundProperty_s>& listMainSoundProperties));
+ MOCK_METHOD2(cbSinkNotification,
+ void(const am_sinkID_t sinkID, const am_NotificationPayload_s notification));
+ MOCK_METHOD2(cbSourceNotification,
+ void(const am_sourceID_t sourceID, const am_NotificationPayload_s notification));
+ MOCK_METHOD2(cbSinkMainNotificationConfigurationChanged,
+ void(const am_sinkID_t sinkID, const am_NotificationConfiguration_s mainNotificationConfiguration));
+ MOCK_METHOD2(cbSourceMainNotificationConfigurationChanged,
+ void(const am_sourceID_t sourceID, const am_NotificationConfiguration_s mainNotificationConfiguration));
+
+
};
} // namespace am
diff --git a/AudioManagerDaemon/test/MockIAmControlSend.h b/AudioManagerDaemon/test/MockIAmControlSend.h
index 7f51ab0..7f83823 100644
--- a/AudioManagerDaemon/test/MockIAmControlSend.h
+++ b/AudioManagerDaemon/test/MockIAmControlSend.h
@@ -29,100 +29,129 @@ namespace am {
class MockIAmControlSend : public IAmControlSend {
public:
- MOCK_METHOD1(startupController,
- am_Error_e(IAmControlReceive* controlreceiveinterface));
- MOCK_METHOD0(setControllerReady,
- void());
- MOCK_METHOD0(setControllerRundown,
- void());
- MOCK_METHOD3(hookUserConnectionRequest,
- am_Error_e(const am_sourceID_t sourceID, const am_sinkID_t sinkID, am_mainConnectionID_t& mainConnectionID));
- MOCK_METHOD1(hookUserDisconnectionRequest,
- am_Error_e(const am_mainConnectionID_t connectionID));
- MOCK_METHOD2(hookUserSetMainSinkSoundProperty,
- am_Error_e(const am_sinkID_t sinkID, const am_MainSoundProperty_s& soundProperty));
- MOCK_METHOD2(hookUserSetMainSourceSoundProperty,
- am_Error_e(const am_sourceID_t sourceID, const am_MainSoundProperty_s& soundProperty));
- MOCK_METHOD1(hookUserSetSystemProperty,
- am_Error_e(const am_SystemProperty_s& property));
- MOCK_METHOD2(hookUserVolumeChange,
- am_Error_e(const am_sinkID_t SinkID, const am_mainVolume_t newVolume));
- MOCK_METHOD2(hookUserVolumeStep,
- am_Error_e(const am_sinkID_t SinkID, const int16_t increment));
- MOCK_METHOD2(hookUserSetSinkMuteState,
- am_Error_e(const am_sinkID_t sinkID, const am_MuteState_e muteState));
- MOCK_METHOD2(hookSystemRegisterDomain,
- am_Error_e(const am_Domain_s& domainData, am_domainID_t& domainID));
- MOCK_METHOD1(hookSystemDeregisterDomain,
- am_Error_e(const am_domainID_t domainID));
- MOCK_METHOD1(hookSystemDomainRegistrationComplete,
- void(const am_domainID_t domainID));
- MOCK_METHOD2(hookSystemRegisterSink,
- am_Error_e(const am_Sink_s& sinkData, am_sinkID_t& sinkID));
- MOCK_METHOD1(hookSystemDeregisterSink,
- am_Error_e(const am_sinkID_t sinkID));
- MOCK_METHOD2(hookSystemRegisterSource,
- am_Error_e(const am_Source_s& sourceData, am_sourceID_t& sourceID));
- MOCK_METHOD1(hookSystemDeregisterSource,
- am_Error_e(const am_sourceID_t sourceID));
- MOCK_METHOD2(hookSystemRegisterGateway,
- am_Error_e(const am_Gateway_s& gatewayData, am_gatewayID_t& gatewayID));
- MOCK_METHOD1(hookSystemDeregisterGateway,
- am_Error_e(const am_gatewayID_t gatewayID));
- MOCK_METHOD2(hookSystemRegisterCrossfader,
- am_Error_e(const am_Crossfader_s& crossfaderData, am_crossfaderID_t& crossfaderID));
- MOCK_METHOD1(hookSystemDeregisterCrossfader,
- am_Error_e(const am_crossfaderID_t crossfaderID));
- MOCK_METHOD3(hookSystemSinkVolumeTick,
- void(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume));
- MOCK_METHOD3(hookSystemSourceVolumeTick,
- void(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume));
- MOCK_METHOD2(hookSystemInterruptStateChange,
- void(const am_sourceID_t sourceID, const am_InterruptState_e interruptState));
- MOCK_METHOD2(hookSystemSinkAvailablityStateChange,
- void(const am_sinkID_t sinkID, const am_Availability_s& availability));
- MOCK_METHOD2(hookSystemSourceAvailablityStateChange,
- void(const am_sourceID_t sourceID, const am_Availability_s& availability));
- MOCK_METHOD2(hookSystemDomainStateChange,
- void(const am_domainID_t domainID, const am_DomainState_e state));
- MOCK_METHOD1(hookSystemReceiveEarlyData,
- void(const std::vector<am_EarlyData_s>& data));
- MOCK_METHOD1(hookSystemSpeedChange,
- void(const am_speed_t speed));
- MOCK_METHOD2(hookSystemTimingInformationChanged,
- void(const am_mainConnectionID_t mainConnectionID, const am_timeSync_t time));
- MOCK_METHOD2(cbAckConnect,
- void(const am_Handle_s handle, const am_Error_e errorID));
- MOCK_METHOD2(cbAckDisconnect,
- void(const am_Handle_s handle, const am_Error_e errorID));
- MOCK_METHOD3(cbAckCrossFade,
- void(const am_Handle_s handle, const am_HotSink_e hostsink, const am_Error_e error));
- MOCK_METHOD3(cbAckSetSinkVolumeChange,
- void(const am_Handle_s handle, const am_volume_t volume, const am_Error_e error));
- MOCK_METHOD3(cbAckSetSourceVolumeChange,
- void(const am_Handle_s handle, const am_volume_t voulme, const am_Error_e error));
- MOCK_METHOD2(cbAckSetSourceState,
- void(const am_Handle_s handle, const am_Error_e error));
- MOCK_METHOD2(cbAckSetSourceSoundProperties,
- void(const am_Handle_s handle, const am_Error_e error));
- MOCK_METHOD2(cbAckSetSourceSoundProperty,
- void(const am_Handle_s handle, const am_Error_e error));
- MOCK_METHOD2(cbAckSetSinkSoundProperties,
- void(const am_Handle_s handle, const am_Error_e error));
- MOCK_METHOD2(cbAckSetSinkSoundProperty,
- void(const am_Handle_s handle, const am_Error_e error));
- MOCK_METHOD5(getConnectionFormatChoice,
- am_Error_e(const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_Route_s listRoute, const std::vector<am_ConnectionFormat_e> listPossibleConnectionFormats, std::vector<am_ConnectionFormat_e>& listPrioConnectionFormats));
- MOCK_CONST_METHOD1(getInterfaceVersion,
- void(std::string& version));
- MOCK_METHOD0(confirmCommandReady,
- void());
- MOCK_METHOD0(confirmRoutingReady,
- void());
- MOCK_METHOD0(confirmCommandRundown,
- void());
- MOCK_METHOD0(confirmRoutingRundown,
- void());
+ MOCK_CONST_METHOD1(getInterfaceVersion,
+ void(std::string& version));
+ MOCK_METHOD1(startupController,
+ am_Error_e(IAmControlReceive* controlreceiveinterface));
+ MOCK_METHOD0(setControllerReady,
+ void());
+ MOCK_METHOD1(setControllerRundown,
+ void(const int16_t signal));
+ MOCK_METHOD3(hookUserConnectionRequest,
+ am_Error_e(const am_sourceID_t sourceID, const am_sinkID_t sinkID, am_mainConnectionID_t& mainConnectionID));
+ MOCK_METHOD1(hookUserDisconnectionRequest,
+ am_Error_e(const am_mainConnectionID_t connectionID));
+ MOCK_METHOD2(hookUserSetMainSinkSoundProperty,
+ am_Error_e(const am_sinkID_t sinkID, const am_MainSoundProperty_s& soundProperty));
+ MOCK_METHOD2(hookUserSetMainSourceSoundProperty,
+ am_Error_e(const am_sourceID_t sourceID, const am_MainSoundProperty_s& soundProperty));
+ MOCK_METHOD1(hookUserSetSystemProperty,
+ am_Error_e(const am_SystemProperty_s& property));
+ MOCK_METHOD2(hookUserVolumeChange,
+ am_Error_e(const am_sinkID_t SinkID, const am_mainVolume_t newVolume));
+ MOCK_METHOD2(hookUserVolumeStep,
+ am_Error_e(const am_sinkID_t SinkID, const int16_t increment));
+ MOCK_METHOD2(hookUserSetSinkMuteState,
+ am_Error_e(const am_sinkID_t sinkID, const am_MuteState_e muteState));
+ MOCK_METHOD2(hookSystemRegisterDomain,
+ am_Error_e(const am_Domain_s& domainData, am_domainID_t& domainID));
+ MOCK_METHOD1(hookSystemDeregisterDomain,
+ am_Error_e(const am_domainID_t domainID));
+ MOCK_METHOD1(hookSystemDomainRegistrationComplete,
+ void(const am_domainID_t domainID));
+ MOCK_METHOD2(hookSystemRegisterSink,
+ am_Error_e(const am_Sink_s& sinkData, am_sinkID_t& sinkID));
+ MOCK_METHOD1(hookSystemDeregisterSink,
+ am_Error_e(const am_sinkID_t sinkID));
+ MOCK_METHOD2(hookSystemRegisterSource,
+ am_Error_e(const am_Source_s& sourceData, am_sourceID_t& sourceID));
+ MOCK_METHOD1(hookSystemDeregisterSource,
+ am_Error_e(const am_sourceID_t sourceID));
+ MOCK_METHOD2(hookSystemRegisterGateway,
+ am_Error_e(const am_Gateway_s& gatewayData, am_gatewayID_t& gatewayID));
+ MOCK_METHOD1(hookSystemDeregisterGateway,
+ am_Error_e(const am_gatewayID_t gatewayID));
+ MOCK_METHOD2(hookSystemRegisterCrossfader,
+ am_Error_e(const am_Crossfader_s& crossfaderData, am_crossfaderID_t& crossfaderID));
+ MOCK_METHOD1(hookSystemDeregisterCrossfader,
+ am_Error_e(const am_crossfaderID_t crossfaderID));
+ MOCK_METHOD3(hookSystemSinkVolumeTick,
+ void(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume));
+ MOCK_METHOD3(hookSystemSourceVolumeTick,
+ void(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume));
+ MOCK_METHOD2(hookSystemInterruptStateChange,
+ void(const am_sourceID_t sourceID, const am_InterruptState_e interruptState));
+ MOCK_METHOD2(hookSystemSinkAvailablityStateChange,
+ void(const am_sinkID_t sinkID, const am_Availability_s& availability));
+ MOCK_METHOD2(hookSystemSourceAvailablityStateChange,
+ void(const am_sourceID_t sourceID, const am_Availability_s& availability));
+ MOCK_METHOD2(hookSystemDomainStateChange,
+ void(const am_domainID_t domainID, const am_DomainState_e state));
+ MOCK_METHOD1(hookSystemReceiveEarlyData,
+ void(const std::vector<am_EarlyData_s>& data));
+ MOCK_METHOD1(hookSystemSpeedChange,
+ void(const am_speed_t speed));
+ MOCK_METHOD2(hookSystemTimingInformationChanged,
+ void(const am_mainConnectionID_t mainConnectionID, const am_timeSync_t time));
+ MOCK_METHOD2(cbAckConnect,
+ void(const am_Handle_s handle, const am_Error_e errorID));
+ MOCK_METHOD2(cbAckDisconnect,
+ void(const am_Handle_s handle, const am_Error_e errorID));
+ MOCK_METHOD3(cbAckCrossFade,
+ void(const am_Handle_s handle, const am_HotSink_e hostsink, const am_Error_e error));
+ MOCK_METHOD3(cbAckSetSinkVolumeChange,
+ void(const am_Handle_s handle, const am_volume_t volume, const am_Error_e error));
+ MOCK_METHOD3(cbAckSetSourceVolumeChange,
+ void(const am_Handle_s handle, const am_volume_t voulme, const am_Error_e error));
+ MOCK_METHOD2(cbAckSetSourceState,
+ void(const am_Handle_s handle, const am_Error_e error));
+ MOCK_METHOD2(cbAckSetSourceSoundProperties,
+ void(const am_Handle_s handle, const am_Error_e error));
+ MOCK_METHOD2(cbAckSetSourceSoundProperty,
+ void(const am_Handle_s handle, const am_Error_e error));
+ MOCK_METHOD2(cbAckSetSinkSoundProperties,
+ void(const am_Handle_s handle, const am_Error_e error));
+ MOCK_METHOD2(cbAckSetSinkSoundProperty,
+ void(const am_Handle_s handle, const am_Error_e error));
+ MOCK_METHOD5(getConnectionFormatChoice,
+ am_Error_e(const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_Route_s listRoute, const std::vector<am_ConnectionFormat_e> listPossibleConnectionFormats, std::vector<am_ConnectionFormat_e>& listPrioConnectionFormats));
+ MOCK_METHOD1(confirmCommandReady,
+ void(const am_Error_e error));
+ MOCK_METHOD1(confirmRoutingReady,
+ void(const am_Error_e error));
+ MOCK_METHOD1(confirmCommandRundown,
+ void(const am_Error_e error));
+ MOCK_METHOD1(confirmRoutingRundown,
+ void(const am_Error_e error));
+ MOCK_METHOD5(hookSystemUpdateSink,
+ am_Error_e(const am_sinkID_t sinkID, const am_sinkClass_t sinkClassID, const std::vector<am_SoundProperty_s> listSoundProperties, const std::vector<am_ConnectionFormat_e> listConnectionFormats, std::vector<am_MainSoundProperty_s> listMainSoundProperties));
+ MOCK_METHOD5(hookSystemUpdateSource,
+ am_Error_e(const am_sourceID_t sourceID, const am_sourceClass_t sourceClassID, const std::vector<am_SoundProperty_s> listSoundProperties, const std::vector<am_ConnectionFormat_e> listConnectionFormats, std::vector<am_MainSoundProperty_s> listMainSoundProperties));
+ MOCK_METHOD4(hookSystemUpdateGateway,
+ am_Error_e(const am_gatewayID_t gatewayID, const std::vector<am_ConnectionFormat_e> listSourceConnectionFormats, const std::vector<am_ConnectionFormat_e> listSinkConnectionFormats, const std::vector<bool> convertionMatrix));
+ MOCK_METHOD3(cbAckSetVolume,
+ void(const am_Handle_s handle, const std::vector<am_Volumes_s> listVolumes, const am_Error_e error));
+ MOCK_METHOD2(cbAckSetSinkNotificationConfiguration,
+ void(const am_Handle_s handle, const am_Error_e error));
+ MOCK_METHOD2(cbAckSetSourceNotificationConfiguration,
+ void(const am_Handle_s handle, const am_Error_e error));
+ MOCK_METHOD2(hookSinkNotificationDataChanged,
+ void(const am_sinkID_t sinkID, const am_NotificationPayload_s payload));
+ MOCK_METHOD2(hookSourceNotificationDataChanged,
+ void(const am_sourceID_t sourceID, const am_NotificationPayload_s payload));
+ MOCK_METHOD2(hookUserSetMainSinkNotificationConfiguration,
+ am_Error_e(const am_sinkID_t sinkID, const am_NotificationConfiguration_s notificationConfiguration));
+ MOCK_METHOD2(hookUserSetMainSourceNotificationConfiguration,
+ am_Error_e(const am_sourceID_t sourceID, const am_NotificationConfiguration_s notificationConfiguration));
+ MOCK_METHOD1(hookSystemNodeStateChanged,
+ void(const NsmNodeState_e NodeStateId));
+ MOCK_METHOD1(hookSystemNodeApplicationModeChanged,
+ void(const NsmApplicationMode_e ApplicationModeId));
+ MOCK_METHOD3(hookSystemSessionStateChanged,
+ void(const std::string sessionName, const int32_t seatID, const NsmSessionState_e sessionStateID));
+ MOCK_METHOD2(hookSystemLifecycleRequest,
+ NsmErrorStatus_e(const uint32_t Request, const uint32_t RequestId));
+
};
} // namespace am
diff --git a/AudioManagerDaemon/test/MockIAmRoutingSend.h b/AudioManagerDaemon/test/MockIAmRoutingSend.h
index 0534e41..029790e 100644
--- a/AudioManagerDaemon/test/MockIAmRoutingSend.h
+++ b/AudioManagerDaemon/test/MockIAmRoutingSend.h
@@ -29,40 +29,47 @@ namespace am {
class MockIAmRoutingSend : public IAmRoutingSend {
public:
- MOCK_METHOD1(startupInterface,
- am_Error_e(IAmRoutingReceive* routingreceiveinterface));
- MOCK_METHOD1(setRoutingReady,
- void(const uint16_t handle));
- MOCK_METHOD1(setRoutingRundown,
- void(const uint16_t handle));
- MOCK_METHOD1(asyncAbort,
- am_Error_e(const am_Handle_s handle));
- MOCK_METHOD5(asyncConnect,
- am_Error_e(const am_Handle_s handle, const am_connectionID_t connectionID, const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_ConnectionFormat_e connectionFormat));
- MOCK_METHOD2(asyncDisconnect,
- am_Error_e(const am_Handle_s handle, const am_connectionID_t connectionID));
- MOCK_METHOD5(asyncSetSinkVolume,
- am_Error_e(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume, const am_RampType_e ramp, const am_time_t time));
- MOCK_METHOD5(asyncSetSourceVolume,
- am_Error_e(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume, const am_RampType_e ramp, const am_time_t time));
- MOCK_METHOD3(asyncSetSourceState,
- am_Error_e(const am_Handle_s handle, const am_sourceID_t sourceID, const am_SourceState_e state));
- MOCK_METHOD3(asyncSetSinkSoundProperties,
- am_Error_e(const am_Handle_s handle, const am_sinkID_t sinkID, const std::vector<am_SoundProperty_s>& listSoundProperties));
- MOCK_METHOD3(asyncSetSinkSoundProperty,
- am_Error_e(const am_Handle_s handle, const am_sinkID_t sinkID, const am_SoundProperty_s& soundProperty));
- MOCK_METHOD3(asyncSetSourceSoundProperties,
- am_Error_e(const am_Handle_s handle, const am_sourceID_t sourceID, const std::vector<am_SoundProperty_s>& listSoundProperties));
- MOCK_METHOD3(asyncSetSourceSoundProperty,
- am_Error_e(const am_Handle_s handle, const am_sourceID_t sourceID, const am_SoundProperty_s& soundProperty));
- MOCK_METHOD5(asyncCrossFade,
- am_Error_e(const am_Handle_s handle, const am_crossfaderID_t crossfaderID, const am_HotSink_e hotSink, const am_RampType_e rampType, const am_time_t time));
- MOCK_METHOD2(setDomainState,
- am_Error_e(const am_domainID_t domainID, const am_DomainState_e domainState));
- MOCK_CONST_METHOD1(returnBusName,
- am_Error_e(std::string& BusName));
- MOCK_CONST_METHOD1(getInterfaceVersion,
- void(std::string& version));
+ MOCK_CONST_METHOD1(getInterfaceVersion,
+ void(std::string& version));
+ MOCK_METHOD1(startupInterface,
+ am_Error_e(IAmRoutingReceive* routingreceiveinterface));
+ MOCK_METHOD1(setRoutingReady,
+ void(const uint16_t handle));
+ MOCK_METHOD1(setRoutingRundown,
+ void(const uint16_t handle));
+ MOCK_METHOD1(asyncAbort,
+ am_Error_e(const am_Handle_s handle));
+ MOCK_METHOD5(asyncConnect,
+ am_Error_e(const am_Handle_s handle, const am_connectionID_t connectionID, const am_sourceID_t sourceID, const am_sinkID_t sinkID, const am_ConnectionFormat_e connectionFormat));
+ MOCK_METHOD2(asyncDisconnect,
+ am_Error_e(const am_Handle_s handle, const am_connectionID_t connectionID));
+ MOCK_METHOD5(asyncSetSinkVolume,
+ am_Error_e(const am_Handle_s handle, const am_sinkID_t sinkID, const am_volume_t volume, const am_RampType_e ramp, const am_time_t time));
+ MOCK_METHOD5(asyncSetSourceVolume,
+ am_Error_e(const am_Handle_s handle, const am_sourceID_t sourceID, const am_volume_t volume, const am_RampType_e ramp, const am_time_t time));
+ MOCK_METHOD3(asyncSetSourceState,
+ am_Error_e(const am_Handle_s handle, const am_sourceID_t sourceID, const am_SourceState_e state));
+ MOCK_METHOD3(asyncSetSinkSoundProperties,
+ am_Error_e(const am_Handle_s handle, const am_sinkID_t sinkID, const std::vector<am_SoundProperty_s>& listSoundProperties));
+ MOCK_METHOD3(asyncSetSinkSoundProperty,
+ am_Error_e(const am_Handle_s handle, const am_sinkID_t sinkID, const am_SoundProperty_s& soundProperty));
+ MOCK_METHOD3(asyncSetSourceSoundProperties,
+ am_Error_e(const am_Handle_s handle, const am_sourceID_t sourceID, const std::vector<am_SoundProperty_s>& listSoundProperties));
+ MOCK_METHOD3(asyncSetSourceSoundProperty,
+ am_Error_e(const am_Handle_s handle, const am_sourceID_t sourceID, const am_SoundProperty_s& soundProperty));
+ MOCK_METHOD5(asyncCrossFade,
+ am_Error_e(const am_Handle_s handle, const am_crossfaderID_t crossfaderID, const am_HotSink_e hotSink, const am_RampType_e rampType, const am_time_t time));
+ MOCK_METHOD2(setDomainState,
+ am_Error_e(const am_domainID_t domainID, const am_DomainState_e domainState));
+ MOCK_CONST_METHOD1(returnBusName,
+ am_Error_e(std::string& BusName));
+ MOCK_METHOD2(asyncSetVolumes,
+ am_Error_e(const am_Handle_s handle, const std::vector<am_Volumes_s>& listVolumes));
+ MOCK_METHOD3(asyncSetSinkNotificationConfiguration,
+ am_Error_e(const am_Handle_s handle, const am_sinkID_t sinkID, const am_NotificationConfiguration_s& notificationConfiguration));
+ MOCK_METHOD3(asyncSetSourceNotificationConfiguration,
+ am_Error_e(const am_Handle_s handle, const am_sourceID_t sourceID, const am_NotificationConfiguration_s& notificationConfiguration));
+
};
} // namespace am