summaryrefslogtreecommitdiff
path: root/PluginRoutingInterfaceAsync
diff options
context:
space:
mode:
authorchristian mueller <christian.ei.mueller@bmw.de>2011-12-29 17:07:38 +0100
committerchristian mueller <christian.ei.mueller@bmw.de>2011-12-30 03:08:00 +0100
commit93d7610b460c6212a3098a3eccb127fd45ada345 (patch)
tree0e00544ede90f06dd9933c003c4b7cc72f964af3 /PluginRoutingInterfaceAsync
parentb7e748007bbe0b16fa8a8a089c6cc8fe43bc7aac (diff)
downloadaudiomanager-93d7610b460c6212a3098a3eccb127fd45ada345.tar.gz
*added versioning support automatically out of git
*added commandline parser *changed DLT_CONTEXT for AudioManager to AudioManager *added signalhandler *TODO: make signalhandler not only call but correctly rundown the daemon
Diffstat (limited to 'PluginRoutingInterfaceAsync')
-rw-r--r--PluginRoutingInterfaceAsync/src/RoutingSenderAsync.cpp9
-rw-r--r--PluginRoutingInterfaceAsync/test/CMakeLists.txt20
-rw-r--r--PluginRoutingInterfaceAsync/test/testRoutingInterfaceAsync.cpp37
-rw-r--r--PluginRoutingInterfaceAsync/test/testRoutingInterfaceAsyncInterrupt.cpp148
4 files changed, 172 insertions, 42 deletions
diff --git a/PluginRoutingInterfaceAsync/src/RoutingSenderAsync.cpp b/PluginRoutingInterfaceAsync/src/RoutingSenderAsync.cpp
index 8c1d50a..fcf017e 100644
--- a/PluginRoutingInterfaceAsync/src/RoutingSenderAsync.cpp
+++ b/PluginRoutingInterfaceAsync/src/RoutingSenderAsync.cpp
@@ -34,6 +34,8 @@
#include <string>
#include <dbus/dbus.h>
+
+
using namespace am;
DLT_DECLARE_CONTEXT(PluginRoutingAsync)
@@ -359,12 +361,11 @@ void AsyncRoutingSender::routingInterfacesReady()
// gatewayIter->gatewayID=gatewayID;
// }
- //create thread for interrupts:
- pthread_create(&mInterruptThread,NULL,&AsyncRoutingSender::InterruptEvents,&mShadow);
+ //create thread for interrupts, but only if we are testing - otherwise we get 100% cpu load:
+ //todo: find a solution for the 100% dbus load to uncomment this and make interrupt tests work
+ //pthread_create(&mInterruptThread,NULL,&AsyncRoutingSender::InterruptEvents,&mShadow);
}
-
-
void AsyncRoutingSender::routingInterfacesRundown()
{
assert(mReceiveInterface!=0);
diff --git a/PluginRoutingInterfaceAsync/test/CMakeLists.txt b/PluginRoutingInterfaceAsync/test/CMakeLists.txt
index 8743bd9..04cf18c 100644
--- a/PluginRoutingInterfaceAsync/test/CMakeLists.txt
+++ b/PluginRoutingInterfaceAsync/test/CMakeLists.txt
@@ -53,10 +53,19 @@ file(GLOB ASYNC_PLUGIN_INTERFACE_SRCS_CXX
"../../AudioManagerDaemon/src/SocketHandler.cpp"
"../../AudioManagerDaemon/src/RoutingSender.cpp"
"../src/*.cpp"
- "*.cpp"
+ "testRoutingInterfaceAsync.cpp"
+)
+
+file(GLOB ASYNC_PLUGIN_INTERFACE_INTERRUPT_SRCS_CXX
+ "../../AudioManagerDaemon/src/SocketHandler.cpp"
+ "../../AudioManagerDaemon/src/RoutingSender.cpp"
+ "../src/*.cpp"
+ "testRoutingInterfaceAsyncInterrupt.cpp"
+
)
ADD_EXECUTABLE(asyncRoutingInterfaceTest ${ASYNC_PLUGIN_INTERFACE_SRCS_CXX})
+ADD_EXECUTABLE(asyncRoutingInterfaceInterruptTest ${ASYNC_PLUGIN_INTERFACE_INTERRUPT_SRCS_CXX})
TARGET_LINK_LIBRARIES(asyncRoutingInterfaceTest
@@ -68,5 +77,14 @@ TARGET_LINK_LIBRARIES(asyncRoutingInterfaceTest
gmock
)
+TARGET_LINK_LIBRARIES(asyncRoutingInterfaceInterruptTest
+ ${DLT_LIBRARIES}
+ ${CMAKE_DL_LIBS}
+ ${CMAKE_THREAD_LIBS_INIT}
+ ${GTEST_LIBRARIES}
+ ${DBUS_LIBRARY}
+ gmock
+)
+
diff --git a/PluginRoutingInterfaceAsync/test/testRoutingInterfaceAsync.cpp b/PluginRoutingInterfaceAsync/test/testRoutingInterfaceAsync.cpp
index fc3ad3b..f571443 100644
--- a/PluginRoutingInterfaceAsync/test/testRoutingInterfaceAsync.cpp
+++ b/PluginRoutingInterfaceAsync/test/testRoutingInterfaceAsync.cpp
@@ -100,10 +100,6 @@ void testRoutingInterfaceAsync::TearDown()
DLT_UNREGISTER_CONTEXT(DLT_CONTEXT);
}
-std::string DBUSCOMMAND = "dbus-send --session --print-reply --dest=org.genivi.test /org/genivi/test org.genivi.test.";
-
-
-
TEST_F(testRoutingInterfaceAsync,setDomainState)
{
@@ -115,39 +111,6 @@ TEST_F(testRoutingInterfaceAsync,setDomainState)
ASSERT_EQ(E_OK,pRoutingSender.setDomainState(domainID,state));
pSocketHandler.start_listenting();
}
-TEST_F(testRoutingInterfaceAsync,hookInterruptStatusChange)
-{
- am_sourceID_t sourceID=2;
- EXPECT_CALL(pReceiveInterface,hookInterruptStatusChange(sourceID,_)).Times(1);
- system((DBUSCOMMAND + std::string("InterruptStatusChange int16:2")).c_str());
- pSocketHandler.start_listenting();
-}
-
-TEST_F(testRoutingInterfaceAsync,hookSourceAvailablityStatusChange)
-{
- am_sourceID_t sourceID=2;
- EXPECT_CALL(pReceiveInterface,hookSourceAvailablityStatusChange(sourceID,_)).Times(1);
- system((DBUSCOMMAND + std::string("SourceAvailablityStatusChange int16:2")).c_str());
- pSocketHandler.start_listenting();
-}
-
-TEST_F(testRoutingInterfaceAsync,hookSinkAvailablityStatusChange)
-{
- am_sinkID_t sinkID=2;
- EXPECT_CALL(pReceiveInterface,hookSinkAvailablityStatusChange(sinkID,_)).Times(1);
- system((DBUSCOMMAND + std::string("SinkAvailablityStatusChange int16:2")).c_str());
- pSocketHandler.start_listenting();
-}
-
-TEST_F(testRoutingInterfaceAsync,hookTimingInformationChanged)
-{
- am_connectionID_t connectionID=4;
- am_timeSync_t delay=35;
- EXPECT_CALL(pReceiveInterface,hookTimingInformationChanged(connectionID,delay)).Times(1);
- system((DBUSCOMMAND + std::string("timingChanged int16:4 int16:35")).c_str());
- pSocketHandler.start_listenting();
-}
-
TEST_F(testRoutingInterfaceAsync,setSourceSoundProperty)
{
diff --git a/PluginRoutingInterfaceAsync/test/testRoutingInterfaceAsyncInterrupt.cpp b/PluginRoutingInterfaceAsync/test/testRoutingInterfaceAsyncInterrupt.cpp
new file mode 100644
index 0000000..a04bc6d
--- /dev/null
+++ b/PluginRoutingInterfaceAsync/test/testRoutingInterfaceAsyncInterrupt.cpp
@@ -0,0 +1,148 @@
+/*
+ * testRoutingInterfaceAsync.cpp
+ *
+ * Created on: Dec 27, 2011
+ * Author: christian
+ */
+
+#define INTERRUPT_TEST 1
+
+#include "testRoutingInterfaceAsync.h"
+#include "config.h"
+
+
+using namespace am;
+using namespace testing;
+
+
+DLT_DECLARE_CONTEXT(DLT_CONTEXT)
+
+
+std::vector<std::string> testRoutingInterfaceAsync::pListRoutingPluginDirs=returnListPlugins();
+am_domainID_t testRoutingInterfaceAsync::mDomainIDCount=0;
+RoutingSender testRoutingInterfaceAsync::pRoutingSender=RoutingSender(pListRoutingPluginDirs);
+
+testRoutingInterfaceAsync::testRoutingInterfaceAsync()
+ :pSocketHandler(),
+ pReceiveInterface(),
+ ptimerCallback(this, &testRoutingInterfaceAsync::timerCallback)
+{
+}
+
+testRoutingInterfaceAsync::~testRoutingInterfaceAsync()
+{
+}
+
+void testRoutingInterfaceAsync::SetUp()
+{
+ DLT_REGISTER_APP("DPtest","RoutingInterfacetest");
+ DLT_REGISTER_CONTEXT(DLT_CONTEXT,"Main","Main Context");
+ DLT_LOG(DLT_CONTEXT,DLT_LOG_INFO, DLT_STRING("RoutingSendInterface Test started "));
+
+ std::vector<int> domainIDs;
+ domainIDs.push_back(0);
+ domainIDs.push_back(1);
+
+ EXPECT_CALL(pReceiveInterface,getSocketHandler(_)).WillOnce(DoAll(SetArgReferee<0>(&pSocketHandler),Return(E_OK)));
+ EXPECT_CALL(pReceiveInterface,registerDomain(_,_)).WillRepeatedly(Invoke(testRoutingInterfaceAsync::handleDomainRegister));
+ EXPECT_CALL(pReceiveInterface,registerSource(_,_)).WillRepeatedly(Invoke(testRoutingInterfaceAsync::handleSourceRegister));
+ EXPECT_CALL(pReceiveInterface,registerSink(_,_)).WillRepeatedly(Invoke(testRoutingInterfaceAsync::handleSinkRegister));
+
+ pRoutingSender.startupRoutingInterface(&pReceiveInterface);
+ pRoutingSender.routingInterfacesReady();
+
+ timespec t;
+ t.tv_nsec=0;
+ t.tv_sec=4;
+
+ sh_timerHandle_t handle;
+
+ shTimerCallBack *buf=&ptimerCallback;
+ //lets use a timeout so the test will finish
+ pSocketHandler.addTimer(t,buf,handle,(void*)NULL);
+}
+
+std::vector<std::string> am::testRoutingInterfaceAsync::returnListPlugins()
+{
+ std::vector<std::string> list;
+ list.push_back(std::string(DEFAULT_PLUGIN_ROUTING_DIR));
+ return (list);
+}
+
+am_Error_e am::testRoutingInterfaceAsync::handleSourceRegister(const am_Source_s & sourceData, am_sourceID_t & sourceID)
+{
+ sourceID=sourceData.sourceID;
+ pRoutingSender.addSourceLookup(sourceData);
+ return (E_OK);
+}
+
+am_Error_e am::testRoutingInterfaceAsync::handleSinkRegister(const am_Sink_s & sinkData, am_sinkID_t & sinkID)
+{
+ sinkID=sinkData.sinkID;
+ pRoutingSender.addSinkLookup(sinkData);
+ return(E_OK);
+}
+
+am_Error_e am::testRoutingInterfaceAsync::handleDomainRegister(const am_Domain_s & domainData, am_domainID_t & domainID)
+{
+ am_Domain_s domain=domainData;
+ domainID=mDomainIDCount++;
+ domain.domainID=domainID;
+ pRoutingSender.addDomainLookup(domain);
+ return (E_OK);
+}
+
+void am::testRoutingInterfaceAsync::timerCallback(sh_timerHandle_t handle, void *userData)
+{
+ pSocketHandler.stop_listening();
+}
+
+void testRoutingInterfaceAsync::TearDown()
+{
+ DLT_UNREGISTER_CONTEXT(DLT_CONTEXT);
+}
+
+std::string DBUSCOMMAND = "dbus-send --session --print-reply --dest=org.genivi.test /org/genivi/test org.genivi.test.";
+
+
+
+TEST_F(testRoutingInterfaceAsync,hookInterruptStatusChange)
+{
+ am_sourceID_t sourceID=2;
+ EXPECT_CALL(pReceiveInterface,hookInterruptStatusChange(sourceID,_)).Times(1);
+ system((DBUSCOMMAND + std::string("InterruptStatusChange int16:2")).c_str());
+ pSocketHandler.start_listenting();
+}
+
+TEST_F(testRoutingInterfaceAsync,hookSourceAvailablityStatusChange)
+{
+ am_sourceID_t sourceID=2;
+ EXPECT_CALL(pReceiveInterface,hookSourceAvailablityStatusChange(sourceID,_)).Times(1);
+ system((DBUSCOMMAND + std::string("SourceAvailablityStatusChange int16:2")).c_str());
+ pSocketHandler.start_listenting();
+}
+
+TEST_F(testRoutingInterfaceAsync,hookSinkAvailablityStatusChange)
+{
+ am_sinkID_t sinkID=2;
+ EXPECT_CALL(pReceiveInterface,hookSinkAvailablityStatusChange(sinkID,_)).Times(1);
+ system((DBUSCOMMAND + std::string("SinkAvailablityStatusChange int16:2")).c_str());
+ pSocketHandler.start_listenting();
+}
+
+TEST_F(testRoutingInterfaceAsync,hookTimingInformationChanged)
+{
+ am_connectionID_t connectionID=4;
+ am_timeSync_t delay=35;
+ EXPECT_CALL(pReceiveInterface,hookTimingInformationChanged(connectionID,delay)).Times(1);
+ system((DBUSCOMMAND + std::string("timingChanged int16:4 int16:35")).c_str());
+ pSocketHandler.start_listenting();
+}
+
+int main(int argc, char **argv)
+{
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}
+
+