From 93d7610b460c6212a3098a3eccb127fd45ada345 Mon Sep 17 00:00:00 2001 From: christian mueller Date: Thu, 29 Dec 2011 17:07:38 +0100 Subject: *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 --- .../src/RoutingSenderAsync.cpp | 9 +- PluginRoutingInterfaceAsync/test/CMakeLists.txt | 20 ++- .../test/testRoutingInterfaceAsync.cpp | 37 ------ .../test/testRoutingInterfaceAsyncInterrupt.cpp | 148 +++++++++++++++++++++ 4 files changed, 172 insertions(+), 42 deletions(-) create mode 100644 PluginRoutingInterfaceAsync/test/testRoutingInterfaceAsyncInterrupt.cpp (limited to 'PluginRoutingInterfaceAsync') 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 #include + + 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 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 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 am::testRoutingInterfaceAsync::returnListPlugins() +{ + std::vector 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(); +} + + -- cgit v1.2.1