summaryrefslogtreecommitdiff
path: root/AudioManagerDaemon/test
diff options
context:
space:
mode:
authorFrank Herchet <frank.fh.herchet@bmw.de>2012-02-14 16:47:22 +0100
committerFrank Herchet <frank.fh.herchet@bmw.de>2012-02-14 16:47:22 +0100
commitdc3eb79e419cb53f1394300873c204a9a2912823 (patch)
treeae3a7acf5f04559388bbbc06b21cad95d56c66bc /AudioManagerDaemon/test
parentd31807abef3e8f02de5ae4452527769f6c35b3db (diff)
downloadaudiomanager-dc3eb79e419cb53f1394300873c204a9a2912823.tar.gz
* add gtest for telnetserver
Diffstat (limited to 'AudioManagerDaemon/test')
-rw-r--r--AudioManagerDaemon/test/CMakeLists.txt1
-rw-r--r--AudioManagerDaemon/test/telnetserver/CAmTelnetServerTest.cpp141
-rw-r--r--AudioManagerDaemon/test/telnetserver/CAmTelnetServerTest.h45
-rw-r--r--AudioManagerDaemon/test/telnetserver/CMakeLists.txt92
4 files changed, 250 insertions, 29 deletions
diff --git a/AudioManagerDaemon/test/CMakeLists.txt b/AudioManagerDaemon/test/CMakeLists.txt
index 7450c99..65db219 100644
--- a/AudioManagerDaemon/test/CMakeLists.txt
+++ b/AudioManagerDaemon/test/CMakeLists.txt
@@ -20,3 +20,4 @@ add_subdirectory (routing)
add_subdirectory (routingInterface)
add_subdirectory (controlInterface)
add_subdirectory (sockethandler)
+add_subdirectory (telnetserver)
diff --git a/AudioManagerDaemon/test/telnetserver/CAmTelnetServerTest.cpp b/AudioManagerDaemon/test/telnetserver/CAmTelnetServerTest.cpp
index 46a0c40..da7ec2b 100644
--- a/AudioManagerDaemon/test/telnetserver/CAmTelnetServerTest.cpp
+++ b/AudioManagerDaemon/test/telnetserver/CAmTelnetServerTest.cpp
@@ -5,23 +5,46 @@
* Author: demo
*/
+#include <sys/socket.h> /* for socket(), connect(), (), and recv() */
+#include <arpa/inet.h> /* for sockaddr_in and inet_addr() */
+#include <netdb.h> /* for struct hostent */
+
#include "CAmTelnetServerTest.h"
+#include "CommandReceiver.h"
+#include "RoutingReceiver.h"
+#include "ControlReceiver.h"
+
+
+using namespace testing;
+using namespace am;
+
+void* startSocketHandler(void* data)
+{
+ CAmTelnetServerTest* Test = static_cast<CAmTelnetServerTest*>(data);
+ SocketHandler mySocketHandler;
+ Test->setSocketHandler(&mySocketHandler);
+ std::cout << "pThread: startSocketHandler" << std::endl;
+ mySocketHandler.start_listenting();
+ Test->setSocketHandler(NULL);
+ std::cout << "pThread: return" << std::endl;
+ return (NULL);
+}
-namespace am {
CAmTelnetServerTest::CAmTelnetServerTest()
: mlistRoutingPluginDirs()
, mlistCommandPluginDirs()
-, mSocketHandler()
+, mpSocketHandler(NULL)
, mDatabasehandler(std::string(":memory:"))
, mRoutingSender(mlistRoutingPluginDirs)
, mCommandSender(mlistRoutingPluginDirs)
, mControlSender(std::string(""))
, mRouter(&mDatabasehandler,&mControlSender)
-, mCommandReceiver(&mDatabasehandler,&mControlSender,&mSocketHandler)
-, mRoutingReceiver(&mDatabasehandler,&mRoutingSender,&mControlSender,&mSocketHandler)
-, mControlReceiver(&mDatabasehandler,&mRoutingSender,&mCommandSender,&mSocketHandler,&mRouter)
-, mTelnetServer(&mSocketHandler,&mCommandSender,&mCommandReceiver,&mRoutingSender,&mRoutingReceiver,&mControlSender,&mControlReceiver,&mDatabasehandler,&mRouter)
+, mpCommandReceiver(NULL)
+, mpRoutingReceiver(NULL)
+, mpControlReceiver(NULL)
+, mpTelnetServer(NULL)
+, mSocketHandlerThread()
{
// TODO Auto-generated constructor stub
@@ -29,21 +52,109 @@ CAmTelnetServerTest::CAmTelnetServerTest()
CAmTelnetServerTest::~CAmTelnetServerTest()
{
- // TODO Auto-generated destructor stub
+ if(NULL != mpTelnetServer)
+ delete(mpTelnetServer);
+ if(NULL != mpControlReceiver)
+ delete(mpControlReceiver);
+ if(NULL != mpRoutingReceiver)
+ delete(mpRoutingReceiver);
+ if(NULL != mpCommandReceiver)
+ delete(mpCommandReceiver);
+}
+
+void CAmTelnetServerTest::SetUp()
+{
+ std::cout << "CAmTelnetServerTest::SetUp" << std::endl;
+
+
+
+ // Create a Thread for the SocketHandler loop
+ std::cout << "creating mSocketHandlerThread" << std::endl;
+ pthread_create(&mSocketHandlerThread, NULL, startSocketHandler, this);
+}
+
+void CAmTelnetServerTest::TearDown()
+{
+ pthread_join(mSocketHandlerThread, NULL);
}
-CAmTelnetServerTest::SetUp()
+int main(int argc, char **argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}
+
+void CAmTelnetServerTest::setSocketHandler(SocketHandler* pSocketHandler)
{
- //startup all the Plugins and Interfaces
- mControlSender.startupController(&iControlReceiver);
- mCommandSender.startupInterface(&iCommandReceiver);
- mRoutingSender.startupRoutingInterface(&iRoutingReceiver);
+ mpSocketHandler = pSocketHandler;
+
+ if(NULL != pSocketHandler)
+ {
+ std::cout << "CommandReceiver" << std::endl;
+ mpCommandReceiver = new CommandReceiver(&mDatabasehandler,&mControlSender,mpSocketHandler);
+ std::cout << "RoutingReceiver" << std::endl;
+ mpRoutingReceiver = new RoutingReceiver(&mDatabasehandler,&mRoutingSender,&mControlSender,mpSocketHandler);
+ std::cout << "ControlReceiver" << std::endl;
+ mpControlReceiver = new ControlReceiver(&mDatabasehandler,&mRoutingSender,&mCommandSender,mpSocketHandler,&mRouter);
+
- //when the routingInterface is done, all plugins are loaded:
- mControlSender.hookAllPluginsLoaded();
+ std::cout << "startup all the Plugins and Interfaces" << std::endl;
+ //startup all the Plugins and Interfaces
+ mControlSender.startupController(mpControlReceiver);
+ mCommandSender.startupInterface(mpCommandReceiver);
+ mRoutingSender.startupRoutingInterface(mpRoutingReceiver);
- mSocketHandler.start_listenting();
+ //when the routingInterface is done, all plugins are loaded:
+ mControlSender.hookAllPluginsLoaded();
+ // Starting TelnetServer
+ std::cout << "Starting TelnetServer" << std::endl;
+ mpTelnetServer = new TelnetServer(mpSocketHandler,&mCommandSender,mpCommandReceiver,&mRoutingSender,mpRoutingReceiver,&mControlSender,mpControlReceiver,&mDatabasehandler,&mRouter,6060,3);
+ }
}
+TEST_F(CAmTelnetServerTest,playWithSockets)
+{
+ //pthread_t serverThread;
+ std::cout << "start playWithSockets" << std::endl;
+ struct sockaddr_in servAddr;
+ unsigned short servPort = 6060;
+ struct hostent *host;
+ int socket_;
+
+ //creates a thread that handles the serverpart
+ //pthread_create(&serverThread, NULL, playWithSocketServer, NULL);
+
+ sleep(1); //we need that here because the port needs to be opened
+ if ((socket_ = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
+ {
+ std::cout << "socket problem" << std::endl;
+
+ }
+ else
+ {
+ std::cout << "socket open" << std::endl;
+ }
+
+ if ((host = (struct hostent*) gethostbyname("localhost")) == 0)
+ {
+ std::cout << " ERROR: gethostbyname() failed\n" << std::endl;
+ exit(1);
+ }
+
+ memset(&servAddr, 0, sizeof(servAddr));
+ servAddr.sin_family = AF_INET;
+ servAddr.sin_addr.s_addr = inet_addr(inet_ntoa(*(struct in_addr*) (host->h_addr_list[0])));
+ servAddr.sin_port = htons(servPort);
+
+ if (connect(socket_, (struct sockaddr *) &servAddr, sizeof(servAddr)) < 0)
+ {
+ std::cout << "ERROR: connect() failed\n" << std::endl;
+ }
+
+
+ std::string string("finish!");
+ send(socket_, string.c_str(), string.size(), 0);
+
+ //pthread_join(serverThread, NULL);
}
+
diff --git a/AudioManagerDaemon/test/telnetserver/CAmTelnetServerTest.h b/AudioManagerDaemon/test/telnetserver/CAmTelnetServerTest.h
index aa8e5ba..fae79d4 100644
--- a/AudioManagerDaemon/test/telnetserver/CAmTelnetServerTest.h
+++ b/AudioManagerDaemon/test/telnetserver/CAmTelnetServerTest.h
@@ -10,44 +10,61 @@
#include "gtest/gtest.h"
#include "TelnetServer.h"
+#include "DatabaseHandler.h"
+#include "RoutingSender.h"
+#include "CommandSender.h"
+#include "ControlSender.h"
+#include "Router.h"
+
+namespace am
+{
+
+class SocketHandler;
+class DatabaseHandler;
+class RoutingSender;
+class CommandSender;
+class ControlSender;
+class Router;
+class CommandReceiver;
+class RoutingReceiver;
+class ControlReceiver;
+class TelnetServer;
-namespace am {
-
class CAmTelnetServerTest : public ::testing::Test{
public:
CAmTelnetServerTest();
- virtual ~CAmTelnetServerTest();
+ ~CAmTelnetServerTest();
+
+ void SetUp() ;
- virtual void SetUp() ;
+ void TearDown() ;
- virtual void TearDown() ;
+ void setSocketHandler(SocketHandler* pSocketHandler);
std::vector<std::string> mlistRoutingPluginDirs;
std::vector<std::string> mlistCommandPluginDirs;
- SocketHandler mSocketHandler;
+ SocketHandler* mpSocketHandler;
DatabaseHandler mDatabasehandler;
RoutingSender mRoutingSender;
CommandSender mCommandSender;
ControlSender mControlSender;
Router mRouter;
- CommandReceiver mCommandReceiver;
- RoutingReceiver mRoutingReceiver;
- ControlReceiver mControlReceiver;
+ CommandReceiver* mpCommandReceiver;
+ RoutingReceiver* mpRoutingReceiver;
+ ControlReceiver* mpControlReceiver;
- TelnetServer mTelnetServer;
+ TelnetServer* mpTelnetServer;
+ pthread_t mSocketHandlerThread;
};
}
-int main(int argc, char **argv) {
- ::testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}
+
#endif /* CAMTELNETSERVERTEST_H_ */
diff --git a/AudioManagerDaemon/test/telnetserver/CMakeLists.txt b/AudioManagerDaemon/test/telnetserver/CMakeLists.txt
new file mode 100644
index 0000000..ff6d90d
--- /dev/null
+++ b/AudioManagerDaemon/test/telnetserver/CMakeLists.txt
@@ -0,0 +1,92 @@
+#
+# Copyright (C) 2011, BMW AG
+#
+# GeniviAudioMananger ControlInterfaceTest
+#
+# \file CMakeLists.txt
+#
+# \date 13-Feb-2012
+# \author Frank Herchet (frank.fh.herchet@bmw.de)
+#
+# \section License
+# GNU Lesser General Public License, version 2.1, with special exception (GENIVI clause)
+# Copyright (C) 2012, BMW AG Frank Herchet frank.fh.herchet@bmw.de
+#
+# This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation.
+# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License, version 2.1, for more details.
+# You should have received a copy of the GNU Lesser General Public License, version 2.1, along with this program; if not, see <http://www.gnu.org/licenses/lgpl-2.1.html>.
+# Note that the copyright holders assume that the GNU Lesser General Public License, version 2.1, may also be applicable to programs even in cases in which the program is not a library in the technical sense.
+# Linking AudioManager statically or dynamically with other modules is making a combined work based on AudioManager. You may license such other modules under the GNU Lesser General Public License, version 2.1. If you do not want to license your linked modules under the GNU Lesser General Public License, version 2.1, you may use the program under the following exception.
+# As a special exception, the copyright holders of AudioManager give you permission to combine AudioManager with software programs or libraries that are released under any license unless such a combination is not permitted by the license of such a software program or library. You may copy and distribute such a system following the terms of the GNU Lesser General Public License, version 2.1, including this special exception, for AudioManager and the licenses of the other code concerned.
+# Note that people who make modified versions of AudioManager are not obligated to grant this special exception for their modified versions; it is their choice whether to do so. The GNU Lesser General Public License, version 2.1, gives permission to release a modified version without this exception; this exception also makes it possible to release a modified version which carries forward this exception.
+#
+
+cmake_minimum_required(VERSION 2.6)
+
+PROJECT(telnetServerText)
+
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic")
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -DUNIT_TEST=1 -DDLT_CONTEXT=AudioManager")
+
+set(STD_INCLUDE_DIRS "/usr/include")
+set(DBUS_FOLDER ${CMAKE_SOURCE_DIR}/../../../dbusInterfaces)
+set(AUDIO_INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/../../../includes)
+set(DBUS_INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/../../../../dbusIncludes)
+set(INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/../../include)
+
+
+FIND_PACKAGE(PkgConfig)
+pkg_check_modules(DLT REQUIRED automotive-dlt)
+
+INCLUDE_DIRECTORIES(
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${AUDIO_INCLUDES_FOLDER}
+ ${DBUS_ARCH_INCLUDE_DIR}
+ ${DBUS_INCLUDES_FOLDER}
+ ${CMAKE_SOURCE_DIR}
+ ${STD_INCLUDE_DIRS}
+ ${DLT_INCLUDE_DIRS}
+ ${DBUS_INCLUDE_DIR}
+ ${GTEST_INCLUDE_DIR}
+ ${INCLUDES_FOLDER}
+)
+
+file(GLOB TELNET_SRCS_CXX
+ "../../src/CommandReceiver.cpp"
+ "../../src/CommandSender.cpp"
+ "../../src/ControlReceiver.cpp"
+ "../../src/ControlSender.cpp"
+ "../../src/DatabaseHandler.cpp"
+ "../../src/DatabaseObserver.cpp"
+ "../../src/RoutingReceiver.cpp"
+ "../../src/RoutingSender.cpp"
+ "../../src/SocketHandler.cpp"
+ "../../src/TelnetServer.cpp"
+ "../../src/Router.cpp"
+ "../../src/DLTWrapper.cpp"
+ "../../src/CAmTelnetMenuHelper.cpp"
+ "*.cpp"
+)
+
+ADD_EXECUTABLE(telnetServerTest ${TELNET_SRCS_CXX})
+
+TARGET_LINK_LIBRARIES(telnetServerTest
+ ${SQLITE_LIBRARIES}
+ ${DLT_LIBRARIES}
+ ${DBUS_LIBRARY}
+ ${CMAKE_THREAD_LIBS_INIT}
+ ${CMAKE_THREAD_LIBS_INIT}
+ ${GTEST_LIBRARIES}
+ gmock
+)
+
+INSTALL(TARGETS telnetServerTest
+ DESTINATION "~/TelnetServerTest/"
+ PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
+ COMPONENT tests
+)
+
+SET(ADD_DEPEND "sqlite3(>=3.6.22)" "dlt" "libdbus-1-3(>=1.2.16)" "libgtest-dev(>=1.6.0-1)" "google-mock" "libpthread-stubs0")
+set_property(GLOBAL APPEND PROPERTY tests_prop "${ADD_DEPEND}")
+
+