summaryrefslogtreecommitdiff
path: root/AudioManagerCore/test/AmTelnetServerTest
diff options
context:
space:
mode:
Diffstat (limited to 'AudioManagerCore/test/AmTelnetServerTest')
-rw-r--r--AudioManagerCore/test/AmTelnetServerTest/CAmTelnetServerTest.cpp209
-rw-r--r--AudioManagerCore/test/AmTelnetServerTest/CAmTelnetServerTest.h107
-rw-r--r--AudioManagerCore/test/AmTelnetServerTest/CMakeLists.txt48
-rw-r--r--AudioManagerCore/test/AmTelnetServerTest/CMakeLists.txt~46
4 files changed, 410 insertions, 0 deletions
diff --git a/AudioManagerCore/test/AmTelnetServerTest/CAmTelnetServerTest.cpp b/AudioManagerCore/test/AmTelnetServerTest/CAmTelnetServerTest.cpp
new file mode 100644
index 0000000..d3f7a11
--- /dev/null
+++ b/AudioManagerCore/test/AmTelnetServerTest/CAmTelnetServerTest.cpp
@@ -0,0 +1,209 @@
+/**
+ * SPDX license identifier: MPL-2.0
+ *
+ * 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 2011,2012
+ * \author Frank Herchet, frank.fh.herchet@bmw.de BMW 2012
+ *
+ * For further information see http://www.genivi.org/.
+ *
+ */
+
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+#include <string>
+
+#include "CAmTelnetServerTest.h"
+#include "CAmCommandReceiver.h"
+#include "CAmRoutingReceiver.h"
+#include "CAmControlReceiver.h"
+#include "audiomanagerconfig.h"
+
+
+using namespace testing;
+using namespace am;
+using namespace std;
+
+
+static std::string controllerPlugin = std::string(CONTROLLER_PLUGIN_DIR);
+static unsigned short servPort = 6060;
+static int staticSocket = -1;
+static CAmSocketHandler* mpSocketHandler = NULL;
+
+void* startSocketHandler(void* data)
+{
+ CAmEnvironment* Env = static_cast<CAmEnvironment*>(data);
+ Env->setSocketHandler(&Env->mSocketHandler);
+ Env->mSocketHandler.start_listenting();
+ Env->setSocketHandler(NULL);
+ return (NULL);
+}
+
+CAmEnvironment::CAmEnvironment()
+: mlistRoutingPluginDirs()
+, mlistCommandPluginDirs()
+, mSocketHandler()
+, mDatabasehandler()
+, mRoutingSender(mlistRoutingPluginDirs)
+, mCommandSender(mlistRoutingPluginDirs)
+, mRouter(&mDatabasehandler,&mControlSender)
+, mpCommandReceiver(NULL)
+, mpRoutingReceiver(NULL)
+, mpControlReceiver(NULL)
+, mpTelnetServer(NULL)
+, mSocketHandlerThread(0)
+{
+}
+
+CAmEnvironment::~CAmEnvironment()
+{
+ usleep(500);
+ if(NULL != mpTelnetServer)
+ delete(mpTelnetServer);
+ if(NULL != mpControlReceiver)
+ delete(mpControlReceiver);
+ if(NULL != mpRoutingReceiver)
+ delete(mpRoutingReceiver);
+ if(NULL != mpCommandReceiver)
+ delete(mpCommandReceiver);
+}
+
+void CAmEnvironment::SetUp()
+{
+ pthread_create(&mSocketHandlerThread, NULL, startSocketHandler, this);
+ sleep(1);
+}
+
+void CAmEnvironment::TearDown()
+{
+ pthread_cancel(mSocketHandlerThread);
+}
+
+void CAmEnvironment::setSocketHandler(CAmSocketHandler* pSocketHandler)
+{
+ mpSocketHandler = pSocketHandler;
+
+ if(NULL != pSocketHandler)
+ {
+ mpCommandReceiver = new CAmCommandReceiver(&mDatabasehandler,&mControlSender,mpSocketHandler);
+ mpRoutingReceiver = new CAmRoutingReceiver(&mDatabasehandler,&mRoutingSender,&mControlSender,mpSocketHandler);
+ mpControlReceiver = new CAmControlReceiver(&mDatabasehandler,&mRoutingSender,&mCommandSender,mpSocketHandler,&mRouter);
+
+ //startup all the Plugins and Interfaces
+ //mControlSender.startupController(mpControlReceiver);
+ //mCommandSender.startupInterfaces(mpCommandReceiver);
+ //mRoutingSender.startupInterfaces(mpRoutingReceiver);
+
+ //when the routingInterface is done, all plugins are loaded:
+ //mControlSender.setControllerReady();
+
+ // Starting TelnetServer
+ mpTelnetServer = new CAmTelnetServer(mpSocketHandler,&mCommandSender,mpCommandReceiver,&mRoutingSender,mpRoutingReceiver,&mControlSender,mpControlReceiver,&mDatabasehandler,&mRouter,servPort,3);
+ }
+}
+
+void CAmEnvironment::stopSocketHandler()
+{
+ mpSocketHandler->stop_listening();
+}
+
+CAmTelnetServerTest::CAmTelnetServerTest()
+{
+
+}
+
+CAmTelnetServerTest::~CAmTelnetServerTest()
+{
+
+}
+
+void CAmTelnetServerTest::SetUp()
+{
+
+}
+
+void CAmTelnetServerTest::TearDown()
+{
+
+}
+
+void CAmTelnetServerTest::sendCmd(std::string & command )
+{
+ ssize_t sizesent = send(staticSocket, command.c_str(), command.size(), 0);
+ ASSERT_EQ(static_cast<uint>(sizesent),command.size());
+
+ char buffer[1000];
+ memset(buffer,0,sizeof(buffer));
+ int read=recv(staticSocket,buffer,sizeof(buffer),0);
+ ASSERT_GT(read,1);
+}
+
+TEST_F(CAmTelnetServerTest,connectTelnetServer)
+{
+ struct sockaddr_in servAddr;
+
+ staticSocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
+ ASSERT_GE(staticSocket,0);
+
+ struct hostent *host = (struct hostent*) gethostbyname("localhost");
+ if (host == 0)
+ {
+ std::cout << " ERROR: gethostbyname() failed\n" << std::endl;
+ return;
+ }
+
+ 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);
+
+ int return_connect = connect(staticSocket, (struct sockaddr *) &servAddr, sizeof(servAddr));
+ ASSERT_GE(return_connect,0);
+
+ char buffer[1000];
+ int read=recv(staticSocket,buffer,sizeof(buffer),0);
+ ASSERT_GT(read,1);
+}
+
+TEST_F(CAmTelnetServerTest,sendCmdTelnetServer)
+{
+ std::string cmd("help");
+ sendCmd(cmd);
+}
+
+TEST_F(CAmTelnetServerTest,sendDumpCmdTelnetServer)
+{
+ std::string cmd1("info");
+ std::string cmd3("dump");
+ sendCmd(cmd1);
+ sendCmd(cmd3);
+}
+
+TEST_F(CAmTelnetServerTest,closeTelnetServerConnection)
+{
+ std::string cmd("exit");
+ mpSocketHandler->stop_listening();
+ sendCmd(cmd);
+ close(staticSocket);
+ staticSocket = -1;
+}
+
+int main(int argc, char **argv) {
+ ::testing::InitGoogleTest(&argc, argv);
+ ::testing::Environment* const env = ::testing::AddGlobalTestEnvironment(new CAmEnvironment);
+ (void) env;
+ return RUN_ALL_TESTS();
+}
diff --git a/AudioManagerCore/test/AmTelnetServerTest/CAmTelnetServerTest.h b/AudioManagerCore/test/AmTelnetServerTest/CAmTelnetServerTest.h
new file mode 100644
index 0000000..02f98a3
--- /dev/null
+++ b/AudioManagerCore/test/AmTelnetServerTest/CAmTelnetServerTest.h
@@ -0,0 +1,107 @@
+/**
+ * SPDX license identifier: MPL-2.0
+ *
+ * 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 2011,2012
+ * \author Frank Herchet, frank.fh.herchet@bmw.de BMW 2012
+ *
+ * For further information see http://www.genivi.org/.
+ *
+ */
+
+#ifndef CAMTELNETSERVERTEST_H_
+#define CAMTELNETSERVERTEST_H_
+
+#include "gtest/gtest.h"
+#include "CAmTelnetServer.h"
+#include "CAmRoutingSender.h"
+#include "CAmCommandSender.h"
+#include "CAmControlSender.h"
+#include "CAmRouter.h"
+#include "audiomanagerconfig.h"
+#include "CAmDatabaseHandlerMap.h"
+
+
+
+
+
+namespace am
+{
+
+class CAmSocketHandler;
+class CAmRoutingSender;
+class CAmCommandSender;
+class CAmControlSender;
+class CAmRouter;
+class CAmCommandReceiver;
+class CAmRoutingReceiver;
+class CAmControlReceiver;
+class CAmTelnetServer;
+
+
+class CAmEnvironment : public ::testing::Environment
+{
+ public:
+ CAmEnvironment();
+
+ ~CAmEnvironment();
+ // Override this to define how to set up the environment.
+ void SetUp();
+ // Override this to define how to tear down the environment.
+ void TearDown();
+
+ void setSocketHandler(CAmSocketHandler* pSocketHandler);
+
+ void stopSocketHandler();
+
+ std::vector<std::string> mlistRoutingPluginDirs;
+ std::vector<std::string> mlistCommandPluginDirs;
+
+ CAmSocketHandler mSocketHandler;
+ CAmDatabaseHandlerMap mDatabasehandler;
+ CAmRoutingSender mRoutingSender;
+ CAmCommandSender mCommandSender;
+ CAmControlSender mControlSender;
+ CAmRouter mRouter;
+
+ CAmCommandReceiver* mpCommandReceiver;
+ CAmRoutingReceiver* mpRoutingReceiver;
+ CAmControlReceiver* mpControlReceiver;
+
+ CAmTelnetServer* mpTelnetServer;
+
+ pthread_t mSocketHandlerThread;
+};
+
+class CAmTelnetServerTest : public ::testing::Test
+{
+ public:
+ CAmTelnetServerTest();
+ ~CAmTelnetServerTest();
+
+
+ void SetUp() ;
+
+ void TearDown() ;
+ void sendCmd(std::string & command );
+ //int mSocket;
+};
+
+}
+
+
+
+
+#endif /* CAMTELNETSERVERTEST_H_ */
diff --git a/AudioManagerCore/test/AmTelnetServerTest/CMakeLists.txt b/AudioManagerCore/test/AmTelnetServerTest/CMakeLists.txt
new file mode 100644
index 0000000..8dcb0a3
--- /dev/null
+++ b/AudioManagerCore/test/AmTelnetServerTest/CMakeLists.txt
@@ -0,0 +1,48 @@
+# 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 2011,2012
+#
+# For further information see http://www.genivi.org/.
+#
+
+cmake_minimum_required(VERSION 3.0)
+
+PROJECT(AmTelnetServerTest LANGUAGES CXX VERSION ${DAEMONVERSION})
+
+INCLUDE_DIRECTORIES(
+ ${AUDIOMANAGER_CORE_INCLUDE}
+ ${GMOCK_INCLUDE_DIRS}
+ ${GTEST_INCLUDE_DIRS})
+
+file(GLOB TELNET_SRCS_CXX
+ "*.cpp"
+)
+
+ADD_EXECUTABLE(AmTelnetServerTest ${TELNET_SRCS_CXX})
+
+TARGET_LINK_LIBRARIES(AmTelnetServerTest
+ ${GTEST_LIBRARIES}
+ ${GMOCK_LIBRARIES}
+ AudioManagerCore
+)
+add_test(AmTelnetServerTest AmTelnetServerTest)
+
+ADD_DEPENDENCIES(AmTelnetServerTest AudioManagerCore)
+
+INSTALL(TARGETS AmTelnetServerTest
+ DESTINATION ${TEST_EXECUTABLE_INSTALL_PATH}
+ PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
+ COMPONENT tests
+)
+
+
diff --git a/AudioManagerCore/test/AmTelnetServerTest/CMakeLists.txt~ b/AudioManagerCore/test/AmTelnetServerTest/CMakeLists.txt~
new file mode 100644
index 0000000..51e92b8
--- /dev/null
+++ b/AudioManagerCore/test/AmTelnetServerTest/CMakeLists.txt~
@@ -0,0 +1,46 @@
+# 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 2011,2012
+#
+# For further information see http://www.genivi.org/.
+#
+
+cmake_minimum_required(VERSION 3.0)
+
+PROJECT(AmTelnetServerTest LANGUAGES CXX VERSION ${DAEMONVERSION})
+
+INCLUDE_DIRECTORIES(
+ ${AUDIOMANAGER_CORE_INCLUDE}
+ ${GMOCK_INCLUDE_DIR})
+
+file(GLOB TELNET_SRCS_CXX
+ "*.cpp"
+)
+
+ADD_EXECUTABLE(AmTelnetServerTest ${TELNET_SRCS_CXX})
+
+TARGET_LINK_LIBRARIES(AmTelnetServerTest
+ ${GTEST_LIBRARIES}
+ ${GMOCK_LIBRARIES}
+ AudioManagerCore
+)
+
+ADD_DEPENDENCIES(AmTelnetServerTest AudioManagerCore)
+
+INSTALL(TARGETS AmTelnetServerTest
+ DESTINATION ${TEST_EXECUTABLE_INSTALL_PATH}
+ PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
+ COMPONENT tests
+)
+
+