From 2f505eb8fb9a4857173726b52f11f8764ac7d2c7 Mon Sep 17 00:00:00 2001 From: Krzysztof Dynowski Date: Sun, 3 May 2015 12:10:17 +0200 Subject: [PATCH 01/16] Vasum client wrapper epoch fix, remove unwanted logging [Bug/Feature] Missing epoch in spec, too many logging messages [Cause] N/A [Solution] Add epoch, remove unwanted logging [Verification] Build, install on target, check journal Change-Id: Ie18565a52e2d0fbf6e2089c3c122a30c5bd1e6e1 --- CMakeLists.txt | 3 +++ client/CMakeLists.txt | 6 +++--- client/vasum-client-impl.cpp | 3 --- libs/config/CMakeLists.txt | 2 +- libs/dbus/CMakeLists.txt | 2 +- libs/logger/CMakeLists.txt | 2 +- packaging/vasum.spec | 24 ++++++++++++------------ 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2e960c6..05fbc53 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,9 @@ CMAKE_MINIMUM_REQUIRED (VERSION 2.6.2) PROJECT(vasum) +IF(NOT DEFINED VERSION) + SET(VERSION "0.1.1") +ENDIF(NOT DEFINED VERSION) ## pkgconfig ################################################################### INCLUDE(FindPkgConfig) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index e366e3c..47db767 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -21,7 +21,7 @@ MESSAGE(STATUS "") MESSAGE(STATUS "Generating makefile for the Client...") ## set client library sources (without vasum-wrapper.cpp) FILE(GLOB project_SRCS *.cpp *.hpp *.h) -FILE(GLOB project_SRCS_rm vasum-wrapper.cpp) +FILE(GLOB project_SRCS_rm vasum-wrapper.cpp wrapper-compat.* vasum.h vasum_list.h) LIST(REMOVE_ITEM project_SRCS ${project_SRCS_rm}) ## set wrapper library sources (without vasum-client.cpp) @@ -36,7 +36,7 @@ FILE(GLOB common_SRCS ${COMMON_FOLDER}/epoll/*.hpp ${COMMON_FOLDER} ${COMMON_FOLDER}/*.hpp ${COMMON_FOLDER}/*.cpp) ## set version highier then vasum.so.0.1.0 -SET(_LIB_VERSION_ "0.1.1") +SET(_LIB_VERSION_ "${VERSION}") SET(_LIB_SOVERSION_ "0") SET(PC_FILE "${PROJECT_NAME}.pc") @@ -53,7 +53,7 @@ SET_TARGET_PROPERTIES(${PROJECT_NAME}-client PROPERTIES VERSION ${_LIB_VERSION_} COMPILE_DEFINITIONS HOST_IPC_SOCKET="${VSM_SERVER_IPC_SOCKET_PATH}") -ADD_LIBRARY(${PROJECT_NAME} SHARED ${wrapper_SRCS} ${common_SRCS}) +ADD_LIBRARY(${PROJECT_NAME} SHARED ${wrapper_SRCS}) SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${_LIB_SOVERSION_} VERSION ${_LIB_VERSION_} diff --git a/client/vasum-client-impl.cpp b/client/vasum-client-impl.cpp index 9694dd3..bbc7e9e 100644 --- a/client/vasum-client-impl.cpp +++ b/client/vasum-client-impl.cpp @@ -177,9 +177,6 @@ VsmStatus Client::coverException(const function& worker) noexcept } catch (const exception& ex) { mStatus = Status(VSMCLIENT_CUSTOM_ERROR, ex.what()); } - if (mStatus.mVsmStatus!=VSMCLIENT_SUCCESS) { - LOGE("Exception: " << mStatus.mMsg); - } return mStatus.mVsmStatus; } diff --git a/libs/config/CMakeLists.txt b/libs/config/CMakeLists.txt index 377b734..87c2af1 100644 --- a/libs/config/CMakeLists.txt +++ b/libs/config/CMakeLists.txt @@ -25,7 +25,7 @@ FILE(GLOB HEADERS *.hpp) FILE(GLOB HEADERS_SQLITE3 ${CMAKE_CURRENT_BINARY_DIR}/sqlite3/*.hpp) FILE(GLOB_RECURSE SRCS *.cpp *.hpp) -SET(_LIB_VERSION_ "0.0.1") +SET(_LIB_VERSION_ "${VERSION}") SET(_LIB_SOVERSION_ "0") SET(PC_FILE "lib${PROJECT_NAME}.pc") diff --git a/libs/dbus/CMakeLists.txt b/libs/dbus/CMakeLists.txt index cd2c06c..840b3b4 100644 --- a/libs/dbus/CMakeLists.txt +++ b/libs/dbus/CMakeLists.txt @@ -32,7 +32,7 @@ FILE(GLOB SRCS_UTILS ${COMMON_FOLDER}/utils/callback-guard.cpp ${COMMON_FOLDER}/utils/callback-wrapper.cpp) FILE(GLOB SRCS *.cpp *.hpp) -SET(_LIB_VERSION_ "0.0.1") +SET(_LIB_VERSION_ "${VERSION}") SET(_LIB_SOVERSION_ "0") SET(PC_FILE "lib${PROJECT_NAME}.pc") diff --git a/libs/logger/CMakeLists.txt b/libs/logger/CMakeLists.txt index 786f8bc..6b3352d 100644 --- a/libs/logger/CMakeLists.txt +++ b/libs/logger/CMakeLists.txt @@ -24,7 +24,7 @@ MESSAGE(STATUS "Generating makefile for the libLogger...") FILE(GLOB HEADERS *.hpp) FILE(GLOB SRCS *.cpp *.hpp) -SET(_LIB_VERSION_ "0.0.1") +SET(_LIB_VERSION_ "${VERSION}") SET(_LIB_SOVERSION_ "0") SET(PC_FILE "lib${PROJECT_NAME}.pc") diff --git a/packaging/vasum.spec b/packaging/vasum.spec index c2b6eb9..07b2f0c 100644 --- a/packaging/vasum.spec +++ b/packaging/vasum.spec @@ -128,9 +128,9 @@ Library interface to the vasum daemon %files client %manifest packaging/libvasum-client.manifest %defattr(644,root,root,755) -%attr(755,root,root) %{_libdir}/libvasum-client.so.0.1.1 +%attr(755,root,root) %{_libdir}/libvasum-client.so.%{version} %{_libdir}/libvasum-client.so.0 -%attr(755,root,root) %{_libdir}/libvasum.so.0.1.1 +%attr(755,root,root) %{_libdir}/libvasum.so.%{version} %{_libdir}/libvasum.so.0 %post client -p /sbin/ldconfig @@ -142,8 +142,8 @@ Library interface to the vasum daemon %package devel Summary: Vasum Client Devel Group: Development/Libraries -Requires: vasum = %{version}-%{release} -Requires: vasum-client = %{version}-%{release} +Requires: vasum = %{epoch}:%{version}-%{release} +Requires: vasum-client = %{epoch}:%{version}-%{release} %description devel Development package including the header files for the client library @@ -175,7 +175,7 @@ Zones support installed inside every zone. %package zone-daemon Summary: Vasum Zones Daemon Group: Security/Other -Requires: vasum-zone-support = %{version}-%{release} +Requires: vasum-zone-support = %{epoch}:%{version}-%{release} %description zone-daemon Daemon running inside every zone. @@ -191,7 +191,7 @@ Daemon running inside every zone. %package cli Summary: Vasum Command Line Interface Group: Security/Other -Requires: vasum-client = %{version}-%{release} +Requires: vasum-client = %{epoch}:%{version}-%{release} %description cli Command Line Interface for vasum. @@ -203,7 +203,7 @@ Command Line Interface for vasum. %package cli-completion Summary: Vasum Command Line Interface bash completion Group: Security/Other -Requires: vasum-cli = %{version}-%{release} +Requires: vasum-cli = %{epoch}:%{version}-%{release} #Requires: bash-completion %description cli-completion @@ -216,8 +216,8 @@ Command Line Interface bash completion. %package tests Summary: Vasum Tests Group: Development/Libraries -Requires: vasum = %{version}-%{release} -Requires: vasum-client = %{version}-%{release} +Requires: vasum = %{epoch}:%{version}-%{release} +Requires: vasum-client = %{epoch}:%{version}-%{release} Requires: python Requires: python-xml Requires: boost-test @@ -270,7 +270,7 @@ The package provides libLogger library. %files -n libLogger %defattr(644,root,root,755) %{_libdir}/libLogger.so.0 -%attr(755,root,root) %{_libdir}/libLogger.so.0.0.1 +%attr(755,root,root) %{_libdir}/libLogger.so.%{version} %package -n libLogger-devel Summary: Development logger library @@ -303,7 +303,7 @@ The package provides libSimpleDbus library. %files -n libSimpleDbus %defattr(644,root,root,755) %{_libdir}/libSimpleDbus.so.0 -%attr(755,root,root) %{_libdir}/libSimpleDbus.so.0.0.1 +%attr(755,root,root) %{_libdir}/libSimpleDbus.so.%{version} %package -n libSimpleDbus-devel Summary: Development Simple dbus library @@ -337,7 +337,7 @@ The package provides libConfig library. %files -n libConfig %defattr(644,root,root,755) %{_libdir}/libConfig.so.0 -%attr(755,root,root) %{_libdir}/libConfig.so.0.0.1 +%attr(755,root,root) %{_libdir}/libConfig.so.%{version} %package -n libConfig-devel Summary: Development Config library -- 2.7.4 From a840b130c718aab155e81e46d009f4c85f8d9f41 Mon Sep 17 00:00:00 2001 From: Mateusz Malicki Date: Mon, 11 May 2015 10:57:29 +0200 Subject: [PATCH 02/16] Removed unnecessary debug messages logging [Bug] Unnecessary debug messages [Cause] Listening to signals from all the dbus buses [Solution] Listen on only one dbus interface [Verification] Build with DEBUG, run on odroid. There shouldn't be debug messages about received signals from external services Change-Id: I9096b581d970da5a6bd18beca5fa8d13688ab875 --- libs/dbus/connection.cpp | 11 +++++++---- libs/dbus/connection.hpp | 6 +++++- server/host-dbus-connection.cpp | 3 ++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/libs/dbus/connection.cpp b/libs/dbus/connection.cpp index 441174b..3485ea5 100644 --- a/libs/dbus/connection.cpp +++ b/libs/dbus/connection.cpp @@ -213,13 +213,16 @@ void DbusConnection::emitSignal(const std::string& objectPath, } DbusConnection::SubscriptionId DbusConnection::signalSubscribe(const SignalCallback& callback, - const std::string& senderBusName) + const std::string& senderBusName, + const std::string& interface, + const std::string& objectPath, + const std::string& member) { return g_dbus_connection_signal_subscribe(mConnection, senderBusName.empty() ? NULL : senderBusName.c_str(), - NULL, - NULL, - NULL, + interface.empty() ? NULL : interface.c_str(), + objectPath.empty() ? NULL : objectPath.c_str(), + member.empty() ? NULL : member.c_str(), NULL, G_DBUS_SIGNAL_FLAGS_NONE, &DbusConnection::onSignal, diff --git a/libs/dbus/connection.hpp b/libs/dbus/connection.hpp index 6603c9d..faf737c 100644 --- a/libs/dbus/connection.hpp +++ b/libs/dbus/connection.hpp @@ -125,7 +125,11 @@ public: * Empty sender means subscribe to all signals * Returns a subscription identifier that can be used to unsubscribe signal */ - SubscriptionId signalSubscribe(const SignalCallback& callback, const std::string& senderBusName); + SubscriptionId signalSubscribe(const SignalCallback& callback, + const std::string& senderBusName = "", + const std::string& interface = "", + const std::string& objectPath ="", + const std::string& member = ""); /** * Unsubscribes from a signal. diff --git a/server/host-dbus-connection.cpp b/server/host-dbus-connection.cpp index 98325ac..ad0ba0d 100644 --- a/server/host-dbus-connection.cpp +++ b/server/host-dbus-connection.cpp @@ -71,7 +71,8 @@ HostDbusConnection::HostDbusConnection() mSubscriptionId = mDbusConnection->signalSubscribe(std::bind(&HostDbusConnection::onSignalCall, this, _1, _2, _3, _4, _5), - std::string()); + std::string(), + api::dbus::INTERFACE); LOGD("Connected"); } -- 2.7.4 From cce2ad0032c89a684910440040090f1ee42aaf25 Mon Sep 17 00:00:00 2001 From: Mateusz Malicki Date: Mon, 11 May 2015 12:28:55 +0200 Subject: [PATCH 03/16] Doxygen fixes [Bug] Doesn't compile with clang [Cause] Doxygen parse errors [Solution] Fix doxygen comments [Verification] Compile with clang 3.5.1 Change-Id: Ifa43326293b27ad45c2f3e217f4c09d175cc5c15 --- client/vasum.h | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/client/vasum.h b/client/vasum.h index ae4f37d..13db4f7 100644 --- a/client/vasum.h +++ b/client/vasum.h @@ -2,7 +2,7 @@ * Vasum : Tizen Zone Control Framework * * Copyright (c) 2000 - 2014 Samsung Electronics Co., Ltd All Rights Reserved - * + * * Contact: Keunhwan Kwak * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -159,7 +159,7 @@ API vsm_error_e vsm_last_error(vsm_context_h ctx); * @brief Get vasum error string. * \par Description: * return string pointer for vasum error string. - * \param[in] vsm_error_e error. + * \param[in] error vsm_error_e. * \return string pointer value represent to error code. * \warning Do not free returned pointer. */ @@ -342,7 +342,7 @@ typedef enum { * @brief Definition for zone events */ typedef enum { - VSM_ZONE_EVENT_NONE, /**< Zone has no event */ + VSM_ZONE_EVENT_NONE, /**< Zone has no event */ VSM_ZONE_EVENT_CREATED, /**< Zone is created */ VSM_ZONE_EVENT_DESTROYED, /**< Zone is destroted */ VSM_ZONE_EVENT_SWITCHED, /**< Foreground is switched */ @@ -368,14 +368,13 @@ typedef int (*vsm_zone_event_cb)(vsm_zone_h zone, vsm_zone_event_t event, void * * \par Description: * This API traverses all zones which are in running state, and callback function will be called on every entry. * \param[in] ctx vsm context - * \param[in] zone_name zone name string * \param[in] callback Function to be executed in iteration, which can be NULL * \param[in] user_data Parameter to be passed to callback function * \return 0 on success, or negative integer error code on error. * \retval #VSM_ERROR_NONE Successful * \retval #VSM_ERROR_OUT_OF_MEMORY Zone handle allocation failed * \retval #VSM_ERROR_GENERIC Zone initialize failed - * \remark In case of callback and is NULL, + * \remark In case of callback and is NULL, * This API refresh vsm_context which means reloading current running zone to vsm_context again. */ API int vsm_iterate_zone(vsm_context_h ctx, vsm_zone_iter_cb callback, void *user_data); @@ -384,11 +383,11 @@ API int vsm_iterate_zone(vsm_context_h ctx, vsm_zone_iter_cb callback, void *use * @brief Find zone corresponding to the name * The function vsm_lookup_zone_by_name() looks for the zone instance corresponding to the given name. * \param[in] ctx vsm context - * \param[in] path zone path to search + * \param[in] name zone name * \return Zone instance on success, or NULL on error. - * \retval vsm_zone_h Successful + * \retval vsm_zone_h Successful * \retval NULL Failed to lookup - * \pre vsm_context_h have to bind by vsm_enter_eventloop() or vsm_context_h does not have current zone status. + * \pre vsm_context_h have to bind by vsm_enter_eventloop() or vsm_context_h does not have current zone status. * \see vsm_create_context(), vsm_enter_eventloop() */ API vsm_zone_h vsm_lookup_zone_by_name(vsm_context_h ctx, const char *name); @@ -400,9 +399,9 @@ API vsm_zone_h vsm_lookup_zone_by_name(vsm_context_h ctx, const char *name); * \param[in] ctx vsm context * \param[in] pid Process id * \return Zone instance on success, or NULL on error. - * \retval vsm_zone_h Successful + * \retval vsm_zone_h Successful * \retval NULL Failed to lookup - * \pre vsm_context_h have to bind by vsm_enter_eventloop() or vsm_context_h does not have current zone status. + * \pre vsm_context_h have to bind by vsm_enter_eventloop() or vsm_context_h does not have current zone status. * \see vsm_create_context(), vsm_enter_eventloop() */ API vsm_zone_h vsm_lookup_zone_by_pid(vsm_context_h ctx, pid_t pid); @@ -416,7 +415,7 @@ API vsm_zone_h vsm_lookup_zone_by_pid(vsm_context_h ctx, pid_t pid); * \return Callback handle on success, or negative error code on error. * \retval handle nonnegative handle id for callback. * \retval #VSM_ERROR_OUT_OF_MEMORY Callback hanlder allocation failed. - * \pre vsm_context_h have to bind by vsm_enter_eventloop() or callback function does not called. + * \pre vsm_context_h have to bind by vsm_enter_eventloop() or callback function does not called. * \see vsm_create_context(), vsm_enter_eventloop(), vsm_del_state_changed_callback() */ API int vsm_add_state_changed_callback(vsm_context_h ctx, vsm_zone_state_changed_cb callback, void *user_data); @@ -492,10 +491,10 @@ typedef struct vsm_attach_options_s { * @brief Launch a process in a running zone. * \par Description: * Execute specific command inside the zone with given arguments and environment - * \param[in] zone vsm_zone_h + * \param[in] zone_name vsm_zone_h * \param[in] command vsm attach command * \param[in] opt vsm attach options (can be NULL), using VSM_ATTACH_OPT_DEFAULT - * \param[out] attached process pid + * \param[out] attached_process process pid * \return On sucess 0, otherwise, a negative integer error code on error * \retval #VSM_ERROR_NONE Successful * \retval #VSM_ERROR_INVALID Invalid arguments @@ -508,7 +507,7 @@ API int vsm_attach_zone(vsm_context_h ctx, const char * zone_name, vsm_attach_co * @brief Launch a process in a running zone and wait till child process exited. * \par Description: * Execute specific command inside the zone with given arguments and environment - * \param[in] zone vsm_zone_h + * \param[in] zone_name vsm_zone_h * \param[in] command vsm attach command * \param[in] opt vsm attach options (can be NULL), using VSM_ATTACH_OPT_DEFAULT * \return On sucess waitpid exit code or attached process, or a negative error code @@ -621,7 +620,7 @@ API void * vsm_get_userdata(vsm_zone_h zone); * @brief join current process into zone. * \par Synopsys: * Change self peer credential to target zone - * \param[in] vsm_zone_h zone + * \param[in] zone vsm_zone_h * \return before vsm_zone on success, or NULL on error. * \retval vsm_zone_h before zone handle, If caller process running in host, then host handle returned. * \retval NULL invalid zone handle. @@ -637,7 +636,7 @@ API vsm_zone_h vsm_join_zone(vsm_zone_h zone); * \par Description: * get canonical file path based on current zone. * \param[in] input_path requested zone path - * \param[out] output_path string pointer for canonicalized output path + * \param[out] output_path string pointer for canonicalized output path * \return int positive string length of output_path, or negative error code on error. * \retval #VSM_ERROR_INVALID Invalid arguments. * \retval #VSM_ERROR_GENERIC gethostname() is failed. @@ -809,7 +808,7 @@ API int vsm_down_netdev(vsm_netdev_h netdev); * \par Description: * The function vsm_get_ip_addr_netdev() get ip address from a network interface * \param[in] netdev Network device to get address - * \param[in] family Address family + * \param[in] addr_family Address family * \param[out] addr Buffer to get address from a network device * \param[out] size Size of buffer * \return 0 on success, or negative integer error code on error. @@ -826,7 +825,7 @@ API int vsm_get_ip_addr_netdev(vsm_netdev_h netdev, vsm_netdev_addr_t addr_famil * \par Description: * The function vsm_set_ip_addr_netdev() set ipv4 address to a network interface * \param[in] netdev Network device to set address - * \param[in] family Address family + * \param[in] addr_family Address family * \param[in] addr IP address string to be set * \param[in] prefix prefix ( ex> 192.168.122.1/24, 24 is prefix ) * \return 0 on success, or negative integer error code on error. @@ -852,7 +851,7 @@ API int vsm_set_ip_addr_netdev(vsm_netdev_h netdev, vsm_netdev_addr_t addr_famil * \par Description: * Request permission device file node to target zone. * \param[in] zone vsm_zone_h - * \param[in] name device node path + * \param[in] path device node path * \param[in] flags requested permission O_RDWR, O_WRONLY, O_RDONLY * \return 0 on success, or negative integer error code on error. * \retval #VSM_ERROR_NONE Successful @@ -868,7 +867,7 @@ API int vsm_grant_device(vsm_zone_h zone, const char *path, uint32_t flags); * \par Description: * Revoke device node permissions from target zone. * \param[in] zone vsm_zone_h - * \param[in] name device node path + * \param[in] path device node path * \return 0 on success, or negative integer error code on error. * \retval #VSM_ERROR_NONE Successful * \retval #VSM_ERROR_INVALID Invalid arguments @@ -907,11 +906,11 @@ typedef mode_t vsm_mode_t; * @brief Declare specific file object to every zone. * \par Description: * Declare host file system to every running zone. - * In case of host target file exist, create new file in running zone. or create a new file in running zone. + * In case of host target file exist, create new file in running zone. or create a new file in running zone. * And add hook info in vsm-resource-provier for automatically link host target file to starting zone. * Smack labels are also copied as same as host labels. * \param[in] ctx vsm context - * \param[in] type Type of file system object + * \param[in] ftype Type of file system object * \param[in] path Path for the file system object * \param[in] flags Flasg * \param[in] mode mode @@ -935,7 +934,7 @@ API int vsm_declare_file(vsm_context_h ctx, vsm_fso_type_t ftype, const char *pa * \param[in] target target * \return zero on success, or negative value on error. * \retval #VSM_ERROR_NONE successful - * \retval #VSM_ERROR_INVALID Invalid provision type to db. + * \retval #VSM_ERROR_INVALID Invalid provision type to db. * \retval #VSM_ERROR_GENERIC Error in vasum server side. * \retval #VSM_ERROR_NO_OBJECT Source file is not exist in host filesystem */ -- 2.7.4 From 4c55d2d204ffaab7661bea92845836cb70ced5b5 Mon Sep 17 00:00:00 2001 From: Mateusz Malicki Date: Wed, 6 May 2015 11:38:03 +0200 Subject: [PATCH 04/16] Client timeout fixes: vsm_start_zone, vsm_shutdown_zone, vsm_lock_zone [Feature] Greater timeout for vsm_start_zone, vsm_shutdown_zone, vsm_lock_zone, vsm_destroy_zone [Cause] Timeout was too small [Solution] N/A [Verification] Start vasum on odroid, start zone, lock zone, shutdown zone, destroy zone Change-Id: I22c080565736abeb95a1e57653777c7d0863c7b3 --- client/host-ipc-connection.cpp | 89 +++++++++++++++++++++++------------------- client/host-ipc-connection.hpp | 6 --- 2 files changed, 48 insertions(+), 47 deletions(-) diff --git a/client/host-ipc-connection.cpp b/client/host-ipc-connection.cpp index 11741f6..6aa87ec 100644 --- a/client/host-ipc-connection.cpp +++ b/client/host-ipc-connection.cpp @@ -31,6 +31,10 @@ namespace vasum { namespace client { +namespace { + const int TIMEOUT_INFINITE = -1; +} //namespace + void HostIPCConnection::createSystem() { mClient.reset(new ipc::Client(mDispatcher.getPoll(), HOST_IPC_SOCKET)); @@ -49,21 +53,23 @@ void HostIPCConnection::create(const std::string& address) void HostIPCConnection::callGetZoneIds(api::ZoneIds& argOut) { - api::Void argVoid; - call(api::ipc::METHOD_GET_ZONE_ID_LIST, argVoid, argOut); + argOut = *mClient->callSync( + api::ipc::METHOD_GET_ZONE_ID_LIST, + std::make_shared()); } void HostIPCConnection::callGetActiveZoneId(api::ZoneId& argOut) { - api::Void argVoid; - call(api::ipc::METHOD_GET_ACTIVE_ZONE_ID, argVoid, argOut); + argOut = *mClient->callSync( + api::ipc::METHOD_GET_ACTIVE_ZONE_ID, + std::make_shared()); } void HostIPCConnection::callSetActiveZone(const api::ZoneId& argIn) { mClient->callSync( - api::ipc::METHOD_SET_ACTIVE_ZONE, - std::make_shared(argIn)); + api::ipc::METHOD_SET_ACTIVE_ZONE, + std::make_shared(argIn)); } void HostIPCConnection::callGetZoneInfo(const api::ZoneId& argIn, api::ZoneInfoOut& argOut) @@ -76,11 +82,8 @@ void HostIPCConnection::callGetZoneInfo(const api::ZoneId& argIn, api::ZoneInfoO void HostIPCConnection::callSetNetdevAttrs(const api::SetNetDevAttrsIn& argIn) { mClient->callSync( - api::ipc::METHOD_SET_NETDEV_ATTRS, - std::make_shared(argIn)); - - api::Void argVoid; - call(api::ipc::METHOD_SET_NETDEV_ATTRS, argIn, argVoid); + api::ipc::METHOD_SET_NETDEV_ATTRS, + std::make_shared(argIn)); } void HostIPCConnection::callGetNetdevAttrs(const api::GetNetDevAttrsIn& argIn, api::GetNetDevAttrs& argOut) @@ -100,36 +103,36 @@ void HostIPCConnection::callGetNetdevList(const api::ZoneId& argIn, api::NetDevL void HostIPCConnection::callCreateNetdevVeth(const api::CreateNetDevVethIn& argIn) { mClient->callSync( - api::ipc::METHOD_CREATE_NETDEV_VETH, - std::make_shared(argIn)); + api::ipc::METHOD_CREATE_NETDEV_VETH, + std::make_shared(argIn)); } void HostIPCConnection::callCreateNetdevMacvlan(const api::CreateNetDevMacvlanIn& argIn) { mClient->callSync( - api::ipc::METHOD_CREATE_NETDEV_MACVLAN, - std::make_shared(argIn)); + api::ipc::METHOD_CREATE_NETDEV_MACVLAN, + std::make_shared(argIn)); } void HostIPCConnection::callCreateNetdevPhys(const api::CreateNetDevPhysIn& argIn) { mClient->callSync( - api::ipc::METHOD_CREATE_NETDEV_PHYS, - std::make_shared(argIn)); + api::ipc::METHOD_CREATE_NETDEV_PHYS, + std::make_shared(argIn)); } void HostIPCConnection::callDestroyNetdev(const api::DestroyNetDevIn& argIn) { mClient->callSync( - api::ipc::METHOD_DESTROY_NETDEV, - std::make_shared(argIn)); + api::ipc::METHOD_DESTROY_NETDEV, + std::make_shared(argIn)); } void HostIPCConnection::callDeleteNetdevIpAddress(const api::DeleteNetdevIpAddressIn& argIn) { mClient->callSync( - api::ipc::METHOD_DELETE_NETDEV_IP_ADDRESS, - std::make_shared(argIn)); + api::ipc::METHOD_DELETE_NETDEV_IP_ADDRESS, + std::make_shared(argIn)); } void HostIPCConnection::callDeclareFile(const api::DeclareFileIn& argIn, api::Declaration& argOut) @@ -163,71 +166,75 @@ void HostIPCConnection::callGetDeclarations(const api::ZoneId& argIn, api::Decla void HostIPCConnection::callRemoveDeclaration(const api::RemoveDeclarationIn& argIn) { mClient->callSync( - api::ipc::METHOD_REMOVE_DECLARATION, - std::make_shared(argIn)); + api::ipc::METHOD_REMOVE_DECLARATION, + std::make_shared(argIn)); } void HostIPCConnection::callCreateZone(const api::CreateZoneIn& argIn) { mClient->callSync( - api::ipc::METHOD_CREATE_ZONE, - std::make_shared(argIn)); + api::ipc::METHOD_CREATE_ZONE, + std::make_shared(argIn)); } void HostIPCConnection::callDestroyZone(const api::ZoneId& argIn) { mClient->callSync( - api::ipc::METHOD_DESTROY_ZONE, - std::make_shared(argIn)); + api::ipc::METHOD_DESTROY_ZONE, + std::make_shared(argIn), + TIMEOUT_INFINITE); } void HostIPCConnection::callShutdownZone(const api::ZoneId& argIn) { mClient->callSync( - api::ipc::METHOD_SHUTDOWN_ZONE, - std::make_shared(argIn)); + api::ipc::METHOD_SHUTDOWN_ZONE, + std::make_shared(argIn), + TIMEOUT_INFINITE); } void HostIPCConnection::callStartZone(const api::ZoneId& argIn) { mClient->callSync( - api::ipc::METHOD_START_ZONE, - std::make_shared(argIn)); + api::ipc::METHOD_START_ZONE, + std::make_shared(argIn), + TIMEOUT_INFINITE); } void HostIPCConnection::callLockZone(const api::ZoneId& argIn) { mClient->callSync( - api::ipc::METHOD_LOCK_ZONE, - std::make_shared(argIn)); + api::ipc::METHOD_LOCK_ZONE, + std::make_shared(argIn), + TIMEOUT_INFINITE); } void HostIPCConnection::callUnlockZone(const api::ZoneId& argIn) { mClient->callSync( - api::ipc::METHOD_UNLOCK_ZONE, - std::make_shared(argIn)); + api::ipc::METHOD_UNLOCK_ZONE, + std::make_shared(argIn)); } void HostIPCConnection::callGrantDevice(const api::GrantDeviceIn& argIn) { mClient->callSync( - api::ipc::METHOD_GRANT_DEVICE, - std::make_shared(argIn)); + api::ipc::METHOD_GRANT_DEVICE, + std::make_shared(argIn)); } void HostIPCConnection::callRevokeDevice(const api::RevokeDeviceIn& argIn) { mClient->callSync( - api::ipc::METHOD_REVOKE_DEVICE, - std::make_shared(argIn)); + api::ipc::METHOD_REVOKE_DEVICE, + std::make_shared(argIn)); } void HostIPCConnection::callNotifyActiveZone(const api::NotifActiveZoneIn& argIn) { mClient->callSync( - api::ipc::METHOD_NOTIFY_ACTIVE_ZONE, - std::make_shared(argIn)); + api::ipc::METHOD_NOTIFY_ACTIVE_ZONE, + std::make_shared(argIn)); } void HostIPCConnection::callFileMoveRequest(const api::FileMoveRequestIn& argIn, diff --git a/client/host-ipc-connection.hpp b/client/host-ipc-connection.hpp index 39015f4..1497390 100644 --- a/client/host-ipc-connection.hpp +++ b/client/host-ipc-connection.hpp @@ -82,12 +82,6 @@ public: private: epoll::ThreadDispatcher mDispatcher; std::unique_ptr mClient; - - template - void call(const ipc::MethodID method, const ArgIn& argIn, ArgOut& argOut, int timeout = 5000) { - auto out = mClient->callSync(method, std::make_shared(argIn), timeout); - argOut = *out; - } }; } // namespace client -- 2.7.4 From 648b40963f63f480896486713590dac017cf79bf Mon Sep 17 00:00:00 2001 From: Dariusz Michaluk Date: Mon, 11 May 2015 16:22:53 +0200 Subject: [PATCH 05/16] Cleanup RPM spec file. Fix RPMLINT errors. [Bug/Feature] Cleanup RPM spec file. Fix RPMLINT errors. [Cause] N/A [Solution] N/A [Verification] Build, install, uninstall. Change-Id: I063dd412b1999b9cda5e2cdf3d62ee2282abca1b --- packaging/vasum.spec | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packaging/vasum.spec b/packaging/vasum.spec index 07b2f0c..d2c7fe0 100644 --- a/packaging/vasum.spec +++ b/packaging/vasum.spec @@ -125,6 +125,10 @@ Requires(postun): /sbin/ldconfig %description client Library interface to the vasum daemon +%post -n vasum-client -p /sbin/ldconfig + +%postun -n vasum-client -p /sbin/ldconfig + %files client %manifest packaging/libvasum-client.manifest %defattr(644,root,root,755) @@ -133,10 +137,6 @@ Library interface to the vasum daemon %attr(755,root,root) %{_libdir}/libvasum.so.%{version} %{_libdir}/libvasum.so.0 -%post client -p /sbin/ldconfig - -%postun client -p /sbin/ldconfig - ## Devel Package ############################################################### %package devel @@ -207,7 +207,7 @@ Requires: vasum-cli = %{epoch}:%{version}-%{release} #Requires: bash-completion %description cli-completion -Command Line Interface bash completion. +Command Line Interface bash completion for vasum. %files cli-completion %attr(755,root,root) %{_sysconfdir}/bash_completion.d/vasum-cli-completion.sh @@ -275,7 +275,7 @@ The package provides libLogger library. %package -n libLogger-devel Summary: Development logger library Group: Development/Libraries -Requires: libLogger = %{version}-%{release} +Requires: libLogger = %{epoch}:%{version}-%{release} %description -n libLogger-devel The package provides libLogger development tools and libs. @@ -308,7 +308,7 @@ The package provides libSimpleDbus library. %package -n libSimpleDbus-devel Summary: Development Simple dbus library Group: Development/Libraries -Requires: libSimpleDbus = %{version}-%{release} +Requires: libSimpleDbus = %{epoch}:%{version}-%{release} Requires: pkgconfig(libLogger) %description -n libSimpleDbus-devel @@ -342,7 +342,7 @@ The package provides libConfig library. %package -n libConfig-devel Summary: Development Config library Group: Development/Libraries -Requires: libConfig = %{version}-%{release} +Requires: libConfig = %{epoch}:%{version}-%{release} Requires: boost-devel Requires: pkgconfig(libLogger) Requires: libjson-devel -- 2.7.4 From d0a712acbbbe43e65eeba18dd6a4e2f29698e93b Mon Sep 17 00:00:00 2001 From: Krzysztof Dynowski Date: Tue, 12 May 2015 09:18:14 +0200 Subject: [PATCH 06/16] Vasum wrapper #3, fixes, API update [Bug/Feature] Old vasum client not compiling with wrapper [Cause] missing struct defs [Solution] #3 update wrapper API (use correct vasum.h) [Verification] Build, build old clients Change-Id: I97f21d77ed6b56d4e046c577521f839b74c31779 --- client/CMakeLists.txt | 13 +- client/vasum-client.pc.in | 12 + client/vasum-wrapper.cpp | 8 +- client/vasum.h | 203 +++-- client/vasum.pc.in | 2 +- client/vasum_list.h | 62 +- client/wrapper-compat.cpp | 1903 ++++++++++++++++++++++----------------------- client/wrapper-compat.h | 39 - packaging/vasum.spec | 1 + 9 files changed, 1118 insertions(+), 1125 deletions(-) create mode 100644 client/vasum-client.pc.in diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 47db767..253a19e 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -19,9 +19,12 @@ MESSAGE(STATUS "") MESSAGE(STATUS "Generating makefile for the Client...") -## set client library sources (without vasum-wrapper.cpp) +## set client library sources (without wrapper files) FILE(GLOB project_SRCS *.cpp *.hpp *.h) -FILE(GLOB project_SRCS_rm vasum-wrapper.cpp wrapper-compat.* vasum.h vasum_list.h) +FILE(GLOB project_SRCS_rm vasum-wrapper.cpp + wrapper-compat.* + vasum.h + vasum_list.h) LIST(REMOVE_ITEM project_SRCS ${project_SRCS_rm}) ## set wrapper library sources (without vasum-client.cpp) @@ -38,6 +41,7 @@ FILE(GLOB common_SRCS ${COMMON_FOLDER}/epoll/*.hpp ${COMMON_FOLDER} ## set version highier then vasum.so.0.1.0 SET(_LIB_VERSION_ "${VERSION}") SET(_LIB_SOVERSION_ "0") +SET(PC_FILE_CLIENT "${PROJECT_NAME}-client.pc") SET(PC_FILE "${PROJECT_NAME}.pc") ## Set the default ELF image symbol visibility to hidden. Using this feature @@ -53,7 +57,7 @@ SET_TARGET_PROPERTIES(${PROJECT_NAME}-client PROPERTIES VERSION ${_LIB_VERSION_} COMPILE_DEFINITIONS HOST_IPC_SOCKET="${VSM_SERVER_IPC_SOCKET_PATH}") -ADD_LIBRARY(${PROJECT_NAME} SHARED ${wrapper_SRCS}) +ADD_LIBRARY(${PROJECT_NAME} SHARED ${wrapper_SRCS} ${common_SRCS}) SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${_LIB_SOVERSION_} VERSION ${_LIB_VERSION_} @@ -72,11 +76,12 @@ TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${LIB_DEPS_LIBRARIES} ${Boost_LIBRARIES} Config SimpleDbus) ## Generate the pc file ######################################################## +CONFIGURE_FILE(${PC_FILE_CLIENT}.in ${CMAKE_BINARY_DIR}/${PC_FILE_CLIENT} @ONLY) CONFIGURE_FILE(${PC_FILE}.in ${CMAKE_BINARY_DIR}/${PC_FILE} @ONLY) ## Install ##################################################################### -INSTALL(FILES ${CMAKE_BINARY_DIR}/${PC_FILE} +INSTALL(FILES ${CMAKE_BINARY_DIR}/${PC_FILE_CLIENT} ${CMAKE_BINARY_DIR}/${PC_FILE} DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) INSTALL(TARGETS ${PROJECT_NAME}-client ${PROJECT_NAME} diff --git a/client/vasum-client.pc.in b/client/vasum-client.pc.in new file mode 100644 index 0000000..927fe89 --- /dev/null +++ b/client/vasum-client.pc.in @@ -0,0 +1,12 @@ +# Package Information for pkg-config + +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +libdir=@LIB_INSTALL_DIR@ +includedir=${prefix}/include + +Name: vasum-client +Description: Vasum library +Version: @_LIB_VERSION_@ +Libs: -L${libdir} -lvasum-client +Cflags: -I${includedir}/vasum diff --git a/client/vasum-wrapper.cpp b/client/vasum-wrapper.cpp index 2cbe806..54c195e 100644 --- a/client/vasum-wrapper.cpp +++ b/client/vasum-wrapper.cpp @@ -197,7 +197,7 @@ static void init_context_wrap(WrappedContext *w) //ctx->data = ep; } -API struct vsm_context *vsm_create_context(void) +API vsm_context_h vsm_create_context(void) { LOGS(""); callcheck(); WrappedContext *w = new WrappedContext(); @@ -207,7 +207,7 @@ API struct vsm_context *vsm_create_context(void) return ctx; } -API int vsm_cleanup_context(struct vsm_context *ctx) +API int vsm_cleanup_context(vsm_context_h ctx) { LOGS(""); callcheck(); WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); @@ -367,7 +367,7 @@ API int vsm_attach_zone(struct vsm_context *ctx, vsm_attach_options_t *opts, pid_t *attached_process) { - return ctx->vsm_ops->attach_zone(ctx, zone_name, command, opts, + return dummy_ops.attach_zone(ctx, zone_name, command, opts, attached_process); } @@ -377,7 +377,7 @@ API int vsm_attach_zone_wait(struct vsm_context *ctx, vsm_attach_command_t *command, vsm_attach_options_t *opts) { - return ctx->vsm_ops->attach_zone_wait(ctx, zone_name, command, opts); + return dummy_ops.attach_zone_wait(ctx, zone_name, command, opts); } API int vsm_iterate_zone(struct vsm_context *ctx, void (*callback)(struct vsm_zone *zone, void *user_data), void *user_data) diff --git a/client/vasum.h b/client/vasum.h index 13db4f7..0cb245e 100644 --- a/client/vasum.h +++ b/client/vasum.h @@ -1,23 +1,28 @@ /* - * Vasum : Tizen Zone Control Framework + * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved * - * Copyright (c) 2000 - 2014 Samsung Electronics Co., Ltd All Rights Reserved + * Contact: Krzysztof Dynowski * - * Contact: Keunhwan Kwak + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * http://www.apache.org/licenses/LICENSE-2.0 * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + + +/** + * @file + * @author Krzysztof Dynowski (k.dynowski@samsung.com) + * @brief Vasum old API */ + #ifndef __VASUM_H__ #define __VASUM_H__ @@ -36,18 +41,10 @@ #ifdef __cplusplus extern "C" { #endif -/* - * @file vasum.h - * @version 0.3 - * @brief This file contains APIs of the Zone control Framework - */ /* * * Revision History: - * 2014-09-01 sungbae you First created - * 2014-10-07 sungbae you First doxygen commented - * 2015-03-19 kuenhwan Kwak doxygen revise * */ @@ -123,26 +120,26 @@ API int vsm_enter_eventloop(vsm_context_h ctx, int flags, int timeout); * @brief Enumeration for vasum error. */ typedef enum { - VSM_ERROR_NONE, /**< The operation was successful */ - VSM_ERROR_GENERIC, /**< Non-specific cause */ - VSM_ERROR_INVALID, /**< Invalid argument */ - VSM_ERROR_CANCELED, /**< The requested operation was cancelled */ - VSM_ERROR_ABORTED, /**< Operation aborted */ - VSM_ERROR_REFUSED, /**< Connection refused */ - VSM_ERROR_EXIST, /**< Target exists */ - VSM_ERROR_BUSY, /**< Resource is busy */ - VSM_ERROR_IO, /**< I/O error*/ - VSM_ERROR_TIMEOUT, /**< Timer expired */ - VSM_ERROR_OVERFLOW, /**< Value too large to be stored in data type */ - VSM_ERROR_OUT_OF_MEMORY, /**< No memory space */ - VSM_ERROR_OUT_OF_RANGE, /**< Input is out of range */ - VSM_ERROR_NOT_PERMITTED, /**< Operation not permitted */ - VSM_ERROR_NOT_IMPLEMENTED, /**< Function is not implemented yet */ - VSM_ERROR_NOT_SUPPORTED, /**< Operation is not supported */ - VSM_ERROR_ACCESS_DENIED, /**< Access privilege is not sufficient */ - VSM_ERROR_NO_OBJECT, /**< Object not found */ - VSM_ERROR_BAD_STATE, /**< Bad state */ - VSM_MAX_ERROR = VSM_ERROR_BAD_STATE + VSM_ERROR_NONE, /**< The operation was successful */ + VSM_ERROR_GENERIC, /**< Non-specific cause */ + VSM_ERROR_INVALID, /**< Invalid argument */ + VSM_ERROR_CANCELED, /**< The requested operation was cancelled */ + VSM_ERROR_ABORTED, /**< Operation aborted */ + VSM_ERROR_REFUSED, /**< Connection refused */ + VSM_ERROR_EXIST, /**< Target exists */ + VSM_ERROR_BUSY, /**< Resource is busy */ + VSM_ERROR_IO, /**< I/O error*/ + VSM_ERROR_TIMEOUT, /**< Timer expired */ + VSM_ERROR_OVERFLOW, /**< Value too large to be stored in data type */ + VSM_ERROR_OUT_OF_MEMORY, /**< No memory space */ + VSM_ERROR_OUT_OF_RANGE, /**< Input is out of range */ + VSM_ERROR_NOT_PERMITTED, /**< Operation not permitted */ + VSM_ERROR_NOT_IMPLEMENTED, /**< Function is not implemented yet */ + VSM_ERROR_NOT_SUPPORTED, /**< Operation is not supported */ + VSM_ERROR_ACCESS_DENIED, /**< Access privilege is not sufficient */ + VSM_ERROR_NO_OBJECT, /**< Object not found */ + VSM_ERROR_BAD_STATE, /**< Bad state */ + VSM_MAX_ERROR = VSM_ERROR_BAD_STATE }vsm_error_e; /** @@ -256,7 +253,7 @@ API int vsm_start_zone(vsm_context_h ctx, const char *zone_name); * \param[in] ctx vsm context * \param[in] zone_name zone name * \param[in] force option to shutdown. - * - 0 : send SIGPWR signal to init process of target zone. + * - 0 : send SIGPWR signal to init process of target zone. * - non-zero : terminate all processes in target zone. * \return 0 on success, or negative integer error code on error. * \retval #VSM_ERROR_NONE Successful @@ -326,15 +323,15 @@ API vsm_zone_h vsm_get_foreground(vsm_context_h ctx); * This definition shows the available states. */ typedef enum { - VSM_ZONE_STATE_STOPPED, /**< Zone stopped */ - VSM_ZONE_STATE_STARTING, /**< Zone is prepare for running */ - VSM_ZONE_STATE_RUNNING, /**< Zone is running on device */ - VSM_ZONE_STATE_STOPPING, /**< Zone is stopping by request */ - VSM_ZONE_STATE_ABORTING, /**< Zone is failed to start */ - VSM_ZONE_STATE_FREEZING, /**< Reserved State */ - VSM_ZONE_STATE_FROZEN, /**< Reserved State */ - VSM_ZONE_STATE_THAWED, /**< Reserved State */ - VSM_ZONE_MAX_STATE = VSM_ZONE_STATE_THAWED + VSM_ZONE_STATE_STOPPED, /**< Zone stopped */ + VSM_ZONE_STATE_STARTING, /**< Zone is prepare for running */ + VSM_ZONE_STATE_RUNNING, /**< Zone is running on device */ + VSM_ZONE_STATE_STOPPING, /**< Zone is stopping by request */ + VSM_ZONE_STATE_ABORTING, /**< Zone is failed to start */ + VSM_ZONE_STATE_FREEZING, /**< Reserved State */ + VSM_ZONE_STATE_FROZEN, /**< Reserved State */ + VSM_ZONE_STATE_THAWED, /**< Reserved State */ + VSM_ZONE_MAX_STATE = VSM_ZONE_STATE_THAWED } vsm_zone_state_t; @@ -342,11 +339,11 @@ typedef enum { * @brief Definition for zone events */ typedef enum { - VSM_ZONE_EVENT_NONE, /**< Zone has no event */ - VSM_ZONE_EVENT_CREATED, /**< Zone is created */ - VSM_ZONE_EVENT_DESTROYED, /**< Zone is destroted */ - VSM_ZONE_EVENT_SWITCHED, /**< Foreground is switched */ - VSM_ZONE_MAX_EVENT = VSM_ZONE_EVENT_SWITCHED + VSM_ZONE_EVENT_NONE, /**< Zone has no event */ + VSM_ZONE_EVENT_CREATED, /**< Zone is created */ + VSM_ZONE_EVENT_DESTROYED, /**< Zone is destroted */ + VSM_ZONE_EVENT_SWITCHED, /**< Foreground is switched */ + VSM_ZONE_MAX_EVENT = VSM_ZONE_EVENT_SWITCHED } vsm_zone_event_t; @@ -463,18 +460,18 @@ API int vsm_del_event_callback(vsm_context_h ctx, int handle); * Arguments are same as linux system-call execv() */ typedef struct vsm_attach_command_s { - char * exec; /**< Program binary path */ - char ** argv; /**< An array of argument pointers to null-terminated strings include program path */ + char * exec; /**< Program binary path */ + char ** argv; /**< An array of argument pointers to null-terminated strings include program path */ } vsm_attach_command_s; /** * @brief Zone attach option */ typedef struct vsm_attach_options_s { - uid_t uid; /**< requested uid*/ - gid_t gid; /**< requested gid*/ - int env_num; /**< requested environ count */ - char **extra_env; /**< requested environ string pointer array. */ + uid_t uid; /**< requested uid*/ + gid_t gid; /**< requested gid*/ + int env_num; /**< requested environ count */ + char **extra_env; /**< requested environ string pointer array. */ } vsm_attach_options_s; /** @@ -591,7 +588,6 @@ API vsm_zone_state_t vsm_get_zone_state(vsm_zone_h zone); */ API int vsm_get_zone_id(vsm_zone_h zone); - /** * @brief Set userdata pointer value in vsm_zone_h. * \par Description: @@ -616,6 +612,7 @@ API int vsm_set_userdata(vsm_zone_h zone, void * userdata); */ API void * vsm_get_userdata(vsm_zone_h zone); + /** * @brief join current process into zone. * \par Synopsys: @@ -698,14 +695,14 @@ API int vsm_get_host_pid(vsm_zone_h zone, pid_t pid); * @brief Types of virtual network interfaces */ typedef enum { - VSM_NETDEV_VETH, /**< Virtual Ethernet(veth), this type device will be attached to host-side network bridge */ - VSM_NETDEV_PHYS, /**< Physical device */ - VSM_NETDEV_MACVLAN /**< Mac VLAN, this type isn't implemented yet */ + VSM_NETDEV_VETH, /**< Virtual Ethernet(veth), this type device will be attached to host-side network bridge */ + VSM_NETDEV_PHYS, /**< Physical device */ + VSM_NETDEV_MACVLAN /**< Mac VLAN, this type isn't implemented yet */ } vsm_netdev_type_t; typedef enum { - VSM_NETDEV_ADDR_IPV4, /**< IPV4 Address family */ - VSM_NETDEV_ADDR_IPV6 /**< IPV6 Address family */ + VSM_NETDEV_ADDR_IPV4, /**< IPV4 Address family */ + VSM_NETDEV_ADDR_IPV6 /**< IPV6 Address family */ } vsm_netdev_addr_t; /** @@ -888,18 +885,18 @@ API int vsm_revoke_device(vsm_zone_h zone, const char *path); * @brief Definition for declare file type. */ typedef enum { - VSM_FSO_TYPE_DIR, /**< Directoy type */ - VSM_FSO_TYPE_REG, /**< Regular file type */ - VSM_FSO_TYPE_FIFO, /**< Fifo file type */ - VSM_FSO_TYPE_SOCK, /**< Socket file type */ - VSM_FSO_TYPE_DEV, /**< Device node type */ - VSM_FSO_MAX_TYPE = VSM_FSO_TYPE_DEV + VSM_FSO_TYPE_DIR, /**< Directoy type */ + VSM_FSO_TYPE_REG, /**< Regular file type */ + VSM_FSO_TYPE_FIFO, /**< Fifo file type */ + VSM_FSO_TYPE_SOCK, /**< Socket file type */ + VSM_FSO_TYPE_DEV, /**< Device node type */ + VSM_FSO_MAX_TYPE = VSM_FSO_TYPE_DEV } vsm_fso_type_t; + /** * @brief Declare file mode. */ - typedef mode_t vsm_mode_t; /** @@ -939,10 +936,62 @@ API int vsm_declare_file(vsm_context_h ctx, vsm_fso_type_t ftype, const char *pa * \retval #VSM_ERROR_NO_OBJECT Source file is not exist in host filesystem */ API int vsm_declare_link(vsm_context_h ctx , const char *source, const char *target); - /// @} +/* + Below datatypes will be opaque. +*/ +typedef struct vsm_context { + void * signal_channel; + void * manage_method_channel; + void * unpriv_method_channel; + vsm_error_e error; + pthread_rwlock_t lock; + struct adt_list listeners; + struct vsm_zone *root_zone; + struct vsm_zone *foreground_zone; + struct adt_list sc_listeners; + struct adt_list ev_listeners; + void * vsm_ops; +} vsm_context_s; + +typedef struct vsm_zone { + struct vsm_zone *parent; + char *name; + char *type; + int terminal; + vsm_zone_state_t state; + char *rootfs_path; + pthread_rwlock_t lock; + struct adt_list children; + struct adt_list devices; + struct adt_list netdevs; + void *user_data; + struct adt_list list; + struct vsm_context *ctx; + int id; +} vsm_zone_s; + +typedef struct vsm_netdev { + struct vsm_zone *zone; + char *name; + vsm_netdev_type_t type; + struct adt_list list; +} vsm_netdev_s; + +/* + Below APIs will be removed. +*/ + +typedef int (*vsm_zone_state_cb)(vsm_zone_h zone, vsm_zone_state_t state ,vsm_zone_event_t event, void *user_data); + +API int vsm_add_state_callback(vsm_context_h ctx, vsm_zone_state_cb callback, void *user_data); + +API int vsm_del_state_callback(vsm_context_h ctx, int handle); + +API int vsm_get_zone_terminal(vsm_zone_h zone); + #ifdef __cplusplus } #endif diff --git a/client/vasum.pc.in b/client/vasum.pc.in index f12abc2..2f2247b 100644 --- a/client/vasum.pc.in +++ b/client/vasum.pc.in @@ -8,5 +8,5 @@ includedir=${prefix}/include Name: vasum Description: Vasum library Version: @_LIB_VERSION_@ -Libs: -L${libdir} -lvasum-client +Libs: -L${libdir} -lvasum Cflags: -I${includedir}/vasum diff --git a/client/vasum_list.h b/client/vasum_list.h index 185287b..5e9c82e 100644 --- a/client/vasum_list.h +++ b/client/vasum_list.h @@ -2,8 +2,8 @@ #define __VASUM_ADT_LIST_H__ struct adt_list { - struct adt_list* next; - struct adt_list* prev; + struct adt_list* next; + struct adt_list* prev; }; #undef offsetof @@ -14,8 +14,8 @@ struct adt_list { #endif #define container_of(ptr, type, member) ({ \ - const typeof( ((type *)0)->member ) *__mptr = (ptr); \ - (type *)( (char *)__mptr - offsetof(type,member) );}) + const typeof( ((type *)0)->member ) *__mptr = (ptr); \ + (type *)( (char *)__mptr - offsetof(type,member) );}) #define adt_iterate_list(__iterator, __list) \ for (__iterator = (__list)->next; \ @@ -23,10 +23,10 @@ struct adt_list { __iterator = (__iterator)->next) #define adt_reverse_iterate_list(__iterator, __list) \ - for (__iterator = __list; \ + for (__iterator = __list; \ (__iterator)->next != __list; \ - __iterator = (__iterator)->next); \ - for ( ; \ + __iterator = (__iterator)->next); \ + for ( ; \ __iterator != __list; \ __iterator = (__iterator)->prev) @@ -68,35 +68,35 @@ static inline void adt_unlink_list(struct adt_list* list) } static inline void adt_sort_list(struct adt_list* head, - int (*compare_func)(struct adt_list *, struct adt_list *)) + int (*compare_func)(struct adt_list *, struct adt_list *)) { - struct adt_list *it, *jt, *kt; - - if (adt_empty_list(head)) - return; - - for (it = head->next->next; it != head; it = it->next) { - for (jt = head->next; jt != it; jt = jt->next) { - if (compare_func(it, jt) < 0) { - kt = it; - it = it->prev; - adt_unlink_list(kt); - adt_link_list(jt->prev, kt); - break; - } - } - } + struct adt_list *it, *jt, *kt; + + if (adt_empty_list(head)) + return; + + for (it = head->next->next; it != head; it = it->next) { + for (jt = head->next; jt != it; jt = jt->next) { + if (compare_func(it, jt) < 0) { + kt = it; + it = it->prev; + adt_unlink_list(kt); + adt_link_list(jt->prev, kt); + break; + } + } + } } static inline struct adt_list *adt_find_list(struct adt_list* head, - int (*equal_func)(struct adt_list *, void *), void *value) + int (*equal_func)(struct adt_list *, void *), void *value) { - struct adt_list *it; - adt_iterate_list(it, head) { - if (equal_func(it, value)) - return it; - } - return NULL; + struct adt_list *it; + adt_iterate_list(it, head) { + if (equal_func(it, value)) + return it; + } + return NULL; } #endif /*!__VASUM_ADT_LIST_H__*/ diff --git a/client/wrapper-compat.cpp b/client/wrapper-compat.cpp index dcd9e38..67b34e6 100644 --- a/client/wrapper-compat.cpp +++ b/client/wrapper-compat.cpp @@ -42,6 +42,8 @@ #include #include +#define UNUSED(x) ((void)(x)) + extern "C" { // find_container_by_pid @@ -200,8 +202,8 @@ int sock_send_fd(int /*fd*/, int /*sendfd*/, void * /*data*/, size_t /*size*/ void vasum_log(int /*type*/, const char * /*tag*/, const char * /*fmt*/ , ...) { } -#define MAX_ERROR_MSG 0x1000 -#define BUF_SIZE 4096 +#define MAX_ERROR_MSG 0x1000 +#define BUF_SIZE 4096 #define SMACK_LABEL_LEN 8 #define ERROR(...) do{}while(0) @@ -211,289 +213,289 @@ void vasum_log(int /*type*/, const char * /*tag*/, const char * /*fmt*/ , ... // lib/utils.c const char *const fso_type_strtab[] = { - "Directory", - "Regular file", - "FIFO", - "Socket", - "Device node" + "Directory", + "Regular file", + "FIFO", + "Socket", + "Device node" }; const char *fso_type_to_string(vsm_fso_type_t fso) { - if (fso < 0 || fso > VSM_FSO_MAX_TYPE) { - return NULL; - } + if (fso < 0 || fso > VSM_FSO_MAX_TYPE) { + return NULL; + } - return fso_type_strtab[fso]; + return fso_type_strtab[fso]; } int wait_for_pid_status(pid_t pid) { - int status, ret; + int status, ret; again: - ret = waitpid(pid, &status, 0); - if (ret == -1) { - if (errno == EINTR) { - goto again; - } else { - ERROR("waitpid- pid : %d error : %s", pid, - strerror(errno)); - return -1; - } - } - if (ret != pid) - goto again; - return status; + ret = waitpid(pid, &status, 0); + if (ret == -1) { + if (errno == EINTR) { + goto again; + } else { + ERROR("waitpid- pid : %d error : %s", pid, + strerror(errno)); + return -1; + } + } + if (ret != pid) + goto again; + return status; } vsm_fso_type_t fso_string_to_type(char *str) { - int len; - int i; - for (i = 0; i <= VSM_FSO_MAX_TYPE; i++) { - len = strlen(fso_type_strtab[i]); - if (strncmp(str, fso_type_strtab[i], len) == 0) - return static_cast(i); - } + int len; + int i; + for (i = 0; i <= VSM_FSO_MAX_TYPE; i++) { + len = strlen(fso_type_strtab[i]); + if (strncmp(str, fso_type_strtab[i], len) == 0) + return static_cast(i); + } - return static_cast(-1); + return static_cast(-1); } int mkdir_p(const char *dir, mode_t mode) { - const char *tmp = dir; - const char *orig = dir; - char *makeme; - - do { - dir = tmp + strspn(tmp, "/"); - tmp = dir + strcspn(dir, "/"); - makeme = strndup(orig, dir - orig); - if (*makeme) { - if (mkdir(makeme, mode) && errno != EEXIST) { - free(makeme); - return -1; - } - } - free(makeme); - } while (tmp != dir); - - return 0; + const char *tmp = dir; + const char *orig = dir; + char *makeme; + + do { + dir = tmp + strspn(tmp, "/"); + tmp = dir + strcspn(dir, "/"); + makeme = strndup(orig, dir - orig); + if (*makeme) { + if (mkdir(makeme, mode) && errno != EEXIST) { + free(makeme); + return -1; + } + } + free(makeme); + } while (tmp != dir); + + return 0; } int lock_fd(int fd, int wait) { - int ret; - struct flock f; - - while (1) { - f.l_type = F_WRLCK; - f.l_whence = SEEK_SET; - f.l_start = 0; - f.l_len = 0; - - if (wait) - ret = fcntl(fd, F_SETLKW, &f); - else - ret = fcntl(fd, F_SETLK, &f); - if (ret != -1) - return 0; - if (errno == EINTR) - continue; - return -1; - } + int ret; + struct flock f; + + while (1) { + f.l_type = F_WRLCK; + f.l_whence = SEEK_SET; + f.l_start = 0; + f.l_len = 0; + + if (wait) + ret = fcntl(fd, F_SETLKW, &f); + else + ret = fcntl(fd, F_SETLK, &f); + if (ret != -1) + return 0; + if (errno == EINTR) + continue; + return -1; + } } int unlock_fd(int fd) { - struct flock f; - f.l_type = F_UNLCK; - f.l_whence = SEEK_SET; - f.l_start = 0; - f.l_len = 0; - return fcntl(fd, F_SETLKW, &f); + struct flock f; + f.l_type = F_UNLCK; + f.l_whence = SEEK_SET; + f.l_start = 0; + f.l_len = 0; + return fcntl(fd, F_SETLKW, &f); } int copy_smacklabel(const char * /*source*/, const char * /*dest*/) { - return 0; + return 0; } int remove_file(char *path) { - struct stat path_stat; - DIR *dp; - struct dirent *d; - int status = 0; - - if (lstat(path, &path_stat) < 0) { - if (errno != ENOENT) { - ERROR("Unable to stat : %s"); - return -1; - } - } - - if (S_ISDIR(path_stat.st_mode)) { - if ((dp = opendir(path)) == NULL) { - ERROR("Unable to opendir %s", path); - return -1; - } - - while ((d = readdir(dp)) != NULL) { - char new_path[PATH_MAX]; - if (strcmp(d->d_name, ".") == 0 || - strcmp(d->d_name, "..") == 0) - continue; - - snprintf(new_path, PATH_MAX, "%s/%s", path, d->d_name); - if (remove_file(new_path) < 0) - status = -1; - } - - if (closedir(dp) < 0) { - ERROR("Unable to close dp : %s", path); - return -1; - } - - if (rmdir(path) < 0) { - ERROR("Failed to remove dir : %s, cause: %s", path, - strerror(errno)); - return -1; - } - - } else { - if (unlink(path) < 0) { - ERROR("Unable to remove %s", path); - return -1; - } - } - - return status; + struct stat path_stat; + DIR *dp; + struct dirent *d; + int status = 0; + + if (lstat(path, &path_stat) < 0) { + if (errno != ENOENT) { + ERROR("Unable to stat : %s"); + return -1; + } + } + + if (S_ISDIR(path_stat.st_mode)) { + if ((dp = opendir(path)) == NULL) { + ERROR("Unable to opendir %s", path); + return -1; + } + + while ((d = readdir(dp)) != NULL) { + char new_path[PATH_MAX]; + if (strcmp(d->d_name, ".") == 0 || + strcmp(d->d_name, "..") == 0) + continue; + + snprintf(new_path, PATH_MAX, "%s/%s", path, d->d_name); + if (remove_file(new_path) < 0) + status = -1; + } + + if (closedir(dp) < 0) { + ERROR("Unable to close dp : %s", path); + return -1; + } + + if (rmdir(path) < 0) { + ERROR("Failed to remove dir : %s, cause: %s", path, + strerror(errno)); + return -1; + } + + } else { + if (unlink(path) < 0) { + ERROR("Unable to remove %s", path); + return -1; + } + } + + return status; } int copy_file(const char *source, const char *dest, int /*flags*/) { - int ret; - FILE *sfp, *dfp; - size_t nread, nwritten, size = BUF_SIZE; - char buffer[BUF_SIZE]; - - if ((sfp = fopen(source, "r")) == NULL) { - ERROR("Unable to open source : %s", source); - return -1; - } - - if ((dfp = fopen(dest, "w+")) == NULL) { - ERROR("Unable to open destination : %s", dest); - fclose(sfp); - return -1; - } - - while (1) { - nread = fread(buffer, 1, size, sfp); - - if (nread != size && ferror(sfp)) { - ERROR("Read failed"); - return -1; - } else if (nread == 0) { - break; - } - - nwritten = fwrite(buffer, 1, nread, dfp); - - if (nwritten != nread) { - if (ferror(dfp)) - ERROR("write fail"); - else - ERROR("Unable to write all data"); - return -1; - } - } - - fclose(sfp); - fclose(dfp); - - ret = copy_smacklabel(source, dest); - if (ret != 0) { - ERROR("Unable to setting smack lable"); - return -1; - } - return 0; -} + int ret; + FILE *sfp, *dfp; + size_t nread, nwritten, size = BUF_SIZE; + char buffer[BUF_SIZE]; -int regex_compile(regex_t * r, const char *regex_text) -{ - int status = regcomp(r, regex_text, REG_EXTENDED | REG_NEWLINE); + if ((sfp = fopen(source, "r")) == NULL) { + ERROR("Unable to open source : %s", source); + return -1; + } - if (status != 0) { - char error_message[MAX_ERROR_MSG]; + if ((dfp = fopen(dest, "w+")) == NULL) { + ERROR("Unable to open destination : %s", dest); + fclose(sfp); + return -1; + } + + while (1) { + nread = fread(buffer, 1, size, sfp); + + if (nread != size && ferror(sfp)) { + ERROR("Read failed"); + return -1; + } else if (nread == 0) { + break; + } + + nwritten = fwrite(buffer, 1, nread, dfp); + + if (nwritten != nread) { + if (ferror(dfp)) + ERROR("write fail"); + else + ERROR("Unable to write all data"); + return -1; + } + } - regerror(status, r, error_message, MAX_ERROR_MSG); - DEBUG("Regex error compiling '%s': %s\n", - regex_text, error_message); - return 1; - } + fclose(sfp); + fclose(dfp); - return 0; + ret = copy_smacklabel(source, dest); + if (ret != 0) { + ERROR("Unable to setting smack lable"); + return -1; + } + return 0; } -int regex_match(regex_t * r, const char *to_match) +int regex_compile(regex_t * r, const char *regex_text) { - const char *p = to_match; - const int n_matches = 10; - regmatch_t m[n_matches]; + int status = regcomp(r, regex_text, REG_EXTENDED | REG_NEWLINE); - while (1) { - int i = 0; - int nomatch = regexec(r, p, n_matches, m, 0); + if (status != 0) { + char error_message[MAX_ERROR_MSG]; - if (nomatch) { - DEBUG("No more matches.\n"); - return nomatch; - } - - for (i = 0; i < n_matches; i++) { - int start; - int finish; - (void)start; - (void)finish; - - if (m[i].rm_so == -1) { - break; - } - - start = m[i].rm_so + (p - to_match); - finish = m[i].rm_eo + (p - to_match); - if (i == 0) { - INFO("$& is "); - } else { - INFO("$%d is ", i); - } + regerror(status, r, error_message, MAX_ERROR_MSG); + DEBUG("Regex error compiling '%s': %s\n", + regex_text, error_message); + return 1; + } - INFO("'%.*s' (bytes %d:%d)\n", (finish - start), - to_match + start, start, finish); - } + return 0; +} - p += m[0].rm_eo; - } +int regex_match(regex_t * r, const char *to_match) +{ + const char *p = to_match; + const int n_matches = 10; + regmatch_t m[n_matches]; + + while (1) { + int i = 0; + int nomatch = regexec(r, p, n_matches, m, 0); + + if (nomatch) { + DEBUG("No more matches.\n"); + return nomatch; + } + + for (i = 0; i < n_matches; i++) { + int start; + int finish; + UNUSED(start); + UNUSED(finish); + + if (m[i].rm_so == -1) { + break; + } + + start = m[i].rm_so + (p - to_match); + finish = m[i].rm_eo + (p - to_match); + if (i == 0) { + INFO("$& is "); + } else { + INFO("$%d is ", i); + } + + INFO("'%.*s' (bytes %d:%d)\n", (finish - start), + to_match + start, start, finish); + } + + p += m[0].rm_eo; + } - return 0; + return 0; } int get_peer_pid(int fd) { - struct ucred cred; - socklen_t cr_len = sizeof(cred); - if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &cred, &cr_len) < 0) { - return -1; - } - return cred.pid; + struct ucred cred; + socklen_t cr_len = sizeof(cred); + if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &cred, &cr_len) < 0) { + return -1; + } + return cred.pid; } pid_t gettid(void) { - return syscall(__NR_gettid); + return syscall(__NR_gettid); } int set_smacklabel_fd(int fd, const char *xattr_name, const char *label) @@ -535,471 +537,434 @@ int set_smacklabel(const char *path, const char *xattr_name, const char *label) } char *get_self_smacklabel(void) { - int ret; - int fd; - const char *attr_path = "/proc/self/attr/current"; - char buffer[SMACK_LABEL_LEN+1]; - - bzero(buffer, SMACK_LABEL_LEN+1); - - fd = open(attr_path, O_RDONLY); - if( fd < 0) { - return NULL; - } - - ret = read(fd, buffer, SMACK_LABEL_LEN+1); - close(fd); - if (ret < 0) { - return NULL; - } - - if( ret > SMACK_LABEL_LEN) { - //return NULL; - } + int ret; + int fd; + const char *attr_path = "/proc/self/attr/current"; + char buffer[SMACK_LABEL_LEN+1]; + + bzero(buffer, SMACK_LABEL_LEN+1); + + fd = open(attr_path, O_RDONLY); + if( fd < 0) { + return NULL; + } + + ret = read(fd, buffer, SMACK_LABEL_LEN+1); + close(fd); + if (ret < 0) { + return NULL; + } + + if( ret > SMACK_LABEL_LEN) { + //return NULL; + } buffer[SMACK_LABEL_LEN]=0; - return strdup(buffer); + return strdup(buffer); } int get_self_cpuset(char *name, int buf_sz) { - int fd; - int lxc_len, ret; - char cpuset_path[] = "/proc/self/cpuset"; - char current_name[NAME_MAX]; - - fd = open(cpuset_path, O_RDONLY); - if (fd < 0) { - return 0; - } - - ret = read(fd, current_name, NAME_MAX - 1); - if (ret < 0) { - close(fd); - return -1; - } - - current_name[ret - 1] = '\0'; - close(fd); - - lxc_len = sizeof("/lxc"); - if( ret < lxc_len) { - name[0] = '/'; - name[1] = 0; - return 1; - } else { - char *p; - p = current_name + lxc_len; - - while(*p != '\0') { - if(*p == '/') { - *p = '\0'; - break; - } - p++; - } - snprintf(name, buf_sz, "%s", current_name+lxc_len); - } - - return ret - lxc_len; + int fd; + int lxc_len, ret; + char cpuset_path[] = "/proc/self/cpuset"; + char current_name[NAME_MAX]; + + fd = open(cpuset_path, O_RDONLY); + if (fd < 0) { + return 0; + } + + ret = read(fd, current_name, NAME_MAX - 1); + if (ret < 0) { + close(fd); + return -1; + } + + current_name[ret - 1] = '\0'; + close(fd); + + lxc_len = sizeof("/lxc"); + if( ret < lxc_len) { + name[0] = '/'; + name[1] = 0; + return 1; + } else { + char *p; + p = current_name + lxc_len; + + while(*p != '\0') { + if(*p == '/') { + *p = '\0'; + break; + } + p++; + } + snprintf(name, buf_sz, "%s", current_name+lxc_len); + } + + return ret - lxc_len; } char * get_pid_cpuset(int pid) { - int fd; - int ret; - char cpuset_path[PATH_MAX]; - char current_name[NAME_MAX]; + int fd; + int ret; + char cpuset_path[PATH_MAX]; + char current_name[NAME_MAX]; - snprintf(cpuset_path, PATH_MAX, "/proc/%d/cpuset", pid); + snprintf(cpuset_path, PATH_MAX, "/proc/%d/cpuset", pid); - ret = access(cpuset_path, F_OK | R_OK); - if( ret != 0 ) - return NULL; + ret = access(cpuset_path, F_OK | R_OK); + if( ret != 0 ) + return NULL; - fd = open(cpuset_path, O_RDONLY); - if (fd < 0) { - return NULL; - } + fd = open(cpuset_path, O_RDONLY); + if (fd < 0) { + return NULL; + } - ret = read(fd, current_name, NAME_MAX - 1); - if (ret < 0) { - close(fd); - return NULL; - } + ret = read(fd, current_name, NAME_MAX - 1); + if (ret < 0) { + close(fd); + return NULL; + } - current_name[ret - 1] = 0; - close(fd); + current_name[ret - 1] = 0; + close(fd); - INFO("cpuset path : %s, value : %s", cpuset_path, current_name); + INFO("cpuset path : %s, value : %s", cpuset_path, current_name); - return strdup(current_name); + return strdup(current_name); } char * read_namespace_link(const char *ns, int pid) { - char ns_path[PATH_MAX]; - char buf[NAME_MAX]; - int ret; + char ns_path[PATH_MAX]; + char buf[NAME_MAX]; + int ret; - snprintf(ns_path, PATH_MAX, "/proc/%d/ns/%s", pid, ns); + snprintf(ns_path, PATH_MAX, "/proc/%d/ns/%s", pid, ns); - ret = access(ns_path, F_OK); - if(ret != 0) - return NULL; + ret = access(ns_path, F_OK); + if(ret != 0) + return NULL; - ret = readlink(ns_path, buf, NAME_MAX); - if( ret == -1 ) { - ERROR("Failed to readlink ns file - [%s]", ns_path); - return NULL; - } + ret = readlink(ns_path, buf, NAME_MAX); + if( ret == -1 ) { + ERROR("Failed to readlink ns file - [%s]", ns_path); + return NULL; + } - buf[ret] = 0; + buf[ret] = 0; - INFO("Read ns link data -pid : %d data : %s", pid, buf); + INFO("Read ns link data -pid : %d data : %s", pid, buf); - return strdup(buf); + return strdup(buf); } // libs/device.c #define DEV_ITERATE_CONTINUE 0 int dev_enumerate_nodes(const char *cname, dev_enumerator enumerator, - void *data) + void *data) { - int ret; - FILE *fp;; - char path[PATH_MAX], entry[64]; + int ret; + FILE *fp;; + char path[PATH_MAX], entry[64]; - ret = snprintf(path, sizeof(path), - "/sys/fs/cgroup/devices/lxc/%s/devices.list", cname); + ret = snprintf(path, sizeof(path), + "/sys/fs/cgroup/devices/lxc/%s/devices.list", cname); - if (ret < 0) { - ERROR("Failed to make pathname"); - return -1; - } + if (ret < 0) { + ERROR("Failed to make pathname"); + return -1; + } - fp = fopen(path, "r"); - if (fp == NULL) { - ERROR("File open failed: %s(%s)", path, strerror(errno)); - return -1; - } + fp = fopen(path, "r"); + if (fp == NULL) { + ERROR("File open failed: %s(%s)", path, strerror(errno)); + return -1; + } - while (fgets(entry, sizeof(entry), fp) != NULL) { - int major, minor; - char *next, *ptr = &entry[2]; + while (fgets(entry, sizeof(entry), fp) != NULL) { + int major, minor; + char *next, *ptr = &entry[2]; - major = strtol(ptr, &next, 10); - minor = strtol(++next, (char **)NULL, 10); + major = strtol(ptr, &next, 10); + minor = strtol(++next, (char **)NULL, 10); - ret = enumerator(entry[0], major, minor, data); - if (ret != DEV_ITERATE_CONTINUE) - break; - } + ret = enumerator(entry[0], major, minor, data); + if (ret != DEV_ITERATE_CONTINUE) + break; + } - fclose(fp); + fclose(fp); - return ret; + return ret; } int dev_terminal_enumerator(int type, int major, int minor, void *data) { - int *dev = (int*)data; + int *dev = (int*)data; + + *dev = minor; + UNUSED(type); + UNUSED(major); - *dev = minor; - (void)type; - (void)major; - - INFO("Matched device: %c, %d, %d\n", type, major, minor); + INFO("Matched device: %c, %d, %d\n", type, major, minor); - return 1; + return 1; } // libs/namespace.c pid_t get_init_pid(const char *name) { - char filename[PATH_MAX]; - FILE *fp; - pid_t ret = -1; - - snprintf(filename, sizeof(filename), - "/sys/fs/cgroup/devices/lxc/%s/cgroup.procs", name); - - fp = fopen(filename, "r"); - - if (fp != NULL) { - if (fscanf(fp, "%d", &ret) < 0) { - ERROR("Failed to read %s\n", filename); - ret = -2; - } - fclose(fp); - } else { - INFO("Unable to access %s\n", filename); - ret = errno; - } + char filename[PATH_MAX]; + FILE *fp; + pid_t ret = -1; + + snprintf(filename, sizeof(filename), + "/sys/fs/cgroup/devices/lxc/%s/cgroup.procs", name); + + fp = fopen(filename, "r"); + + if (fp != NULL) { + if (fscanf(fp, "%d", &ret) < 0) { + ERROR("Failed to read %s\n", filename); + ret = -2; + } + fclose(fp); + } else { + INFO("Unable to access %s\n", filename); + ret = errno; + } - return ret; + return ret; } pid_t get_zone_pid(const char *name, const char *target) { - char path[PATH_MAX]; - char cmd[PATH_MAX]; - int res = 0, len; - pid_t ret = -1; - FILE *fp; - - char *line = NULL; - size_t line_len; - - snprintf(path, PATH_MAX, - "/sys/fs/cgroup/cpuset/lxc/%s/cgroup.procs", name); - - res = access(path, F_OK | R_OK); - if (res != 0) { - ERROR("Failed to acess zone cgroup file: %s", path); - return -EINVAL; - } - - if (target == NULL) { - ERROR("Failed to lookup cmdline in zone proc"); - return -EINVAL; - } else { - len = strlen(target); - } - - fp = fopen(path, "r"); - if (fp == NULL) { - ERROR("Failed to open zone cgroup"); - return -1; - } - - while (getline(&line, &line_len, fp) != -1) { - int res; - pid_t pid; - FILE *cmdfp; - char cmdpath[PATH_MAX]; - - res = sscanf(line, "%d", &pid); - if (res != 1) { - ERROR("Failed to read %s\n", path); - res = -1; - goto out; - } - - if (pid < 0) - continue; - - snprintf(cmdpath, PATH_MAX, "/proc/%d/cmdline", pid); - - if (access(cmdpath, F_OK | R_OK) != 0) - continue; - - cmdfp = fopen(cmdpath, "r"); - if (cmdfp == NULL) { - ERROR("Unable to access %s\n", cmdpath); - continue; - } - - if (fscanf(cmdfp, "%s", cmd) < 0) { - ERROR("Failed to read cmdline - pid : %d\n", pid); - continue; - } - - fclose(cmdfp); - - if (strncmp(cmd, target, len) == 0) { - ret = pid; - break; - } - } + char path[PATH_MAX]; + char cmd[PATH_MAX]; + int res = 0, len; + pid_t ret = -1; + FILE *fp; + + char *line = NULL; + size_t line_len; + + snprintf(path, PATH_MAX, + "/sys/fs/cgroup/cpuset/lxc/%s/cgroup.procs", name); + + res = access(path, F_OK | R_OK); + if (res != 0) { + ERROR("Failed to acess zone cgroup file: %s", path); + return -EINVAL; + } + + if (target == NULL) { + ERROR("Failed to lookup cmdline in zone proc"); + return -EINVAL; + } else { + len = strlen(target); + } + + fp = fopen(path, "r"); + if (fp == NULL) { + ERROR("Failed to open zone cgroup"); + return -1; + } + + while (getline(&line, &line_len, fp) != -1) { + int res; + pid_t pid; + FILE *cmdfp; + char cmdpath[PATH_MAX]; + + res = sscanf(line, "%d", &pid); + if (res != 1) { + ERROR("Failed to read %s\n", path); + res = -1; + goto out; + } + + if (pid < 0) + continue; + + snprintf(cmdpath, PATH_MAX, "/proc/%d/cmdline", pid); + + if (access(cmdpath, F_OK | R_OK) != 0) + continue; + + cmdfp = fopen(cmdpath, "r"); + if (cmdfp == NULL) { + ERROR("Unable to access %s\n", cmdpath); + continue; + } + + if (fscanf(cmdfp, "%s", cmd) < 0) { + ERROR("Failed to read cmdline - pid : %d\n", pid); + continue; + } + + fclose(cmdfp); + + if (strncmp(cmd, target, len) == 0) { + ret = pid; + break; + } + } out: - fclose(fp); - return ret; + fclose(fp); + return ret; } int open_ns(pid_t pid, const char *name) { - int fd, ret; - char path[PATH_MAX]; + int fd, ret; + char path[PATH_MAX]; - ret = snprintf(path, PATH_MAX, "/proc/%d/ns/%s", pid, name); - if (ret < 0 || ret >= PATH_MAX) { - ERROR("Failed to namespace - pid %d, ns: %s ", pid, name); - return -EINVAL; - } + ret = snprintf(path, PATH_MAX, "/proc/%d/ns/%s", pid, name); + if (ret < 0 || ret >= PATH_MAX) { + ERROR("Failed to namespace - pid %d, ns: %s ", pid, name); + return -EINVAL; + } - fd = open(path, O_RDONLY); - if (fd < 0) { - ERROR("failed to open %s\n", path); - return -errno; - } + fd = open(path, O_RDONLY); + if (fd < 0) { + ERROR("failed to open %s\n", path); + return -errno; + } - return fd; + return fd; } -/* -void enter_to_ns(pid_t pid, char *name) -{ - int newns; - char *ns[] = { "mnt", "pid", "uts", "ipc", "net" }; - int flags[] = { - CLONE_NEWNS, CLONE_NEWPID, CLONE_NEWUTS, CLONE_NEWIPC, - CLONE_NEWNET - }; - int size = sizeof(ns) / sizeof(char *); - int i, idx = size; - - for (i = 0; i < size; i++) { - if (strncmp(ns[i], name, strlen(ns[i])) == 0) { - idx = i; - break; - } - } - - if (idx == size) { - ERROR("Invalid namespace - ns: %s", name); - return; - } - - newns = open_ns(pid, ns[i]); - - if (setns(newns, flags[i])) { - ERROR("failed to setns"); - close(newns); - return; - } - - INFO("Enter namespace - init: %d , ns: %s", pid, name); - - close(newns); - return; -}*/ // vasum/libs/vt.c #include #include static int is_console(int fd) { - char arg; + char arg; - return (isatty(fd) && - (ioctl(fd, KDGKBTYPE, &arg) == 0) && - ((arg == KB_101) || (arg == KB_84))); + return (isatty(fd) && + (ioctl(fd, KDGKBTYPE, &arg) == 0) && + ((arg == KB_101) || (arg == KB_84))); } static int open_console(const char *path) { - int fd; + int fd; - fd = open(path, O_RDWR); - if (fd < 0) { - fd = open(path, O_WRONLY); - } - if (fd < 0) { - fd = open(path, O_RDONLY); - } - if (fd < 0) { - return -1; - } + fd = open(path, O_RDWR); + if (fd < 0) { + fd = open(path, O_WRONLY); + } + if (fd < 0) { + fd = open(path, O_RDONLY); + } + if (fd < 0) { + return -1; + } - return fd; + return fd; } int get_console_fd(const char *path) { - int fd; + int fd; - if (path) { - fd = open_console(path); - if (fd >= 0) { - return fd; - } + if (path) { + fd = open_console(path); + if (fd >= 0) { + return fd; + } - return -1; - } + return -1; + } - fd = open_console("/dev/tty0"); - if (fd >= 0) { - return fd; - } + fd = open_console("/dev/tty0"); + if (fd >= 0) { + return fd; + } - fd = open_console("/dev/console"); - if (fd >= 0) { - return fd; - } + fd = open_console("/dev/console"); + if (fd >= 0) { + return fd; + } - for (fd = 0; fd < 3; fd++) { - if (is_console(fd)) { - return fd; - } - } + for (fd = 0; fd < 3; fd++) { + if (is_console(fd)) { + return fd; + } + } - return -1; + return -1; } int vt_switch_terminal(int id) { - int fd, ret = -1; + int fd, ret = -1; - fd = get_console_fd(NULL); - if (fd < 0) { - return -1; - } + fd = get_console_fd(NULL); + if (fd < 0) { + return -1; + } - if (ioctl(fd, VT_ACTIVATE, id) < 0) { - goto out; - } + if (ioctl(fd, VT_ACTIVATE, id) < 0) { + goto out; + } - if (ioctl(fd, VT_WAITACTIVE, id) < 0) { - goto out; - } + if (ioctl(fd, VT_WAITACTIVE, id) < 0) { + goto out; + } - ret = 0; + ret = 0; out: - close(fd); - return ret; + close(fd); + return ret; } int vt_find_unused_terminal(void) { - int fd, nr = -1; + int fd, nr = -1; - fd = get_console_fd(NULL); - if (fd < 0) { - perror("Terminal open failed"); - return -1; - } + fd = get_console_fd(NULL); + if (fd < 0) { + perror("Terminal open failed"); + return -1; + } - if (ioctl(fd, VT_OPENQRY, &nr) < 0) { - perror("VT_OPENQRY failed"); - goto out; - } + if (ioctl(fd, VT_OPENQRY, &nr) < 0) { + perror("VT_OPENQRY failed"); + goto out; + } out: - close(fd); + close(fd); - return nr; + return nr; } int vt_query_active_terminal(void) { - int fd, ret = -1; - struct vt_stat vtstat; + int fd, ret = -1; + struct vt_stat vtstat; - fd = get_console_fd(NULL); - if (fd < 0) { - return -1; - } + fd = get_console_fd(NULL); + if (fd < 0) { + return -1; + } - if (ioctl(fd, VT_GETSTATE, &vtstat) < 0) { - goto out; - } + if (ioctl(fd, VT_GETSTATE, &vtstat) < 0) { + goto out; + } - ret = vtstat.v_active; + ret = vtstat.v_active; out: - close(fd); - return ret; + close(fd); + return ret; } // libs/parser.h @@ -1014,565 +979,565 @@ struct unit_parser { int parse_stream(const char *name, struct unit_parser *parser); // libs/parser.c -#define PARSER_MAXARGS 32 +#define PARSER_MAXARGS 32 #define T_EOF 1 #define T_STATEMENT 2 -#define T_ARGUMENT 3 +#define T_ARGUMENT 3 #define T_NEWLINE 7 #define T_NEWBLOCK 8 struct parser_context { - struct unit_keyword_callback *kw; + struct unit_keyword_callback *kw; }; struct parser_state { - char *ptr; - char *stmt; - int line; - int nexttoken; - void *context; + char *ptr; + char *stmt; + int line; + int nexttoken; + void *context; }; static void parser_init_state(struct parser_state *state, char *line) { - state->line = 1; - state->ptr = line; - state->nexttoken = 0; + state->line = 1; + state->ptr = line; + state->nexttoken = 0; state->stmt = NULL; state->context = NULL; } static struct unit_keyword_callback *keyword_lookup(struct parser_context *ctx, - const char *kw) + const char *kw) { - int i; + int i; - for (i = 0; ctx->kw[i].name != NULL; i++) { - if (!strcmp(ctx->kw[i].name, kw)) { - return &ctx->kw[i]; - } - } + for (i = 0; ctx->kw[i].name != NULL; i++) { + if (!strcmp(ctx->kw[i].name, kw)) { + return &ctx->kw[i]; + } + } - return NULL; + return NULL; } static int tokenize(struct parser_state *state) { - char *x = state->ptr; - char *s, *ss; + char *x = state->ptr; + char *s, *ss; - if (state->nexttoken) { - int t = state->nexttoken; - state->nexttoken = 0; - return t; - } + if (state->nexttoken) { + int t = state->nexttoken; + state->nexttoken = 0; + return t; + } retry: - state->stmt = s = x; - ss = x + 1; + state->stmt = s = x; + ss = x + 1; resume: - while (1) { - switch (*x) { - case 0: - state->nexttoken = T_EOF; - goto textdone; - case '\\': - x++; - switch (*x) { - case 0: - goto textdone; - case 'n': - *s++ = '\n'; - break; - case 'r': - *s++ = '\r'; - break; - case 't': - *s++ = '\t'; - break; - case '\\': - *s++ = '\\'; - break; - case '\r': - /* \ -> line continuation */ - if (x[1] != '\n') { - x++; - continue; - } - case '\n': - /* \ -> line continuation */ - state->line++; - x++; - /* eat any extra whitespace */ - while ((*x == ' ') || (*x == '\t')) - x++; - continue; - default: - /* unknown escape -- just copy */ - *s++ = *x++; - } - continue; - case ',': - x++; - goto textdone; - case '=': - x++; - if (ss == x) { - goto retry; - } - goto textdone; - case ' ': - case '\t': - case '\r': - x++; - if (ss == x) { - goto retry; - } - goto textdone; - case '\n': - x++; - if (ss == x) { - state->ptr = x; - return T_NEWLINE; - } - state->nexttoken = T_NEWLINE; - goto textdone; - case '\'': - case '"': - x++; - for (;;) { - switch (*x) { - case 0: - /* unterminated quoted thing */ - state->ptr = x; - return T_EOF; - case '\'': - case '"': - x++; - goto resume; - default: - *s++ = *x++; - } - } - break; - case '[': - x++; - goto resume; - case ']': - x++; - goto resume; - case '#': - while (*x && (*x != '\n')) - x++; - if (*x == '\n') { - state->ptr = x + 1; - return T_NEWLINE; - } else { - state->ptr = x; - return T_EOF; - } - break; - default: - *s++ = *x++; - } - } + while (1) { + switch (*x) { + case 0: + state->nexttoken = T_EOF; + goto textdone; + case '\\': + x++; + switch (*x) { + case 0: + goto textdone; + case 'n': + *s++ = '\n'; + break; + case 'r': + *s++ = '\r'; + break; + case 't': + *s++ = '\t'; + break; + case '\\': + *s++ = '\\'; + break; + case '\r': + /* \ -> line continuation */ + if (x[1] != '\n') { + x++; + continue; + } + case '\n': + /* \ -> line continuation */ + state->line++; + x++; + /* eat any extra whitespace */ + while ((*x == ' ') || (*x == '\t')) + x++; + continue; + default: + /* unknown escape -- just copy */ + *s++ = *x++; + } + continue; + case ',': + x++; + goto textdone; + case '=': + x++; + if (ss == x) { + goto retry; + } + goto textdone; + case ' ': + case '\t': + case '\r': + x++; + if (ss == x) { + goto retry; + } + goto textdone; + case '\n': + x++; + if (ss == x) { + state->ptr = x; + return T_NEWLINE; + } + state->nexttoken = T_NEWLINE; + goto textdone; + case '\'': + case '"': + x++; + for (;;) { + switch (*x) { + case 0: + /* unterminated quoted thing */ + state->ptr = x; + return T_EOF; + case '\'': + case '"': + x++; + goto resume; + default: + *s++ = *x++; + } + } + break; + case '[': + x++; + goto resume; + case ']': + x++; + goto resume; + case '#': + while (*x && (*x != '\n')) + x++; + if (*x == '\n') { + state->ptr = x + 1; + return T_NEWLINE; + } else { + state->ptr = x; + return T_EOF; + } + break; + default: + *s++ = *x++; + } + } textdone: - state->ptr = x; - *s = 0; - return T_STATEMENT; + state->ptr = x; + *s = 0; + return T_STATEMENT; } static int parse_statement(struct parser_context *ctx, int argc, char **argv, - int (*func) (int argc, char **argv)) + int (*func) (int argc, char **argv)) { - struct parser_state state; - char *args[PARSER_MAXARGS]; - int i, nargs, done, rc; - int ret = 0; - (void)ctx; - - for (i = 0; i < argc; i++) { - done = nargs = 0; - parser_init_state(&state, argv[i]); - - while (!done) { - int token = tokenize(&state); - switch (token) { - case T_EOF: - if (nargs && func) { - rc = func(nargs, args); - if (rc < 0) { - WARN("Key word callback error"); - } - nargs = 0; - } - done = 1; - break; - case T_STATEMENT: - if (nargs < PARSER_MAXARGS) { - args[nargs++] = state.stmt; - } - break; - } - } - } - - return ret; + struct parser_state state; + char *args[PARSER_MAXARGS]; + int i, nargs, done, rc; + int ret = 0; + UNUSED(ctx); + + for (i = 0; i < argc; i++) { + done = nargs = 0; + parser_init_state(&state, argv[i]); + + while (!done) { + int token = tokenize(&state); + switch (token) { + case T_EOF: + if (nargs && func) { + rc = func(nargs, args); + if (rc < 0) { + WARN("Key word callback error"); + } + nargs = 0; + } + done = 1; + break; + case T_STATEMENT: + if (nargs < PARSER_MAXARGS) { + args[nargs++] = state.stmt; + } + break; + } + } + } + + return ret; } int parse_stream_core(struct parser_context *ctx, char *s) { - struct unit_keyword_callback *kw; - struct parser_state state; - char *args[PARSER_MAXARGS]; - int nargs, rc; - - nargs = 0; - parser_init_state(&state, s); - - for (;;) { - int token = tokenize(&state); - switch (token) { - case T_EOF: - return 0; - case T_NEWLINE: - if (nargs) { - if ((kw = keyword_lookup(ctx, args[0])) != NULL) { - rc = parse_statement(ctx, nargs - 1, - &args[1], - kw->func); - if (rc < 0) { - return -EINVAL; - } - } - - nargs = 0; - } - break; - case T_STATEMENT: - if (nargs < PARSER_MAXARGS) { - args[nargs++] = state.stmt; - } - break; - } - } - - return 0; + struct unit_keyword_callback *kw; + struct parser_state state; + char *args[PARSER_MAXARGS]; + int nargs, rc; + + nargs = 0; + parser_init_state(&state, s); + + for (;;) { + int token = tokenize(&state); + switch (token) { + case T_EOF: + return 0; + case T_NEWLINE: + if (nargs) { + if ((kw = keyword_lookup(ctx, args[0])) != NULL) { + rc = parse_statement(ctx, nargs - 1, + &args[1], + kw->func); + if (rc < 0) { + return -EINVAL; + } + } + + nargs = 0; + } + break; + case T_STATEMENT: + if (nargs < PARSER_MAXARGS) { + args[nargs++] = state.stmt; + } + break; + } + } + + return 0; } /* reads a file, making sure it is terminated with \n \0 */ static char *open_stream(const char *name, unsigned int *_sz) { - int sz, fd; - char *data = NULL; + int sz, fd; + char *data = NULL; - fd = open(name, O_RDONLY); - if (fd < 0) - return NULL; + fd = open(name, O_RDONLY); + if (fd < 0) + return NULL; - sz = lseek(fd, 0, SEEK_END); - if (sz < 0) - goto oops; + sz = lseek(fd, 0, SEEK_END); + if (sz < 0) + goto oops; - if (lseek(fd, 0, SEEK_SET) != 0) - goto oops; + if (lseek(fd, 0, SEEK_SET) != 0) + goto oops; - data = (char *)malloc(sz + 2); - if (data == 0) - goto oops; + data = (char *)malloc(sz + 2); + if (data == 0) + goto oops; - if (read(fd, data, sz) != sz) - goto oops; + if (read(fd, data, sz) != sz) + goto oops; - close(fd); + close(fd); - data[sz] = '\n'; - data[sz + 1] = 0; - if (_sz) - *_sz = sz; + data[sz] = '\n'; + data[sz + 1] = 0; + if (_sz) + *_sz = sz; - return data; + return data; oops: - close(fd); - if (data != 0) - free(data); + close(fd); + if (data != 0) + free(data); - return NULL; + return NULL; } int parse_stream(const char *name, struct unit_parser *parser) { - char *stream; - struct parser_context *ctx; + char *stream; + struct parser_context *ctx; - ctx = (struct parser_context *)malloc(sizeof(struct parser_context)); - if (ctx == NULL) { - return -ENOMEM; - } + ctx = (struct parser_context *)malloc(sizeof(struct parser_context)); + if (ctx == NULL) { + return -ENOMEM; + } - ctx->kw = parser->kw; + ctx->kw = parser->kw; - /* File open & return file context */ - stream = open_stream(name, NULL); - if (stream == NULL) { - free(ctx); - return -1; - } + /* File open & return file context */ + stream = open_stream(name, NULL); + if (stream == NULL) { + free(ctx); + return -1; + } - parse_stream_core(ctx, stream); + parse_stream_core(ctx, stream); - free(stream); - free(ctx); + free(stream); + free(ctx); - return 0; + return 0; } // dummy-ops static int dummy_create_zone(vsm_context_h /*ctx*/, const char * /*zone_name*/, - const char * /*template*/, int /*flags*/) + const char * /*template*/, int /*flags*/) { - return -VSM_ERROR_NOT_SUPPORTED; + return -VSM_ERROR_NOT_SUPPORTED; } static int dummy_destroy_zone(vsm_context_h /*ctx*/, const char * /*zone_name*/, int /*force*/) { - return -VSM_ERROR_NOT_SUPPORTED; + return -VSM_ERROR_NOT_SUPPORTED; } static int dummy_start_zone(vsm_context_h /*ctx*/, const char * /*zone_name*/) { - return -VSM_ERROR_NOT_SUPPORTED; + return -VSM_ERROR_NOT_SUPPORTED; } static int dummy_shutdown_zone(vsm_context_h /*ctx*/, const char * /*zone_name*/, int /*force*/) { - return -VSM_ERROR_NOT_SUPPORTED; + return -VSM_ERROR_NOT_SUPPORTED; } static int dummy_lock_zone(vsm_context_h /*ctx*/, const char * /*zone_name*/, int /*shutdown*/) { - return -VSM_ERROR_NOT_SUPPORTED; + return -VSM_ERROR_NOT_SUPPORTED; } static int dummy_unlock_zone(vsm_context_h /*ctx*/, const char * /*zone_name*/) { - return -VSM_ERROR_NOT_SUPPORTED; + return -VSM_ERROR_NOT_SUPPORTED; } static int dummy_set_foreground(vsm_zone_h zone) { - if (zone == NULL) - return -VSM_ERROR_INVALID; + if (zone == NULL) + return -VSM_ERROR_INVALID; - if (zone->parent == zone) { - return VSM_ERROR_NONE; - } - return -VSM_ERROR_NO_OBJECT; + if (zone->parent == zone) { + return VSM_ERROR_NONE; + } + return -VSM_ERROR_NO_OBJECT; } static vsm_zone_h dummy_get_foreground(vsm_context_h ctx) { - if (ctx == NULL) { - errno = EINVAL; - return NULL; - } + if (ctx == NULL) { + errno = EINVAL; + return NULL; + } - return ctx->root_zone; + return ctx->root_zone; } static int dummy_iterate_zone(vsm_context_h ctx, vsm_zone_iter_cb callback, void *user_data) { - if( callback) { - callback(ctx->root_zone, user_data); - } - return VSM_ERROR_NONE; + if( callback) { + callback(ctx->root_zone, user_data); + } + return VSM_ERROR_NONE; } static vsm_zone_h dummy_lookup_zone_by_name(vsm_context_h ctx, const char *name) { - if (strcmp(name, "") != 0) { - errno = ESRCH; - return NULL; - } + if (strcmp(name, "") != 0) { + errno = ESRCH; + return NULL; + } - return ctx->root_zone; + return ctx->root_zone; } static vsm_zone_h dummy_lookup_zone_by_pid(vsm_context_h ctx, pid_t /*pid*/) { - if (ctx == NULL) - return NULL; + if (ctx == NULL) + return NULL; - return ctx->root_zone; + return ctx->root_zone; } static int dummy_attach_zone(vsm_context_h ctx, const char *zone_name, - vsm_attach_command_s * command, - vsm_attach_options_s * opts, - pid_t * attached_process) + vsm_attach_command_s * command, + vsm_attach_options_s * opts, + pid_t * attached_process) { - pid_t pid; - struct vsm_attach_options_s options; - - if (command == NULL || command->exec == NULL || zone_name == NULL) { - ERROR("Invalid arguments"); - ctx->error = VSM_ERROR_INVALID; - return -VSM_ERROR_INVALID; - } - - if (strcmp("", zone_name) != 0) { - ctx->error = VSM_ERROR_INVALID; - return -VSM_ERROR_INVALID; - } - - if (opts == NULL) { - opts = &options; - opts->uid = getuid(); - opts->gid = getgid(); - opts->env_num = 0; - opts->extra_env = NULL; - } - - pid = fork(); - if (pid == 0) { - if (opts->extra_env != NULL) { - while (*opts->extra_env) - putenv(*opts->extra_env++); - } - - if (getuid() == 0 && opts->uid != 0) { - if (setuid(opts->uid) != 0) { - ERROR("Failed to set uid : %d", opts->uid); - } - } else { - WARN("setuid() is not permitted"); - } - - if (getgid() == 0 && opts->gid != 0) { - if (setgid(opts->gid) != 0) { - ERROR("Failed to set gid : %d", opts->gid); - } - } else { - WARN("setgid() is not permitted"); - } - - if (execvp(command->exec, command->argv) < 0) { - ERROR("exevp failed : %s, %s", command->exec, - strerror(errno)); - exit(EXIT_FAILURE); - } - } else { - *attached_process = pid; - } - - return VSM_ERROR_NONE; + pid_t pid; + struct vsm_attach_options_s options; + + if (command == NULL || command->exec == NULL || zone_name == NULL) { + ERROR("Invalid arguments"); + ctx->error = VSM_ERROR_INVALID; + return -VSM_ERROR_INVALID; + } + + if (strcmp("", zone_name) != 0) { + ctx->error = VSM_ERROR_INVALID; + return -VSM_ERROR_INVALID; + } + + if (opts == NULL) { + opts = &options; + opts->uid = getuid(); + opts->gid = getgid(); + opts->env_num = 0; + opts->extra_env = NULL; + } + + pid = fork(); + if (pid == 0) { + if (opts->extra_env != NULL) { + while (*opts->extra_env) + putenv(*opts->extra_env++); + } + + if (getuid() == 0 && opts->uid != 0) { + if (setuid(opts->uid) != 0) { + ERROR("Failed to set uid : %d", opts->uid); + } + } else { + WARN("setuid() is not permitted"); + } + + if (getgid() == 0 && opts->gid != 0) { + if (setgid(opts->gid) != 0) { + ERROR("Failed to set gid : %d", opts->gid); + } + } else { + WARN("setgid() is not permitted"); + } + + if (execvp(command->exec, command->argv) < 0) { + ERROR("exevp failed : %s, %s", command->exec, + strerror(errno)); + exit(EXIT_FAILURE); + } + } else { + *attached_process = pid; + } + + return VSM_ERROR_NONE; } static int dummy_attach_zone_wait(vsm_context_h ctx, const char *zone_name, - vsm_attach_command_s * command, - vsm_attach_options_s * opts) + vsm_attach_command_s * command, + vsm_attach_options_s * opts) { - pid_t pid=0; - int ret, status; + pid_t pid=0; + int ret, status; - ret = dummy_attach_zone(ctx, zone_name, command, opts, &pid); - if (ret != VSM_ERROR_NONE) { - ERROR("API Failed."); - return ret; - } + ret = dummy_attach_zone(ctx, zone_name, command, opts, &pid); + if (ret != VSM_ERROR_NONE) { + ERROR("API Failed."); + return ret; + } - status = wait_for_pid_status(pid); - if (status == -1) { - ctx->error = VSM_ERROR_GENERIC; - return -VSM_ERROR_GENERIC; - } + status = wait_for_pid_status(pid); + if (status == -1) { + ctx->error = VSM_ERROR_GENERIC; + return -VSM_ERROR_GENERIC; + } - INFO("attached process extied : pid - %d, exit code : %d", pid, - WEXITSTATUS(status)); + INFO("attached process extied : pid - %d, exit code : %d", pid, + WEXITSTATUS(status)); - return status; + return status; } static vsm_zone_h dummy_join_zone(vsm_zone_h zone) { - if (zone == NULL) { - errno = EINVAL; - return NULL; - } - if (zone != zone->parent) { - errno = EINVAL; - return NULL; - } + if (zone == NULL) { + errno = EINVAL; + return NULL; + } + if (zone != zone->parent) { + errno = EINVAL; + return NULL; + } - return zone; + return zone; } static int dummy_is_equivalent_zone(vsm_context_h /*ctx*/, pid_t /*pid*/) { - return 1; + return 1; } static int dummy_get_host_pid(vsm_zone_h zone, pid_t pid) { - if(zone == zone->parent) - return pid; + if(zone == zone->parent) + return pid; - return -VSM_ERROR_NO_OBJECT; + return -VSM_ERROR_NO_OBJECT; } static int dummy_grant_device(vsm_zone_h /*zone*/, const char * /*path*/, uint32_t /*flags*/) { - return -VSM_ERROR_NOT_SUPPORTED; + return -VSM_ERROR_NOT_SUPPORTED; } static int dummy_revoke_device(vsm_zone_h /*zone*/, const char * /*path*/) { - return -VSM_ERROR_NOT_SUPPORTED; + return -VSM_ERROR_NOT_SUPPORTED; } static int dummy_declare_file(vsm_context_h /*ctx*/, vsm_fso_type_t /*ftype*/, - const char * /*path*/, int /*flags*/, vsm_mode_t /*mode*/) + const char * /*path*/, int /*flags*/, vsm_mode_t /*mode*/) { - return VSM_ERROR_NONE; + return VSM_ERROR_NONE; } static int dummy_declare_link(vsm_context_h /*ctx*/, const char *source, - const char * /*target*/) + const char * /*target*/) { - int ret; + int ret; - ret = access(source, F_OK); - if (ret != 0) - return -VSM_ERROR_NO_OBJECT; + ret = access(source, F_OK); + if (ret != 0) + return -VSM_ERROR_NO_OBJECT; - return VSM_ERROR_NONE; + return VSM_ERROR_NONE; } struct vasum_ops dummy_ops; static int dummy_ops_init(){ - dummy_ops.create_zone = dummy_create_zone; - dummy_ops.destroy_zone = dummy_destroy_zone; - dummy_ops.start_zone = dummy_start_zone; - dummy_ops.shutdown_zone = dummy_shutdown_zone; - dummy_ops.lock_zone = dummy_lock_zone; - dummy_ops.unlock_zone = dummy_unlock_zone; - dummy_ops.set_foreground = dummy_set_foreground; - dummy_ops.get_foreground = dummy_get_foreground; - dummy_ops.iterate_zone = dummy_iterate_zone; - dummy_ops.lookup_zone_by_name = dummy_lookup_zone_by_name; - dummy_ops.lookup_zone_by_pid = dummy_lookup_zone_by_pid; - dummy_ops.attach_zone = dummy_attach_zone; - dummy_ops.attach_zone_wait = dummy_attach_zone_wait; - dummy_ops.join_zone = dummy_join_zone; - dummy_ops.is_equivalent_zone = dummy_is_equivalent_zone; - dummy_ops.get_host_pid = dummy_get_host_pid; - dummy_ops.grant_device = dummy_grant_device; - dummy_ops.revoke_device = dummy_revoke_device; - dummy_ops.declare_file = dummy_declare_file; - dummy_ops.declare_link = dummy_declare_link; + dummy_ops.create_zone = dummy_create_zone; + dummy_ops.destroy_zone = dummy_destroy_zone; + dummy_ops.start_zone = dummy_start_zone; + dummy_ops.shutdown_zone = dummy_shutdown_zone; + dummy_ops.lock_zone = dummy_lock_zone; + dummy_ops.unlock_zone = dummy_unlock_zone; + dummy_ops.set_foreground = dummy_set_foreground; + dummy_ops.get_foreground = dummy_get_foreground; + dummy_ops.iterate_zone = dummy_iterate_zone; + dummy_ops.lookup_zone_by_name = dummy_lookup_zone_by_name; + dummy_ops.lookup_zone_by_pid = dummy_lookup_zone_by_pid; + dummy_ops.attach_zone = dummy_attach_zone; + dummy_ops.attach_zone_wait = dummy_attach_zone_wait; + dummy_ops.join_zone = dummy_join_zone; + dummy_ops.is_equivalent_zone = dummy_is_equivalent_zone; + dummy_ops.get_host_pid = dummy_get_host_pid; + dummy_ops.grant_device = dummy_grant_device; + dummy_ops.revoke_device = dummy_revoke_device; + dummy_ops.declare_file = dummy_declare_file; + dummy_ops.declare_link = dummy_declare_link; return 0; } int dummy_ops_init_i = dummy_ops_init(); diff --git a/client/wrapper-compat.h b/client/wrapper-compat.h index 90b44fb..2527289 100644 --- a/client/wrapper-compat.h +++ b/client/wrapper-compat.h @@ -130,45 +130,6 @@ typedef enum { ML_EVT_ET = EPOLLET }mainloop_event; -typedef struct vsm_context { - struct mxe_endpoint *signal_channel; - struct mxe_endpoint *manage_method_channel; - struct mxe_endpoint *unpriv_method_channel; - vsm_error_e error; - pthread_rwlock_t lock; - struct adt_list listeners; - struct vsm_zone *root_zone; - struct vsm_zone *foreground_zone; - struct adt_list sc_listeners; - struct adt_list ev_listeners; - const struct vasum_ops *vsm_ops; -} vsm_context_s; - -typedef struct vsm_zone { - struct vsm_zone *parent; - char *name; - char *type; - int terminal; - vsm_zone_state_t state; - char *rootfs_path; - pthread_rwlock_t lock; - struct adt_list children; - struct adt_list devices; - struct adt_list netdevs; - void *user_data; - struct adt_list list; - struct vsm_context *ctx; - int id; -} vsm_zone_s; - -typedef struct vsm_netdev { - struct vsm_zone *zone; - char *name; - vsm_netdev_type_t type; - struct adt_list list; -} vsm_netdev_s; - - typedef int (*dev_enumerator)(int type, int major, int minor, void *data); typedef int (*mainloop_callback)(int fd, mainloop_event event, void *data, struct mainloop *mainloop); diff --git a/packaging/vasum.spec b/packaging/vasum.spec index d2c7fe0..606f535 100644 --- a/packaging/vasum.spec +++ b/packaging/vasum.spec @@ -154,6 +154,7 @@ Development package including the header files for the client library %{_libdir}/libvasum-client.so %{_libdir}/libvasum.so %{_includedir}/vasum +%{_libdir}/pkgconfig/vasum-client.pc %{_libdir}/pkgconfig/vasum.pc -- 2.7.4 From 762750f4833dc0c3da55e07a55767eed5562393f Mon Sep 17 00:00:00 2001 From: Krzysztof Dynowski Date: Tue, 12 May 2015 15:05:13 +0200 Subject: [PATCH 07/16] Vasum wrapper #4, cleanup [Bug/Feature] Cleanup folder structure [Cause] wrapper mixed with client [Solution] #4 move wrapper sources to separate folder [Verification] Build, build old clients Change-Id: I467e12d996e2c23ce0e46182c7e3d74ea2943ada --- CMakeLists.txt | 2 + client/CMakeLists.txt | 33 ++-------- tests/unit_tests/CMakeLists.txt | 2 - wrapper/CMakeLists.txt | 76 ++++++++++++++++++++++ {client => wrapper}/vasum.h | 0 {client => wrapper}/vasum.pc.in | 0 {client => wrapper}/vasum_list.h | 0 .../wrapper-compatibility.cpp | 2 +- .../wrapper-compatibility.h | 0 client/vasum-wrapper.cpp => wrapper/wrapper.cpp | 6 +- 10 files changed, 87 insertions(+), 34 deletions(-) create mode 100644 wrapper/CMakeLists.txt rename {client => wrapper}/vasum.h (100%) rename {client => wrapper}/vasum.pc.in (100%) rename {client => wrapper}/vasum_list.h (100%) rename client/wrapper-compat.cpp => wrapper/wrapper-compatibility.cpp (99%) rename client/wrapper-compat.h => wrapper/wrapper-compatibility.h (100%) rename client/vasum-wrapper.cpp => wrapper/wrapper.cpp (99%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 05fbc53..a0b6b1b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -148,6 +148,7 @@ SET(ZONE_SUPPORT_FOLDER ${PROJECT_SOURCE_DIR}/zone-support) SET(ZONE_DAEMON_FOLDER ${PROJECT_SOURCE_DIR}/zone-daemon) SET(TESTS_FOLDER ${PROJECT_SOURCE_DIR}/tests) SET(CLI_FOLDER ${PROJECT_SOURCE_DIR}/cli) +SET(WRAPPER_FOLDER ${PROJECT_SOURCE_DIR}/wrapper) IF(NOT DEFINED SYSCONF_INSTALL_DIR) SET(SYSCONF_INSTALL_DIR "/etc") @@ -190,4 +191,5 @@ ADD_SUBDIRECTORY(${ZONE_SUPPORT_FOLDER}) ADD_SUBDIRECTORY(${ZONE_DAEMON_FOLDER}) ADD_SUBDIRECTORY(${TESTS_FOLDER}) ADD_SUBDIRECTORY(${CLI_FOLDER}) +ADD_SUBDIRECTORY(${WRAPPER_FOLDER}) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 253a19e..9b1d890 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -17,20 +17,10 @@ # @author Mateusz Malicki (m.malicki2@samsung.com) # +PROJECT(vasum-client) MESSAGE(STATUS "") MESSAGE(STATUS "Generating makefile for the Client...") -## set client library sources (without wrapper files) FILE(GLOB project_SRCS *.cpp *.hpp *.h) -FILE(GLOB project_SRCS_rm vasum-wrapper.cpp - wrapper-compat.* - vasum.h - vasum_list.h) -LIST(REMOVE_ITEM project_SRCS ${project_SRCS_rm}) - -## set wrapper library sources (without vasum-client.cpp) -FILE(GLOB wrapper_SRCS *.cpp *.hpp *.h) -FILE(GLOB wrapper_SRCS_rm vasum-client.cpp) -LIST(REMOVE_ITEM wrapper_SRCS ${wrapper_SRCS_rm}) FILE(GLOB common_SRCS ${COMMON_FOLDER}/epoll/*.hpp ${COMMON_FOLDER}/epoll/*.cpp ${COMMON_FOLDER}/ipc/*.hpp ${COMMON_FOLDER}/ipc/*.cpp @@ -38,10 +28,8 @@ FILE(GLOB common_SRCS ${COMMON_FOLDER}/epoll/*.hpp ${COMMON_FOLDER} ${COMMON_FOLDER}/utils/*.hpp ${COMMON_FOLDER}/utils/*.cpp ${COMMON_FOLDER}/*.hpp ${COMMON_FOLDER}/*.cpp) -## set version highier then vasum.so.0.1.0 SET(_LIB_VERSION_ "${VERSION}") SET(_LIB_SOVERSION_ "0") -SET(PC_FILE_CLIENT "${PROJECT_NAME}-client.pc") SET(PC_FILE "${PROJECT_NAME}.pc") ## Set the default ELF image symbol visibility to hidden. Using this feature @@ -51,13 +39,7 @@ SET(PC_FILE "${PROJECT_NAME}.pc") ADD_DEFINITIONS(-fvisibility=hidden) ## Setup target ################################################################ -ADD_LIBRARY(${PROJECT_NAME}-client SHARED ${project_SRCS} ${common_SRCS}) -SET_TARGET_PROPERTIES(${PROJECT_NAME}-client PROPERTIES - SOVERSION ${_LIB_SOVERSION_} - VERSION ${_LIB_VERSION_} - COMPILE_DEFINITIONS HOST_IPC_SOCKET="${VSM_SERVER_IPC_SOCKET_PATH}") - -ADD_LIBRARY(${PROJECT_NAME} SHARED ${wrapper_SRCS} ${common_SRCS}) +ADD_LIBRARY(${PROJECT_NAME} SHARED ${project_SRCS} ${common_SRCS}) SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${_LIB_SOVERSION_} VERSION ${_LIB_VERSION_} @@ -70,23 +52,20 @@ INCLUDE_DIRECTORIES(SYSTEM ${LIB_DEPS_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS}) INCLUDE_DIRECTORIES(${COMMON_FOLDER}) INCLUDE_DIRECTORIES(${LIBS_FOLDER}) INCLUDE_DIRECTORIES(${SERVER_FOLDER}) -TARGET_LINK_LIBRARIES(${PROJECT_NAME}-client ${LIB_DEPS_LIBRARIES} ${Boost_LIBRARIES} - Config SimpleDbus) TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${LIB_DEPS_LIBRARIES} ${Boost_LIBRARIES} Config SimpleDbus) ## Generate the pc file ######################################################## -CONFIGURE_FILE(${PC_FILE_CLIENT}.in ${CMAKE_BINARY_DIR}/${PC_FILE_CLIENT} @ONLY) CONFIGURE_FILE(${PC_FILE}.in ${CMAKE_BINARY_DIR}/${PC_FILE} @ONLY) ## Install ##################################################################### -INSTALL(FILES ${CMAKE_BINARY_DIR}/${PC_FILE_CLIENT} ${CMAKE_BINARY_DIR}/${PC_FILE} +INSTALL(FILES ${CMAKE_BINARY_DIR}/${PC_FILE} DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) -INSTALL(TARGETS ${PROJECT_NAME}-client ${PROJECT_NAME} +INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT RuntimeLibraries) -INSTALL(FILES vasum-client.h vasum.h vasum_list.h - DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME}) +INSTALL(FILES vasum-client.h + DESTINATION ${INCLUDE_INSTALL_DIR}/vasum) diff --git a/tests/unit_tests/CMakeLists.txt b/tests/unit_tests/CMakeLists.txt index 65646ea..889dd91 100644 --- a/tests/unit_tests/CMakeLists.txt +++ b/tests/unit_tests/CMakeLists.txt @@ -23,8 +23,6 @@ FILE(GLOB_RECURSE project_SRCS *.cpp *.hpp) FILE(GLOB_RECURSE common_SRCS ${COMMON_FOLDER}/*.cpp ${COMMON_FOLDER}/*.hpp) FILE(GLOB server_SRCS ${SERVER_FOLDER}/*.cpp ${SERVER_FOLDER}/*.hpp) FILE(GLOB client_SRCS ${CLIENT_FOLDER}/*.cpp ${CLIENT_FOLDER}/*.h) -FILE(GLOB client_SRCS_rm ${CLIENT_FOLDER}/vasum-wrapper*.cpp) -LIST(REMOVE_ITEM client_SRCS ${client_SRCS_rm}) FILE(GLOB socket_test_SRCS ${SOCKET_TEST_FOLDER}/*.cpp ${SOCKET_TEST_FOLDER}/*.hpp) FILE(GLOB main_SRC ${SERVER_FOLDER}/main.cpp) diff --git a/wrapper/CMakeLists.txt b/wrapper/CMakeLists.txt new file mode 100644 index 0000000..532e693 --- /dev/null +++ b/wrapper/CMakeLists.txt @@ -0,0 +1,76 @@ +# Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# @file CMakeLists.txt +# @author Mateusz Malicki (m.malicki2@samsung.com) +# + +PROJECT(vasum) +MESSAGE(STATUS "") +MESSAGE(STATUS "Generating makefile for the Vasum wrapper...") + +## set wrapper library sources (without vasum-client.cpp) +FILE(GLOB wrapper_SRCS *.cpp *.hpp *.h + ${CLIENT_FOLDER}/vasum-client-impl.hpp ${CLIENT_FOLDER}/vasum-client-impl.cpp + ${CLIENT_FOLDER}/host-ipc-connection.hpp ${CLIENT_FOLDER}/host-ipc-connection.cpp + ${CLIENT_FOLDER}/utils.hpp ${CLIENT_FOLDER}/utils.cpp) + +FILE(GLOB common_SRCS ${COMMON_FOLDER}/epoll/*.hpp ${COMMON_FOLDER}/epoll/*.cpp + ${COMMON_FOLDER}/ipc/*.hpp ${COMMON_FOLDER}/ipc/*.cpp + ${COMMON_FOLDER}/ipc/internals/*.hpp ${COMMON_FOLDER}/ipc/internals/*.cpp + ${COMMON_FOLDER}/utils/*.hpp ${COMMON_FOLDER}/utils/*.cpp + ${COMMON_FOLDER}/*.hpp ${COMMON_FOLDER}/*.cpp) + +SET(_LIB_VERSION_ "${VERSION}") +SET(_LIB_SOVERSION_ "0") +SET(PC_FILE "${PROJECT_NAME}.pc") + +## Set the default ELF image symbol visibility to hidden. Using this feature +## can very substantially improve linking and load times of shared object +## libraries, produce more optimized code, provide near-perfect API export +## and prevent symbol clashes +ADD_DEFINITIONS(-fvisibility=hidden) + +ADD_LIBRARY(${PROJECT_NAME} SHARED ${wrapper_SRCS} ${common_SRCS}) +SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES + SOVERSION ${_LIB_SOVERSION_} + VERSION ${_LIB_VERSION_} + COMPILE_DEFINITIONS HOST_IPC_SOCKET="${VSM_SERVER_IPC_SOCKET_PATH}") + +## Link libraries ############################################################## +FIND_PACKAGE(Boost COMPONENTS system filesystem) +PKG_CHECK_MODULES(LIB_DEPS REQUIRED gio-2.0 libsystemd-daemon libcap-ng) +INCLUDE_DIRECTORIES(SYSTEM ${LIB_DEPS_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS}) +INCLUDE_DIRECTORIES(${COMMON_FOLDER}) +INCLUDE_DIRECTORIES(${LIBS_FOLDER}) +INCLUDE_DIRECTORIES(${SERVER_FOLDER}) +INCLUDE_DIRECTORIES(${CLIENT_FOLDER}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${LIB_DEPS_LIBRARIES} ${Boost_LIBRARIES} + Config SimpleDbus) + +## Generate the pc file ######################################################## +CONFIGURE_FILE(${PC_FILE}.in ${CMAKE_BINARY_DIR}/${PC_FILE} @ONLY) + + +## Install ##################################################################### +INSTALL(FILES ${CMAKE_BINARY_DIR}/${PC_FILE} + DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) + +INSTALL(TARGETS ${PROJECT_NAME} + DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT RuntimeLibraries) + +INSTALL(FILES vasum.h vasum_list.h + DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME}) diff --git a/client/vasum.h b/wrapper/vasum.h similarity index 100% rename from client/vasum.h rename to wrapper/vasum.h diff --git a/client/vasum.pc.in b/wrapper/vasum.pc.in similarity index 100% rename from client/vasum.pc.in rename to wrapper/vasum.pc.in diff --git a/client/vasum_list.h b/wrapper/vasum_list.h similarity index 100% rename from client/vasum_list.h rename to wrapper/vasum_list.h diff --git a/client/wrapper-compat.cpp b/wrapper/wrapper-compatibility.cpp similarity index 99% rename from client/wrapper-compat.cpp rename to wrapper/wrapper-compatibility.cpp index 67b34e6..d0bd082 100644 --- a/client/wrapper-compat.cpp +++ b/wrapper/wrapper-compatibility.cpp @@ -23,7 +23,7 @@ * @brief Vasum old API compatibility functions */ -#include "wrapper-compat.h" +#include "wrapper-compatibility.h" #include #include #include diff --git a/client/wrapper-compat.h b/wrapper/wrapper-compatibility.h similarity index 100% rename from client/wrapper-compat.h rename to wrapper/wrapper-compatibility.h diff --git a/client/vasum-wrapper.cpp b/wrapper/wrapper.cpp similarity index 99% rename from client/vasum-wrapper.cpp rename to wrapper/wrapper.cpp index 54c195e..c5eadbc 100644 --- a/client/vasum-wrapper.cpp +++ b/wrapper/wrapper.cpp @@ -29,13 +29,11 @@ #include #include "config.hpp" +#include "vasum-client-impl.hpp" #include "logger/logger.hpp" #include "logger/backend-journal.hpp" -#include "wrapper-compat.h" -#include "vasum-client-impl.hpp" - -#define MAX_EPOLL_EVENTS 16 +#include "wrapper-compatibility.h" struct WrappedZone { -- 2.7.4 From cbab469d4a0c6580d4794ff04e391dddd96243e7 Mon Sep 17 00:00:00 2001 From: Dariusz Michaluk Date: Tue, 12 May 2015 16:19:01 +0200 Subject: [PATCH 08/16] Rename all not associated with LXC stuff. [Bug/Feature] Rename all not associated with LXC stuff. [Cause] N/A [Solution] N/A [Verification] Build, install, run tests. Change-Id: I40bf4156e5148dc3a6f3d81bc2e7edfe81c56596 --- packaging/vasum.spec | 5 +-- server/configs/CMakeLists.txt | 7 +--- server/configs/daemon.conf.in | 2 +- server/configs/templates/default.conf | 2 +- .../{lxc-templates => templates}/template.sh | 0 .../tizen-common-wayland.sh | 0 server/zone-admin.cpp | 10 ++--- server/zone-admin.hpp | 8 ++-- server/zone-config.hpp | 6 +-- server/zone.cpp | 4 +- server/zone.hpp | 8 ++-- server/zones-manager-config.hpp | 6 +-- server/zones-manager.cpp | 2 +- tests/unit_tests/CMakeLists.txt | 4 +- .../ut-client/templates/console-dbus.conf.in | 2 +- .../ut-client/templates/console-ipc.conf.in | 2 +- .../client/configs/ut-client/test-daemon.conf.in | 2 +- tests/unit_tests/lxc/templates/CMakeLists.txt | 6 +-- tests/unit_tests/lxc/ut-zone.cpp | 48 +++++++++++----------- .../configs/ut-server/templates/default.conf | 2 +- .../server/configs/ut-server/test-daemon.conf.in | 2 +- .../configs/ut-zone-admin/templates/buggy.conf | 2 +- .../configs/ut-zone-admin/templates/missing.conf | 2 +- .../ut-zone-admin/templates/test-no-shutdown.conf | 2 +- .../configs/ut-zone-admin/templates/test.conf | 2 +- .../server/configs/ut-zone/templates/buggy.conf | 2 +- .../configs/ut-zone/templates/test-dbus.conf.in | 2 +- .../server/configs/ut-zone/templates/test.conf | 2 +- .../ut-zones-manager/templates/console.conf | 2 +- .../configs/ut-zones-manager/test-daemon.conf.in | 2 +- tests/unit_tests/server/ut-zone-admin.cpp | 4 +- tests/unit_tests/server/ut-zone-provision.cpp | 2 +- tests/unit_tests/server/ut-zone.cpp | 6 +-- 33 files changed, 77 insertions(+), 81 deletions(-) rename server/configs/{lxc-templates => templates}/template.sh (100%) rename server/configs/{lxc-templates => templates}/tizen-common-wayland.sh (100%) diff --git a/packaging/vasum.spec b/packaging/vasum.spec index 606f535..0636c53 100644 --- a/packaging/vasum.spec +++ b/packaging/vasum.spec @@ -41,10 +41,9 @@ between them. A process from inside a zone can request a switch of context %attr(755,root,root) %{_bindir}/vasum-server %dir /etc/vasum %dir /etc/vasum/zones -%dir /etc/vasum/lxc-templates %dir /etc/vasum/templates %config /etc/vasum/daemon.conf -%attr(755,root,root) /etc/vasum/lxc-templates/*.sh +%attr(755,root,root) /etc/vasum/templates/*.sh %config /etc/vasum/templates/*.conf %{_unitdir}/vasum.service %{_unitdir}/vasum.socket @@ -248,7 +247,7 @@ systemctl daemon-reload %attr(755,root,root) %{script_dir}/vsm_launch_test.py %{script_dir}/vsm_test_parser.py %config /etc/vasum/tests -%attr(755,root,root) /etc/vasum/tests/lxc-templates +%attr(755,root,root) /etc/vasum/tests/templates %{python_sitelib}/vsm_integration_tests %config /etc/dbus-1/system.d/org.tizen.vasum.tests.conf %{_unitdir}/vasum-socket-test.socket diff --git a/server/configs/CMakeLists.txt b/server/configs/CMakeLists.txt index e34137e..0e7be41 100644 --- a/server/configs/CMakeLists.txt +++ b/server/configs/CMakeLists.txt @@ -19,8 +19,8 @@ MESSAGE(STATUS "Installing configs to " ${VSM_CONFIG_INSTALL_DIR}) -FILE(GLOB admin_CONF lxc-templates/*.sh) -FILE(GLOB template_CONF templates/*.conf) +FILE(GLOB template_CONF templates/*.conf + templates/*.sh) ## Generate #################################################################### CONFIGURE_FILE(systemd/vasum.service.in @@ -43,9 +43,6 @@ INSTALL(FILES ${CMAKE_BINARY_DIR}/dbus-1/system.d/org.tizen.vasum.host.con INSTALL(DIRECTORY DESTINATION ${VSM_CONFIG_INSTALL_DIR}/zones) #TODO temporary solution -INSTALL(PROGRAMS ${admin_CONF} - DESTINATION ${VSM_CONFIG_INSTALL_DIR}/lxc-templates) - INSTALL(PROGRAMS ${template_CONF} DESTINATION ${VSM_CONFIG_INSTALL_DIR}/templates) diff --git a/server/configs/daemon.conf.in b/server/configs/daemon.conf.in index a6359fa..0800124 100644 --- a/server/configs/daemon.conf.in +++ b/server/configs/daemon.conf.in @@ -6,7 +6,7 @@ "zoneTemplateDir" : "/etc/vasum/templates/", "runMountPointPrefix" : "/var/run/zones", "defaultId" : "", - "lxcTemplatePrefix" : "/etc/vasum/lxc-templates", + "zoneTemplatePrefix" : "/etc/vasum/templates", "availableVTs" : [3, 4, 5, 6], "inputConfig" : {"enabled" : true, "device" : "gpio_keys.6", diff --git a/server/configs/templates/default.conf b/server/configs/templates/default.conf index ce88c6e..b8eb5d5 100644 --- a/server/configs/templates/default.conf +++ b/server/configs/templates/default.conf @@ -1,5 +1,5 @@ { - "lxcTemplate" : "tizen-common-wayland.sh", + "zoneTemplate" : "tizen-common-wayland.sh", "initWithArgs" : [], "requestedState" : "stopped", "ipv4Gateway" : "10.0.~IP~.1", diff --git a/server/configs/lxc-templates/template.sh b/server/configs/templates/template.sh similarity index 100% rename from server/configs/lxc-templates/template.sh rename to server/configs/templates/template.sh diff --git a/server/configs/lxc-templates/tizen-common-wayland.sh b/server/configs/templates/tizen-common-wayland.sh similarity index 100% rename from server/configs/lxc-templates/tizen-common-wayland.sh rename to server/configs/templates/tizen-common-wayland.sh diff --git a/server/zone-admin.cpp b/server/zone-admin.cpp index 0f831d7..473a11c 100644 --- a/server/zone-admin.cpp +++ b/server/zone-admin.cpp @@ -46,7 +46,7 @@ const std::uint64_t DEFAULT_VCPU_PERIOD_MS = 100000; ZoneAdmin::ZoneAdmin(const std::string& zoneId, const std::string& zonesPath, - const std::string& lxcTemplatePrefix, + const std::string& zoneTemplatePrefix, const ZoneConfig& config, const ZoneDynamicConfig& dynamicConfig) : mConfig(config), @@ -60,9 +60,9 @@ ZoneAdmin::ZoneAdmin(const std::string& zoneId, if (!mZone.isDefined()) { - const std::string lxcTemplate = utils::getAbsolutePath(config.lxcTemplate, - lxcTemplatePrefix); - LOGI(mId << ": Creating zone from template: " << lxcTemplate); + const std::string zoneTemplate = utils::getAbsolutePath(config.zoneTemplate, + zoneTemplatePrefix); + LOGI(mId << ": Creating zone from template: " << zoneTemplate); utils::CStringArrayBuilder args; if (!dynamicConfig.ipv4Gateway.empty()) { args.add("--ipv4-gateway"); @@ -77,7 +77,7 @@ ZoneAdmin::ZoneAdmin(const std::string& zoneId, args.add("--vt"); args.add(vt.c_str()); } - if (!mZone.create(lxcTemplate, args.c_array())) { + if (!mZone.create(zoneTemplate, args.c_array())) { throw ZoneOperationException("Could not create zone"); } } diff --git a/server/zone-admin.hpp b/server/zone-admin.hpp index d1b179d..d154beb 100644 --- a/server/zone-admin.hpp +++ b/server/zone-admin.hpp @@ -46,14 +46,14 @@ public: /** * ZoneAdmin constructor * @param zoneId zone id - * @param zonesPath directory where zones are defined (lxc configs, rootfs etc) - * @param lxcTemplatePrefix directory where templates are stored + * @param zonesPath directory where zones are defined (configs, rootfs etc) + * @param zoneTemplatePrefix directory where templates are stored * @param config zones config * @param dynamicConfig zones dynamic config */ ZoneAdmin(const std::string& zoneId, const std::string& zonesPath, - const std::string& lxcTemplatePrefix, + const std::string& zoneTemplatePrefix, const ZoneConfig& config, const ZoneDynamicConfig& dynamicConfig); virtual ~ZoneAdmin(); @@ -85,7 +85,7 @@ public: /** * Check if the zone is stopped. It's NOT equivalent to !isRunning, - * because it checks different internal lxc states. There are other states, + * because it checks different internal zone states. There are other states, * (e.g. paused) when the zone isn't running nor stopped. * * @return Is the zone stopped? diff --git a/server/zone-config.hpp b/server/zone-config.hpp index b845ef9..aad9159 100644 --- a/server/zone-config.hpp +++ b/server/zone-config.hpp @@ -38,9 +38,9 @@ namespace vasum { struct ZoneConfig { /** - * Lxc template name (relative to lxcTemplatePrefix) + * Zone template name (relative to zoneTemplatePrefix) */ - std::string lxcTemplate; + std::string zoneTemplate; /** * Init program with args (empty means default /sbin/init) @@ -96,7 +96,7 @@ struct ZoneConfig { CONFIG_REGISTER ( - lxcTemplate, + zoneTemplate, initWithArgs, privilege, // TODO not needed? switchToDefaultAfterTimeout, // TODO move to dynamic and add an API to change diff --git a/server/zone.cpp b/server/zone.cpp index 8a1aa0b..a19fc6a 100644 --- a/server/zone.cpp +++ b/server/zone.cpp @@ -56,7 +56,7 @@ Zone::Zone(const std::string& zoneId, const std::string& zonesPath, const std::string& zoneTemplatePath, const std::string& dbPath, - const std::string& lxcTemplatePrefix, + const std::string& zoneTemplatePrefix, const std::string& baseRunMountPointPath) : mDbPath(dbPath) { @@ -75,7 +75,7 @@ Zone::Zone(const std::string& zoneId, mRunMountPoint = fs::absolute(mDynamicConfig.runMountPoint, baseRunMountPointPath).string(); } - mAdmin.reset(new ZoneAdmin(zoneId, zonesPath, lxcTemplatePrefix, mConfig, mDynamicConfig)); + mAdmin.reset(new ZoneAdmin(zoneId, zonesPath, zoneTemplatePrefix, mConfig, mDynamicConfig)); const fs::path zonePath = fs::path(zonesPath) / zoneId; mRootPath = (zonePath / fs::path("rootfs")).string(); diff --git a/server/zone.hpp b/server/zone.hpp index 6d13d85..ee1bf43 100644 --- a/server/zone.hpp +++ b/server/zone.hpp @@ -46,17 +46,17 @@ public: /** * Zone constructor * @param zoneId zone id - * @param zonesPath directory where zones are defined (lxc configs, rootfs etc) + * @param zonesPath directory where zones are defined (configs, rootfs etc) * @param zoneTemplatePath path for zones config template * @param dbPath path to dynamic config db file - * @param lxcTemplatePrefix directory where templates are stored + * @param zoneTemplatePrefix directory where templates are stored * @param baseRunMountPointPath base directory for run mount point */ Zone(const std::string& zoneId, const std::string& zonesPath, const std::string& zoneTemplatePath, const std::string& dbPath, - const std::string& lxcTemplatePrefix, + const std::string& zoneTemplatePrefix, const std::string& baseRunMountPointPath); Zone(const Zone&) = delete; Zone& operator=(const Zone&) = delete; @@ -141,7 +141,7 @@ public: /** * Check if the zone is stopped. It's NOT equivalent to !isRunning, - * because it checks different internal LXC states. There are other states, + * because it checks different internal zone states. There are other states, * (e.g. paused) when the zone isn't running nor stopped. * * @return Is the zone stopped? diff --git a/server/zones-manager-config.hpp b/server/zones-manager-config.hpp index bfc1b25..b59cfc2 100644 --- a/server/zones-manager-config.hpp +++ b/server/zones-manager-config.hpp @@ -60,9 +60,9 @@ struct ZonesManagerConfig { std::string zoneTemplateDir; /** - * Path prefix for lxc templates + * Path prefix for zone templates */ - std::string lxcTemplatePrefix; + std::string zoneTemplatePrefix; /** * VTs available for zones @@ -90,7 +90,7 @@ struct ZonesManagerConfig { zonesPath, zoneImagePath, zoneTemplateDir, - lxcTemplatePrefix, + zoneTemplatePrefix, availableVTs, inputConfig, runMountPointPrefix, diff --git a/server/zones-manager.cpp b/server/zones-manager.cpp index 953fad0..c05b1be 100644 --- a/server/zones-manager.cpp +++ b/server/zones-manager.cpp @@ -323,7 +323,7 @@ void ZonesManager::insertZone(const std::string& zoneId, const std::string& zone mConfig.zonesPath, zoneTemplatePath, mConfig.dbPath, - mConfig.lxcTemplatePrefix, + mConfig.zoneTemplatePrefix, mConfig.runMountPointPrefix)); mZones.push_back(std::move(zone)); diff --git a/tests/unit_tests/CMakeLists.txt b/tests/unit_tests/CMakeLists.txt index 889dd91..500e7af 100644 --- a/tests/unit_tests/CMakeLists.txt +++ b/tests/unit_tests/CMakeLists.txt @@ -72,9 +72,9 @@ TARGET_LINK_LIBRARIES(${SOCKET_TEST_CODENAME} ${UT_SERVER_DEPS_LIBRARIES} ${Boos ## Subdirectories ############################################################## SET(VSM_TEST_CONFIG_INSTALL_DIR ${VSM_CONFIG_INSTALL_DIR}/tests) -SET(VSM_TEST_LXC_TEMPLATES_INSTALL_DIR ${VSM_CONFIG_INSTALL_DIR}/tests/lxc-templates) +SET(VSM_TEST_TEMPLATES_INSTALL_DIR ${VSM_CONFIG_INSTALL_DIR}/tests/templates) ADD_DEFINITIONS(-DVSM_TEST_CONFIG_INSTALL_DIR="${VSM_TEST_CONFIG_INSTALL_DIR}") -ADD_DEFINITIONS(-DVSM_TEST_LXC_TEMPLATES_INSTALL_DIR="${VSM_TEST_LXC_TEMPLATES_INSTALL_DIR}") +ADD_DEFINITIONS(-DVSM_TEST_TEMPLATES_INSTALL_DIR="${VSM_TEST_TEMPLATES_INSTALL_DIR}") ADD_SUBDIRECTORY(dbus/configs) ADD_SUBDIRECTORY(server/configs) diff --git a/tests/unit_tests/client/configs/ut-client/templates/console-dbus.conf.in b/tests/unit_tests/client/configs/ut-client/templates/console-dbus.conf.in index 2ff5998..c47dfaa 100644 --- a/tests/unit_tests/client/configs/ut-client/templates/console-dbus.conf.in +++ b/tests/unit_tests/client/configs/ut-client/templates/console-dbus.conf.in @@ -1,5 +1,5 @@ { - "lxcTemplate" : "minimal-dbus.sh", + "zoneTemplate" : "minimal-dbus.sh", "initWithArgs" : ["/bin/sh", "-c", "trap exit SIGTERM; /usr/bin/dbus-daemon --config-file=@VSM_TEST_CONFIG_INSTALL_DIR@/server/ut-zones-manager/ut-dbus.conf --fork; read"], "requestedState" : "running", "ipv4Gateway" : "", diff --git a/tests/unit_tests/client/configs/ut-client/templates/console-ipc.conf.in b/tests/unit_tests/client/configs/ut-client/templates/console-ipc.conf.in index b7b103a..7b48420 100644 --- a/tests/unit_tests/client/configs/ut-client/templates/console-ipc.conf.in +++ b/tests/unit_tests/client/configs/ut-client/templates/console-ipc.conf.in @@ -1,5 +1,5 @@ { - "lxcTemplate" : "minimal-dbus.sh", + "zoneTemplate" : "minimal-dbus.sh", "initWithArgs" : ["/bin/sh", "-c", "trap exit SIGTERM; read"], "requestedState" : "running", "ipv4Gateway" : "", diff --git a/tests/unit_tests/client/configs/ut-client/test-daemon.conf.in b/tests/unit_tests/client/configs/ut-client/test-daemon.conf.in index 6346df3..848366a 100644 --- a/tests/unit_tests/client/configs/ut-client/test-daemon.conf.in +++ b/tests/unit_tests/client/configs/ut-client/test-daemon.conf.in @@ -6,7 +6,7 @@ "zoneImagePath" : "", "zoneTemplateDir" : "@VSM_TEST_CONFIG_INSTALL_DIR@/client/ut-client/templates/", "runMountPointPrefix" : "", - "lxcTemplatePrefix" : "@VSM_TEST_LXC_TEMPLATES_INSTALL_DIR@", + "zoneTemplatePrefix" : "@VSM_TEST_TEMPLATES_INSTALL_DIR@", "availableVTs" : [], "inputConfig" : {"enabled" : false, "device" : "/dev/doesnotexist", diff --git a/tests/unit_tests/lxc/templates/CMakeLists.txt b/tests/unit_tests/lxc/templates/CMakeLists.txt index 43db4d9..c7b98c5 100644 --- a/tests/unit_tests/lxc/templates/CMakeLists.txt +++ b/tests/unit_tests/lxc/templates/CMakeLists.txt @@ -17,7 +17,7 @@ # @author Piotr Bartosiewicz (p.bartosiewi@partner.samsung.com) # -FILE(GLOB LXC_TEMPLATES *.sh) +FILE(GLOB ZONE_TEMPLATES *.sh) -INSTALL(PROGRAMS ${LXC_TEMPLATES} - DESTINATION ${VSM_TEST_LXC_TEMPLATES_INSTALL_DIR}) +INSTALL(PROGRAMS ${ZONE_TEMPLATES} + DESTINATION ${VSM_TEST_TEMPLATES_INSTALL_DIR}) diff --git a/tests/unit_tests/lxc/ut-zone.cpp b/tests/unit_tests/lxc/ut-zone.cpp index 194a2a6..e2683d6 100644 --- a/tests/unit_tests/lxc/ut-zone.cpp +++ b/tests/unit_tests/lxc/ut-zone.cpp @@ -39,16 +39,16 @@ namespace { using namespace vasum; using namespace vasum::lxc; -const std::string LXC_PATH = "/tmp/ut-lxc/"; +const std::string ZONE_PATH = "/tmp/ut-zone/"; const std::string ZONE_NAME = "ut-zone"; -const std::string TEMPLATE = VSM_TEST_LXC_TEMPLATES_INSTALL_DIR "/minimal.sh"; +const std::string ZONE_TEMPLATE = VSM_TEST_TEMPLATES_INSTALL_DIR "/minimal.sh"; const char* TEMPLATE_ARGS[] = {NULL}; struct Fixture { utils::ScopedDir mLxcDirGuard; Fixture() - : mLxcDirGuard(LXC_PATH) + : mLxcDirGuard(ZONE_PATH) { cleanup(); } @@ -60,7 +60,7 @@ struct Fixture { void cleanup() { - LxcZone lxc(LXC_PATH, ZONE_NAME); + LxcZone lxc(ZONE_PATH, ZONE_NAME); if (lxc.isDefined()) { if (lxc.getState() != LxcZone::State::STOPPED) { lxc.stop(); @@ -82,18 +82,18 @@ BOOST_FIXTURE_TEST_SUITE(LxcZoneSuite, Fixture) BOOST_AUTO_TEST_CASE(ConstructorDestructor) { - LxcZone lxc(LXC_PATH, ZONE_NAME); + LxcZone lxc(ZONE_PATH, ZONE_NAME); } BOOST_AUTO_TEST_CASE(CreateDestroy) { - LxcZone lxc(LXC_PATH, ZONE_NAME); + LxcZone lxc(ZONE_PATH, ZONE_NAME); BOOST_CHECK(!lxc.isDefined()); - BOOST_CHECK(lxc.create(TEMPLATE, TEMPLATE_ARGS)); + BOOST_CHECK(lxc.create(ZONE_TEMPLATE, TEMPLATE_ARGS)); BOOST_CHECK(lxc.isDefined()); - BOOST_CHECK_EQUAL(lxc.getConfigItem("lxc.rootfs"), LXC_PATH + ZONE_NAME + "/rootfs"); + BOOST_CHECK_EQUAL(lxc.getConfigItem("lxc.rootfs"), ZONE_PATH + ZONE_NAME + "/rootfs"); BOOST_CHECK_EXCEPTION(lxc.getConfigItem("xxx"), LxcException, WhatEquals("Key not found")); BOOST_CHECK(lxc.destroy()); @@ -104,10 +104,10 @@ BOOST_AUTO_TEST_CASE(CreateDestroy) BOOST_AUTO_TEST_CASE(StartShutdown) { { - LxcZone lxc(LXC_PATH, ZONE_NAME); - BOOST_CHECK(lxc.create(TEMPLATE, TEMPLATE_ARGS)); + LxcZone lxc(ZONE_PATH, ZONE_NAME); + BOOST_CHECK(lxc.create(ZONE_TEMPLATE, TEMPLATE_ARGS)); } - LxcZone lxc(LXC_PATH, ZONE_NAME); + LxcZone lxc(ZONE_PATH, ZONE_NAME); BOOST_CHECK(lxc.getState() == LxcZone::State::STOPPED); const char* argv[] = { "/bin/sh", @@ -127,10 +127,10 @@ BOOST_AUTO_TEST_CASE(StartShutdown) BOOST_AUTO_TEST_CASE(StartStop) { { - LxcZone lxc(LXC_PATH, ZONE_NAME); - BOOST_CHECK(lxc.create(TEMPLATE, TEMPLATE_ARGS)); + LxcZone lxc(ZONE_PATH, ZONE_NAME); + BOOST_CHECK(lxc.create(ZONE_TEMPLATE, TEMPLATE_ARGS)); } - LxcZone lxc(LXC_PATH, ZONE_NAME); + LxcZone lxc(ZONE_PATH, ZONE_NAME); BOOST_CHECK(lxc.getState() == LxcZone::State::STOPPED); const char* argv[] = { "/bin/sh", @@ -152,10 +152,10 @@ BOOST_AUTO_TEST_CASE(StartStop) BOOST_AUTO_TEST_CASE(StartHasStopped) { { - LxcZone lxc(LXC_PATH, ZONE_NAME); - BOOST_CHECK(lxc.create(TEMPLATE, TEMPLATE_ARGS)); + LxcZone lxc(ZONE_PATH, ZONE_NAME); + BOOST_CHECK(lxc.create(ZONE_TEMPLATE, TEMPLATE_ARGS)); } - LxcZone lxc(LXC_PATH, ZONE_NAME); + LxcZone lxc(ZONE_PATH, ZONE_NAME); BOOST_CHECK(lxc.getState() == LxcZone::State::STOPPED); const char* argv[] = { "/bin/sh", @@ -172,8 +172,8 @@ BOOST_AUTO_TEST_CASE(StartHasStopped) BOOST_AUTO_TEST_CASE(FreezeUnfreeze) { - LxcZone lxc(LXC_PATH, ZONE_NAME); - BOOST_CHECK(lxc.create(TEMPLATE, TEMPLATE_ARGS)); + LxcZone lxc(ZONE_PATH, ZONE_NAME); + BOOST_CHECK(lxc.create(ZONE_TEMPLATE, TEMPLATE_ARGS)); const char* argv[] = { "/bin/sh", "-c", @@ -195,8 +195,8 @@ BOOST_AUTO_TEST_CASE(FreezeUnfreeze) BOOST_AUTO_TEST_CASE(FreezeStop) { - LxcZone lxc(LXC_PATH, ZONE_NAME); - BOOST_CHECK(lxc.create(TEMPLATE, TEMPLATE_ARGS)); + LxcZone lxc(ZONE_PATH, ZONE_NAME); + BOOST_CHECK(lxc.create(ZONE_TEMPLATE, TEMPLATE_ARGS)); const char* argv[] = { "/bin/sh", "-c", @@ -218,9 +218,9 @@ BOOST_AUTO_TEST_CASE(FreezeStop) BOOST_AUTO_TEST_CASE(Repeat) { - LxcZone lxc(LXC_PATH, ZONE_NAME); - BOOST_CHECK(lxc.create(TEMPLATE, TEMPLATE_ARGS)); - BOOST_CHECK(!lxc.create(TEMPLATE, TEMPLATE_ARGS));// forbidden + LxcZone lxc(ZONE_PATH, ZONE_NAME); + BOOST_CHECK(lxc.create(ZONE_TEMPLATE, TEMPLATE_ARGS)); + BOOST_CHECK(!lxc.create(ZONE_TEMPLATE, TEMPLATE_ARGS));// forbidden const char* argv[] = { "/bin/sh", "-c", diff --git a/tests/unit_tests/server/configs/ut-server/templates/default.conf b/tests/unit_tests/server/configs/ut-server/templates/default.conf index 5261493..646fcb1 100644 --- a/tests/unit_tests/server/configs/ut-server/templates/default.conf +++ b/tests/unit_tests/server/configs/ut-server/templates/default.conf @@ -1,5 +1,5 @@ { - "lxcTemplate" : "minimal.sh", + "zoneTemplate" : "minimal.sh", "initWithArgs" : ["/bin/sh", "-c", "trap exit SIGTERM; read"], "requestedState" : "running", "ipv4Gateway" : "", diff --git a/tests/unit_tests/server/configs/ut-server/test-daemon.conf.in b/tests/unit_tests/server/configs/ut-server/test-daemon.conf.in index 8fb9ee2..1d59bdc 100644 --- a/tests/unit_tests/server/configs/ut-server/test-daemon.conf.in +++ b/tests/unit_tests/server/configs/ut-server/test-daemon.conf.in @@ -6,7 +6,7 @@ "zoneTemplateDir" : "@VSM_TEST_CONFIG_INSTALL_DIR@/server/ut-server/templates/", "runMountPointPrefix" : "", "defaultId" : "", - "lxcTemplatePrefix" : "@VSM_TEST_LXC_TEMPLATES_INSTALL_DIR@", + "zoneTemplatePrefix" : "@VSM_TEST_TEMPLATES_INSTALL_DIR@", "availableVTs" : [], "inputConfig" : {"enabled" : false, "device" : "gpio-keys.4", diff --git a/tests/unit_tests/server/configs/ut-zone-admin/templates/buggy.conf b/tests/unit_tests/server/configs/ut-zone-admin/templates/buggy.conf index 99bc05e..cff3576 100644 --- a/tests/unit_tests/server/configs/ut-zone-admin/templates/buggy.conf +++ b/tests/unit_tests/server/configs/ut-zone-admin/templates/buggy.conf @@ -1,5 +1,5 @@ { - "lxcTemplate" : "minimal.sh", + "zoneTemplate" : "minimal.sh", "initWithArgs" : ["/foo"], "requestedState" : "running", "ipv4Gateway" : "", diff --git a/tests/unit_tests/server/configs/ut-zone-admin/templates/missing.conf b/tests/unit_tests/server/configs/ut-zone-admin/templates/missing.conf index 6c7ce34..9a37d54 100644 --- a/tests/unit_tests/server/configs/ut-zone-admin/templates/missing.conf +++ b/tests/unit_tests/server/configs/ut-zone-admin/templates/missing.conf @@ -1,5 +1,5 @@ { - "lxcTemplate" : "missing.sh", + "zoneTemplate" : "missing.sh", "initWithArgs" : ["/bin/sh", "-c", "trap exit SIGTERM; read"], "requestedState" : "running", "ipv4Gateway" : "", diff --git a/tests/unit_tests/server/configs/ut-zone-admin/templates/test-no-shutdown.conf b/tests/unit_tests/server/configs/ut-zone-admin/templates/test-no-shutdown.conf index e4f2bf9..e0aec5b 100644 --- a/tests/unit_tests/server/configs/ut-zone-admin/templates/test-no-shutdown.conf +++ b/tests/unit_tests/server/configs/ut-zone-admin/templates/test-no-shutdown.conf @@ -1,5 +1,5 @@ { - "lxcTemplate" : "minimal.sh", + "zoneTemplate" : "minimal.sh", "initWithArgs" : ["/bin/sh"], "requestedState" : "running", "ipv4Gateway" : "", diff --git a/tests/unit_tests/server/configs/ut-zone-admin/templates/test.conf b/tests/unit_tests/server/configs/ut-zone-admin/templates/test.conf index 8af8d42..fea418d 100644 --- a/tests/unit_tests/server/configs/ut-zone-admin/templates/test.conf +++ b/tests/unit_tests/server/configs/ut-zone-admin/templates/test.conf @@ -1,5 +1,5 @@ { - "lxcTemplate" : "minimal.sh", + "zoneTemplate" : "minimal.sh", "initWithArgs" : ["/bin/sh", "-c", "trap exit SIGTERM; read"], "requestedState" : "running", "ipv4Gateway" : "", diff --git a/tests/unit_tests/server/configs/ut-zone/templates/buggy.conf b/tests/unit_tests/server/configs/ut-zone/templates/buggy.conf index 5c98cfd..d89364d 100644 --- a/tests/unit_tests/server/configs/ut-zone/templates/buggy.conf +++ b/tests/unit_tests/server/configs/ut-zone/templates/buggy.conf @@ -1,5 +1,5 @@ { - "lxcTemplate" : "/buggy/path", + "zoneTemplate" : "/buggy/path", "initWithArgs" : ["/bin/sh", "-c", "trap exit SIGTERM; read"], "requestedState" : "running", "ipv4Gateway" : "", diff --git a/tests/unit_tests/server/configs/ut-zone/templates/test-dbus.conf.in b/tests/unit_tests/server/configs/ut-zone/templates/test-dbus.conf.in index d2fea11..0dd101a 100644 --- a/tests/unit_tests/server/configs/ut-zone/templates/test-dbus.conf.in +++ b/tests/unit_tests/server/configs/ut-zone/templates/test-dbus.conf.in @@ -1,5 +1,5 @@ { - "lxcTemplate" : "minimal-dbus.sh", + "zoneTemplate" : "minimal-dbus.sh", "initWithArgs" : ["/bin/sh", "-c", "trap exit SIGTERM; /usr/bin/dbus-daemon --config-file=@VSM_TEST_CONFIG_INSTALL_DIR@/server/ut-zone/ut-dbus.conf --fork; read"], "requestedState" : "running", "ipv4Gateway" : "", diff --git a/tests/unit_tests/server/configs/ut-zone/templates/test.conf b/tests/unit_tests/server/configs/ut-zone/templates/test.conf index 38907a0..115307d 100644 --- a/tests/unit_tests/server/configs/ut-zone/templates/test.conf +++ b/tests/unit_tests/server/configs/ut-zone/templates/test.conf @@ -1,5 +1,5 @@ { - "lxcTemplate" : "minimal.sh", + "zoneTemplate" : "minimal.sh", "initWithArgs" : ["/bin/sh", "-c", "trap exit SIGTERM; read"], "requestedState" : "running", "ipv4Gateway" : "", diff --git a/tests/unit_tests/server/configs/ut-zones-manager/templates/console.conf b/tests/unit_tests/server/configs/ut-zones-manager/templates/console.conf index 02a7dc6..2537e16 100644 --- a/tests/unit_tests/server/configs/ut-zones-manager/templates/console.conf +++ b/tests/unit_tests/server/configs/ut-zones-manager/templates/console.conf @@ -1,5 +1,5 @@ { - "lxcTemplate" : "minimal.sh", + "zoneTemplate" : "minimal.sh", "initWithArgs" : ["/bin/sh", "-c", "trap exit SIGTERM; read"], "requestedState" : "running", "ipv4Gateway" : "", diff --git a/tests/unit_tests/server/configs/ut-zones-manager/test-daemon.conf.in b/tests/unit_tests/server/configs/ut-zones-manager/test-daemon.conf.in index adea9b6..a388e6d 100644 --- a/tests/unit_tests/server/configs/ut-zones-manager/test-daemon.conf.in +++ b/tests/unit_tests/server/configs/ut-zones-manager/test-daemon.conf.in @@ -6,7 +6,7 @@ "zoneImagePath" : "", "zoneTemplateDir" : "@VSM_TEST_CONFIG_INSTALL_DIR@/server/ut-zones-manager/templates/", "runMountPointPrefix" : "", - "lxcTemplatePrefix" : "@VSM_TEST_LXC_TEMPLATES_INSTALL_DIR@", + "zoneTemplatePrefix" : "@VSM_TEST_TEMPLATES_INSTALL_DIR@", "availableVTs" : [], "inputConfig" : {"enabled" : false, "device" : "/dev/doesnotexist", diff --git a/tests/unit_tests/server/ut-zone-admin.cpp b/tests/unit_tests/server/ut-zone-admin.cpp index 3aa38d1..72bc2e6 100644 --- a/tests/unit_tests/server/ut-zone-admin.cpp +++ b/tests/unit_tests/server/ut-zone-admin.cpp @@ -43,7 +43,7 @@ const std::string TEST_NO_SHUTDOWN_CONFIG_PATH = TEMPLATES_DIR + "/test-no-shutd const std::string BUGGY_CONFIG_PATH = TEMPLATES_DIR + "/buggy.conf"; const std::string MISSING_CONFIG_PATH = TEMPLATES_DIR + "/missing.conf"; const std::string ZONES_PATH = "/tmp/ut-zones"; -const std::string LXC_TEMPLATES_PATH = VSM_TEST_LXC_TEMPLATES_INSTALL_DIR; +const std::string TEMPLATES_PATH = VSM_TEST_TEMPLATES_INSTALL_DIR; struct Fixture { utils::ScopedGlibLoop mLoop; @@ -62,7 +62,7 @@ struct Fixture { config::loadFromJsonFile(configPath, mDynamicConfig); return std::unique_ptr(new ZoneAdmin("zoneId", ZONES_PATH, - LXC_TEMPLATES_PATH, + TEMPLATES_PATH, mConfig, mDynamicConfig)); } diff --git a/tests/unit_tests/server/ut-zone-provision.cpp b/tests/unit_tests/server/ut-zone-provision.cpp index a79a260..d6a5955 100644 --- a/tests/unit_tests/server/ut-zone-provision.cpp +++ b/tests/unit_tests/server/ut-zone-provision.cpp @@ -51,7 +51,7 @@ namespace { const std::string TEST_CONFIG_PATH = VSM_TEST_CONFIG_INSTALL_DIR "/server/ut-zone-provision/test.conf"; const std::string ZONE = "ut-zone-provision-test"; const fs::path ZONES_PATH = "/tmp/ut-zones"; -const fs::path LXC_TEMPLATES_PATH = VSM_TEST_LXC_TEMPLATES_INSTALL_DIR; +const fs::path TEMPLATES_PATH = VSM_TEST_TEMPLATES_INSTALL_DIR; const fs::path ZONE_PATH = ZONES_PATH / fs::path(ZONE); const fs::path SOME_FILE_PATH = ZONE_PATH / "file.txt"; const fs::path ROOTFS_PATH = ZONE_PATH / "rootfs"; diff --git a/tests/unit_tests/server/ut-zone.cpp b/tests/unit_tests/server/ut-zone.cpp index b4938b4..2aed285 100644 --- a/tests/unit_tests/server/ut-zone.cpp +++ b/tests/unit_tests/server/ut-zone.cpp @@ -57,7 +57,7 @@ const std::string TEST_DBUS_CONFIG_PATH = TEMPLATES_DIR + "/test-dbus.conf"; const std::string BUGGY_CONFIG_PATH = TEMPLATES_DIR + "/buggy.conf"; const std::string MISSING_CONFIG_PATH = TEMPLATES_DIR + "/missing.conf"; const std::string ZONES_PATH = "/tmp/ut-zones"; -const std::string LXC_TEMPLATES_PATH = VSM_TEST_LXC_TEMPLATES_INSTALL_DIR; +const std::string TEMPLATES_PATH = VSM_TEST_TEMPLATES_INSTALL_DIR; const std::string DB_PATH = ZONES_PATH + "/vasum.db"; const std::string BRIDGE_NAME = "brtest01"; const std::string ZONE_NETDEV = "netdevtest01"; @@ -88,7 +88,7 @@ struct Fixture { ZONES_PATH, configPath, DB_PATH, - LXC_TEMPLATES_PATH, + TEMPLATES_PATH, "")); } @@ -146,7 +146,7 @@ BOOST_AUTO_TEST_CASE(StartStop) BOOST_AUTO_TEST_CASE(DbusConnection) { - mRunGuard.create("/tmp/ut-run"); // the same path as in lxc template + mRunGuard.create("/tmp/ut-run"); // the same path as in zone template auto c = create(TEST_DBUS_CONFIG_PATH); c->start(); -- 2.7.4 From 5507026ca9a60af347a96a3ca1d9345c4ffee151 Mon Sep 17 00:00:00 2001 From: Dariusz Michaluk Date: Wed, 13 May 2015 13:56:12 +0200 Subject: [PATCH 09/16] Fix vsm_create_zone timeout [Feature] Greater timeout for vsm_create_zone [Cause] Timeout was too small [Solution] N/A [Verification] Start vasum on odroid, create zone Change-Id: Ic9015f7987c986267d47b5ce55d04a9749baf85c --- client/host-ipc-connection.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/host-ipc-connection.cpp b/client/host-ipc-connection.cpp index 6aa87ec..b17c6cf 100644 --- a/client/host-ipc-connection.cpp +++ b/client/host-ipc-connection.cpp @@ -174,7 +174,8 @@ void HostIPCConnection::callCreateZone(const api::CreateZoneIn& argIn) { mClient->callSync( api::ipc::METHOD_CREATE_ZONE, - std::make_shared(argIn)); + std::make_shared(argIn), + TIMEOUT_INFINITE); } void HostIPCConnection::callDestroyZone(const api::ZoneId& argIn) -- 2.7.4 From 27ff86f2517ac519dcb43a7ce87647eaf76d5669 Mon Sep 17 00:00:00 2001 From: Krzysztof Dynowski Date: Wed, 13 May 2015 15:32:25 +0200 Subject: [PATCH 10/16] Vasum wrapper #5, fix exported function list [Bug/Feature] exported funcs not visible [Cause] missing API keyword in declaration [Solution] #5 add API keyword [Verification] Build, build old clients, install on target Change-Id: Idd408bb59f9421d43b153117aa3d825610722283 --- wrapper/wrapper-compatibility.cpp | 78 +++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/wrapper/wrapper-compatibility.cpp b/wrapper/wrapper-compatibility.cpp index d0bd082..adb1edd 100644 --- a/wrapper/wrapper-compatibility.cpp +++ b/wrapper/wrapper-compatibility.cpp @@ -47,11 +47,11 @@ extern "C" { // find_container_by_pid -char *find_container_by_pid(pid_t /*pid*/) { +API char *find_container_by_pid(pid_t /*pid*/) { return NULL; } // get_domain_pid -pid_t get_domain_pid(const char * /*name*/, const char * /*target*/) { +API pid_t get_domain_pid(const char * /*name*/, const char * /*target*/) { return -1; } @@ -179,27 +179,27 @@ int sock_close_socket(int /*fd*/) { return 0; } // sock_connect -int sock_connect(const char * /*path*/) { +API int sock_connect(const char * /*path*/) { return 0; } // sock_create_socket -int sock_create_socket(const char * /*path*/, int /*type*/, int /*flags*/) { +API int sock_create_socket(const char * /*path*/, int /*type*/, int /*flags*/) { return 0; } // sock_monitor_address -int sock_monitor_address(char * /*buffer*/, int /*len*/, const char * /*lxcpath*/) { +API int sock_monitor_address(char * /*buffer*/, int /*len*/, const char * /*lxcpath*/) { return 0; } // sock_recv_fd (intern) -int sock_recv_fd(int /*fd*/, int * /*recvfd*/, void * /*data*/, size_t /*size*/) { +API int sock_recv_fd(int /*fd*/, int * /*recvfd*/, void * /*data*/, size_t /*size*/) { return 0; } // sock_send_fd -int sock_send_fd(int /*fd*/, int /*sendfd*/, void * /*data*/, size_t /*size*/) { +API int sock_send_fd(int /*fd*/, int /*sendfd*/, void * /*data*/, size_t /*size*/) { return 0; } // vasum_log -void vasum_log(int /*type*/, const char * /*tag*/, const char * /*fmt*/ , ...) { +API void vasum_log(int /*type*/, const char * /*tag*/, const char * /*fmt*/ , ...) { } #define MAX_ERROR_MSG 0x1000 @@ -220,7 +220,7 @@ const char *const fso_type_strtab[] = { "Device node" }; -const char *fso_type_to_string(vsm_fso_type_t fso) +API const char *fso_type_to_string(vsm_fso_type_t fso) { if (fso < 0 || fso > VSM_FSO_MAX_TYPE) { return NULL; @@ -229,7 +229,7 @@ const char *fso_type_to_string(vsm_fso_type_t fso) return fso_type_strtab[fso]; } -int wait_for_pid_status(pid_t pid) +API int wait_for_pid_status(pid_t pid) { int status, ret; @@ -249,7 +249,7 @@ int wait_for_pid_status(pid_t pid) return status; } -vsm_fso_type_t fso_string_to_type(char *str) +API vsm_fso_type_t fso_string_to_type(char *str) { int len; int i; @@ -262,7 +262,7 @@ vsm_fso_type_t fso_string_to_type(char *str) return static_cast(-1); } -int mkdir_p(const char *dir, mode_t mode) +API int mkdir_p(const char *dir, mode_t mode) { const char *tmp = dir; const char *orig = dir; @@ -284,7 +284,7 @@ int mkdir_p(const char *dir, mode_t mode) return 0; } -int lock_fd(int fd, int wait) +API int lock_fd(int fd, int wait) { int ret; struct flock f; @@ -307,7 +307,7 @@ int lock_fd(int fd, int wait) } } -int unlock_fd(int fd) +API int unlock_fd(int fd) { struct flock f; f.l_type = F_UNLCK; @@ -317,12 +317,12 @@ int unlock_fd(int fd) return fcntl(fd, F_SETLKW, &f); } -int copy_smacklabel(const char * /*source*/, const char * /*dest*/) +API int copy_smacklabel(const char * /*source*/, const char * /*dest*/) { return 0; } -int remove_file(char *path) +API int remove_file(char *path) { struct stat path_stat; DIR *dp; @@ -374,7 +374,7 @@ int remove_file(char *path) return status; } -int copy_file(const char *source, const char *dest, int /*flags*/) +API int copy_file(const char *source, const char *dest, int /*flags*/) { int ret; FILE *sfp, *dfp; @@ -424,7 +424,7 @@ int copy_file(const char *source, const char *dest, int /*flags*/) return 0; } -int regex_compile(regex_t * r, const char *regex_text) +API int regex_compile(regex_t * r, const char *regex_text) { int status = regcomp(r, regex_text, REG_EXTENDED | REG_NEWLINE); @@ -440,7 +440,7 @@ int regex_compile(regex_t * r, const char *regex_text) return 0; } -int regex_match(regex_t * r, const char *to_match) +API int regex_match(regex_t * r, const char *to_match) { const char *p = to_match; const int n_matches = 10; @@ -483,7 +483,7 @@ int regex_match(regex_t * r, const char *to_match) return 0; } -int get_peer_pid(int fd) +API int get_peer_pid(int fd) { struct ucred cred; socklen_t cr_len = sizeof(cred); @@ -493,12 +493,12 @@ int get_peer_pid(int fd) return cred.pid; } -pid_t gettid(void) +API pid_t gettid(void) { return syscall(__NR_gettid); } -int set_smacklabel_fd(int fd, const char *xattr_name, const char *label) +API int set_smacklabel_fd(int fd, const char *xattr_name, const char *label) { size_t len; int ret; @@ -517,7 +517,7 @@ int set_smacklabel_fd(int fd, const char *xattr_name, const char *label) return ret; } -int set_smacklabel(const char *path, const char *xattr_name, const char *label) +API int set_smacklabel(const char *path, const char *xattr_name, const char *label) { size_t len; int ret; @@ -535,7 +535,7 @@ int set_smacklabel(const char *path, const char *xattr_name, const char *label) } return ret; } -char *get_self_smacklabel(void) +API char *get_self_smacklabel(void) { int ret; int fd; @@ -563,7 +563,7 @@ char *get_self_smacklabel(void) return strdup(buffer); } -int get_self_cpuset(char *name, int buf_sz) +API int get_self_cpuset(char *name, int buf_sz) { int fd; int lxc_len, ret; @@ -607,7 +607,7 @@ int get_self_cpuset(char *name, int buf_sz) } -char * get_pid_cpuset(int pid) +API char * get_pid_cpuset(int pid) { int fd; int ret; @@ -639,7 +639,7 @@ char * get_pid_cpuset(int pid) return strdup(current_name); } -char * read_namespace_link(const char *ns, int pid) +API char * read_namespace_link(const char *ns, int pid) { char ns_path[PATH_MAX]; char buf[NAME_MAX]; @@ -666,7 +666,7 @@ char * read_namespace_link(const char *ns, int pid) // libs/device.c #define DEV_ITERATE_CONTINUE 0 -int dev_enumerate_nodes(const char *cname, dev_enumerator enumerator, +API int dev_enumerate_nodes(const char *cname, dev_enumerator enumerator, void *data) { int ret; @@ -704,7 +704,7 @@ int dev_enumerate_nodes(const char *cname, dev_enumerator enumerator, return ret; } -int dev_terminal_enumerator(int type, int major, int minor, void *data) +API int dev_terminal_enumerator(int type, int major, int minor, void *data) { int *dev = (int*)data; @@ -718,7 +718,7 @@ int dev_terminal_enumerator(int type, int major, int minor, void *data) } // libs/namespace.c -pid_t get_init_pid(const char *name) +API pid_t get_init_pid(const char *name) { char filename[PATH_MAX]; FILE *fp; @@ -744,7 +744,7 @@ pid_t get_init_pid(const char *name) } -pid_t get_zone_pid(const char *name, const char *target) +API pid_t get_zone_pid(const char *name, const char *target) { char path[PATH_MAX]; char cmd[PATH_MAX]; @@ -821,7 +821,7 @@ pid_t get_zone_pid(const char *name, const char *target) return ret; } -int open_ns(pid_t pid, const char *name) +API int open_ns(pid_t pid, const char *name) { int fd, ret; char path[PATH_MAX]; @@ -871,7 +871,7 @@ static int open_console(const char *path) return fd; } -int get_console_fd(const char *path) +API int get_console_fd(const char *path) { int fd; @@ -903,7 +903,7 @@ int get_console_fd(const char *path) return -1; } -int vt_switch_terminal(int id) +API int vt_switch_terminal(int id) { int fd, ret = -1; @@ -926,7 +926,7 @@ int vt_switch_terminal(int id) return ret; } -int vt_find_unused_terminal(void) +API int vt_find_unused_terminal(void) { int fd, nr = -1; @@ -947,7 +947,7 @@ int vt_find_unused_terminal(void) return nr; } -int vt_query_active_terminal(void) +API int vt_query_active_terminal(void) { int fd, ret = -1; struct vt_stat vtstat; @@ -977,7 +977,7 @@ struct unit_parser { struct unit_keyword_callback *kw; }; -int parse_stream(const char *name, struct unit_parser *parser); +API int parse_stream(const char *name, struct unit_parser *parser); // libs/parser.c #define PARSER_MAXARGS 32 @@ -1187,7 +1187,7 @@ static int parse_statement(struct parser_context *ctx, int argc, char **argv, return ret; } -int parse_stream_core(struct parser_context *ctx, char *s) +API int parse_stream_core(struct parser_context *ctx, char *s) { struct unit_keyword_callback *kw; struct parser_state state; @@ -1268,7 +1268,7 @@ static char *open_stream(const char *name, unsigned int *_sz) return NULL; } -int parse_stream(const char *name, struct unit_parser *parser) +API int parse_stream(const char *name, struct unit_parser *parser) { char *stream; struct parser_context *ctx; -- 2.7.4 From ef63fea3b86d66beecdf06e4cd314b0e92df0dd0 Mon Sep 17 00:00:00 2001 From: Mateusz Malicki Date: Thu, 14 May 2015 12:31:27 +0200 Subject: [PATCH 11/16] libIpc separated from vasum #1 (code refactor) [Feature] Code refactor a) moved vasum::utils namspace to utils namespace b) moved vasum::ipc namespace to ipc namespace c) moved vasum::epoll namespace to ipc::epoll namespace d) moved common/epoll source dir to common/ipc/epoll e) moved UtilsException to utils namespace f) moved getSystemErrorMessage to utils/exception.hpp [Cause] N/A [Solution] N/A [Verification] Build, install Change-Id: I2cda58decfdb30ec9a27f7cb65940ae8dbc7edf3 --- client/CMakeLists.txt | 2 +- client/host-ipc-connection.cpp | 2 +- client/host-ipc-connection.hpp | 6 +-- client/vasum-client-impl.cpp | 4 +- client/vasum-client-impl.hpp | 2 +- common/base-exception.hpp | 7 --- common/ipc/client.cpp | 2 - common/ipc/client.hpp | 2 - common/{ => ipc}/epoll/event-poll.cpp | 9 ++-- common/{ => ipc}/epoll/event-poll.hpp | 6 +-- common/{ => ipc}/epoll/events.cpp | 6 +-- common/{ => ipc}/epoll/events.hpp | 4 +- common/{ => ipc}/epoll/glib-dispatcher.cpp | 6 +-- common/{ => ipc}/epoll/glib-dispatcher.hpp | 6 +-- common/{ => ipc}/epoll/thread-dispatcher.cpp | 6 +-- common/{ => ipc}/epoll/thread-dispatcher.hpp | 6 +-- common/ipc/exception.hpp | 4 +- common/ipc/internals/acceptor.cpp | 2 - common/ipc/internals/acceptor.hpp | 2 - common/ipc/internals/add-peer-request.hpp | 2 - common/ipc/internals/event-queue.hpp | 2 - common/ipc/internals/finish-request.hpp | 2 - common/ipc/internals/method-request.hpp | 2 - common/ipc/internals/processor.cpp | 4 +- common/ipc/internals/processor.hpp | 2 - common/ipc/internals/remove-peer-request.hpp | 2 - common/ipc/internals/request-queue.hpp | 2 - common/ipc/internals/result-builder.hpp | 2 - common/ipc/internals/send-result-request.hpp | 2 - common/ipc/internals/signal-request.hpp | 2 - common/ipc/internals/socket.cpp | 4 +- common/ipc/internals/socket.hpp | 2 - common/ipc/ipc-gsource.cpp | 2 - common/ipc/ipc-gsource.hpp | 2 - common/ipc/method-result.cpp | 2 - common/ipc/method-result.hpp | 2 - common/ipc/result.hpp | 2 - common/ipc/service.cpp | 2 - common/ipc/service.hpp | 2 - common/ipc/types.cpp | 2 - common/ipc/types.hpp | 2 - common/netlink/netlink.cpp | 3 +- common/utils/c-array.hpp | 2 - common/utils/callback-guard.cpp | 2 - common/utils/callback-guard.hpp | 2 - common/utils/callback-wrapper.hpp | 2 - common/utils/counting-map.hpp | 2 - common/utils/environment.cpp | 7 ++- common/utils/environment.hpp | 2 - common/utils/eventfd.cpp | 4 +- common/utils/eventfd.hpp | 2 - common/{base-exception.cpp => utils/exception.cpp} | 8 +-- common/utils/exception.hpp | 14 ++++-- common/utils/execute.cpp | 6 +-- common/utils/execute.hpp | 2 - common/utils/fd-utils.cpp | 4 +- common/utils/fd-utils.hpp | 2 - common/utils/file-wait.cpp | 3 +- common/utils/file-wait.hpp | 2 - common/utils/fs.cpp | 4 +- common/utils/fs.hpp | 2 - common/utils/glib-loop.cpp | 2 - common/utils/glib-loop.hpp | 2 - common/utils/glib-utils.cpp | 2 - common/utils/glib-utils.hpp | 2 - common/utils/img.cpp | 4 +- common/utils/img.hpp | 2 - common/utils/initctl.cpp | 2 - common/utils/initctl.hpp | 2 - common/utils/latch.cpp | 2 - common/utils/latch.hpp | 2 - common/utils/make-clean.hpp | 2 - common/utils/paths.hpp | 2 - common/utils/same-thread-guard.cpp | 2 - common/utils/same-thread-guard.hpp | 2 - common/utils/scoped-gerror.cpp | 2 - common/utils/scoped-gerror.hpp | 2 - common/utils/signal.cpp | 2 - common/utils/signal.hpp | 2 - common/utils/typeinfo.cpp | 2 - common/utils/typeinfo.hpp | 2 - common/utils/value-latch.hpp | 2 - common/utils/vt.cpp | 4 +- common/utils/vt.hpp | 2 - common/utils/worker.cpp | 2 - common/utils/worker.hpp | 2 - libs/dbus/connection.cpp | 2 +- libs/dbus/connection.hpp | 2 +- server/host-ipc-connection.hpp | 4 +- server/host-ipc-definitions.hpp | 58 +++++++++++----------- server/input-monitor.cpp | 2 +- server/netdev.cpp | 3 +- server/server.cpp | 3 ++ server/zone-provision.cpp | 2 + tests/unit_tests/client/ut-client.cpp | 2 +- tests/unit_tests/config/ut-configuration.cpp | 3 +- tests/unit_tests/config/ut-dynvisit.cpp | 3 +- tests/unit_tests/config/ut-kvstore.cpp | 4 +- tests/unit_tests/dbus/ut-connection.cpp | 2 +- tests/unit_tests/epoll/ut-event-poll.cpp | 12 ++--- tests/unit_tests/ipc/ut-ipc.cpp | 10 ++-- tests/unit_tests/ipc/ut-socket.cpp | 2 +- tests/unit_tests/server/ut-input-monitor.cpp | 2 +- tests/unit_tests/server/ut-server.cpp | 14 +++--- tests/unit_tests/server/ut-zone-provision.cpp | 1 + tests/unit_tests/server/ut-zone.cpp | 7 +-- tests/unit_tests/server/ut-zones-manager.cpp | 12 ++--- .../unit_tests/socket_test_service/socket-test.cpp | 2 +- tests/unit_tests/utils/scoped-daemon.cpp | 2 - tests/unit_tests/utils/scoped-daemon.hpp | 2 - tests/unit_tests/utils/scoped-dir.cpp | 2 - tests/unit_tests/utils/scoped-dir.hpp | 2 - tests/unit_tests/utils/ut-callback-guard.cpp | 3 +- tests/unit_tests/utils/ut-counting-map.cpp | 2 +- tests/unit_tests/utils/ut-fs.cpp | 3 +- tests/unit_tests/utils/ut-glib-loop.cpp | 3 +- tests/unit_tests/utils/ut-paths.cpp | 2 +- tests/unit_tests/utils/ut-same-thread-guard.cpp | 2 +- tests/unit_tests/utils/ut-value-latch.cpp | 8 +-- tests/unit_tests/utils/ut-worker.cpp | 4 +- 120 files changed, 164 insertions(+), 284 deletions(-) rename common/{ => ipc}/epoll/event-poll.cpp (97%) rename common/{ => ipc}/epoll/event-poll.hpp (96%) rename common/{ => ipc}/epoll/events.cpp (96%) rename common/{ => ipc}/epoll/events.hpp (96%) rename common/{ => ipc}/epoll/glib-dispatcher.cpp (96%) rename common/{ => ipc}/epoll/glib-dispatcher.hpp (94%) rename common/{ => ipc}/epoll/thread-dispatcher.cpp (95%) rename common/{ => ipc}/epoll/thread-dispatcher.hpp (95%) rename common/{base-exception.cpp => utils/exception.cpp} (89%) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 9b1d890..e08c79b 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -22,7 +22,7 @@ MESSAGE(STATUS "") MESSAGE(STATUS "Generating makefile for the Client...") FILE(GLOB project_SRCS *.cpp *.hpp *.h) -FILE(GLOB common_SRCS ${COMMON_FOLDER}/epoll/*.hpp ${COMMON_FOLDER}/epoll/*.cpp +FILE(GLOB common_SRCS ${COMMON_FOLDER}/ipc/epoll/*.hpp ${COMMON_FOLDER}/ipc/epoll/*.cpp ${COMMON_FOLDER}/ipc/*.hpp ${COMMON_FOLDER}/ipc/*.cpp ${COMMON_FOLDER}/ipc/internals/*.hpp ${COMMON_FOLDER}/ipc/internals/*.cpp ${COMMON_FOLDER}/utils/*.hpp ${COMMON_FOLDER}/utils/*.cpp diff --git a/client/host-ipc-connection.cpp b/client/host-ipc-connection.cpp index b17c6cf..7444f19 100644 --- a/client/host-ipc-connection.cpp +++ b/client/host-ipc-connection.cpp @@ -40,7 +40,7 @@ void HostIPCConnection::createSystem() mClient.reset(new ipc::Client(mDispatcher.getPoll(), HOST_IPC_SOCKET)); mClient->start(); } -epoll::ThreadDispatcher& HostIPCConnection::getDispatcher() +ipc::epoll::ThreadDispatcher& HostIPCConnection::getDispatcher() { return mDispatcher; } diff --git a/client/host-ipc-connection.hpp b/client/host-ipc-connection.hpp index 1497390..52b90b7 100644 --- a/client/host-ipc-connection.hpp +++ b/client/host-ipc-connection.hpp @@ -27,7 +27,7 @@ #define VASUM_CLIENT_HOST_IPC_CONNECTION_HPP #include -#include +#include #include #include @@ -44,7 +44,7 @@ public: typedef std::function NotificationCallback; void createSystem(); void create(const std::string& address); - epoll::ThreadDispatcher& getDispatcher(); + ipc::epoll::ThreadDispatcher& getDispatcher(); void callGetZoneIds(vasum::api::ZoneIds& argOut); void callGetActiveZoneId(vasum::api::ZoneId& argOut); @@ -80,7 +80,7 @@ public: void unsubscribe(const SubscriptionId& id); private: - epoll::ThreadDispatcher mDispatcher; + ipc::epoll::ThreadDispatcher mDispatcher; std::unique_ptr mClient; }; diff --git a/client/vasum-client-impl.cpp b/client/vasum-client-impl.cpp index bbc7e9e..b9af36f 100644 --- a/client/vasum-client-impl.cpp +++ b/client/vasum-client-impl.cpp @@ -27,6 +27,7 @@ #include "vasum-client-impl.hpp" #include "utils.hpp" #include "exception.hpp" +#include "utils/exception.hpp" #include "host-ipc-connection.hpp" #include "logger/logger.hpp" @@ -42,6 +43,7 @@ #include using namespace std; +using namespace utils; using namespace vasum; namespace { @@ -194,7 +196,7 @@ VsmStatus Client::create(const string& address) noexcept }); } -epoll::EventPoll& Client::getEventPoll() noexcept +ipc::epoll::EventPoll& Client::getEventPoll() noexcept { return mHostClient.getDispatcher().getPoll(); } diff --git a/client/vasum-client-impl.hpp b/client/vasum-client-impl.hpp index da6dc8f..0b96149 100644 --- a/client/vasum-client-impl.hpp +++ b/client/vasum-client-impl.hpp @@ -69,7 +69,7 @@ public: */ VsmStatus createSystem() noexcept; - vasum::epoll::EventPoll& getEventPoll() noexcept; + ipc::epoll::EventPoll& getEventPoll() noexcept; /** * Create client. diff --git a/common/base-exception.hpp b/common/base-exception.hpp index 89b79bc..645fa41 100644 --- a/common/base-exception.hpp +++ b/common/base-exception.hpp @@ -41,13 +41,6 @@ struct VasumException: public std::runtime_error { VasumException(const std::string& error) : std::runtime_error(error) {} }; -/** - * Return string describing error number - * it is wrapper for strerror_r - */ -std::string getSystemErrorMessage(); -std::string getSystemErrorMessage(int err); - } // namespace vasum diff --git a/common/ipc/client.cpp b/common/ipc/client.cpp index 75a62ad..3fff662 100644 --- a/common/ipc/client.cpp +++ b/common/ipc/client.cpp @@ -28,7 +28,6 @@ #include "ipc/internals/socket.hpp" #include "ipc/exception.hpp" -namespace vasum { namespace ipc { Client::Client(epoll::EventPoll& eventPoll, const std::string& socketPath) @@ -139,4 +138,3 @@ void Client::removeMethod(const MethodID methodID) } } // namespace ipc -} // namespace vasum diff --git a/common/ipc/client.hpp b/common/ipc/client.hpp index db15a4a..c76a817 100644 --- a/common/ipc/client.hpp +++ b/common/ipc/client.hpp @@ -33,7 +33,6 @@ #include -namespace vasum { namespace ipc { /** @@ -212,6 +211,5 @@ void Client::signal(const MethodID methodID, } } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_CLIENT_HPP diff --git a/common/epoll/event-poll.cpp b/common/ipc/epoll/event-poll.cpp similarity index 97% rename from common/epoll/event-poll.cpp rename to common/ipc/epoll/event-poll.cpp index adca814..d43c97d 100644 --- a/common/epoll/event-poll.cpp +++ b/common/ipc/epoll/event-poll.cpp @@ -23,7 +23,7 @@ */ #include "config.hpp" -#include "epoll/event-poll.hpp" +#include "ipc/epoll/event-poll.hpp" #include "utils/fd-utils.hpp" #include "utils/exception.hpp" #include "logger/logger.hpp" @@ -33,7 +33,10 @@ #include #include -namespace vasum { +using namespace vasum; +using namespace utils; + +namespace ipc { namespace epoll { EventPoll::EventPoll() @@ -176,4 +179,4 @@ void EventPoll::removeFDInternal(const int fd) } } // namespace epoll -} // namespace vasum +} // namespace ipc diff --git a/common/epoll/event-poll.hpp b/common/ipc/epoll/event-poll.hpp similarity index 96% rename from common/epoll/event-poll.hpp rename to common/ipc/epoll/event-poll.hpp index 67614ab..5e84ee3 100644 --- a/common/epoll/event-poll.hpp +++ b/common/ipc/epoll/event-poll.hpp @@ -25,14 +25,14 @@ #ifndef COMMON_EPOLL_EVENT_POLL_HPP #define COMMON_EPOLL_EVENT_POLL_HPP -#include "epoll/events.hpp" +#include "ipc/epoll/events.hpp" #include #include #include #include -namespace vasum { +namespace ipc { namespace epoll { class EventPoll { @@ -70,6 +70,6 @@ private: } // namespace epoll -} // namespace vasum +} // namespace ipc #endif // COMMON_EPOLL_EVENT_POLL_HPP diff --git a/common/epoll/events.cpp b/common/ipc/epoll/events.cpp similarity index 96% rename from common/epoll/events.cpp rename to common/ipc/epoll/events.cpp index 1ee27e0..35952fd 100644 --- a/common/epoll/events.cpp +++ b/common/ipc/epoll/events.cpp @@ -23,11 +23,11 @@ */ #include "config.hpp" -#include "epoll/events.hpp" +#include "ipc/epoll/events.hpp" #include -namespace vasum { +namespace ipc { namespace epoll { namespace { @@ -68,4 +68,4 @@ std::string eventsToString(Events events) } } // namespace epoll -} // namespace vasum +} // namespace ipc diff --git a/common/epoll/events.hpp b/common/ipc/epoll/events.hpp similarity index 96% rename from common/epoll/events.hpp rename to common/ipc/epoll/events.hpp index 62eb00a..093542b 100644 --- a/common/epoll/events.hpp +++ b/common/ipc/epoll/events.hpp @@ -28,7 +28,7 @@ #include #include // for EPOLL* constatnts -namespace vasum { +namespace ipc { namespace epoll { typedef unsigned int Events; ///< bitmask of EPOLL* constants @@ -36,6 +36,6 @@ typedef unsigned int Events; ///< bitmask of EPOLL* constants std::string eventsToString(Events events); } // namespace epoll -} // namespace vasum +} // namespace ipc #endif // COMMON_EPOLL_EVENTS_HPP diff --git a/common/epoll/glib-dispatcher.cpp b/common/ipc/epoll/glib-dispatcher.cpp similarity index 96% rename from common/epoll/glib-dispatcher.cpp rename to common/ipc/epoll/glib-dispatcher.cpp index 9567abb..d17ea54 100644 --- a/common/epoll/glib-dispatcher.cpp +++ b/common/ipc/epoll/glib-dispatcher.cpp @@ -23,10 +23,10 @@ */ #include "config.hpp" -#include "epoll/glib-dispatcher.hpp" +#include "ipc/epoll/glib-dispatcher.hpp" #include "utils/callback-wrapper.hpp" -namespace vasum { +namespace ipc { namespace epoll { GlibDispatcher::GlibDispatcher() @@ -63,4 +63,4 @@ EventPoll& GlibDispatcher::getPoll() } } // namespace epoll -} // namespace vasum +} // namespace ipc diff --git a/common/epoll/glib-dispatcher.hpp b/common/ipc/epoll/glib-dispatcher.hpp similarity index 94% rename from common/epoll/glib-dispatcher.hpp rename to common/ipc/epoll/glib-dispatcher.hpp index 0fa7b3a..2eb58b1 100644 --- a/common/epoll/glib-dispatcher.hpp +++ b/common/ipc/epoll/glib-dispatcher.hpp @@ -25,12 +25,12 @@ #ifndef COMMON_EPOLL_GLIB_DISPATCHER_HPP #define COMMON_EPOLL_GLIB_DISPATCHER_HPP -#include "epoll/event-poll.hpp" +#include "ipc/epoll/event-poll.hpp" #include "utils/callback-guard.hpp" #include -namespace vasum { +namespace ipc { namespace epoll { /** @@ -51,6 +51,6 @@ private: } // namespace epoll -} // namespace vasum +} // namespace ipc #endif // COMMON_UTILS_GLIB_DISPATCHER_HPP diff --git a/common/epoll/thread-dispatcher.cpp b/common/ipc/epoll/thread-dispatcher.cpp similarity index 95% rename from common/epoll/thread-dispatcher.cpp rename to common/ipc/epoll/thread-dispatcher.cpp index d286c19..fcc3d17 100644 --- a/common/epoll/thread-dispatcher.cpp +++ b/common/ipc/epoll/thread-dispatcher.cpp @@ -23,9 +23,9 @@ */ #include "config.hpp" -#include "epoll/thread-dispatcher.hpp" +#include "ipc/epoll/thread-dispatcher.hpp" -namespace vasum { +namespace ipc { namespace epoll { ThreadDispatcher::ThreadDispatcher() @@ -57,4 +57,4 @@ EventPoll& ThreadDispatcher::getPoll() } } // namespace epoll -} // namespace vasum +} // namespace ipc diff --git a/common/epoll/thread-dispatcher.hpp b/common/ipc/epoll/thread-dispatcher.hpp similarity index 95% rename from common/epoll/thread-dispatcher.hpp rename to common/ipc/epoll/thread-dispatcher.hpp index 5c6c145..033967f 100644 --- a/common/epoll/thread-dispatcher.hpp +++ b/common/ipc/epoll/thread-dispatcher.hpp @@ -25,13 +25,13 @@ #ifndef COMMON_EPOLL_THREAD_DISPATCHER_HPP #define COMMON_EPOLL_THREAD_DISPATCHER_HPP -#include "epoll/event-poll.hpp" +#include "ipc/epoll/event-poll.hpp" #include "utils/eventfd.hpp" #include #include -namespace vasum { +namespace ipc { namespace epoll { /** @@ -51,6 +51,6 @@ private: }; } // namespace epoll -} // namespace vasum +} // namespace ipc #endif // COMMON_EPOLL_THREAD_DISPATCHER_HPP diff --git a/common/ipc/exception.hpp b/common/ipc/exception.hpp index 8e9a7df..3d89d3b 100644 --- a/common/ipc/exception.hpp +++ b/common/ipc/exception.hpp @@ -28,13 +28,12 @@ #include "base-exception.hpp" -namespace vasum { namespace ipc { /** * Base class for exceptions in IPC */ -struct IPCException: public VasumException { +struct IPCException: public vasum::VasumException { IPCException(const std::string& message) : VasumException(message) {} }; @@ -90,6 +89,5 @@ private: }; } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_EXCEPTION_HPP diff --git a/common/ipc/internals/acceptor.cpp b/common/ipc/internals/acceptor.cpp index 15b9ad8..604c65a 100644 --- a/common/ipc/internals/acceptor.cpp +++ b/common/ipc/internals/acceptor.cpp @@ -27,7 +27,6 @@ #include "ipc/internals/acceptor.hpp" #include "logger/logger.hpp" -namespace vasum { namespace ipc { Acceptor::Acceptor(const std::string& socketPath, const NewConnectionCallback& newConnectionCallback) @@ -54,4 +53,3 @@ FileDescriptor Acceptor::getConnectionFD() } } // namespace ipc -} // namespace vasum diff --git a/common/ipc/internals/acceptor.hpp b/common/ipc/internals/acceptor.hpp index a6e9ec8..9725e70 100644 --- a/common/ipc/internals/acceptor.hpp +++ b/common/ipc/internals/acceptor.hpp @@ -32,7 +32,6 @@ #include -namespace vasum { namespace ipc { /** @@ -73,6 +72,5 @@ private: }; } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_INTERNALS_ACCEPTOR_HPP diff --git a/common/ipc/internals/add-peer-request.hpp b/common/ipc/internals/add-peer-request.hpp index 57ec06c..bb8a81f 100644 --- a/common/ipc/internals/add-peer-request.hpp +++ b/common/ipc/internals/add-peer-request.hpp @@ -28,7 +28,6 @@ #include "ipc/types.hpp" #include "ipc/internals/socket.hpp" -namespace vasum { namespace ipc { class AddPeerRequest { @@ -47,6 +46,5 @@ public: }; } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_INTERNALS_ADD_PEER_REQUEST_HPP diff --git a/common/ipc/internals/event-queue.hpp b/common/ipc/internals/event-queue.hpp index b4532fd..1b13449 100644 --- a/common/ipc/internals/event-queue.hpp +++ b/common/ipc/internals/event-queue.hpp @@ -33,7 +33,6 @@ #include #include -namespace vasum { namespace ipc { @@ -119,6 +118,5 @@ bool EventQueue::isEmpty() } } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_INTERNALS_EVENT_QUEUE_HPP diff --git a/common/ipc/internals/finish-request.hpp b/common/ipc/internals/finish-request.hpp index d09a14e..934c135 100644 --- a/common/ipc/internals/finish-request.hpp +++ b/common/ipc/internals/finish-request.hpp @@ -27,7 +27,6 @@ #include -namespace vasum { namespace ipc { class FinishRequest { @@ -43,6 +42,5 @@ public: }; } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_INTERNALS_FINISH_REQUEST_HPP diff --git a/common/ipc/internals/method-request.hpp b/common/ipc/internals/method-request.hpp index 8ec1223..663cbde 100644 --- a/common/ipc/internals/method-request.hpp +++ b/common/ipc/internals/method-request.hpp @@ -32,7 +32,6 @@ #include "config/manager.hpp" #include -namespace vasum { namespace ipc { class MethodRequest { @@ -94,6 +93,5 @@ std::shared_ptr MethodRequest::create(const MethodID methodID, } } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_INTERNALS_METHOD_REQUEST_HPP diff --git a/common/ipc/internals/processor.cpp b/common/ipc/internals/processor.cpp index 587723c..9cb86c0 100644 --- a/common/ipc/internals/processor.cpp +++ b/common/ipc/internals/processor.cpp @@ -36,7 +36,8 @@ #include #include -namespace vasum { +using namespace utils; + namespace ipc { #define IGNORE_EXCEPTIONS(expr) \ @@ -728,4 +729,3 @@ std::ostream& operator<<(std::ostream& os, const Processor::Event& event) } } // namespace ipc -} // namespace vasum diff --git a/common/ipc/internals/processor.hpp b/common/ipc/internals/processor.hpp index 84aaa5c..ecc3a1d 100644 --- a/common/ipc/internals/processor.hpp +++ b/common/ipc/internals/processor.hpp @@ -54,7 +54,6 @@ #include #include -namespace vasum { namespace ipc { const unsigned int DEFAULT_MAX_NUMBER_OF_PEERS = 500; @@ -684,6 +683,5 @@ void Processor::signal(const MethodID methodID, } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_INTERNALS_PROCESSOR_HPP diff --git a/common/ipc/internals/remove-peer-request.hpp b/common/ipc/internals/remove-peer-request.hpp index 6ef8eca..c9f7ec7 100644 --- a/common/ipc/internals/remove-peer-request.hpp +++ b/common/ipc/internals/remove-peer-request.hpp @@ -30,7 +30,6 @@ #include -namespace vasum { namespace ipc { class RemovePeerRequest { @@ -50,6 +49,5 @@ public: }; } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_INTERNALS_REMOVE_PEER_REQUEST_HPP diff --git a/common/ipc/internals/request-queue.hpp b/common/ipc/internals/request-queue.hpp index 44306ee..810175f 100644 --- a/common/ipc/internals/request-queue.hpp +++ b/common/ipc/internals/request-queue.hpp @@ -34,7 +34,6 @@ #include #include -namespace vasum { namespace ipc { /** @@ -184,6 +183,5 @@ bool RequestQueue::removeIf(Predicate predicate) return true; } } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_INTERNALS_MESSAGE_QUEUE_HPP diff --git a/common/ipc/internals/result-builder.hpp b/common/ipc/internals/result-builder.hpp index 3fe3c49..97134e3 100644 --- a/common/ipc/internals/result-builder.hpp +++ b/common/ipc/internals/result-builder.hpp @@ -30,7 +30,6 @@ #include #include -namespace vasum { namespace ipc { class ResultBuilder { @@ -67,7 +66,6 @@ typedef std::function ResultBuilderHandler; } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_RESULT_BUILDER_HPP diff --git a/common/ipc/internals/send-result-request.hpp b/common/ipc/internals/send-result-request.hpp index bc1db6c..a6ed2b4 100644 --- a/common/ipc/internals/send-result-request.hpp +++ b/common/ipc/internals/send-result-request.hpp @@ -28,7 +28,6 @@ #include "ipc/types.hpp" #include "logger/logger-scope.hpp" -namespace vasum { namespace ipc { class SendResultRequest { @@ -53,6 +52,5 @@ public: }; } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_INTERNALS_SEND_RESULT_REQUEST_HPP diff --git a/common/ipc/internals/signal-request.hpp b/common/ipc/internals/signal-request.hpp index dac9c4d..904d3f3 100644 --- a/common/ipc/internals/signal-request.hpp +++ b/common/ipc/internals/signal-request.hpp @@ -29,7 +29,6 @@ #include "config/manager.hpp" #include "logger/logger-scope.hpp" -namespace vasum { namespace ipc { class SignalRequest { @@ -75,6 +74,5 @@ std::shared_ptr SignalRequest::create(const MethodID methodID, } } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_INTERNALS_SIGNAL_REQUEST_HPP diff --git a/common/ipc/internals/socket.cpp b/common/ipc/internals/socket.cpp index 26e1c27..0654a4e 100644 --- a/common/ipc/internals/socket.cpp +++ b/common/ipc/internals/socket.cpp @@ -27,6 +27,7 @@ #include "ipc/exception.hpp" #include "ipc/internals/socket.hpp" #include "utils/fd-utils.hpp" +#include "utils/exception.hpp" #include "logger/logger.hpp" #include @@ -38,8 +39,8 @@ #include #include +using namespace utils; -namespace vasum { namespace ipc { namespace { @@ -225,4 +226,3 @@ Socket Socket::connectSocket(const std::string& path) } } // namespace ipc -} // namespace vasum diff --git a/common/ipc/internals/socket.hpp b/common/ipc/internals/socket.hpp index 839afe4..65f574d 100644 --- a/common/ipc/internals/socket.hpp +++ b/common/ipc/internals/socket.hpp @@ -29,7 +29,6 @@ #include #include -namespace vasum { namespace ipc { /** @@ -114,6 +113,5 @@ private: }; } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_INTERNALS_SOCKET_HPP diff --git a/common/ipc/ipc-gsource.cpp b/common/ipc/ipc-gsource.cpp index 1769414..d339d50 100644 --- a/common/ipc/ipc-gsource.cpp +++ b/common/ipc/ipc-gsource.cpp @@ -31,7 +31,6 @@ #include -namespace vasum { namespace ipc { namespace { @@ -205,4 +204,3 @@ void IPCGSource::finalize(GSource* gSource) } } // namespace ipc -} // namespace vasum diff --git a/common/ipc/ipc-gsource.hpp b/common/ipc/ipc-gsource.hpp index 87057db..ed01989 100644 --- a/common/ipc/ipc-gsource.hpp +++ b/common/ipc/ipc-gsource.hpp @@ -34,7 +34,6 @@ #include -namespace vasum { namespace ipc { /** @@ -143,6 +142,5 @@ private: }; } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_IPC_GSOURCE_HPP diff --git a/common/ipc/method-result.cpp b/common/ipc/method-result.cpp index 826354c..ffb97a8 100644 --- a/common/ipc/method-result.cpp +++ b/common/ipc/method-result.cpp @@ -27,7 +27,6 @@ #include "ipc/method-result.hpp" #include "ipc/internals/processor.hpp" -namespace vasum { namespace ipc { MethodResult::MethodResult(Processor& processor, @@ -56,4 +55,3 @@ void MethodResult::setError(const int code, const std::string& message) } } // namespace ipc -} // namespace vasum diff --git a/common/ipc/method-result.hpp b/common/ipc/method-result.hpp index ebe9697..bd9d10f 100644 --- a/common/ipc/method-result.hpp +++ b/common/ipc/method-result.hpp @@ -29,7 +29,6 @@ #include "logger/logger.hpp" #include -namespace vasum { namespace ipc { class Processor; @@ -70,6 +69,5 @@ struct MethodHandler { }; } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_METHOD_RESULT_HPP diff --git a/common/ipc/result.hpp b/common/ipc/result.hpp index 0edf172..9069fd5 100644 --- a/common/ipc/result.hpp +++ b/common/ipc/result.hpp @@ -29,7 +29,6 @@ #include #include -namespace vasum { namespace ipc { template @@ -69,6 +68,5 @@ struct ResultHandler { }; } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_RESULT_HPP diff --git a/common/ipc/service.cpp b/common/ipc/service.cpp index d4e1b88..48d8c96 100644 --- a/common/ipc/service.cpp +++ b/common/ipc/service.cpp @@ -30,7 +30,6 @@ using namespace std::placeholders; -namespace vasum { namespace ipc { Service::Service(epoll::EventPoll& eventPoll, @@ -149,4 +148,3 @@ void Service::removeMethod(const MethodID methodID) } // namespace ipc -} // namespace vasum diff --git a/common/ipc/service.hpp b/common/ipc/service.hpp index 32b604f..8f6f62b 100644 --- a/common/ipc/service.hpp +++ b/common/ipc/service.hpp @@ -34,7 +34,6 @@ #include -namespace vasum { namespace ipc { @@ -220,6 +219,5 @@ void Service::signal(const MethodID methodID, } } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_SERVICE_HPP diff --git a/common/ipc/types.cpp b/common/ipc/types.cpp index 9854e0e..0961b35 100644 --- a/common/ipc/types.cpp +++ b/common/ipc/types.cpp @@ -29,7 +29,6 @@ #include -namespace vasum { namespace ipc { namespace { @@ -49,4 +48,3 @@ PeerID getNextPeerID() } // namespace ipc -} // namespace vasum diff --git a/common/ipc/types.hpp b/common/ipc/types.hpp index 3fec337..ab4ed00 100644 --- a/common/ipc/types.hpp +++ b/common/ipc/types.hpp @@ -29,7 +29,6 @@ #include #include -namespace vasum { namespace ipc { typedef int FileDescriptor; @@ -52,6 +51,5 @@ struct SignalHandler { }; } // namespace ipc -} // namespace vasum #endif // COMMON_IPC_TYPES_HPP diff --git a/common/netlink/netlink.cpp b/common/netlink/netlink.cpp index e5cf8a7..633276a 100644 --- a/common/netlink/netlink.cpp +++ b/common/netlink/netlink.cpp @@ -25,7 +25,7 @@ #include "config.hpp" #include "netlink.hpp" #include "utils.hpp" -#include "base-exception.hpp" +#include "utils/exception.hpp" #include "utils/make-clean.hpp" #include "utils/environment.hpp" @@ -40,6 +40,7 @@ #define PAGE_SIZE 4096 #endif +using namespace utils; using namespace vasum; namespace { diff --git a/common/utils/c-array.hpp b/common/utils/c-array.hpp index 68fa816..d238e4a 100644 --- a/common/utils/c-array.hpp +++ b/common/utils/c-array.hpp @@ -27,7 +27,6 @@ #include -namespace vasum { namespace utils { template @@ -67,7 +66,6 @@ private: typedef CArrayBuilder CStringArrayBuilder; } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_C_ARRAY_HPP diff --git a/common/utils/callback-guard.cpp b/common/utils/callback-guard.cpp index b0ce7dd..c3deca1 100644 --- a/common/utils/callback-guard.cpp +++ b/common/utils/callback-guard.cpp @@ -31,7 +31,6 @@ #include -namespace vasum { namespace utils { // Reference counting class like shared_ptr but with the ability to wait for it. @@ -127,4 +126,3 @@ bool CallbackGuard::waitForTrackers(const unsigned int timeoutMs) } } // namespace utils -} // namespace vasum diff --git a/common/utils/callback-guard.hpp b/common/utils/callback-guard.hpp index d28e707..7cb299b 100644 --- a/common/utils/callback-guard.hpp +++ b/common/utils/callback-guard.hpp @@ -29,7 +29,6 @@ #include -namespace vasum { namespace utils { /** @@ -73,7 +72,6 @@ private: }; } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_CALLBACK_GUARD_HPP diff --git a/common/utils/callback-wrapper.hpp b/common/utils/callback-wrapper.hpp index fd5a4c0..fbf8455 100644 --- a/common/utils/callback-wrapper.hpp +++ b/common/utils/callback-wrapper.hpp @@ -28,7 +28,6 @@ #include "callback-guard.hpp" -namespace vasum { namespace utils { @@ -86,7 +85,6 @@ const Callback& getCallbackFromPointer(const void* pointer) } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_CALLBACK_WRAPPER_HPP diff --git a/common/utils/counting-map.hpp b/common/utils/counting-map.hpp index da5f4c7..a05f76a 100644 --- a/common/utils/counting-map.hpp +++ b/common/utils/counting-map.hpp @@ -27,7 +27,6 @@ #include -namespace vasum { namespace utils { @@ -82,7 +81,6 @@ private: } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_COUNTING_MAP_HPP diff --git a/common/utils/environment.cpp b/common/utils/environment.cpp index 209f9ba..7bd7d07 100644 --- a/common/utils/environment.cpp +++ b/common/utils/environment.cpp @@ -26,6 +26,7 @@ #include "utils/environment.hpp" #include "utils/execute.hpp" +#include "utils/exception.hpp" #include "utils/make-clean.hpp" #include "base-exception.hpp" #include "logger/logger.hpp" @@ -60,7 +61,7 @@ static inline int setns(int fd, int nstype) #endif -using namespace vasum::utils; +using namespace utils; namespace { @@ -126,7 +127,6 @@ bool fdSend(int socket, int fd) } // namespace -namespace vasum { namespace utils { @@ -223,7 +223,7 @@ int passNemaspacedFd(int nsPid, int ns, const std::function& fdFactory) int fds[2]; int ret = socketpair(PF_LOCAL, SOCK_RAW, 0, fds); if (ret == -1) { - LOGE("Can't create socket pair: " << vasum::getSystemErrorMessage()); + LOGE("Can't create socket pair: " << getSystemErrorMessage()); return -1; } bool success = executeAndWait([&, fds, nsPid, ns]() { @@ -254,4 +254,3 @@ int passNemaspacedFd(int nsPid, int ns, const std::function& fdFactory) } } // namespace utils -} // namespace vasum diff --git a/common/utils/environment.hpp b/common/utils/environment.hpp index d63ac16..b4e3194 100644 --- a/common/utils/environment.hpp +++ b/common/utils/environment.hpp @@ -31,7 +31,6 @@ #include -namespace vasum { namespace utils { @@ -63,7 +62,6 @@ bool joinToNs(int nsPid, int ns); int passNemaspacedFd(int nsPid, int ns, const std::function& fdFactory); } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_ENVIRONMENT_HPP diff --git a/common/utils/eventfd.cpp b/common/utils/eventfd.cpp index d69d572..a1b45e9 100644 --- a/common/utils/eventfd.cpp +++ b/common/utils/eventfd.cpp @@ -34,7 +34,8 @@ #include #include -namespace vasum { +using namespace vasum; + namespace utils { EventFD::EventFD() @@ -71,4 +72,3 @@ void EventFD::receive() } // namespace utils -} // namespace vasum diff --git a/common/utils/eventfd.hpp b/common/utils/eventfd.hpp index b3d5027..f49bbff 100644 --- a/common/utils/eventfd.hpp +++ b/common/utils/eventfd.hpp @@ -25,7 +25,6 @@ #ifndef COMMON_UTILS_EVENTFD_HPP #define COMMON_UTILS_EVENTFD_HPP -namespace vasum { namespace utils { class EventFD { @@ -58,6 +57,5 @@ private: }; } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_EVENTFD_HPP diff --git a/common/base-exception.cpp b/common/utils/exception.cpp similarity index 89% rename from common/base-exception.cpp rename to common/utils/exception.cpp index 628296d..ae69618 100644 --- a/common/base-exception.cpp +++ b/common/utils/exception.cpp @@ -19,16 +19,16 @@ /** * @file * @author Mateusz Malicki (m.malicki2@samsung.com) - * @brief Vasum base exception implementation + * @brief Utils base exception helper implementation */ -#include "base-exception.hpp" +#include "utils/exception.hpp" #include #include #include -namespace vasum { +namespace utils { const int ERROR_MESSAGE_BUFFER_CAPACITY = 256; @@ -43,4 +43,4 @@ std::string getSystemErrorMessage(int err) return strerror_r(err, buf, sizeof(buf)); } -} // namespace vasum +} // namespace utils diff --git a/common/utils/exception.hpp b/common/utils/exception.hpp index 32f416c..49aceb8 100644 --- a/common/utils/exception.hpp +++ b/common/utils/exception.hpp @@ -29,18 +29,24 @@ #include "base-exception.hpp" -namespace vasum { +namespace utils { /** * Base class for exceptions in utils */ -struct UtilsException: public VasumException { +struct UtilsException: public vasum::VasumException { - UtilsException(const std::string& error) : VasumException(error) {} + UtilsException(const std::string& error) : vasum::VasumException(error) {} }; +/** + * Return string describing error number + * it is wrapper for strerror_r + */ +std::string getSystemErrorMessage(); +std::string getSystemErrorMessage(int err); -} // namespace vasum +} // namespace utils #endif // COMMON_UTILS_EXCEPTION_HPP diff --git a/common/utils/execute.cpp b/common/utils/execute.cpp index 4e8eebf..d030177 100644 --- a/common/utils/execute.cpp +++ b/common/utils/execute.cpp @@ -23,7 +23,7 @@ */ #include "config.hpp" -#include "base-exception.hpp" +#include "utils/exception.hpp" #include "utils/execute.hpp" #include "logger/logger.hpp" @@ -31,7 +31,6 @@ #include #include -namespace vasum { namespace utils { namespace { @@ -74,7 +73,7 @@ bool executeAndWait(const std::function& func, int& status) pid_t pid = fork(); if (pid == -1) { - LOGE("Fork failed: " << vasum::getSystemErrorMessage()); + LOGE("Fork failed: " << getSystemErrorMessage()); return false; } if (pid == 0) { @@ -128,4 +127,3 @@ bool waitPid(pid_t pid, int& status) } } // namespace utils -} // namespace vasum diff --git a/common/utils/execute.hpp b/common/utils/execute.hpp index 8f7fd56..bc5cf9d 100644 --- a/common/utils/execute.hpp +++ b/common/utils/execute.hpp @@ -28,7 +28,6 @@ #include #include -namespace vasum { namespace utils { /** @@ -55,7 +54,6 @@ bool executeAndWait(const std::function& func); bool waitPid(pid_t pid, int& status); } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_EXECUTE_HPP diff --git a/common/utils/fd-utils.cpp b/common/utils/fd-utils.cpp index 17448b5..95080ff 100644 --- a/common/utils/fd-utils.cpp +++ b/common/utils/fd-utils.cpp @@ -39,7 +39,8 @@ namespace fs = boost::filesystem; namespace chr = std::chrono; -namespace vasum { +using namespace vasum; + namespace utils { namespace { @@ -202,5 +203,4 @@ unsigned int getFDNumber() } } // namespace utils -} // namespace vasum diff --git a/common/utils/fd-utils.hpp b/common/utils/fd-utils.hpp index ac32b0a..151eb1c 100644 --- a/common/utils/fd-utils.hpp +++ b/common/utils/fd-utils.hpp @@ -27,7 +27,6 @@ #include -namespace vasum { namespace utils { /** @@ -73,6 +72,5 @@ void setMaxFDNumber(unsigned int limit); unsigned int getFDNumber(); } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_FD_HPP diff --git a/common/utils/file-wait.cpp b/common/utils/file-wait.cpp index f89ada6..4949314 100644 --- a/common/utils/file-wait.cpp +++ b/common/utils/file-wait.cpp @@ -30,8 +30,8 @@ #include #include +using namespace vasum; -namespace vasum { namespace utils { @@ -56,4 +56,3 @@ void waitForFile(const std::string& filename, const unsigned int timeoutMs) } // namespace utils -} // namespace vasum diff --git a/common/utils/file-wait.hpp b/common/utils/file-wait.hpp index 9029c6e..02b361e 100644 --- a/common/utils/file-wait.hpp +++ b/common/utils/file-wait.hpp @@ -28,7 +28,6 @@ #include -namespace vasum { namespace utils { @@ -38,7 +37,6 @@ void waitForFile(const std::string& filename, const unsigned int timeoutMs); } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_FILE_WAIT_HPP diff --git a/common/utils/fs.cpp b/common/utils/fs.cpp index e4dcd7f..5581a29 100644 --- a/common/utils/fs.cpp +++ b/common/utils/fs.cpp @@ -45,7 +45,8 @@ namespace fs = boost::filesystem; -namespace vasum { +using namespace vasum; + namespace utils { @@ -527,4 +528,3 @@ bool createLink(const std::string& src, const std::string& dest) } } // namespace utils -} // namespace vasum diff --git a/common/utils/fs.hpp b/common/utils/fs.hpp index b2e05b6..bff2e70 100644 --- a/common/utils/fs.hpp +++ b/common/utils/fs.hpp @@ -31,7 +31,6 @@ #include -namespace vasum { namespace utils { /** @@ -149,7 +148,6 @@ bool copyFile(const std::string& src, const std::string& dest); bool createLink(const std::string& src, const std::string& dest); } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_FS_HPP diff --git a/common/utils/glib-loop.cpp b/common/utils/glib-loop.cpp index dd82204..0ce15d9 100644 --- a/common/utils/glib-loop.cpp +++ b/common/utils/glib-loop.cpp @@ -30,7 +30,6 @@ #include #include -namespace vasum { namespace utils { namespace { @@ -85,4 +84,3 @@ gboolean Glib::onTimerEvent(gpointer data) } // namespace utils -} // namespace vasum diff --git a/common/utils/glib-loop.hpp b/common/utils/glib-loop.hpp index 8db43b6..0c5a459 100644 --- a/common/utils/glib-loop.hpp +++ b/common/utils/glib-loop.hpp @@ -32,7 +32,6 @@ #include -namespace vasum { namespace utils { @@ -81,7 +80,6 @@ private: }; } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_GLIB_LOOP_HPP diff --git a/common/utils/glib-utils.cpp b/common/utils/glib-utils.cpp index 93cbff9..fcd2f35 100644 --- a/common/utils/glib-utils.cpp +++ b/common/utils/glib-utils.cpp @@ -28,7 +28,6 @@ #include -namespace vasum { namespace utils { namespace { @@ -56,4 +55,3 @@ void executeInGlibThread(const VoidCallback& callback, const CallbackGuard& guar } // namespace utils -} // namespace vasum diff --git a/common/utils/glib-utils.hpp b/common/utils/glib-utils.hpp index eaeeee8..a818230 100644 --- a/common/utils/glib-utils.hpp +++ b/common/utils/glib-utils.hpp @@ -27,7 +27,6 @@ #include "utils/callback-guard.hpp" -namespace vasum { namespace utils { typedef std::function VoidCallback; @@ -39,6 +38,5 @@ void executeInGlibThread(const VoidCallback& callback, const CallbackGuard& guar } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_GLIB_UTILS_HPP diff --git a/common/utils/img.cpp b/common/utils/img.cpp index 785291c..20f6daf 100644 --- a/common/utils/img.cpp +++ b/common/utils/img.cpp @@ -27,13 +27,12 @@ #include "utils/img.hpp" #include "utils/fs.hpp" #include "utils/paths.hpp" -#include "base-exception.hpp" +#include "utils/exception.hpp" #include #include #include -namespace vasum { namespace utils { namespace { @@ -238,4 +237,3 @@ bool copyImageContents(const std::string& img, const std::string& dst) } } // namespace utils -} // namespace vasum diff --git a/common/utils/img.hpp b/common/utils/img.hpp index 8782ae2..de04fdc 100644 --- a/common/utils/img.hpp +++ b/common/utils/img.hpp @@ -25,7 +25,6 @@ #ifndef COMMON_UTILS_IMG_HPP #define COMMON_UTILS_IMG_HPP -namespace vasum { namespace utils { /** @@ -50,6 +49,5 @@ bool umountImage(const std::string& path, const std::string& loopdev); bool copyImageContents(const std::string& img, const std::string& dst); } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_IMG_HPP diff --git a/common/utils/initctl.cpp b/common/utils/initctl.cpp index 5986799..55e8cfd 100644 --- a/common/utils/initctl.cpp +++ b/common/utils/initctl.cpp @@ -30,7 +30,6 @@ #include #include -namespace vasum { namespace utils { namespace { @@ -87,4 +86,3 @@ bool setRunLevel(RunLevel runLevel) } // namespace utils -} // namespace vasum diff --git a/common/utils/initctl.hpp b/common/utils/initctl.hpp index 97f4ca4..d81c7bc 100644 --- a/common/utils/initctl.hpp +++ b/common/utils/initctl.hpp @@ -26,7 +26,6 @@ #define COMMON_UTILS_INITCTL_HPP -namespace vasum { namespace utils { enum RunLevel : int { @@ -38,7 +37,6 @@ bool setRunLevel(RunLevel runLevel); } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_INITCTL_HPP diff --git a/common/utils/latch.cpp b/common/utils/latch.cpp index e4b3649..4889946 100644 --- a/common/utils/latch.cpp +++ b/common/utils/latch.cpp @@ -28,7 +28,6 @@ #include -namespace vasum { namespace utils { @@ -81,4 +80,3 @@ bool Latch::empty() } // namespace utils -} // namespace vasum diff --git a/common/utils/latch.hpp b/common/utils/latch.hpp index 7ef1dd7..ad48475 100644 --- a/common/utils/latch.hpp +++ b/common/utils/latch.hpp @@ -29,7 +29,6 @@ #include -namespace vasum { namespace utils { @@ -89,7 +88,6 @@ private: } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_LATCH_HPP diff --git a/common/utils/make-clean.hpp b/common/utils/make-clean.hpp index 1d551ef..18fe6d7 100644 --- a/common/utils/make-clean.hpp +++ b/common/utils/make-clean.hpp @@ -28,7 +28,6 @@ #include #include -namespace vasum { namespace utils { template @@ -47,7 +46,6 @@ T make_clean() } } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_MAKE_CLEAN_HPP diff --git a/common/utils/paths.hpp b/common/utils/paths.hpp index b86333f..26ebde6 100644 --- a/common/utils/paths.hpp +++ b/common/utils/paths.hpp @@ -30,7 +30,6 @@ #include -namespace vasum { namespace utils { @@ -121,7 +120,6 @@ inline std::string getAbsolutePath(const std::string& path, const std::string& b } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_PATHS_HPP diff --git a/common/utils/same-thread-guard.cpp b/common/utils/same-thread-guard.cpp index 5b54c73..65621d4 100644 --- a/common/utils/same-thread-guard.cpp +++ b/common/utils/same-thread-guard.cpp @@ -30,7 +30,6 @@ #include "logger/logger.hpp" #include "logger/formatter.hpp" -namespace vasum { namespace utils { namespace { @@ -70,6 +69,5 @@ void SameThreadGuard::reset() } } // namespace utils -} // namespace vasum #endif // ENABLE_SAME_THREAD_GUARD diff --git a/common/utils/same-thread-guard.hpp b/common/utils/same-thread-guard.hpp index fd697fd..3a173b5 100644 --- a/common/utils/same-thread-guard.hpp +++ b/common/utils/same-thread-guard.hpp @@ -34,7 +34,6 @@ #include #endif -namespace vasum { namespace utils { /** @@ -74,7 +73,6 @@ private: }; } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_SAME_THREAD_GUARD_HPP diff --git a/common/utils/scoped-gerror.cpp b/common/utils/scoped-gerror.cpp index 0e4de47..92e0dd2 100644 --- a/common/utils/scoped-gerror.cpp +++ b/common/utils/scoped-gerror.cpp @@ -26,7 +26,6 @@ #include "scoped-gerror.hpp" -namespace vasum { namespace utils { ScopedGError::ScopedGError() @@ -74,4 +73,3 @@ std::ostream& operator<<(std::ostream& os, const ScopedGError& e) } } // namespace utils -} // namespace vasum diff --git a/common/utils/scoped-gerror.hpp b/common/utils/scoped-gerror.hpp index 0ee4c64..5d3bcc7 100644 --- a/common/utils/scoped-gerror.hpp +++ b/common/utils/scoped-gerror.hpp @@ -28,7 +28,6 @@ #include #include -namespace vasum{ namespace utils { class ScopedGError { @@ -73,6 +72,5 @@ private: }; } // namespace utils -} // namespace vasum #endif // COMMON_SCOPED_GERROR_HPP diff --git a/common/utils/signal.cpp b/common/utils/signal.cpp index 11ea8f2..2daa766 100644 --- a/common/utils/signal.cpp +++ b/common/utils/signal.cpp @@ -31,7 +31,6 @@ #include #include -namespace vasum { namespace utils { void signalBlock(const int signalToBlock) @@ -57,7 +56,6 @@ void signalBlock(const int signalToBlock) } } // namespace utils -} // namespace vasum diff --git a/common/utils/signal.hpp b/common/utils/signal.hpp index f26e365..c466688 100644 --- a/common/utils/signal.hpp +++ b/common/utils/signal.hpp @@ -25,13 +25,11 @@ #ifndef COMMON_UTILS_SIGNAL_HPP #define COMMON_UTILS_SIGNAL_HPP -namespace vasum { namespace utils { void signalBlock(const int signalsToBlock); } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_SIGNAL_HPP diff --git a/common/utils/typeinfo.cpp b/common/utils/typeinfo.cpp index 0f7e574..e97aa35 100644 --- a/common/utils/typeinfo.cpp +++ b/common/utils/typeinfo.cpp @@ -29,7 +29,6 @@ #include #include -namespace vasum { namespace utils { std::string getTypeName(const std::type_info& ti) @@ -47,4 +46,3 @@ std::string getTypeName(const std::type_info& ti) } } // namespace utils -} // namespace vasum diff --git a/common/utils/typeinfo.hpp b/common/utils/typeinfo.hpp index 9faf0cb..f1c83a0 100644 --- a/common/utils/typeinfo.hpp +++ b/common/utils/typeinfo.hpp @@ -28,7 +28,6 @@ #include #include -namespace vasum { namespace utils { std::string getTypeName(const std::type_info& ti); @@ -39,7 +38,6 @@ template std::string getTypeName(const T& t) } } // namespace utils -} // namespace vasum #endif // COMMON_TYPE_INFO_HPP diff --git a/common/utils/value-latch.hpp b/common/utils/value-latch.hpp index 0e06f6f..74fc738 100644 --- a/common/utils/value-latch.hpp +++ b/common/utils/value-latch.hpp @@ -31,7 +31,6 @@ #include #include -namespace vasum { namespace utils { template @@ -121,6 +120,5 @@ T ValueLatch::get(const unsigned int timeoutMs) } } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_VALUE_LATCH_H diff --git a/common/utils/vt.cpp b/common/utils/vt.cpp index 44461e4..373a949 100644 --- a/common/utils/vt.cpp +++ b/common/utils/vt.cpp @@ -25,7 +25,7 @@ #include "config.hpp" #include "utils/vt.hpp" #include "logger/logger.hpp" -#include "base-exception.hpp" +#include "utils/exception.hpp" #include #include @@ -40,7 +40,6 @@ const std::string TTY_DEV = "/dev/tty0"; } // namespace -namespace vasum { namespace utils { bool activateVT(const int& vt) @@ -84,4 +83,3 @@ bool activateVT(const int& vt) } } // namespace utils -} // namespace vasum diff --git a/common/utils/vt.hpp b/common/utils/vt.hpp index 16f4030..a28261c 100644 --- a/common/utils/vt.hpp +++ b/common/utils/vt.hpp @@ -25,12 +25,10 @@ #ifndef COMMON_UTILS_VT_HPP #define COMMON_UTILS_VT_HPP -namespace vasum { namespace utils { bool activateVT(const int& vt); } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_VT_HPP diff --git a/common/utils/worker.cpp b/common/utils/worker.cpp index 2cb3284..7e87d33 100644 --- a/common/utils/worker.cpp +++ b/common/utils/worker.cpp @@ -35,7 +35,6 @@ #include -namespace vasum { namespace utils { @@ -183,4 +182,3 @@ void Worker::addTask(const Task& task) } // namespace utils -} // namespace vasum diff --git a/common/utils/worker.hpp b/common/utils/worker.hpp index 0d951fb..677f218 100644 --- a/common/utils/worker.hpp +++ b/common/utils/worker.hpp @@ -28,7 +28,6 @@ #include #include -namespace vasum { namespace utils { /** @@ -68,7 +67,6 @@ private: }; } // namespace utils -} // namespace vasum #endif // COMMON_UTILS_WORKER_HPP diff --git a/libs/dbus/connection.cpp b/libs/dbus/connection.cpp index 3485ea5..60b3225 100644 --- a/libs/dbus/connection.cpp +++ b/libs/dbus/connection.cpp @@ -30,7 +30,7 @@ #include "utils/glib-utils.hpp" #include "logger/logger.hpp" -using namespace vasum::utils; +using namespace utils; namespace dbus { diff --git a/libs/dbus/connection.hpp b/libs/dbus/connection.hpp index faf737c..5248d2e 100644 --- a/libs/dbus/connection.hpp +++ b/libs/dbus/connection.hpp @@ -181,7 +181,7 @@ private: : nameAcquired(acquired), nameLost(lost) {} }; - vasum::utils::CallbackGuard mGuard; + utils::CallbackGuard mGuard; GDBusConnection* mConnection; guint mNameId; diff --git a/server/host-ipc-connection.hpp b/server/host-ipc-connection.hpp index d5144fd..b5d671e 100644 --- a/server/host-ipc-connection.hpp +++ b/server/host-ipc-connection.hpp @@ -27,7 +27,7 @@ #define SERVER_HOST_IPC_CONNECTION_HPP #include "api/messages.hpp" -#include "epoll/thread-dispatcher.hpp" +#include "ipc/epoll/thread-dispatcher.hpp" #include "ipc/service.hpp" #include "ipc-callback-wrapper.hpp" @@ -84,7 +84,7 @@ public: void sendNotification(const api::Notification& notification); private: - epoll::ThreadDispatcher mDispatcher; + ipc::epoll::ThreadDispatcher mDispatcher; std::unique_ptr mService; }; diff --git a/server/host-ipc-definitions.hpp b/server/host-ipc-definitions.hpp index a54b679..0053efa 100644 --- a/server/host-ipc-definitions.hpp +++ b/server/host-ipc-definitions.hpp @@ -31,36 +31,36 @@ namespace vasum { namespace api { namespace ipc { -const vasum::ipc::MethodID METHOD_GET_ZONE_ID_LIST = 2; -const vasum::ipc::MethodID METHOD_GET_ACTIVE_ZONE_ID = 3; -const vasum::ipc::MethodID METHOD_GET_ZONE_INFO = 4; -const vasum::ipc::MethodID METHOD_SET_NETDEV_ATTRS = 5; -const vasum::ipc::MethodID METHOD_GET_NETDEV_ATTRS = 6; -const vasum::ipc::MethodID METHOD_GET_NETDEV_LIST = 7; -const vasum::ipc::MethodID METHOD_CREATE_NETDEV_VETH = 8; -const vasum::ipc::MethodID METHOD_CREATE_NETDEV_MACVLAN = 9; -const vasum::ipc::MethodID METHOD_CREATE_NETDEV_PHYS = 10; -const vasum::ipc::MethodID METHOD_DELETE_NETDEV_IP_ADDRESS = 11; -const vasum::ipc::MethodID METHOD_DESTROY_NETDEV = 12; -const vasum::ipc::MethodID METHOD_DECLARE_FILE = 13; -const vasum::ipc::MethodID METHOD_DECLARE_MOUNT = 14; -const vasum::ipc::MethodID METHOD_DECLARE_LINK = 15; -const vasum::ipc::MethodID METHOD_GET_DECLARATIONS = 16; -const vasum::ipc::MethodID METHOD_REMOVE_DECLARATION = 17; -const vasum::ipc::MethodID METHOD_SET_ACTIVE_ZONE = 18; -const vasum::ipc::MethodID METHOD_CREATE_ZONE = 19; -const vasum::ipc::MethodID METHOD_DESTROY_ZONE = 20; -const vasum::ipc::MethodID METHOD_SHUTDOWN_ZONE = 21; -const vasum::ipc::MethodID METHOD_START_ZONE = 22; -const vasum::ipc::MethodID METHOD_LOCK_ZONE = 23; -const vasum::ipc::MethodID METHOD_UNLOCK_ZONE = 24; -const vasum::ipc::MethodID METHOD_GRANT_DEVICE = 25; -const vasum::ipc::MethodID METHOD_REVOKE_DEVICE = 26; +const ::ipc::MethodID METHOD_GET_ZONE_ID_LIST = 2; +const ::ipc::MethodID METHOD_GET_ACTIVE_ZONE_ID = 3; +const ::ipc::MethodID METHOD_GET_ZONE_INFO = 4; +const ::ipc::MethodID METHOD_SET_NETDEV_ATTRS = 5; +const ::ipc::MethodID METHOD_GET_NETDEV_ATTRS = 6; +const ::ipc::MethodID METHOD_GET_NETDEV_LIST = 7; +const ::ipc::MethodID METHOD_CREATE_NETDEV_VETH = 8; +const ::ipc::MethodID METHOD_CREATE_NETDEV_MACVLAN = 9; +const ::ipc::MethodID METHOD_CREATE_NETDEV_PHYS = 10; +const ::ipc::MethodID METHOD_DELETE_NETDEV_IP_ADDRESS = 11; +const ::ipc::MethodID METHOD_DESTROY_NETDEV = 12; +const ::ipc::MethodID METHOD_DECLARE_FILE = 13; +const ::ipc::MethodID METHOD_DECLARE_MOUNT = 14; +const ::ipc::MethodID METHOD_DECLARE_LINK = 15; +const ::ipc::MethodID METHOD_GET_DECLARATIONS = 16; +const ::ipc::MethodID METHOD_REMOVE_DECLARATION = 17; +const ::ipc::MethodID METHOD_SET_ACTIVE_ZONE = 18; +const ::ipc::MethodID METHOD_CREATE_ZONE = 19; +const ::ipc::MethodID METHOD_DESTROY_ZONE = 20; +const ::ipc::MethodID METHOD_SHUTDOWN_ZONE = 21; +const ::ipc::MethodID METHOD_START_ZONE = 22; +const ::ipc::MethodID METHOD_LOCK_ZONE = 23; +const ::ipc::MethodID METHOD_UNLOCK_ZONE = 24; +const ::ipc::MethodID METHOD_GRANT_DEVICE = 25; +const ::ipc::MethodID METHOD_REVOKE_DEVICE = 26; -const vasum::ipc::MethodID METHOD_NOTIFY_ACTIVE_ZONE = 100; -const vasum::ipc::MethodID METHOD_FILE_MOVE_REQUEST = 101; -const vasum::ipc::MethodID SIGNAL_NOTIFICATION = 102; -const vasum::ipc::MethodID SIGNAL_SWITCH_TO_DEFAULT = 103; +const ::ipc::MethodID METHOD_NOTIFY_ACTIVE_ZONE = 100; +const ::ipc::MethodID METHOD_FILE_MOVE_REQUEST = 101; +const ::ipc::MethodID SIGNAL_NOTIFICATION = 102; +const ::ipc::MethodID SIGNAL_SWITCH_TO_DEFAULT = 103; const std::string FILE_MOVE_DESTINATION_NOT_FOUND = "FILE_MOVE_DESTINATION_NOT_FOUND"; const std::string FILE_MOVE_WRONG_DESTINATION = "FILE_MOVE_WRONG_DESTINATION"; diff --git a/server/input-monitor.cpp b/server/input-monitor.cpp index 68e63c0..e99906f 100644 --- a/server/input-monitor.cpp +++ b/server/input-monitor.cpp @@ -49,7 +49,7 @@ #include #include -using namespace vasum::utils; +using namespace utils; namespace fs = boost::filesystem; namespace vasum { diff --git a/server/netdev.cpp b/server/netdev.cpp index 38ccb88..b9a1389 100644 --- a/server/netdev.cpp +++ b/server/netdev.cpp @@ -26,6 +26,7 @@ #include "netdev.hpp" #include "netlink/netlink-message.hpp" #include "utils/make-clean.hpp" +#include "utils/exception.hpp" #include "utils.hpp" #include "exception.hpp" @@ -64,7 +65,7 @@ #endif using namespace std; -using namespace vasum; +using namespace utils; using namespace vasum::netlink; namespace vasum { diff --git a/server/server.cpp b/server/server.cpp index ab8cba3..95f22a0 100644 --- a/server/server.cpp +++ b/server/server.cpp @@ -34,6 +34,7 @@ #include "utils/environment.hpp" #include "utils/fs.hpp" #include "utils/signal.hpp" +#include "utils/exception.hpp" #include #include @@ -65,6 +66,8 @@ extern char** environ; +using namespace utils; + namespace vasum { diff --git a/server/zone-provision.cpp b/server/zone-provision.cpp index 1c542f7..70c3711 100644 --- a/server/zone-provision.cpp +++ b/server/zone-provision.cpp @@ -41,6 +41,8 @@ namespace fs = boost::filesystem; +using namespace utils; + namespace vasum { ZoneProvision::ZoneProvision(const std::string& rootPath, diff --git a/tests/unit_tests/client/ut-client.cpp b/tests/unit_tests/client/ut-client.cpp index adc325e..a43319c 100644 --- a/tests/unit_tests/client/ut-client.cpp +++ b/tests/unit_tests/client/ut-client.cpp @@ -46,7 +46,7 @@ #include using namespace vasum; -using namespace vasum::utils; +using namespace utils; namespace { diff --git a/tests/unit_tests/config/ut-configuration.cpp b/tests/unit_tests/config/ut-configuration.cpp index 1334966..88b6a4e 100644 --- a/tests/unit_tests/config/ut-configuration.cpp +++ b/tests/unit_tests/config/ut-configuration.cpp @@ -34,6 +34,7 @@ namespace { +using namespace utils; using namespace config; const std::string UT_PATH = "/tmp/ut-config/"; @@ -44,7 +45,7 @@ const std::string DB_PREFIX = "ut"; const int TOLERANCE = 1; struct Fixture { - vasum::utils::ScopedDir mUTDirGuard; + ScopedDir mUTDirGuard; Fixture() : mUTDirGuard(UT_PATH) {} }; diff --git a/tests/unit_tests/config/ut-dynvisit.cpp b/tests/unit_tests/config/ut-dynvisit.cpp index 2050def..bbe45e0 100644 --- a/tests/unit_tests/config/ut-dynvisit.cpp +++ b/tests/unit_tests/config/ut-dynvisit.cpp @@ -33,12 +33,13 @@ namespace { +using namespace utils; using namespace config; const std::string UT_PATH = "/tmp/ut-config/"; struct Fixture { - vasum::utils::ScopedDir mUTDirGuard; + ScopedDir mUTDirGuard; std::string dbPath; std::string dbPrefix; diff --git a/tests/unit_tests/config/ut-kvstore.cpp b/tests/unit_tests/config/ut-kvstore.cpp index 239f568..13691c7 100644 --- a/tests/unit_tests/config/ut-kvstore.cpp +++ b/tests/unit_tests/config/ut-kvstore.cpp @@ -37,7 +37,7 @@ #include using namespace config; -using namespace vasum::utils; +using namespace utils; namespace fs = boost::filesystem; namespace { @@ -45,7 +45,7 @@ namespace { const std::string UT_PATH = "/tmp/ut-config/"; struct Fixture { - vasum::utils::ScopedDir mUTDirGuard; + ScopedDir mUTDirGuard; std::string dbPath; KVStore c; diff --git a/tests/unit_tests/dbus/ut-connection.cpp b/tests/unit_tests/dbus/ut-connection.cpp index 84ea626..b427355 100644 --- a/tests/unit_tests/dbus/ut-connection.cpp +++ b/tests/unit_tests/dbus/ut-connection.cpp @@ -46,8 +46,8 @@ BOOST_AUTO_TEST_SUITE(DbusSuite) +using namespace utils; using namespace vasum; -using namespace vasum::utils; using namespace dbus; namespace { diff --git a/tests/unit_tests/epoll/ut-event-poll.cpp b/tests/unit_tests/epoll/ut-event-poll.cpp index 3a26b5e..819e959 100644 --- a/tests/unit_tests/epoll/ut-event-poll.cpp +++ b/tests/unit_tests/epoll/ut-event-poll.cpp @@ -26,18 +26,18 @@ #include "config.hpp" #include "ut.hpp" -#include "epoll/event-poll.hpp" +#include "ipc/epoll/event-poll.hpp" #include "logger/logger.hpp" #include "ipc/internals/socket.hpp" #include "utils/value-latch.hpp" #include "utils/glib-loop.hpp" -#include "epoll/glib-dispatcher.hpp" -#include "epoll/thread-dispatcher.hpp" +#include "ipc/epoll/glib-dispatcher.hpp" +#include "ipc/epoll/thread-dispatcher.hpp" using namespace vasum; -using namespace vasum::utils; -using namespace vasum::epoll; -using namespace vasum::ipc; +using namespace utils; +using namespace ipc; +using namespace ipc::epoll; namespace { diff --git a/tests/unit_tests/ipc/ut-ipc.cpp b/tests/unit_tests/ipc/ut-ipc.cpp index 6f2765b..b5edbf7 100644 --- a/tests/unit_tests/ipc/ut-ipc.cpp +++ b/tests/unit_tests/ipc/ut-ipc.cpp @@ -34,8 +34,8 @@ #include "ipc/client.hpp" #include "ipc/types.hpp" #include "ipc/result.hpp" -#include "epoll/thread-dispatcher.hpp" -#include "epoll/glib-dispatcher.hpp" +#include "ipc/epoll/thread-dispatcher.hpp" +#include "ipc/epoll/glib-dispatcher.hpp" #include "utils/glib-loop.hpp" #include "utils/latch.hpp" #include "utils/value-latch.hpp" @@ -52,9 +52,9 @@ #include using namespace vasum; -using namespace vasum::ipc; -using namespace vasum::epoll; -using namespace vasum::utils; +using namespace ipc; +using namespace epoll; +using namespace utils; using namespace std::placeholders; // Timeout for sending one message diff --git a/tests/unit_tests/ipc/ut-socket.cpp b/tests/unit_tests/ipc/ut-socket.cpp index 6f78f90..c2577ee 100644 --- a/tests/unit_tests/ipc/ut-socket.cpp +++ b/tests/unit_tests/ipc/ut-socket.cpp @@ -29,7 +29,7 @@ #include -using namespace vasum::ipc; +using namespace ipc; BOOST_AUTO_TEST_SUITE(SocketSuite) diff --git a/tests/unit_tests/server/ut-input-monitor.cpp b/tests/unit_tests/server/ut-input-monitor.cpp index 454a307..22fba47 100644 --- a/tests/unit_tests/server/ut-input-monitor.cpp +++ b/tests/unit_tests/server/ut-input-monitor.cpp @@ -46,7 +46,7 @@ using namespace vasum; -using namespace vasum::utils; +using namespace utils; namespace { diff --git a/tests/unit_tests/server/ut-server.cpp b/tests/unit_tests/server/ut-server.cpp index 8466f19..600b271 100644 --- a/tests/unit_tests/server/ut-server.cpp +++ b/tests/unit_tests/server/ut-server.cpp @@ -37,6 +37,11 @@ #include #include +using namespace utils; +using namespace vasum; +using namespace config; + + namespace { const std::string CONFIG_DIR = VSM_TEST_CONFIG_INSTALL_DIR "/server/ut-server"; @@ -48,7 +53,7 @@ const std::string ZONES_PATH = "/tmp/ut-zones"; // the same as in daemon.conf const bool AS_ROOT = true; struct Fixture { - vasum::utils::ScopedDir mZonesPathGuard; + utils::ScopedDir mZonesPathGuard; Fixture() : mZonesPathGuard(ZONES_PATH) @@ -59,8 +64,8 @@ struct Fixture { void prepare() { - vasum::utils::ScopedGlibLoop loop; - vasum::ZonesManager manager(TEST_CONFIG_PATH); + ScopedGlibLoop loop; + ZonesManager manager(TEST_CONFIG_PATH); manager.createZone("zone1", TEMPLATE_NAME); manager.createZone("zone2", TEMPLATE_NAME); manager.restoreAll(); @@ -70,9 +75,6 @@ struct Fixture { BOOST_FIXTURE_TEST_SUITE(ServerSuite, Fixture) -using namespace vasum; -using namespace config; - BOOST_AUTO_TEST_CASE(ConstructorDestructor) { std::unique_ptr s; diff --git a/tests/unit_tests/server/ut-zone-provision.cpp b/tests/unit_tests/server/ut-zone-provision.cpp index d6a5955..65a5b91 100644 --- a/tests/unit_tests/server/ut-zone-provision.cpp +++ b/tests/unit_tests/server/ut-zone-provision.cpp @@ -42,6 +42,7 @@ #include using namespace vasum; +using namespace utils; using namespace config; namespace fs = boost::filesystem; diff --git a/tests/unit_tests/server/ut-zone.cpp b/tests/unit_tests/server/ut-zone.cpp index 2aed285..755aa52 100644 --- a/tests/unit_tests/server/ut-zone.cpp +++ b/tests/unit_tests/server/ut-zone.cpp @@ -45,6 +45,7 @@ #include #include +using namespace utils; using namespace vasum; using namespace vasum::netdev; using namespace config; @@ -63,9 +64,9 @@ const std::string BRIDGE_NAME = "brtest01"; const std::string ZONE_NETDEV = "netdevtest01"; struct Fixture { - utils::ScopedGlibLoop mLoop; - utils::ScopedDir mZonesPathGuard; - utils::ScopedDir mRunGuard; + ScopedGlibLoop mLoop; + ScopedDir mZonesPathGuard; + ScopedDir mRunGuard; std::string mBridgeName; Fixture() diff --git a/tests/unit_tests/server/ut-zones-manager.cpp b/tests/unit_tests/server/ut-zones-manager.cpp index e052117..f7a4351 100644 --- a/tests/unit_tests/server/ut-zones-manager.cpp +++ b/tests/unit_tests/server/ut-zones-manager.cpp @@ -37,7 +37,7 @@ #endif //DBUS_CONNECTION #include "host-ipc-definitions.hpp" #include -#include +#include #include #include "exception.hpp" @@ -61,7 +61,7 @@ using namespace vasum; using namespace config; -using namespace vasum::utils; +using namespace utils; #ifdef DBUS_CONNECTION using namespace dbus; #endif //DBUS_CONNECTION @@ -599,7 +599,7 @@ public: } private: - epoll::ThreadDispatcher mDispatcher; + ipc::epoll::ThreadDispatcher mDispatcher; ipc::Client mClient; }; @@ -619,10 +619,10 @@ bool spinWaitFor(int timeoutMs, Predicate pred) } // namespace struct Fixture { - vasum::utils::ScopedGlibLoop mLoop; + ScopedGlibLoop mLoop; - utils::ScopedDir mZonesPathGuard; - utils::ScopedDir mRunGuard; + ScopedDir mZonesPathGuard; + ScopedDir mRunGuard; Fixture() : mZonesPathGuard(ZONES_PATH) diff --git a/tests/unit_tests/socket_test_service/socket-test.cpp b/tests/unit_tests/socket_test_service/socket-test.cpp index 2f163af..1ffc09e 100644 --- a/tests/unit_tests/socket_test_service/socket-test.cpp +++ b/tests/unit_tests/socket_test_service/socket-test.cpp @@ -36,7 +36,7 @@ #include using namespace vasum::socket_test; -using namespace vasum::ipc; +using namespace ipc; using namespace logger; // NOTE this is a single-usage program, only meant to test vasum::ipc::Socket module. diff --git a/tests/unit_tests/utils/scoped-daemon.cpp b/tests/unit_tests/utils/scoped-daemon.cpp index 19f252c..6dbe93f 100644 --- a/tests/unit_tests/utils/scoped-daemon.cpp +++ b/tests/unit_tests/utils/scoped-daemon.cpp @@ -35,7 +35,6 @@ #include -namespace vasum { namespace utils { @@ -179,4 +178,3 @@ void ScopedDaemon::stop() } // namespace utils -} // namespace vasum diff --git a/tests/unit_tests/utils/scoped-daemon.hpp b/tests/unit_tests/utils/scoped-daemon.hpp index 7d67c00..d263b4d 100644 --- a/tests/unit_tests/utils/scoped-daemon.hpp +++ b/tests/unit_tests/utils/scoped-daemon.hpp @@ -28,7 +28,6 @@ #include -namespace vasum { namespace utils { @@ -62,7 +61,6 @@ private: } // namespace utils -} // namespace vasum #endif // UNIT_TESTS_UTILS_SCOPED_DAEMON_HPP diff --git a/tests/unit_tests/utils/scoped-dir.cpp b/tests/unit_tests/utils/scoped-dir.cpp index 48b354b..ddec9b6 100644 --- a/tests/unit_tests/utils/scoped-dir.cpp +++ b/tests/unit_tests/utils/scoped-dir.cpp @@ -29,7 +29,6 @@ #include -namespace vasum { namespace utils { namespace fs = boost::filesystem; @@ -67,4 +66,3 @@ void ScopedDir::remove() } } // namespace utils -} // namespace vasum diff --git a/tests/unit_tests/utils/scoped-dir.hpp b/tests/unit_tests/utils/scoped-dir.hpp index c42dbe7..625954e 100644 --- a/tests/unit_tests/utils/scoped-dir.hpp +++ b/tests/unit_tests/utils/scoped-dir.hpp @@ -28,7 +28,6 @@ #include -namespace vasum { namespace utils { @@ -58,7 +57,6 @@ private: } // namespace utils -} // namespace vasum #endif // UNIT_TESTS_UTILS_SCOPED_DIR_HPP diff --git a/tests/unit_tests/utils/ut-callback-guard.cpp b/tests/unit_tests/utils/ut-callback-guard.cpp index 524c7d5..557d8f0 100644 --- a/tests/unit_tests/utils/ut-callback-guard.cpp +++ b/tests/unit_tests/utils/ut-callback-guard.cpp @@ -32,10 +32,9 @@ #include #include - BOOST_AUTO_TEST_SUITE(CallbackGuardSuite) -using namespace vasum::utils; +using namespace utils; const int unsigned TIMEOUT = 1000; diff --git a/tests/unit_tests/utils/ut-counting-map.cpp b/tests/unit_tests/utils/ut-counting-map.cpp index 04832db..55a0a55 100644 --- a/tests/unit_tests/utils/ut-counting-map.cpp +++ b/tests/unit_tests/utils/ut-counting-map.cpp @@ -30,7 +30,7 @@ BOOST_AUTO_TEST_SUITE(CountingMapSuite) -using namespace vasum::utils; +using namespace utils; BOOST_AUTO_TEST_CASE(Counting) { diff --git a/tests/unit_tests/utils/ut-fs.cpp b/tests/unit_tests/utils/ut-fs.cpp index cbbe14b..2cc32d0 100644 --- a/tests/unit_tests/utils/ut-fs.cpp +++ b/tests/unit_tests/utils/ut-fs.cpp @@ -34,8 +34,7 @@ #include #include -using namespace vasum; -using namespace vasum::utils; +using namespace utils; namespace { diff --git a/tests/unit_tests/utils/ut-glib-loop.cpp b/tests/unit_tests/utils/ut-glib-loop.cpp index 467fbfb..fb0292e 100644 --- a/tests/unit_tests/utils/ut-glib-loop.cpp +++ b/tests/unit_tests/utils/ut-glib-loop.cpp @@ -32,8 +32,7 @@ BOOST_AUTO_TEST_SUITE(GlibLoopSuite) -using namespace vasum; -using namespace vasum::utils; +using namespace utils; namespace { diff --git a/tests/unit_tests/utils/ut-paths.cpp b/tests/unit_tests/utils/ut-paths.cpp index e14da13..00120e8 100644 --- a/tests/unit_tests/utils/ut-paths.cpp +++ b/tests/unit_tests/utils/ut-paths.cpp @@ -32,7 +32,7 @@ BOOST_AUTO_TEST_SUITE(UtilsPathsSuite) -using namespace vasum::utils; +using namespace utils; BOOST_AUTO_TEST_CASE(CreateFilePath) { diff --git a/tests/unit_tests/utils/ut-same-thread-guard.cpp b/tests/unit_tests/utils/ut-same-thread-guard.cpp index 463c07d..f2ec471 100644 --- a/tests/unit_tests/utils/ut-same-thread-guard.cpp +++ b/tests/unit_tests/utils/ut-same-thread-guard.cpp @@ -33,7 +33,7 @@ BOOST_AUTO_TEST_SUITE(SameThreadGuardSuite) -using namespace vasum::utils; +using namespace utils; BOOST_AUTO_TEST_CASE(Simple) { diff --git a/tests/unit_tests/utils/ut-value-latch.cpp b/tests/unit_tests/utils/ut-value-latch.cpp index 2b09967..aa5b3a0 100644 --- a/tests/unit_tests/utils/ut-value-latch.cpp +++ b/tests/unit_tests/utils/ut-value-latch.cpp @@ -33,7 +33,7 @@ BOOST_AUTO_TEST_SUITE(ValueLatchSuite) -using namespace vasum::utils; +using namespace utils; namespace { @@ -106,7 +106,7 @@ BOOST_AUTO_TEST_CASE(Timeout) ValueLatch testLatch; BOOST_REQUIRE_EXCEPTION(testLatch.get(EXPECTED_TIMEOUT), - vasum::UtilsException, + UtilsException, WhatEquals("Timeout occured")); } @@ -116,7 +116,7 @@ BOOST_AUTO_TEST_CASE(MultipleSet) testLatch.set(3); BOOST_REQUIRE_EXCEPTION(testLatch.set(2), - vasum::UtilsException, + UtilsException, WhatEquals("Cannot set value multiple times")); } @@ -127,7 +127,7 @@ BOOST_AUTO_TEST_CASE(MultipleGet) testLatch.set(3); testLatch.get(TIMEOUT); BOOST_REQUIRE_EXCEPTION(testLatch.get(EXPECTED_TIMEOUT), - vasum::UtilsException, + UtilsException, WhatEquals("Timeout occured")); } diff --git a/tests/unit_tests/utils/ut-worker.cpp b/tests/unit_tests/utils/ut-worker.cpp index da2a96d..52c14fd 100644 --- a/tests/unit_tests/utils/ut-worker.cpp +++ b/tests/unit_tests/utils/ut-worker.cpp @@ -33,9 +33,9 @@ #include #include -BOOST_AUTO_TEST_SUITE(WorkerSuite) +using namespace utils; -using namespace vasum::utils; +BOOST_AUTO_TEST_SUITE(WorkerSuite) const int unsigned TIMEOUT = 1000; -- 2.7.4 From fbdc75348bf89310c30e862db8aec803b8309cc5 Mon Sep 17 00:00:00 2001 From: Mateusz Malicki Date: Thu, 14 May 2015 14:32:52 +0200 Subject: [PATCH 12/16] libIpc separated from vasum #2/2 [Feature] libIpc separated from vasum; [Cause] N/A [Solution] Some header files from utils are copied to libIpc-devel rpm package (they can conflict with libSimpleDbus-devel header files) [Verification] Build, install, run tests Change-Id: Ic89a6e1d2a7a4cbb48112eef226b11cd10eb7987 --- CMakeLists.txt | 2 + cli/CMakeLists.txt | 2 +- client/CMakeLists.txt | 8 +-- common/netlink/netlink.cpp | 1 + common/utils/eventfd.cpp | 2 - common/utils/exception.hpp | 7 +- common/utils/fd-utils.cpp | 2 - common/utils/file-wait.cpp | 2 - common/utils/fs.cpp | 2 - libs/ipc/CMakeLists.txt | 78 ++++++++++++++++++++++ {common => libs}/ipc/client.cpp | 0 {common => libs}/ipc/client.hpp | 0 {common => libs}/ipc/epoll/event-poll.cpp | 1 - {common => libs}/ipc/epoll/event-poll.hpp | 0 {common => libs}/ipc/epoll/events.cpp | 0 {common => libs}/ipc/epoll/events.hpp | 0 {common => libs}/ipc/epoll/glib-dispatcher.cpp | 0 {common => libs}/ipc/epoll/glib-dispatcher.hpp | 0 {common => libs}/ipc/epoll/thread-dispatcher.cpp | 0 {common => libs}/ipc/epoll/thread-dispatcher.hpp | 0 {common => libs}/ipc/exception.hpp | 6 +- {common => libs}/ipc/internals/acceptor.cpp | 0 {common => libs}/ipc/internals/acceptor.hpp | 0 .../ipc/internals/add-peer-request.hpp | 0 {common => libs}/ipc/internals/event-queue.hpp | 0 {common => libs}/ipc/internals/finish-request.hpp | 0 {common => libs}/ipc/internals/method-request.hpp | 0 {common => libs}/ipc/internals/processor.cpp | 0 {common => libs}/ipc/internals/processor.hpp | 0 .../ipc/internals/remove-peer-request.hpp | 0 {common => libs}/ipc/internals/request-queue.hpp | 0 {common => libs}/ipc/internals/result-builder.hpp | 0 .../ipc/internals/send-result-request.hpp | 0 {common => libs}/ipc/internals/signal-request.hpp | 0 {common => libs}/ipc/internals/socket.cpp | 0 {common => libs}/ipc/internals/socket.hpp | 0 {common => libs}/ipc/ipc-gsource.cpp | 0 {common => libs}/ipc/ipc-gsource.hpp | 0 libs/ipc/libIpc.pc.in | 13 ++++ {common => libs}/ipc/method-result.cpp | 0 {common => libs}/ipc/method-result.hpp | 0 {common => libs}/ipc/result.hpp | 0 {common => libs}/ipc/service.cpp | 0 {common => libs}/ipc/service.hpp | 0 {common => libs}/ipc/types.cpp | 0 {common => libs}/ipc/types.hpp | 0 packaging/vasum.spec | 34 ++++++++++ server/CMakeLists.txt | 2 +- server/zones-manager.cpp | 30 ++++----- tests/unit_tests/CMakeLists.txt | 4 +- tests/unit_tests/epoll/ut-event-poll.cpp | 1 - tests/unit_tests/ipc/ut-ipc.cpp | 1 - 52 files changed, 156 insertions(+), 42 deletions(-) create mode 100644 libs/ipc/CMakeLists.txt rename {common => libs}/ipc/client.cpp (100%) rename {common => libs}/ipc/client.hpp (100%) rename {common => libs}/ipc/epoll/event-poll.cpp (99%) rename {common => libs}/ipc/epoll/event-poll.hpp (100%) rename {common => libs}/ipc/epoll/events.cpp (100%) rename {common => libs}/ipc/epoll/events.hpp (100%) rename {common => libs}/ipc/epoll/glib-dispatcher.cpp (100%) rename {common => libs}/ipc/epoll/glib-dispatcher.hpp (100%) rename {common => libs}/ipc/epoll/thread-dispatcher.cpp (100%) rename {common => libs}/ipc/epoll/thread-dispatcher.hpp (100%) rename {common => libs}/ipc/exception.hpp (95%) rename {common => libs}/ipc/internals/acceptor.cpp (100%) rename {common => libs}/ipc/internals/acceptor.hpp (100%) rename {common => libs}/ipc/internals/add-peer-request.hpp (100%) rename {common => libs}/ipc/internals/event-queue.hpp (100%) rename {common => libs}/ipc/internals/finish-request.hpp (100%) rename {common => libs}/ipc/internals/method-request.hpp (100%) rename {common => libs}/ipc/internals/processor.cpp (100%) rename {common => libs}/ipc/internals/processor.hpp (100%) rename {common => libs}/ipc/internals/remove-peer-request.hpp (100%) rename {common => libs}/ipc/internals/request-queue.hpp (100%) rename {common => libs}/ipc/internals/result-builder.hpp (100%) rename {common => libs}/ipc/internals/send-result-request.hpp (100%) rename {common => libs}/ipc/internals/signal-request.hpp (100%) rename {common => libs}/ipc/internals/socket.cpp (100%) rename {common => libs}/ipc/internals/socket.hpp (100%) rename {common => libs}/ipc/ipc-gsource.cpp (100%) rename {common => libs}/ipc/ipc-gsource.hpp (100%) create mode 100644 libs/ipc/libIpc.pc.in rename {common => libs}/ipc/method-result.cpp (100%) rename {common => libs}/ipc/method-result.hpp (100%) rename {common => libs}/ipc/result.hpp (100%) rename {common => libs}/ipc/service.cpp (100%) rename {common => libs}/ipc/service.hpp (100%) rename {common => libs}/ipc/types.cpp (100%) rename {common => libs}/ipc/types.hpp (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index a0b6b1b..d42f496 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -142,6 +142,7 @@ SET(LIBS_FOLDER ${PROJECT_SOURCE_DIR}/libs) SET(LOGGER_FOLDER ${PROJECT_SOURCE_DIR}/libs/logger) SET(DBUS_FOLDER ${PROJECT_SOURCE_DIR}/libs/dbus) SET(CONFIG_FOLDER ${PROJECT_SOURCE_DIR}/libs/config) +SET(IPC_FOLDER ${PROJECT_SOURCE_DIR}/libs/ipc) SET(CLIENT_FOLDER ${PROJECT_SOURCE_DIR}/client) SET(SERVER_FOLDER ${PROJECT_SOURCE_DIR}/server) SET(ZONE_SUPPORT_FOLDER ${PROJECT_SOURCE_DIR}/zone-support) @@ -185,6 +186,7 @@ SET(VSM_UNIT_TESTS_IPC_SOCKET_PATH /var/run/vasum-ipc-unit-tests.socket) ADD_SUBDIRECTORY(${LOGGER_FOLDER}) ADD_SUBDIRECTORY(${DBUS_FOLDER}) ADD_SUBDIRECTORY(${CONFIG_FOLDER}) +ADD_SUBDIRECTORY(${IPC_FOLDER}) ADD_SUBDIRECTORY(${CLIENT_FOLDER}) ADD_SUBDIRECTORY(${SERVER_FOLDER}) ADD_SUBDIRECTORY(${ZONE_SUPPORT_FOLDER}) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 957faff..f8ad183 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -31,7 +31,7 @@ PKG_CHECK_MODULES(LIB_DEPS REQUIRED vasum) INCLUDE_DIRECTORIES(${CLIENT_FOLDER}) INCLUDE_DIRECTORIES(${COMMON_FOLDER}) -TARGET_LINK_LIBRARIES(${CLI_CODENAME} ${PROJECT_NAME}-client ${LIB_DEPS_LIBRARIES}) +TARGET_LINK_LIBRARIES(${CLI_CODENAME} ${PROJECT_NAME}-client ${LIB_DEPS_LIBRARIES} Ipc) CONFIGURE_FILE(support/vasum-cli-completion.sh.in ${CMAKE_BINARY_DIR}/vasum-cli-completion.sh diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index e08c79b..56ed2e7 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -22,10 +22,7 @@ MESSAGE(STATUS "") MESSAGE(STATUS "Generating makefile for the Client...") FILE(GLOB project_SRCS *.cpp *.hpp *.h) -FILE(GLOB common_SRCS ${COMMON_FOLDER}/ipc/epoll/*.hpp ${COMMON_FOLDER}/ipc/epoll/*.cpp - ${COMMON_FOLDER}/ipc/*.hpp ${COMMON_FOLDER}/ipc/*.cpp - ${COMMON_FOLDER}/ipc/internals/*.hpp ${COMMON_FOLDER}/ipc/internals/*.cpp - ${COMMON_FOLDER}/utils/*.hpp ${COMMON_FOLDER}/utils/*.cpp +FILE(GLOB common_SRCS ${COMMON_FOLDER}/utils/*.hpp ${COMMON_FOLDER}/utils/*.cpp ${COMMON_FOLDER}/*.hpp ${COMMON_FOLDER}/*.cpp) SET(_LIB_VERSION_ "${VERSION}") @@ -51,9 +48,10 @@ PKG_CHECK_MODULES(LIB_DEPS REQUIRED gio-2.0 libsystemd-daemon libcap-ng) INCLUDE_DIRECTORIES(SYSTEM ${LIB_DEPS_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS}) INCLUDE_DIRECTORIES(${COMMON_FOLDER}) INCLUDE_DIRECTORIES(${LIBS_FOLDER}) +INCLUDE_DIRECTORIES(${IPC_FOLDER}) INCLUDE_DIRECTORIES(${SERVER_FOLDER}) TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${LIB_DEPS_LIBRARIES} ${Boost_LIBRARIES} - Config SimpleDbus) + Config SimpleDbus Ipc) ## Generate the pc file ######################################################## CONFIGURE_FILE(${PC_FILE}.in ${CMAKE_BINARY_DIR}/${PC_FILE} @ONLY) diff --git a/common/netlink/netlink.cpp b/common/netlink/netlink.cpp index 633276a..6dd0ae5 100644 --- a/common/netlink/netlink.cpp +++ b/common/netlink/netlink.cpp @@ -28,6 +28,7 @@ #include "utils/exception.hpp" #include "utils/make-clean.hpp" #include "utils/environment.hpp" +#include "base-exception.hpp" #include #include diff --git a/common/utils/eventfd.cpp b/common/utils/eventfd.cpp index a1b45e9..9af1114 100644 --- a/common/utils/eventfd.cpp +++ b/common/utils/eventfd.cpp @@ -34,8 +34,6 @@ #include #include -using namespace vasum; - namespace utils { EventFD::EventFD() diff --git a/common/utils/exception.hpp b/common/utils/exception.hpp index 49aceb8..ca5564a 100644 --- a/common/utils/exception.hpp +++ b/common/utils/exception.hpp @@ -26,8 +26,7 @@ #ifndef COMMON_UTILS_EXCEPTION_HPP #define COMMON_UTILS_EXCEPTION_HPP -#include "base-exception.hpp" - +#include namespace utils { @@ -35,9 +34,9 @@ namespace utils { /** * Base class for exceptions in utils */ -struct UtilsException: public vasum::VasumException { +struct UtilsException: public std::runtime_error { - UtilsException(const std::string& error) : vasum::VasumException(error) {} + UtilsException(const std::string& error) : std::runtime_error(error) {} }; /** diff --git a/common/utils/fd-utils.cpp b/common/utils/fd-utils.cpp index 95080ff..d5179b1 100644 --- a/common/utils/fd-utils.cpp +++ b/common/utils/fd-utils.cpp @@ -39,8 +39,6 @@ namespace fs = boost::filesystem; namespace chr = std::chrono; -using namespace vasum; - namespace utils { namespace { diff --git a/common/utils/file-wait.cpp b/common/utils/file-wait.cpp index 4949314..b1d9a4f 100644 --- a/common/utils/file-wait.cpp +++ b/common/utils/file-wait.cpp @@ -30,8 +30,6 @@ #include #include -using namespace vasum; - namespace utils { diff --git a/common/utils/fs.cpp b/common/utils/fs.cpp index 5581a29..a093c9e 100644 --- a/common/utils/fs.cpp +++ b/common/utils/fs.cpp @@ -45,8 +45,6 @@ namespace fs = boost::filesystem; -using namespace vasum; - namespace utils { diff --git a/libs/ipc/CMakeLists.txt b/libs/ipc/CMakeLists.txt new file mode 100644 index 0000000..d760883 --- /dev/null +++ b/libs/ipc/CMakeLists.txt @@ -0,0 +1,78 @@ +# Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# @file CMakeLists.txt +# @author Mateusz Malicki (m.malicki2@samsung.com) +# + +PROJECT(Ipc) + +MESSAGE(STATUS "") +MESSAGE(STATUS "Generating makefile for the libIpc...") + +FILE(GLOB HEADERS *.hpp) +FILE(GLOB HEADERS_INTERNALS internals/*.hpp) +FILE(GLOB HEADERS_EPOLL epoll/*.hpp) +FILE(GLOB HEADERS_UTILS ${COMMON_FOLDER}/utils/fd-utils.hpp + ${COMMON_FOLDER}/utils/eventfd.hpp + ${COMMON_FOLDER}/utils/exception.hpp + ${COMMON_FOLDER}/utils/callback-guard.hpp) +FILE(GLOB SRCS *.cpp) +FILE(GLOB SRCS_INTERNALS internals/*.cpp) +FILE(GLOB SRCS_EPOLL epoll/*.cpp) +FILE(GLOB SRCS_UTILS ${COMMON_FOLDER}/utils/fd-utils.cpp + ${COMMON_FOLDER}/utils/eventfd.cpp + ${COMMON_FOLDER}/utils/exception.cpp + ${COMMON_FOLDER}/utils/callback-guard.cpp) + +SET(_LIB_VERSION_ "${VERSION}") +SET(_LIB_SOVERSION_ "0") +SET(PC_FILE "lib${PROJECT_NAME}.pc") + +## Setup target ################################################################ +ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS} ${SRCS_INTERNALS} ${SRCS_UTILS} ${SRCS_EPOLL}) +SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES + SOVERSION ${_LIB_SOVERSION_} + VERSION ${_LIB_VERSION_} + ) + +## Link libraries ############################################################## +INCLUDE_DIRECTORIES(${LIBS_FOLDER}) +INCLUDE_DIRECTORIES(${COMMON_FOLDER}) +INCLUDE_DIRECTORIES(SYSTEM ${DBUS_DEPS_INCLUDE_DIRS}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} Logger Config) + +## Generate the pc file ######################################################## +CONFIGURE_FILE(${PC_FILE}.in ${CMAKE_CURRENT_BINARY_DIR}/${PC_FILE} @ONLY) + +## Install ##################################################################### +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PC_FILE} + DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) + +INSTALL(TARGETS ${PROJECT_NAME} + DESTINATION ${LIB_INSTALL_DIR} + COMPONENT RuntimeLibraries) + +INSTALL(FILES ${HEADERS} + DESTINATION ${INCLUDE_INSTALL_DIR}/vasum-tools/ipc) + +INSTALL(FILES ${HEADERS_INTERNALS} + DESTINATION ${INCLUDE_INSTALL_DIR}/vasum-tools/ipc/internals) + +INSTALL(FILES ${HEADERS_EPOLL} + DESTINATION ${INCLUDE_INSTALL_DIR}/vasum-tools/ipc/epoll) + +INSTALL(FILES ${HEADERS_UTILS} + DESTINATION ${INCLUDE_INSTALL_DIR}/vasum-tools/ipc/utils) diff --git a/common/ipc/client.cpp b/libs/ipc/client.cpp similarity index 100% rename from common/ipc/client.cpp rename to libs/ipc/client.cpp diff --git a/common/ipc/client.hpp b/libs/ipc/client.hpp similarity index 100% rename from common/ipc/client.hpp rename to libs/ipc/client.hpp diff --git a/common/ipc/epoll/event-poll.cpp b/libs/ipc/epoll/event-poll.cpp similarity index 99% rename from common/ipc/epoll/event-poll.cpp rename to libs/ipc/epoll/event-poll.cpp index d43c97d..fb8470e 100644 --- a/common/ipc/epoll/event-poll.cpp +++ b/libs/ipc/epoll/event-poll.cpp @@ -33,7 +33,6 @@ #include #include -using namespace vasum; using namespace utils; namespace ipc { diff --git a/common/ipc/epoll/event-poll.hpp b/libs/ipc/epoll/event-poll.hpp similarity index 100% rename from common/ipc/epoll/event-poll.hpp rename to libs/ipc/epoll/event-poll.hpp diff --git a/common/ipc/epoll/events.cpp b/libs/ipc/epoll/events.cpp similarity index 100% rename from common/ipc/epoll/events.cpp rename to libs/ipc/epoll/events.cpp diff --git a/common/ipc/epoll/events.hpp b/libs/ipc/epoll/events.hpp similarity index 100% rename from common/ipc/epoll/events.hpp rename to libs/ipc/epoll/events.hpp diff --git a/common/ipc/epoll/glib-dispatcher.cpp b/libs/ipc/epoll/glib-dispatcher.cpp similarity index 100% rename from common/ipc/epoll/glib-dispatcher.cpp rename to libs/ipc/epoll/glib-dispatcher.cpp diff --git a/common/ipc/epoll/glib-dispatcher.hpp b/libs/ipc/epoll/glib-dispatcher.hpp similarity index 100% rename from common/ipc/epoll/glib-dispatcher.hpp rename to libs/ipc/epoll/glib-dispatcher.hpp diff --git a/common/ipc/epoll/thread-dispatcher.cpp b/libs/ipc/epoll/thread-dispatcher.cpp similarity index 100% rename from common/ipc/epoll/thread-dispatcher.cpp rename to libs/ipc/epoll/thread-dispatcher.cpp diff --git a/common/ipc/epoll/thread-dispatcher.hpp b/libs/ipc/epoll/thread-dispatcher.hpp similarity index 100% rename from common/ipc/epoll/thread-dispatcher.hpp rename to libs/ipc/epoll/thread-dispatcher.hpp diff --git a/common/ipc/exception.hpp b/libs/ipc/exception.hpp similarity index 95% rename from common/ipc/exception.hpp rename to libs/ipc/exception.hpp index 3d89d3b..271cf9a 100644 --- a/common/ipc/exception.hpp +++ b/libs/ipc/exception.hpp @@ -26,16 +26,16 @@ #ifndef COMMON_IPC_EXCEPTION_HPP #define COMMON_IPC_EXCEPTION_HPP -#include "base-exception.hpp" +#include namespace ipc { /** * Base class for exceptions in IPC */ -struct IPCException: public vasum::VasumException { +struct IPCException: public std::runtime_error { IPCException(const std::string& message) - : VasumException(message) {} + : std::runtime_error(message) {} }; struct IPCParsingException: public IPCException { diff --git a/common/ipc/internals/acceptor.cpp b/libs/ipc/internals/acceptor.cpp similarity index 100% rename from common/ipc/internals/acceptor.cpp rename to libs/ipc/internals/acceptor.cpp diff --git a/common/ipc/internals/acceptor.hpp b/libs/ipc/internals/acceptor.hpp similarity index 100% rename from common/ipc/internals/acceptor.hpp rename to libs/ipc/internals/acceptor.hpp diff --git a/common/ipc/internals/add-peer-request.hpp b/libs/ipc/internals/add-peer-request.hpp similarity index 100% rename from common/ipc/internals/add-peer-request.hpp rename to libs/ipc/internals/add-peer-request.hpp diff --git a/common/ipc/internals/event-queue.hpp b/libs/ipc/internals/event-queue.hpp similarity index 100% rename from common/ipc/internals/event-queue.hpp rename to libs/ipc/internals/event-queue.hpp diff --git a/common/ipc/internals/finish-request.hpp b/libs/ipc/internals/finish-request.hpp similarity index 100% rename from common/ipc/internals/finish-request.hpp rename to libs/ipc/internals/finish-request.hpp diff --git a/common/ipc/internals/method-request.hpp b/libs/ipc/internals/method-request.hpp similarity index 100% rename from common/ipc/internals/method-request.hpp rename to libs/ipc/internals/method-request.hpp diff --git a/common/ipc/internals/processor.cpp b/libs/ipc/internals/processor.cpp similarity index 100% rename from common/ipc/internals/processor.cpp rename to libs/ipc/internals/processor.cpp diff --git a/common/ipc/internals/processor.hpp b/libs/ipc/internals/processor.hpp similarity index 100% rename from common/ipc/internals/processor.hpp rename to libs/ipc/internals/processor.hpp diff --git a/common/ipc/internals/remove-peer-request.hpp b/libs/ipc/internals/remove-peer-request.hpp similarity index 100% rename from common/ipc/internals/remove-peer-request.hpp rename to libs/ipc/internals/remove-peer-request.hpp diff --git a/common/ipc/internals/request-queue.hpp b/libs/ipc/internals/request-queue.hpp similarity index 100% rename from common/ipc/internals/request-queue.hpp rename to libs/ipc/internals/request-queue.hpp diff --git a/common/ipc/internals/result-builder.hpp b/libs/ipc/internals/result-builder.hpp similarity index 100% rename from common/ipc/internals/result-builder.hpp rename to libs/ipc/internals/result-builder.hpp diff --git a/common/ipc/internals/send-result-request.hpp b/libs/ipc/internals/send-result-request.hpp similarity index 100% rename from common/ipc/internals/send-result-request.hpp rename to libs/ipc/internals/send-result-request.hpp diff --git a/common/ipc/internals/signal-request.hpp b/libs/ipc/internals/signal-request.hpp similarity index 100% rename from common/ipc/internals/signal-request.hpp rename to libs/ipc/internals/signal-request.hpp diff --git a/common/ipc/internals/socket.cpp b/libs/ipc/internals/socket.cpp similarity index 100% rename from common/ipc/internals/socket.cpp rename to libs/ipc/internals/socket.cpp diff --git a/common/ipc/internals/socket.hpp b/libs/ipc/internals/socket.hpp similarity index 100% rename from common/ipc/internals/socket.hpp rename to libs/ipc/internals/socket.hpp diff --git a/common/ipc/ipc-gsource.cpp b/libs/ipc/ipc-gsource.cpp similarity index 100% rename from common/ipc/ipc-gsource.cpp rename to libs/ipc/ipc-gsource.cpp diff --git a/common/ipc/ipc-gsource.hpp b/libs/ipc/ipc-gsource.hpp similarity index 100% rename from common/ipc/ipc-gsource.hpp rename to libs/ipc/ipc-gsource.hpp diff --git a/libs/ipc/libIpc.pc.in b/libs/ipc/libIpc.pc.in new file mode 100644 index 0000000..dbed433 --- /dev/null +++ b/libs/ipc/libIpc.pc.in @@ -0,0 +1,13 @@ +# Package Information for pkg-config + +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=@CMAKE_INSTALL_PREFIX@ +libdir=@LIB_INSTALL_DIR@ +includedir=@INCLUDE_INSTALL_DIR@ + +Name: libIpc +Description: IPC library +Version: @_LIB_VERSION_@ +Libs: -L${libdir} -lIpc +Cflags: -I${includedir}/vasum-tools -I${includedir}/vasum-tools/ipc + diff --git a/common/ipc/method-result.cpp b/libs/ipc/method-result.cpp similarity index 100% rename from common/ipc/method-result.cpp rename to libs/ipc/method-result.cpp diff --git a/common/ipc/method-result.hpp b/libs/ipc/method-result.hpp similarity index 100% rename from common/ipc/method-result.hpp rename to libs/ipc/method-result.hpp diff --git a/common/ipc/result.hpp b/libs/ipc/result.hpp similarity index 100% rename from common/ipc/result.hpp rename to libs/ipc/result.hpp diff --git a/common/ipc/service.cpp b/libs/ipc/service.cpp similarity index 100% rename from common/ipc/service.cpp rename to libs/ipc/service.cpp diff --git a/common/ipc/service.hpp b/libs/ipc/service.hpp similarity index 100% rename from common/ipc/service.hpp rename to libs/ipc/service.hpp diff --git a/common/ipc/types.cpp b/libs/ipc/types.cpp similarity index 100% rename from common/ipc/types.cpp rename to libs/ipc/types.cpp diff --git a/common/ipc/types.hpp b/libs/ipc/types.hpp similarity index 100% rename from common/ipc/types.hpp rename to libs/ipc/types.hpp diff --git a/packaging/vasum.spec b/packaging/vasum.spec index 0636c53..0f99f07 100644 --- a/packaging/vasum.spec +++ b/packaging/vasum.spec @@ -356,4 +356,38 @@ The package provides libConfig development tools and libs. %{_includedir}/vasum-tools/config %{_libdir}/pkgconfig/libConfig.pc +## libIpc Package ####################################################### +%package -n libIpc +Summary: IPC library +Group: Security/Other +Requires: libConfig +Requires(post): /sbin/ldconfig +Requires(postun): /sbin/ldconfig + +%description -n libIpc +The package provides libIpc library. +%post -n libIpc -p /sbin/ldconfig + +%postun -n libIpc -p /sbin/ldconfig + +%files -n libIpc +%defattr(644,root,root,755) +%{_libdir}/libIpc.so.0 +%attr(755,root,root) %{_libdir}/libIpc.so.%{version} + +%package -n libIpc-devel +Summary: Development IPC library +Group: Development/Libraries +Requires: libIpc = %{epoch}:%{version}-%{release} +Requires: pkgconfig(libLogger) +Requires: pkgconfig(libConfig) + +%description -n libIpc-devel +The package provides libIpc development tools and libs. + +%files -n libIpc-devel +%defattr(644,root,root,755) +%{_libdir}/libIpc.so +%{_includedir}/vasum-tools/ipc +%{_libdir}/pkgconfig/libIpc.pc diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt index c4e0d8f..6181e15 100644 --- a/server/CMakeLists.txt +++ b/server/CMakeLists.txt @@ -44,7 +44,7 @@ SET_TARGET_PROPERTIES(${SERVER_CODENAME} PROPERTIES ) TARGET_LINK_LIBRARIES(${SERVER_CODENAME} ${SERVER_DEPS_LIBRARIES} ${Boost_LIBRARIES} - Logger Config SimpleDbus) + Logger Config SimpleDbus Ipc) ## Subdirectories ############################################################## ADD_SUBDIRECTORY(configs) diff --git a/server/zones-manager.cpp b/server/zones-manager.cpp index c05b1be..3869a39 100644 --- a/server/zones-manager.cpp +++ b/server/zones-manager.cpp @@ -587,7 +587,7 @@ void ZonesManager::handleNotifyActiveZoneCall(const std::string& caller, //XXX:get(iter).sendNotification(caller, application, message); } result->setVoid(); - } catch (const VasumException&) { + } catch (const std::runtime_error&) { LOGE("Notification from " << caller << " hasn't been sent"); result->setError(api::ERROR_INTERNAL, "Notification hasn't been sent"); } @@ -820,7 +820,7 @@ void ZonesManager::handleSetNetdevAttrsCall(const api::SetNetDevAttrsIn& data, } catch (const InvalidZoneIdException&) { LOGE("No zone with id=" << data.id); result->setError(api::ERROR_INVALID_ID, "No such zone id"); - } catch (const VasumException& ex) { + } catch (const std::runtime_error& ex) { LOGE("Can't set attributes: " << ex.what()); result->setError(api::ERROR_INTERNAL, ex.what()); } @@ -842,7 +842,7 @@ void ZonesManager::handleGetNetdevAttrsCall(const api::GetNetDevAttrsIn& data, } catch (const InvalidZoneIdException&) { LOGE("No zone with id=" << data.first); result->setError(api::ERROR_INVALID_ID, "No such zone id"); - } catch (const VasumException& ex) { + } catch (const std::runtime_error& ex) { LOGE("Can't set attributes: " << ex.what()); result->setError(api::ERROR_INTERNAL, ex.what()); } @@ -860,7 +860,7 @@ void ZonesManager::handleGetNetdevListCall(const api::ZoneId& zoneId, } catch (const InvalidZoneIdException&) { LOGE("No zone with id=" << zoneId.value); result->setError(api::ERROR_INVALID_ID, "No such zone id"); - } catch (const VasumException& ex) { + } catch (const std::runtime_error& ex) { LOGE("Can't set attributes: " << ex.what()); result->setError(api::ERROR_INTERNAL, ex.what()); } @@ -878,7 +878,7 @@ void ZonesManager::handleCreateNetdevVethCall(const api::CreateNetDevVethIn& dat } catch (const InvalidZoneIdException&) { LOGE("No zone with id=" << data.id); result->setError(api::ERROR_INVALID_ID, "No such zone id"); - } catch (const VasumException& ex) { + } catch (const std::runtime_error& ex) { LOGE("Can't create veth: " << ex.what()); result->setError(api::ERROR_INTERNAL, ex.what()); } @@ -895,7 +895,7 @@ void ZonesManager::handleCreateNetdevMacvlanCall(const api::CreateNetDevMacvlanI } catch (const InvalidZoneIdException&) { LOGE("No zone with id=" << data.id); result->setError(api::ERROR_INVALID_ID, "No such zone id"); - } catch (const VasumException& ex) { + } catch (const std::runtime_error& ex) { LOGE("Can't create macvlan: " << ex.what()); result->setError(api::ERROR_INTERNAL, ex.what()); } @@ -913,7 +913,7 @@ void ZonesManager::handleCreateNetdevPhysCall(const api::CreateNetDevPhysIn& dat } catch (const InvalidZoneIdException&) { LOGE("No zone with id=" << data.first); result->setError(api::ERROR_INVALID_ID, "No such zone id"); - } catch (const VasumException& ex) { + } catch (const std::runtime_error& ex) { LOGE("Can't create netdev: " << ex.what()); result->setError(api::ERROR_INTERNAL, ex.what()); } @@ -931,7 +931,7 @@ void ZonesManager::handleDestroyNetdevCall(const api::DestroyNetDevIn& data, } catch (const InvalidZoneIdException&) { LOGE("No zone with id=" << data.first); result->setError(api::ERROR_INVALID_ID, "No such zone id"); - } catch (const VasumException& ex) { + } catch (const std::runtime_error& ex) { LOGE("Can't create netdev: " << ex.what()); result->setError(api::ERROR_INTERNAL, ex.what()); } @@ -948,7 +948,7 @@ void ZonesManager::handleDeleteNetdevIpAddressCall(const api::DeleteNetdevIpAddr } catch (const InvalidZoneIdException&) { LOGE("No zone with id=" << data.zone); result->setError(api::ERROR_INVALID_ID, "No such zone id"); - } catch (const VasumException& ex) { + } catch (const std::runtime_error& ex) { LOGE("Can't delete address: " << ex.what()); result->setError(api::ERROR_INTERNAL, ex.what()); } @@ -1022,7 +1022,7 @@ void ZonesManager::handleGetDeclarationsCall(const api::ZoneId& zoneId, } catch (const InvalidZoneIdException&) { LOGE("No zone with id=" << zoneId.value); result->setError(api::ERROR_INVALID_ID, "No such zone id"); - } catch (const VasumException& ex) { + } catch (const std::runtime_error& ex) { LOGE(ex.what()); result->setError(api::ERROR_INTERNAL, ex.what()); } @@ -1039,7 +1039,7 @@ void ZonesManager::handleRemoveDeclarationCall(const api::RemoveDeclarationIn& d } catch (const InvalidZoneIdException&) { LOGE("No zone with id=" << data.first); result->setError(api::ERROR_INVALID_ID, "No such zone id"); - } catch (const VasumException& ex) { + } catch (const std::runtime_error& ex) { LOGE(ex.what()); result->setError(api::ERROR_INTERNAL, ex.what()); } @@ -1179,7 +1179,7 @@ void ZonesManager::createZone(const std::string& id, try { LOGI("Generating config from " << zoneTemplatePath); generateNewConfig(id, zoneTemplatePath); - } catch (VasumException& e) { + } catch (std::runtime_error& e) { LOGE("Generate config failed: " << e.what()); utils::launchAsRoot(std::bind(removeAllWrapper, zonePathStr)); throw e; @@ -1188,7 +1188,7 @@ void ZonesManager::createZone(const std::string& id, LOGT("Creating new zone"); try { insertZone(id, zoneTemplatePath); - } catch (VasumException& e) { + } catch (std::runtime_error& e) { LOGE("Creating new zone failed: " << e.what()); utils::launchAsRoot(std::bind(removeAllWrapper, zonePathStr)); throw e; @@ -1207,7 +1207,7 @@ void ZonesManager::handleCreateZoneCall(const api::CreateZoneIn& data, result->setVoid(); } catch (const InvalidZoneIdException& e) { result->setError(api::ERROR_INVALID_ID, "Existing or invalid zone id"); - } catch (const VasumException& e) { + } catch (const std::runtime_error& e) { result->setError(api::ERROR_INTERNAL, "Failed to create zone"); } } @@ -1222,7 +1222,7 @@ void ZonesManager::handleDestroyZoneCall(const api::ZoneId& zoneId, } catch (const InvalidZoneIdException&) { LOGE("Failed to destroy zone - no such zone id: " << zoneId.value); result->setError(api::ERROR_INVALID_ID, "No such zone id"); - } catch (const VasumException& e) { + } catch (const std::runtime_error& e) { LOGE("Error during zone destruction: " << e.what()); result->setError(api::ERROR_INTERNAL, "Failed to destroy zone"); return; diff --git a/tests/unit_tests/CMakeLists.txt b/tests/unit_tests/CMakeLists.txt index 500e7af..a4e6cfd 100644 --- a/tests/unit_tests/CMakeLists.txt +++ b/tests/unit_tests/CMakeLists.txt @@ -66,9 +66,9 @@ SET_TARGET_PROPERTIES(${SOCKET_TEST_CODENAME} PROPERTIES ) TARGET_LINK_LIBRARIES(${UT_SERVER_CODENAME} ${UT_SERVER_DEPS_LIBRARIES} ${Boost_LIBRARIES} - Logger Config SimpleDbus) + Logger Config SimpleDbus Ipc) TARGET_LINK_LIBRARIES(${SOCKET_TEST_CODENAME} ${UT_SERVER_DEPS_LIBRARIES} ${Boost_LIBRARIES} - Logger Config SimpleDbus) + Logger Config SimpleDbus Ipc) ## Subdirectories ############################################################## SET(VSM_TEST_CONFIG_INSTALL_DIR ${VSM_CONFIG_INSTALL_DIR}/tests) diff --git a/tests/unit_tests/epoll/ut-event-poll.cpp b/tests/unit_tests/epoll/ut-event-poll.cpp index 819e959..9bf28f0 100644 --- a/tests/unit_tests/epoll/ut-event-poll.cpp +++ b/tests/unit_tests/epoll/ut-event-poll.cpp @@ -34,7 +34,6 @@ #include "ipc/epoll/glib-dispatcher.hpp" #include "ipc/epoll/thread-dispatcher.hpp" -using namespace vasum; using namespace utils; using namespace ipc; using namespace ipc::epoll; diff --git a/tests/unit_tests/ipc/ut-ipc.cpp b/tests/unit_tests/ipc/ut-ipc.cpp index b5edbf7..e71a160 100644 --- a/tests/unit_tests/ipc/ut-ipc.cpp +++ b/tests/unit_tests/ipc/ut-ipc.cpp @@ -51,7 +51,6 @@ #include #include -using namespace vasum; using namespace ipc; using namespace epoll; using namespace utils; -- 2.7.4 From f9dc55e105e8046563e1f2d0471de2d8238319fc Mon Sep 17 00:00:00 2001 From: Dariusz Michaluk Date: Wed, 13 May 2015 16:19:26 +0200 Subject: [PATCH 13/16] Cleanup daemon and zones configuration [Feature] Move unit tests configs to one directory. Remove unnecessary unit tests configs. Remove zoneTemplatePrefix from daemon config (zoneTemplateDir is used instead). Rename some configs. [Cause] N/A [Solution] N/A [Verification] Build, install, run tests, run server. Change-Id: Iabed6b7bfc1999296bcea89269195867d804c9ac --- packaging/vasum.spec | 8 ++- server/configs/daemon.conf.in | 1 - server/zone-admin.cpp | 4 +- server/zone-admin.hpp | 4 +- server/zone-config.hpp | 2 +- server/zone.cpp | 4 +- server/zone.hpp | 4 +- server/zones-manager-config.hpp | 6 -- server/zones-manager.cpp | 2 +- tests/unit_tests/CMakeLists.txt | 8 +-- tests/unit_tests/client/configs/CMakeLists.txt | 37 ---------- tests/unit_tests/client/ut-client.cpp | 2 +- tests/unit_tests/configs/CMakeLists.txt | 63 ++++++++++++++++ .../dbus-1/system.d/org.tizen.vasum.tests.conf | 0 .../dbus/ut-dbus-system.conf} | 0 .../ut-connection => configs/dbus}/ut-dbus.conf | 0 .../provision/test-provision.conf} | 0 .../configs/systemd/vasum-socket-test.service | 0 .../configs/systemd/vasum-socket-test.socket | 0 .../templates/buggy-init.conf} | 0 .../templates/buggy-template.conf} | 0 .../templates/console-dbus.conf.in | 4 +- .../templates/console-ipc.conf.in | 2 +- .../test.conf => configs/templates/default.conf} | 2 +- .../templates/minimal.sh} | 4 +- .../templates/missing.conf | 0 .../templates/test-no-shutdown.conf | 0 .../ut-client => configs}/test-daemon.conf.in | 7 +- .../configs/ut-fs => configs/utils}/file.txt | 0 tests/unit_tests/dbus/configs/CMakeLists.txt | 26 ------- tests/unit_tests/dbus/ut-connection.cpp | 2 +- tests/unit_tests/lxc/templates/CMakeLists.txt | 23 ------ tests/unit_tests/lxc/templates/minimal.sh | 76 -------------------- tests/unit_tests/server/configs/CMakeLists.txt | 83 ---------------------- .../configs/ut-server/templates/default.conf | 18 ----- .../server/configs/ut-server/test-daemon.conf.in | 17 ----- .../configs/ut-zone-admin/templates/test.conf | 18 ----- .../configs/ut-zone/templates/test-dbus.conf.in | 18 ----- .../unit_tests/server/configs/ut-zone/ut-dbus.conf | 18 ----- .../ut-zones-manager/templates/console.conf | 18 ----- .../configs/ut-zones-manager/test-daemon.conf.in | 22 ------ tests/unit_tests/server/ut-server.cpp | 2 +- tests/unit_tests/server/ut-zone-admin.cpp | 9 ++- tests/unit_tests/server/ut-zone-provision.cpp | 3 +- tests/unit_tests/server/ut-zone.cpp | 13 ++-- tests/unit_tests/server/ut-zones-manager.cpp | 4 +- .../socket_test_service/configs/CMakeLists.txt | 26 ------- tests/unit_tests/utils/configs/CMakeLists.txt | 26 ------- tests/unit_tests/utils/ut-fs.cpp | 2 +- 49 files changed, 106 insertions(+), 482 deletions(-) delete mode 100644 tests/unit_tests/client/configs/CMakeLists.txt create mode 100644 tests/unit_tests/configs/CMakeLists.txt rename tests/unit_tests/{server => }/configs/dbus-1/system.d/org.tizen.vasum.tests.conf (100%) rename tests/unit_tests/{server/configs/ut-zones-manager/ut-dbus.conf => configs/dbus/ut-dbus-system.conf} (100%) rename tests/unit_tests/{dbus/configs/ut-connection => configs/dbus}/ut-dbus.conf (100%) rename tests/unit_tests/{server/configs/ut-zone-provision/test.conf => configs/provision/test-provision.conf} (100%) rename tests/unit_tests/{socket_test_service => }/configs/systemd/vasum-socket-test.service (100%) rename tests/unit_tests/{socket_test_service => }/configs/systemd/vasum-socket-test.socket (100%) rename tests/unit_tests/{server/configs/ut-zone-admin/templates/buggy.conf => configs/templates/buggy-init.conf} (100%) rename tests/unit_tests/{server/configs/ut-zone/templates/buggy.conf => configs/templates/buggy-template.conf} (100%) rename tests/unit_tests/{client/configs/ut-client => configs}/templates/console-dbus.conf.in (76%) rename tests/unit_tests/{client/configs/ut-client => configs}/templates/console-ipc.conf.in (92%) rename tests/unit_tests/{server/configs/ut-zone/templates/test.conf => configs/templates/default.conf} (95%) rename tests/unit_tests/{lxc/templates/minimal-dbus.sh => configs/templates/minimal.sh} (96%) rename tests/unit_tests/{server/configs/ut-zone-admin => configs}/templates/missing.conf (100%) rename tests/unit_tests/{server/configs/ut-zone-admin => configs}/templates/test-no-shutdown.conf (100%) rename tests/unit_tests/{client/configs/ut-client => configs}/test-daemon.conf.in (76%) rename tests/unit_tests/{utils/configs/ut-fs => configs/utils}/file.txt (100%) delete mode 100644 tests/unit_tests/dbus/configs/CMakeLists.txt delete mode 100644 tests/unit_tests/lxc/templates/CMakeLists.txt delete mode 100755 tests/unit_tests/lxc/templates/minimal.sh delete mode 100644 tests/unit_tests/server/configs/CMakeLists.txt delete mode 100644 tests/unit_tests/server/configs/ut-server/templates/default.conf delete mode 100644 tests/unit_tests/server/configs/ut-server/test-daemon.conf.in delete mode 100644 tests/unit_tests/server/configs/ut-zone-admin/templates/test.conf delete mode 100644 tests/unit_tests/server/configs/ut-zone/templates/test-dbus.conf.in delete mode 100644 tests/unit_tests/server/configs/ut-zone/ut-dbus.conf delete mode 100644 tests/unit_tests/server/configs/ut-zones-manager/templates/console.conf delete mode 100644 tests/unit_tests/server/configs/ut-zones-manager/test-daemon.conf.in delete mode 100644 tests/unit_tests/socket_test_service/configs/CMakeLists.txt delete mode 100644 tests/unit_tests/utils/configs/CMakeLists.txt diff --git a/packaging/vasum.spec b/packaging/vasum.spec index 0f99f07..22a6363 100644 --- a/packaging/vasum.spec +++ b/packaging/vasum.spec @@ -246,8 +246,12 @@ systemctl daemon-reload %attr(755,root,root) %{script_dir}/vsm_int_tests.py %attr(755,root,root) %{script_dir}/vsm_launch_test.py %{script_dir}/vsm_test_parser.py -%config /etc/vasum/tests -%attr(755,root,root) /etc/vasum/tests/templates +%config /etc/vasum/tests/*.conf +%config /etc/vasum/tests/dbus/*.conf +%config /etc/vasum/tests/provision/*.conf +%config /etc/vasum/tests/templates/*.conf +%attr(755,root,root) /etc/vasum/tests/templates/*.sh +%config /etc/vasum/tests/utils/*.txt %{python_sitelib}/vsm_integration_tests %config /etc/dbus-1/system.d/org.tizen.vasum.tests.conf %{_unitdir}/vasum-socket-test.socket diff --git a/server/configs/daemon.conf.in b/server/configs/daemon.conf.in index 0800124..b94eb29 100644 --- a/server/configs/daemon.conf.in +++ b/server/configs/daemon.conf.in @@ -6,7 +6,6 @@ "zoneTemplateDir" : "/etc/vasum/templates/", "runMountPointPrefix" : "/var/run/zones", "defaultId" : "", - "zoneTemplatePrefix" : "/etc/vasum/templates", "availableVTs" : [3, 4, 5, 6], "inputConfig" : {"enabled" : true, "device" : "gpio_keys.6", diff --git a/server/zone-admin.cpp b/server/zone-admin.cpp index 473a11c..05d9c7d 100644 --- a/server/zone-admin.cpp +++ b/server/zone-admin.cpp @@ -46,7 +46,7 @@ const std::uint64_t DEFAULT_VCPU_PERIOD_MS = 100000; ZoneAdmin::ZoneAdmin(const std::string& zoneId, const std::string& zonesPath, - const std::string& zoneTemplatePrefix, + const std::string& zoneTemplateDir, const ZoneConfig& config, const ZoneDynamicConfig& dynamicConfig) : mConfig(config), @@ -61,7 +61,7 @@ ZoneAdmin::ZoneAdmin(const std::string& zoneId, if (!mZone.isDefined()) { const std::string zoneTemplate = utils::getAbsolutePath(config.zoneTemplate, - zoneTemplatePrefix); + zoneTemplateDir); LOGI(mId << ": Creating zone from template: " << zoneTemplate); utils::CStringArrayBuilder args; if (!dynamicConfig.ipv4Gateway.empty()) { diff --git a/server/zone-admin.hpp b/server/zone-admin.hpp index d154beb..ec4c7cd 100644 --- a/server/zone-admin.hpp +++ b/server/zone-admin.hpp @@ -47,13 +47,13 @@ public: * ZoneAdmin constructor * @param zoneId zone id * @param zonesPath directory where zones are defined (configs, rootfs etc) - * @param zoneTemplatePrefix directory where templates are stored + * @param zoneTemplateDir directory where templates are stored * @param config zones config * @param dynamicConfig zones dynamic config */ ZoneAdmin(const std::string& zoneId, const std::string& zonesPath, - const std::string& zoneTemplatePrefix, + const std::string& zoneTemplateDir, const ZoneConfig& config, const ZoneDynamicConfig& dynamicConfig); virtual ~ZoneAdmin(); diff --git a/server/zone-config.hpp b/server/zone-config.hpp index aad9159..01fc728 100644 --- a/server/zone-config.hpp +++ b/server/zone-config.hpp @@ -38,7 +38,7 @@ namespace vasum { struct ZoneConfig { /** - * Zone template name (relative to zoneTemplatePrefix) + * Zone template name (relative to zoneTemplateDir) */ std::string zoneTemplate; diff --git a/server/zone.cpp b/server/zone.cpp index a19fc6a..3fe0b12 100644 --- a/server/zone.cpp +++ b/server/zone.cpp @@ -56,7 +56,7 @@ Zone::Zone(const std::string& zoneId, const std::string& zonesPath, const std::string& zoneTemplatePath, const std::string& dbPath, - const std::string& zoneTemplatePrefix, + const std::string& zoneTemplateDir, const std::string& baseRunMountPointPath) : mDbPath(dbPath) { @@ -75,7 +75,7 @@ Zone::Zone(const std::string& zoneId, mRunMountPoint = fs::absolute(mDynamicConfig.runMountPoint, baseRunMountPointPath).string(); } - mAdmin.reset(new ZoneAdmin(zoneId, zonesPath, zoneTemplatePrefix, mConfig, mDynamicConfig)); + mAdmin.reset(new ZoneAdmin(zoneId, zonesPath, zoneTemplateDir, mConfig, mDynamicConfig)); const fs::path zonePath = fs::path(zonesPath) / zoneId; mRootPath = (zonePath / fs::path("rootfs")).string(); diff --git a/server/zone.hpp b/server/zone.hpp index ee1bf43..fb9f0c7 100644 --- a/server/zone.hpp +++ b/server/zone.hpp @@ -49,14 +49,14 @@ public: * @param zonesPath directory where zones are defined (configs, rootfs etc) * @param zoneTemplatePath path for zones config template * @param dbPath path to dynamic config db file - * @param zoneTemplatePrefix directory where templates are stored + * @param zoneTemplateDir directory where templates are stored * @param baseRunMountPointPath base directory for run mount point */ Zone(const std::string& zoneId, const std::string& zonesPath, const std::string& zoneTemplatePath, const std::string& dbPath, - const std::string& zoneTemplatePrefix, + const std::string& zoneTemplateDir, const std::string& baseRunMountPointPath); Zone(const Zone&) = delete; Zone& operator=(const Zone&) = delete; diff --git a/server/zones-manager-config.hpp b/server/zones-manager-config.hpp index b59cfc2..6e4625f 100644 --- a/server/zones-manager-config.hpp +++ b/server/zones-manager-config.hpp @@ -60,11 +60,6 @@ struct ZonesManagerConfig { std::string zoneTemplateDir; /** - * Path prefix for zone templates - */ - std::string zoneTemplatePrefix; - - /** * VTs available for zones */ std::vector availableVTs; @@ -90,7 +85,6 @@ struct ZonesManagerConfig { zonesPath, zoneImagePath, zoneTemplateDir, - zoneTemplatePrefix, availableVTs, inputConfig, runMountPointPrefix, diff --git a/server/zones-manager.cpp b/server/zones-manager.cpp index 3869a39..0762294 100644 --- a/server/zones-manager.cpp +++ b/server/zones-manager.cpp @@ -323,7 +323,7 @@ void ZonesManager::insertZone(const std::string& zoneId, const std::string& zone mConfig.zonesPath, zoneTemplatePath, mConfig.dbPath, - mConfig.zoneTemplatePrefix, + mConfig.zoneTemplateDir, mConfig.runMountPointPrefix)); mZones.push_back(std::move(zone)); diff --git a/tests/unit_tests/CMakeLists.txt b/tests/unit_tests/CMakeLists.txt index a4e6cfd..452a54a 100644 --- a/tests/unit_tests/CMakeLists.txt +++ b/tests/unit_tests/CMakeLists.txt @@ -76,13 +76,7 @@ SET(VSM_TEST_TEMPLATES_INSTALL_DIR ${VSM_CONFIG_INSTALL_DIR}/tests/templates) ADD_DEFINITIONS(-DVSM_TEST_CONFIG_INSTALL_DIR="${VSM_TEST_CONFIG_INSTALL_DIR}") ADD_DEFINITIONS(-DVSM_TEST_TEMPLATES_INSTALL_DIR="${VSM_TEST_TEMPLATES_INSTALL_DIR}") -ADD_SUBDIRECTORY(dbus/configs) -ADD_SUBDIRECTORY(server/configs) -ADD_SUBDIRECTORY(utils/configs) -ADD_SUBDIRECTORY(client/configs) -ADD_SUBDIRECTORY(lxc/templates) -ADD_SUBDIRECTORY(socket_test_service/configs) - +ADD_SUBDIRECTORY(configs) ## Install ##################################################################### INSTALL(TARGETS ${UT_SERVER_CODENAME} DESTINATION bin) diff --git a/tests/unit_tests/client/configs/CMakeLists.txt b/tests/unit_tests/client/configs/CMakeLists.txt deleted file mode 100644 index 64618ed..0000000 --- a/tests/unit_tests/client/configs/CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file CMakeLists.txt -# @author Mateusz Malicki (m.malicki2@samsung.com) -# - -MESSAGE(STATUS "Installing configs for the Client Unit Tests to " ${VSM_TEST_CONFIG_INSTALL_DIR}) - -## Generate #################################################################### -CONFIGURE_FILE(ut-client/test-daemon.conf.in - ${CMAKE_BINARY_DIR}/ut-client/test-daemon.conf @ONLY) -FILE(GLOB client_manager_CONF_GEN ${CMAKE_BINARY_DIR}/ut-client/*.conf) - -CONFIGURE_FILE(ut-client/templates/console-dbus.conf.in - ${CMAKE_BINARY_DIR}/ut-client/templates/console-dbus.conf @ONLY) -CONFIGURE_FILE(ut-client/templates/console-ipc.conf.in - ${CMAKE_BINARY_DIR}/ut-client/templates/console-ipc.conf @ONLY) -FILE(GLOB client_templates_CONF_GEN ${CMAKE_BINARY_DIR}/ut-client/templates/*.conf) - -## Install ##################################################################### -INSTALL(FILES ${client_manager_CONF_GEN} - DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/client/ut-client) -INSTALL(FILES ${client_templates_CONF_GEN} - DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/client/ut-client/templates) diff --git a/tests/unit_tests/client/ut-client.cpp b/tests/unit_tests/client/ut-client.cpp index a43319c..328a5bd 100644 --- a/tests/unit_tests/client/ut-client.cpp +++ b/tests/unit_tests/client/ut-client.cpp @@ -51,7 +51,7 @@ using namespace utils; namespace { const std::string TEST_CONFIG_PATH = - VSM_TEST_CONFIG_INSTALL_DIR "/client/ut-client/test-daemon.conf"; + VSM_TEST_CONFIG_INSTALL_DIR "/test-daemon.conf"; const std::string ZONES_PATH = "/tmp/ut-zones"; // the same as in daemon.conf const std::string TEMPLATE_NAME = "console-ipc"; diff --git a/tests/unit_tests/configs/CMakeLists.txt b/tests/unit_tests/configs/CMakeLists.txt new file mode 100644 index 0000000..04aabda --- /dev/null +++ b/tests/unit_tests/configs/CMakeLists.txt @@ -0,0 +1,63 @@ +# Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# @file CMakeLists.txt +# @author Dariusz Michaluk (d.michaluk@samsung.com) +# + +MESSAGE(STATUS "Installing configs for the Unit Tests to " ${VSM_TEST_CONFIG_INSTALL_DIR}) + +FILE(GLOB ut_zone_CONF *.conf) +FILE(GLOB ut_zone_templates_CONF templates/*.conf + templates/*.sh) + +## Generate #################################################################### +CONFIGURE_FILE(test-daemon.conf.in + ${CMAKE_BINARY_DIR}/test-daemon.conf @ONLY) +FILE(GLOB ut_zone_CONF_GEN ${CMAKE_BINARY_DIR}/*.conf) + +CONFIGURE_FILE(templates/console-dbus.conf.in + ${CMAKE_BINARY_DIR}/templates/console-dbus.conf @ONLY) +CONFIGURE_FILE(templates/console-ipc.conf.in + ${CMAKE_BINARY_DIR}/templates/console-ipc.conf @ONLY) +FILE(GLOB ut_zone_templates_CONF_GEN ${CMAKE_BINARY_DIR}/templates/*.conf) + + +## Install ##################################################################### +INSTALL(FILES ${ut_zone_CONF} + ${ut_zone_CONF_GEN} + DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}) + +INSTALL(FILES ${ut_zone_templates_CONF} + ${ut_zone_templates_CONF_GEN} + DESTINATION ${VSM_TEST_TEMPLATES_INSTALL_DIR}) + +INSTALL(FILES dbus/ut-dbus.conf + dbus/ut-dbus-system.conf + DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/dbus) + +INSTALL(FILES provision/test-provision.conf + DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/provision) + +INSTALL(FILES utils/file.txt + DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/utils) + +INSTALL(FILES systemd/vasum-socket-test.socket + systemd/vasum-socket-test.service + DESTINATION ${SYSTEMD_UNIT_DIR}) + +INSTALL(FILES dbus-1/system.d/org.tizen.vasum.tests.conf + DESTINATION ${SYSCONF_INSTALL_DIR}/dbus-1/system.d/) + diff --git a/tests/unit_tests/server/configs/dbus-1/system.d/org.tizen.vasum.tests.conf b/tests/unit_tests/configs/dbus-1/system.d/org.tizen.vasum.tests.conf similarity index 100% rename from tests/unit_tests/server/configs/dbus-1/system.d/org.tizen.vasum.tests.conf rename to tests/unit_tests/configs/dbus-1/system.d/org.tizen.vasum.tests.conf diff --git a/tests/unit_tests/server/configs/ut-zones-manager/ut-dbus.conf b/tests/unit_tests/configs/dbus/ut-dbus-system.conf similarity index 100% rename from tests/unit_tests/server/configs/ut-zones-manager/ut-dbus.conf rename to tests/unit_tests/configs/dbus/ut-dbus-system.conf diff --git a/tests/unit_tests/dbus/configs/ut-connection/ut-dbus.conf b/tests/unit_tests/configs/dbus/ut-dbus.conf similarity index 100% rename from tests/unit_tests/dbus/configs/ut-connection/ut-dbus.conf rename to tests/unit_tests/configs/dbus/ut-dbus.conf diff --git a/tests/unit_tests/server/configs/ut-zone-provision/test.conf b/tests/unit_tests/configs/provision/test-provision.conf similarity index 100% rename from tests/unit_tests/server/configs/ut-zone-provision/test.conf rename to tests/unit_tests/configs/provision/test-provision.conf diff --git a/tests/unit_tests/socket_test_service/configs/systemd/vasum-socket-test.service b/tests/unit_tests/configs/systemd/vasum-socket-test.service similarity index 100% rename from tests/unit_tests/socket_test_service/configs/systemd/vasum-socket-test.service rename to tests/unit_tests/configs/systemd/vasum-socket-test.service diff --git a/tests/unit_tests/socket_test_service/configs/systemd/vasum-socket-test.socket b/tests/unit_tests/configs/systemd/vasum-socket-test.socket similarity index 100% rename from tests/unit_tests/socket_test_service/configs/systemd/vasum-socket-test.socket rename to tests/unit_tests/configs/systemd/vasum-socket-test.socket diff --git a/tests/unit_tests/server/configs/ut-zone-admin/templates/buggy.conf b/tests/unit_tests/configs/templates/buggy-init.conf similarity index 100% rename from tests/unit_tests/server/configs/ut-zone-admin/templates/buggy.conf rename to tests/unit_tests/configs/templates/buggy-init.conf diff --git a/tests/unit_tests/server/configs/ut-zone/templates/buggy.conf b/tests/unit_tests/configs/templates/buggy-template.conf similarity index 100% rename from tests/unit_tests/server/configs/ut-zone/templates/buggy.conf rename to tests/unit_tests/configs/templates/buggy-template.conf diff --git a/tests/unit_tests/client/configs/ut-client/templates/console-dbus.conf.in b/tests/unit_tests/configs/templates/console-dbus.conf.in similarity index 76% rename from tests/unit_tests/client/configs/ut-client/templates/console-dbus.conf.in rename to tests/unit_tests/configs/templates/console-dbus.conf.in index c47dfaa..ef8a63e 100644 --- a/tests/unit_tests/client/configs/ut-client/templates/console-dbus.conf.in +++ b/tests/unit_tests/configs/templates/console-dbus.conf.in @@ -1,6 +1,6 @@ { - "zoneTemplate" : "minimal-dbus.sh", - "initWithArgs" : ["/bin/sh", "-c", "trap exit SIGTERM; /usr/bin/dbus-daemon --config-file=@VSM_TEST_CONFIG_INSTALL_DIR@/server/ut-zones-manager/ut-dbus.conf --fork; read"], + "zoneTemplate" : "minimal.sh", + "initWithArgs" : ["/bin/sh", "-c", "trap exit SIGTERM; /usr/bin/dbus-daemon --config-file=@VSM_TEST_CONFIG_INSTALL_DIR@/dbus/ut-dbus-system.conf --fork; read"], "requestedState" : "running", "ipv4Gateway" : "", "ipv4" : "", diff --git a/tests/unit_tests/client/configs/ut-client/templates/console-ipc.conf.in b/tests/unit_tests/configs/templates/console-ipc.conf.in similarity index 92% rename from tests/unit_tests/client/configs/ut-client/templates/console-ipc.conf.in rename to tests/unit_tests/configs/templates/console-ipc.conf.in index 7b48420..a4d43b0 100644 --- a/tests/unit_tests/client/configs/ut-client/templates/console-ipc.conf.in +++ b/tests/unit_tests/configs/templates/console-ipc.conf.in @@ -1,5 +1,5 @@ { - "zoneTemplate" : "minimal-dbus.sh", + "zoneTemplate" : "minimal.sh", "initWithArgs" : ["/bin/sh", "-c", "trap exit SIGTERM; read"], "requestedState" : "running", "ipv4Gateway" : "", diff --git a/tests/unit_tests/server/configs/ut-zone/templates/test.conf b/tests/unit_tests/configs/templates/default.conf similarity index 95% rename from tests/unit_tests/server/configs/ut-zone/templates/test.conf rename to tests/unit_tests/configs/templates/default.conf index 115307d..6b0eaa7 100644 --- a/tests/unit_tests/server/configs/ut-zone/templates/test.conf +++ b/tests/unit_tests/configs/templates/default.conf @@ -4,7 +4,7 @@ "requestedState" : "running", "ipv4Gateway" : "", "ipv4" : "", - "privilege" : 10, + "privilege" : 20, "vt" : -1, "switchToDefaultAfterTimeout" : true, "cpuQuotaForeground" : -1, diff --git a/tests/unit_tests/lxc/templates/minimal-dbus.sh b/tests/unit_tests/configs/templates/minimal.sh similarity index 96% rename from tests/unit_tests/lxc/templates/minimal-dbus.sh rename to tests/unit_tests/configs/templates/minimal.sh index a33ccac..948cf01 100755 --- a/tests/unit_tests/lxc/templates/minimal-dbus.sh +++ b/tests/unit_tests/configs/templates/minimal.sh @@ -48,8 +48,8 @@ lxc.utsname = ${name} lxc.rootfs = ${rootfs} # userns 1-to-1 mapping -lxc.id_map = u 0 0 65536 -lxc.id_map = g 0 0 65536 +#lxc.id_map = u 0 0 65536 +#lxc.id_map = g 0 0 65536 lxc.haltsignal = SIGTERM diff --git a/tests/unit_tests/server/configs/ut-zone-admin/templates/missing.conf b/tests/unit_tests/configs/templates/missing.conf similarity index 100% rename from tests/unit_tests/server/configs/ut-zone-admin/templates/missing.conf rename to tests/unit_tests/configs/templates/missing.conf diff --git a/tests/unit_tests/server/configs/ut-zone-admin/templates/test-no-shutdown.conf b/tests/unit_tests/configs/templates/test-no-shutdown.conf similarity index 100% rename from tests/unit_tests/server/configs/ut-zone-admin/templates/test-no-shutdown.conf rename to tests/unit_tests/configs/templates/test-no-shutdown.conf diff --git a/tests/unit_tests/client/configs/ut-client/test-daemon.conf.in b/tests/unit_tests/configs/test-daemon.conf.in similarity index 76% rename from tests/unit_tests/client/configs/ut-client/test-daemon.conf.in rename to tests/unit_tests/configs/test-daemon.conf.in index 848366a..5151fbe 100644 --- a/tests/unit_tests/client/configs/ut-client/test-daemon.conf.in +++ b/tests/unit_tests/configs/test-daemon.conf.in @@ -1,15 +1,14 @@ { "dbPath" : "/tmp/ut-zones/vasum.db", "zoneIds" : [], - "defaultId" : "", "zonesPath" : "/tmp/ut-zones", "zoneImagePath" : "", - "zoneTemplateDir" : "@VSM_TEST_CONFIG_INSTALL_DIR@/client/ut-client/templates/", + "zoneTemplateDir" : "@VSM_TEST_CONFIG_INSTALL_DIR@/templates/", "runMountPointPrefix" : "", - "zoneTemplatePrefix" : "@VSM_TEST_TEMPLATES_INSTALL_DIR@", + "defaultId" : "", "availableVTs" : [], "inputConfig" : {"enabled" : false, - "device" : "/dev/doesnotexist", + "device" : "gpio-keys.4", "code" : 139, "numberOfEvents" : 2, "timeWindowMs" : 500}, diff --git a/tests/unit_tests/utils/configs/ut-fs/file.txt b/tests/unit_tests/configs/utils/file.txt similarity index 100% rename from tests/unit_tests/utils/configs/ut-fs/file.txt rename to tests/unit_tests/configs/utils/file.txt diff --git a/tests/unit_tests/dbus/configs/CMakeLists.txt b/tests/unit_tests/dbus/configs/CMakeLists.txt deleted file mode 100644 index 69c2910..0000000 --- a/tests/unit_tests/dbus/configs/CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file CMakeLists.txt -# @author Lukasz Pawelczyk (l.pawelczyk@partner.samsung.com) -# - -MESSAGE(STATUS "Installing configs for the DBus Unit Tests to " ${VSM_TEST_CONFIG_INSTALL_DIR}) -FILE(GLOB dbus_CONF ut-connection/*.conf) - - -## Install ##################################################################### -INSTALL(FILES ${dbus_CONF} - DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/dbus/ut-connection) diff --git a/tests/unit_tests/dbus/ut-connection.cpp b/tests/unit_tests/dbus/ut-connection.cpp index b427355..98154df 100644 --- a/tests/unit_tests/dbus/ut-connection.cpp +++ b/tests/unit_tests/dbus/ut-connection.cpp @@ -55,7 +55,7 @@ namespace { const char* DBUS_DAEMON_PROC = "/usr/bin/dbus-daemon"; const char* const DBUS_DAEMON_ARGS[] = { DBUS_DAEMON_PROC, - "--config-file=" VSM_TEST_CONFIG_INSTALL_DIR "/dbus/ut-connection/ut-dbus.conf", + "--config-file=" VSM_TEST_CONFIG_INSTALL_DIR "/dbus/ut-dbus.conf", "--nofork", NULL }; diff --git a/tests/unit_tests/lxc/templates/CMakeLists.txt b/tests/unit_tests/lxc/templates/CMakeLists.txt deleted file mode 100644 index c7b98c5..0000000 --- a/tests/unit_tests/lxc/templates/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file -# @author Piotr Bartosiewicz (p.bartosiewi@partner.samsung.com) -# - -FILE(GLOB ZONE_TEMPLATES *.sh) - -INSTALL(PROGRAMS ${ZONE_TEMPLATES} - DESTINATION ${VSM_TEST_TEMPLATES_INSTALL_DIR}) diff --git a/tests/unit_tests/lxc/templates/minimal.sh b/tests/unit_tests/lxc/templates/minimal.sh deleted file mode 100755 index 0450d1a..0000000 --- a/tests/unit_tests/lxc/templates/minimal.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash - -echo UnitTest LXC template, args: $@ - -options=$(getopt -o p:n: -l rootfs:,path:,name: -- "$@") -if [ $? -ne 0 ]; then - exit 1 -fi -eval set -- "$options" - -while true -do - case "$1" in - -p|--path) path=$2; shift 2;; - --rootfs) rootfs=$2; shift 2;; - -n|--name) name=$2; shift 2;; - --) shift 1; break ;; - *) break ;; - esac -done - -# Prepare zone rootfs -ROOTFS_DIRS="\ -${rootfs}/bin \ -${rootfs}/dev \ -${rootfs}/dev/pts \ -${rootfs}/etc \ -${rootfs}/home \ -${rootfs}/lib \ -${rootfs}/lib64 \ -${rootfs}/proc \ -${rootfs}/root \ -${rootfs}/run \ -${rootfs}/sbin \ -${rootfs}/sys \ -${rootfs}/tmp \ -${rootfs}/usr \ -${rootfs}/opt -" -/bin/mkdir ${ROOTFS_DIRS} - -# Prepare zone configuration file -> ${path}/config -cat <> ${path}/config -lxc.utsname = ${name} -lxc.rootfs = ${rootfs} - -# userns 1-to-1 mapping -lxc.id_map = u 0 0 65536 -lxc.id_map = g 0 0 65536 - -lxc.haltsignal = SIGTERM - -lxc.pts = 256 -lxc.tty = 0 - -#lxc.loglevel = TRACE -#lxc.logfile = /tmp/${name}.log - -lxc.cgroup.devices.deny = a - -lxc.mount.auto = proc sys cgroup -lxc.mount.entry = /bin bin none ro,bind 0 0 -lxc.mount.entry = /etc etc none ro,bind 0 0 -lxc.mount.entry = /lib lib none ro,bind 0 0 -lxc.mount.entry = /sbin sbin none ro,bind 0 0 -lxc.mount.entry = /usr usr none ro,rbind 0 0 -lxc.mount.entry = /opt opt none ro,rbind 0 0 -EOF - -if [ "$(uname -m)" = "x86_64" ]; then -cat <> $path/config -lxc.mount.entry = /lib64 lib64 none ro,bind 0 0 -EOF -fi - diff --git a/tests/unit_tests/server/configs/CMakeLists.txt b/tests/unit_tests/server/configs/CMakeLists.txt deleted file mode 100644 index a91d5d8..0000000 --- a/tests/unit_tests/server/configs/CMakeLists.txt +++ /dev/null @@ -1,83 +0,0 @@ -# Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file CMakeLists.txt -# @author Jan Olszak (j.olszak@samsung.com) -# - -MESSAGE(STATUS "Installing configs for the Server Unit Tests to " ${VSM_TEST_CONFIG_INSTALL_DIR}) - -FILE(GLOB server_manager_CONF ut-server/*.conf) -FILE(GLOB server_templates_CONF ut-server/templates/*.conf) - -FILE(GLOB manager_manager_CONF ut-zones-manager/*.conf) -FILE(GLOB manager_templates_CONF ut-zones-manager/templates/*.conf) - -FILE(GLOB zone_CONF ut-zone/*.conf) -FILE(GLOB zone_templates_CONF ut-zone/templates/*.conf) - -FILE(GLOB zone_provision_CONF ut-zone-provision/*.conf) - -FILE(GLOB admin_templates_CONF ut-zone-admin/templates/*.conf) - - -## Generate #################################################################### -CONFIGURE_FILE(ut-server/test-daemon.conf.in - ${CMAKE_BINARY_DIR}/ut-server/test-daemon.conf @ONLY) -FILE(GLOB server_manager_CONF_GEN ${CMAKE_BINARY_DIR}/ut-server/*.conf) - -CONFIGURE_FILE(ut-zone/templates/test-dbus.conf.in - ${CMAKE_BINARY_DIR}/ut-zone/templates/test-dbus.conf @ONLY) -FILE(GLOB zone_templates_CONF_GEN ${CMAKE_BINARY_DIR}/ut-zone/templates/*.conf) - -CONFIGURE_FILE(ut-zones-manager/test-daemon.conf.in - ${CMAKE_BINARY_DIR}/ut-zones-manager/test-daemon.conf @ONLY) -FILE(GLOB manager_manager_CONF_GEN ${CMAKE_BINARY_DIR}/ut-zones-manager/*.conf) - -FILE(GLOB manager_templates_CONF_GEN ${CMAKE_BINARY_DIR}/ut-zones-manager/templates/*.conf) - - -## Install ##################################################################### -INSTALL(FILES ${server_manager_CONF} - DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/server/ut-server) -INSTALL(FILES ${server_manager_CONF_GEN} - DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/server/ut-server) -INSTALL(FILES ${server_templates_CONF} - DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/server/ut-server/templates) - -INSTALL(FILES ${manager_manager_CONF} - DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/server/ut-zones-manager) -INSTALL(FILES ${manager_manager_CONF_GEN} - DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/server/ut-zones-manager) -INSTALL(FILES ${manager_templates_CONF} - DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/server/ut-zones-manager/templates) -INSTALL(FILES ${manager_templates_CONF_GEN} - DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/server/ut-zones-manager/templates) - -INSTALL(FILES ${zone_CONF} - DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/server/ut-zone) -INSTALL(FILES ${zone_templates_CONF} - DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/server/ut-zone/templates) -INSTALL(FILES ${zone_templates_CONF_GEN} - DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/server/ut-zone/templates) - -INSTALL(FILES ${zone_provision_CONF} - DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/server/ut-zone-provision) - -INSTALL(FILES ${admin_templates_CONF} - DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/server/ut-zone-admin/templates) - -INSTALL(FILES dbus-1/system.d/org.tizen.vasum.tests.conf - DESTINATION ${SYSCONF_INSTALL_DIR}/dbus-1/system.d/) diff --git a/tests/unit_tests/server/configs/ut-server/templates/default.conf b/tests/unit_tests/server/configs/ut-server/templates/default.conf deleted file mode 100644 index 646fcb1..0000000 --- a/tests/unit_tests/server/configs/ut-server/templates/default.conf +++ /dev/null @@ -1,18 +0,0 @@ -{ - "zoneTemplate" : "minimal.sh", - "initWithArgs" : ["/bin/sh", "-c", "trap exit SIGTERM; read"], - "requestedState" : "running", - "ipv4Gateway" : "", - "ipv4" : "", - "privilege" : 20, - "vt" : -1, - "switchToDefaultAfterTimeout" : true, - "cpuQuotaForeground" : -1, - "cpuQuotaBackground" : 1000, - "shutdownTimeout" : 10, - "runMountPoint" : "", - "provisions" : [], - "permittedToSend" : [], - "permittedToRecv" : [], - "validLinkPrefixes" : [] -} diff --git a/tests/unit_tests/server/configs/ut-server/test-daemon.conf.in b/tests/unit_tests/server/configs/ut-server/test-daemon.conf.in deleted file mode 100644 index 1d59bdc..0000000 --- a/tests/unit_tests/server/configs/ut-server/test-daemon.conf.in +++ /dev/null @@ -1,17 +0,0 @@ -{ - "dbPath" : "/tmp/ut-zones/vasum.db", - "zoneIds" : [], - "zonesPath" : "/tmp/ut-zones", - "zoneImagePath" : "", - "zoneTemplateDir" : "@VSM_TEST_CONFIG_INSTALL_DIR@/server/ut-server/templates/", - "runMountPointPrefix" : "", - "defaultId" : "", - "zoneTemplatePrefix" : "@VSM_TEST_TEMPLATES_INSTALL_DIR@", - "availableVTs" : [], - "inputConfig" : {"enabled" : false, - "device" : "gpio-keys.4", - "code" : 139, - "numberOfEvents" : 2, - "timeWindowMs" : 500}, - "proxyCallRules" : [] -} diff --git a/tests/unit_tests/server/configs/ut-zone-admin/templates/test.conf b/tests/unit_tests/server/configs/ut-zone-admin/templates/test.conf deleted file mode 100644 index fea418d..0000000 --- a/tests/unit_tests/server/configs/ut-zone-admin/templates/test.conf +++ /dev/null @@ -1,18 +0,0 @@ -{ - "zoneTemplate" : "minimal.sh", - "initWithArgs" : ["/bin/sh", "-c", "trap exit SIGTERM; read"], - "requestedState" : "running", - "ipv4Gateway" : "", - "ipv4" : "", - "privilege" : 10, - "vt" : -1, - "switchToDefaultAfterTimeout" : true, - "cpuQuotaForeground" : -1, - "cpuQuotaBackground" : 1000, - "shutdownTimeout" : 10, - "runMountPoint" : "", - "provisions" : [], - "permittedToSend" : [], - "permittedToRecv" : [], - "validLinkPrefixes" : [] -} diff --git a/tests/unit_tests/server/configs/ut-zone/templates/test-dbus.conf.in b/tests/unit_tests/server/configs/ut-zone/templates/test-dbus.conf.in deleted file mode 100644 index 0dd101a..0000000 --- a/tests/unit_tests/server/configs/ut-zone/templates/test-dbus.conf.in +++ /dev/null @@ -1,18 +0,0 @@ -{ - "zoneTemplate" : "minimal-dbus.sh", - "initWithArgs" : ["/bin/sh", "-c", "trap exit SIGTERM; /usr/bin/dbus-daemon --config-file=@VSM_TEST_CONFIG_INSTALL_DIR@/server/ut-zone/ut-dbus.conf --fork; read"], - "requestedState" : "running", - "ipv4Gateway" : "", - "ipv4" : "", - "privilege" : 10, - "vt" : -1, - "switchToDefaultAfterTimeout" : true, - "cpuQuotaForeground" : -1, - "cpuQuotaBackground" : 1000, - "shutdownTimeout" : 10, - "runMountPoint" : "/tmp/ut-run/zoneId", - "provisions" : [], - "permittedToSend" : [], - "permittedToRecv" : [], - "validLinkPrefixes" : [] -} diff --git a/tests/unit_tests/server/configs/ut-zone/ut-dbus.conf b/tests/unit_tests/server/configs/ut-zone/ut-dbus.conf deleted file mode 100644 index 2e0488d..0000000 --- a/tests/unit_tests/server/configs/ut-zone/ut-dbus.conf +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - custom - unix:path=/var/run/dbus/system_bus_socket - - - - - - - - - - diff --git a/tests/unit_tests/server/configs/ut-zones-manager/templates/console.conf b/tests/unit_tests/server/configs/ut-zones-manager/templates/console.conf deleted file mode 100644 index 2537e16..0000000 --- a/tests/unit_tests/server/configs/ut-zones-manager/templates/console.conf +++ /dev/null @@ -1,18 +0,0 @@ -{ - "zoneTemplate" : "minimal.sh", - "initWithArgs" : ["/bin/sh", "-c", "trap exit SIGTERM; read"], - "requestedState" : "running", - "ipv4Gateway" : "", - "ipv4" : "", - "privilege" : 20, - "vt" : -1, - "switchToDefaultAfterTimeout" : true, - "cpuQuotaForeground" : -1, - "cpuQuotaBackground" : 1000, - "shutdownTimeout" : 10, - "runMountPoint" : "", - "provisions" : [], - "permittedToSend" : [ "/tmp/.*" ], - "permittedToRecv" : [ "/tmp/.*" ], - "validLinkPrefixes" : [] -} diff --git a/tests/unit_tests/server/configs/ut-zones-manager/test-daemon.conf.in b/tests/unit_tests/server/configs/ut-zones-manager/test-daemon.conf.in deleted file mode 100644 index a388e6d..0000000 --- a/tests/unit_tests/server/configs/ut-zones-manager/test-daemon.conf.in +++ /dev/null @@ -1,22 +0,0 @@ -{ - "dbPath" : "/tmp/ut-zones/vasum.db", - "zoneIds" : [], - "defaultId" : "", - "zonesPath" : "/tmp/ut-zones", - "zoneImagePath" : "", - "zoneTemplateDir" : "@VSM_TEST_CONFIG_INSTALL_DIR@/server/ut-zones-manager/templates/", - "runMountPointPrefix" : "", - "zoneTemplatePrefix" : "@VSM_TEST_TEMPLATES_INSTALL_DIR@", - "availableVTs" : [], - "inputConfig" : {"enabled" : false, - "device" : "/dev/doesnotexist", - "code" : 139, - "numberOfEvents" : 2, - "timeWindowMs" : 500}, - "proxyCallRules" : [{"caller" : "*", - "target" : "*", - "targetBusName" : "org.tizen.vasum.tests", - "targetObjectPath" : "*", - "targetInterface" : "*", - "targetMethod" : "*"}] -} diff --git a/tests/unit_tests/server/ut-server.cpp b/tests/unit_tests/server/ut-server.cpp index 600b271..af6d5ca 100644 --- a/tests/unit_tests/server/ut-server.cpp +++ b/tests/unit_tests/server/ut-server.cpp @@ -44,7 +44,7 @@ using namespace config; namespace { -const std::string CONFIG_DIR = VSM_TEST_CONFIG_INSTALL_DIR "/server/ut-server"; +const std::string CONFIG_DIR = VSM_TEST_CONFIG_INSTALL_DIR; const std::string TEST_CONFIG_PATH = CONFIG_DIR + "/test-daemon.conf"; const std::string MISSING_CONFIG_PATH = CONFIG_DIR + "/missing-daemon.conf"; const std::string TEMPLATE_NAME = "default"; diff --git a/tests/unit_tests/server/ut-zone-admin.cpp b/tests/unit_tests/server/ut-zone-admin.cpp index 72bc2e6..faee59a 100644 --- a/tests/unit_tests/server/ut-zone-admin.cpp +++ b/tests/unit_tests/server/ut-zone-admin.cpp @@ -37,13 +37,12 @@ using namespace vasum; namespace { -const std::string TEMPLATES_DIR = VSM_TEST_CONFIG_INSTALL_DIR "/server/ut-zone-admin/templates"; -const std::string TEST_CONFIG_PATH = TEMPLATES_DIR + "/test.conf"; +const std::string TEMPLATES_DIR = VSM_TEST_TEMPLATES_INSTALL_DIR; +const std::string TEST_CONFIG_PATH = TEMPLATES_DIR + "/default.conf"; const std::string TEST_NO_SHUTDOWN_CONFIG_PATH = TEMPLATES_DIR + "/test-no-shutdown.conf"; -const std::string BUGGY_CONFIG_PATH = TEMPLATES_DIR + "/buggy.conf"; +const std::string BUGGY_CONFIG_PATH = TEMPLATES_DIR + "/buggy-init.conf"; const std::string MISSING_CONFIG_PATH = TEMPLATES_DIR + "/missing.conf"; const std::string ZONES_PATH = "/tmp/ut-zones"; -const std::string TEMPLATES_PATH = VSM_TEST_TEMPLATES_INSTALL_DIR; struct Fixture { utils::ScopedGlibLoop mLoop; @@ -62,7 +61,7 @@ struct Fixture { config::loadFromJsonFile(configPath, mDynamicConfig); return std::unique_ptr(new ZoneAdmin("zoneId", ZONES_PATH, - TEMPLATES_PATH, + TEMPLATES_DIR, mConfig, mDynamicConfig)); } diff --git a/tests/unit_tests/server/ut-zone-provision.cpp b/tests/unit_tests/server/ut-zone-provision.cpp index 65a5b91..45a74d7 100644 --- a/tests/unit_tests/server/ut-zone-provision.cpp +++ b/tests/unit_tests/server/ut-zone-provision.cpp @@ -49,10 +49,9 @@ namespace fs = boost::filesystem; namespace { -const std::string TEST_CONFIG_PATH = VSM_TEST_CONFIG_INSTALL_DIR "/server/ut-zone-provision/test.conf"; +const std::string TEST_CONFIG_PATH = VSM_TEST_CONFIG_INSTALL_DIR "/provision/test-provision.conf"; const std::string ZONE = "ut-zone-provision-test"; const fs::path ZONES_PATH = "/tmp/ut-zones"; -const fs::path TEMPLATES_PATH = VSM_TEST_TEMPLATES_INSTALL_DIR; const fs::path ZONE_PATH = ZONES_PATH / fs::path(ZONE); const fs::path SOME_FILE_PATH = ZONE_PATH / "file.txt"; const fs::path ROOTFS_PATH = ZONE_PATH / "rootfs"; diff --git a/tests/unit_tests/server/ut-zone.cpp b/tests/unit_tests/server/ut-zone.cpp index 755aa52..abc10dc 100644 --- a/tests/unit_tests/server/ut-zone.cpp +++ b/tests/unit_tests/server/ut-zone.cpp @@ -52,13 +52,12 @@ using namespace config; namespace { -const std::string TEMPLATES_DIR = VSM_TEST_CONFIG_INSTALL_DIR "/server/ut-zone/templates"; -const std::string TEST_CONFIG_PATH = TEMPLATES_DIR + "/test.conf"; -const std::string TEST_DBUS_CONFIG_PATH = TEMPLATES_DIR + "/test-dbus.conf"; -const std::string BUGGY_CONFIG_PATH = TEMPLATES_DIR + "/buggy.conf"; -const std::string MISSING_CONFIG_PATH = TEMPLATES_DIR + "/missing.conf"; +const std::string TEMPLATES_DIR = VSM_TEST_TEMPLATES_INSTALL_DIR; +const std::string TEST_CONFIG_PATH = TEMPLATES_DIR + "/default.conf"; +const std::string TEST_DBUS_CONFIG_PATH = TEMPLATES_DIR + "/console-dbus.conf"; +const std::string BUGGY_CONFIG_PATH = TEMPLATES_DIR + "/buggy-template.conf"; +const std::string MISSING_CONFIG_PATH = TEMPLATES_DIR + "/missing-config.conf"; const std::string ZONES_PATH = "/tmp/ut-zones"; -const std::string TEMPLATES_PATH = VSM_TEST_TEMPLATES_INSTALL_DIR; const std::string DB_PATH = ZONES_PATH + "/vasum.db"; const std::string BRIDGE_NAME = "brtest01"; const std::string ZONE_NETDEV = "netdevtest01"; @@ -89,7 +88,7 @@ struct Fixture { ZONES_PATH, configPath, DB_PATH, - TEMPLATES_PATH, + TEMPLATES_DIR, "")); } diff --git a/tests/unit_tests/server/ut-zones-manager.cpp b/tests/unit_tests/server/ut-zones-manager.cpp index f7a4351..f73e164 100644 --- a/tests/unit_tests/server/ut-zones-manager.cpp +++ b/tests/unit_tests/server/ut-zones-manager.cpp @@ -69,7 +69,7 @@ using namespace dbus; namespace { -const std::string CONFIG_DIR = VSM_TEST_CONFIG_INSTALL_DIR "/server/ut-zones-manager"; +const std::string CONFIG_DIR = VSM_TEST_CONFIG_INSTALL_DIR; const std::string TEST_CONFIG_PATH = CONFIG_DIR + "/test-daemon.conf"; const std::string MISSING_CONFIG_PATH = CONFIG_DIR + "/missing-daemon.conf"; const int EVENT_TIMEOUT = 5000; @@ -81,7 +81,7 @@ const std::string FILE_CONTENT = "File content\n" "Line 2\n"; const std::string NON_EXISTANT_ZONE_ID = "NON_EXISTANT_ZONE_ID"; const std::string ZONES_PATH = "/tmp/ut-zones"; // the same as in daemon.conf -const std::string SIMPLE_TEMPLATE = "console"; +const std::string SIMPLE_TEMPLATE = "console-ipc"; #ifdef DBUS_CONNECTION /** diff --git a/tests/unit_tests/socket_test_service/configs/CMakeLists.txt b/tests/unit_tests/socket_test_service/configs/CMakeLists.txt deleted file mode 100644 index 17e79b9..0000000 --- a/tests/unit_tests/socket_test_service/configs/CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file CMakeLists.txt -# @author Lukasz Kostyra (l.kostyra@samsung.com) -# - -MESSAGE(STATUS "Installing configs for Vasum sycket test service to " ${VSM_TEST_CONFIG_INSTALL_DIR}) - -## Install ##################################################################### -INSTALL(FILES systemd/vasum-socket-test.socket - DESTINATION ${SYSTEMD_UNIT_DIR}) -INSTALL(FILES systemd/vasum-socket-test.service - DESTINATION ${SYSTEMD_UNIT_DIR}) diff --git a/tests/unit_tests/utils/configs/CMakeLists.txt b/tests/unit_tests/utils/configs/CMakeLists.txt deleted file mode 100644 index d408df0..0000000 --- a/tests/unit_tests/utils/configs/CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# -# @file CMakeLists.txt -# @author Lukasz Pawelczyk (l.pawelczyk@partner.samsung.com) -# - -MESSAGE(STATUS "Installing configs for the Utils Unit Tests to " ${VSM_TEST_CONFIG_INSTALL_DIR}) -FILE(GLOB fs_CONF ut-fs/*.txt) - - -## Install ##################################################################### -INSTALL(FILES ${fs_CONF} - DESTINATION ${VSM_TEST_CONFIG_INSTALL_DIR}/utils/ut-fs) diff --git a/tests/unit_tests/utils/ut-fs.cpp b/tests/unit_tests/utils/ut-fs.cpp index 2cc32d0..5881193 100644 --- a/tests/unit_tests/utils/ut-fs.cpp +++ b/tests/unit_tests/utils/ut-fs.cpp @@ -39,7 +39,7 @@ using namespace utils; namespace { const std::string TEST_PATH = "/tmp/ut-fsutils"; -const std::string REFERENCE_FILE_PATH = VSM_TEST_CONFIG_INSTALL_DIR "/utils/ut-fs/file.txt"; +const std::string REFERENCE_FILE_PATH = VSM_TEST_CONFIG_INSTALL_DIR "/utils/file.txt"; const std::string REFERENCE_FILE_CONTENT = "File content\n" "Line 1\n" "Line 2\n"; -- 2.7.4 From 2b62c2b2881eb5c654bd2c311a0a0a7af5daa355 Mon Sep 17 00:00:00 2001 From: Dariusz Michaluk Date: Mon, 18 May 2015 16:05:25 +0200 Subject: [PATCH 14/16] Replace brctl with ip (remove bridge-utils dependency) [Feature] N/A [Cause] N/A [Solution] N/A [Verification] Build, install, run server. Change-Id: I8acbaff403d611df82bbebaef5d6281defb2acf8 --- packaging/vasum.spec | 2 +- server/configs/templates/template.sh | 5 ++--- server/configs/templates/tizen-common-wayland.sh | 5 ++--- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/packaging/vasum.spec b/packaging/vasum.spec index 22a6363..11c1599 100644 --- a/packaging/vasum.spec +++ b/packaging/vasum.spec @@ -27,7 +27,7 @@ BuildRequires: pkgconfig(libsystemd-journal) BuildRequires: pkgconfig(libsystemd-daemon) BuildRequires: pkgconfig(sqlite3) Requires(post): libcap-tools -Requires: bridge-utils +Requires: iproute2 Requires: libjson >= 0.10 %description diff --git a/server/configs/templates/template.sh b/server/configs/templates/template.sh index 82cd0f9..945c434 100755 --- a/server/configs/templates/template.sh +++ b/server/configs/templates/template.sh @@ -61,10 +61,9 @@ EOF # prepare pre start hook > ${path}/pre-start.sh cat <> ${path}/pre-start.sh -if [ -z "\$(/usr/sbin/brctl show | /bin/grep -P "${br_name}\t")" ] +if [ -z "\$(/usr/sbin/ip show | /bin/grep -P "${br_name}\t")" ] then - /usr/sbin/brctl addbr ${br_name} - /usr/sbin/brctl setfd ${br_name} 0 + /usr/sbin/ip link add name ${br_name} type bridge /sbin/ifconfig ${br_name} ${ipv4_gateway} netmask 255.255.255.0 up fi if [ -z "\$(/usr/sbin/iptables -t nat -S | /bin/grep MASQUERADE)" ] diff --git a/server/configs/templates/tizen-common-wayland.sh b/server/configs/templates/tizen-common-wayland.sh index 48a2ff9..40e401c 100755 --- a/server/configs/templates/tizen-common-wayland.sh +++ b/server/configs/templates/tizen-common-wayland.sh @@ -277,10 +277,9 @@ EOF # Prepare zone hook files cat <>${path}/hooks/pre-start.sh -if [ -z "\$(/usr/sbin/brctl show | /bin/grep -P "${br_name}\t")" ] +if [ -z "\$(/usr/sbin/ip show | /bin/grep -P "${br_name}\t")" ] then - /usr/sbin/brctl addbr ${br_name} - /usr/sbin/brctl setfd ${br_name} 0 + /usr/sbin/ip link add name ${br_name} type bridge /sbin/ifconfig ${br_name} ${ipv4_gateway} netmask 255.255.255.0 up fi if [ -z "\$(/usr/sbin/iptables -t nat -S | /bin/grep MASQUERADE)" ] -- 2.7.4 From 800d16092d93c736d99dc067ebe5eaccb9fae084 Mon Sep 17 00:00:00 2001 From: Dariusz Michaluk Date: Tue, 19 May 2015 14:33:35 +0200 Subject: [PATCH 15/16] Fix ip command [Feature] N/A [Cause] N/A [Solution] N/A [Verification] Build, install, run server. Change-Id: Ic28e6ea45c80fc48934ee911f7f5cee68cfcbb87 --- server/configs/templates/template.sh | 2 +- server/configs/templates/tizen-common-wayland.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/configs/templates/template.sh b/server/configs/templates/template.sh index 945c434..3bcf528 100755 --- a/server/configs/templates/template.sh +++ b/server/configs/templates/template.sh @@ -61,7 +61,7 @@ EOF # prepare pre start hook > ${path}/pre-start.sh cat <> ${path}/pre-start.sh -if [ -z "\$(/usr/sbin/ip show | /bin/grep -P "${br_name}\t")" ] +if [ -z "\$(/usr/sbin/ip link show | /bin/grep -P "${br_name}:")" ] then /usr/sbin/ip link add name ${br_name} type bridge /sbin/ifconfig ${br_name} ${ipv4_gateway} netmask 255.255.255.0 up diff --git a/server/configs/templates/tizen-common-wayland.sh b/server/configs/templates/tizen-common-wayland.sh index 40e401c..5c57aff 100755 --- a/server/configs/templates/tizen-common-wayland.sh +++ b/server/configs/templates/tizen-common-wayland.sh @@ -277,7 +277,7 @@ EOF # Prepare zone hook files cat <>${path}/hooks/pre-start.sh -if [ -z "\$(/usr/sbin/ip show | /bin/grep -P "${br_name}\t")" ] +if [ -z "\$(/usr/sbin/ip link show | /bin/grep -P "${br_name}:")" ] then /usr/sbin/ip link add name ${br_name} type bridge /sbin/ifconfig ${br_name} ${ipv4_gateway} netmask 255.255.255.0 up -- 2.7.4 From 655ec72492d6a5aca52da056e1eb27484c720d16 Mon Sep 17 00:00:00 2001 From: Krzysztof Dynowski Date: Mon, 18 May 2015 15:05:57 +0200 Subject: [PATCH 16/16] Vasum wrapper #6, implement vsm_declare_*, add logs, missing functions [Bug/Feature] dummy implementation of vsm_declare_link,vsm_declare_file,vsm_declare_mount [Cause] N/A [Solution] #6 implement vsm_declare_link,vsm_declare_file,vsm_declare_mount [Verification] Build, install on target Change-Id: I522233d4b02a9af8d2c282e6a04cd96be85920df --- wrapper/wrapper.cpp | 289 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 207 insertions(+), 82 deletions(-) diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp index c5eadbc..72eece3 100644 --- a/wrapper/wrapper.cpp +++ b/wrapper/wrapper.cpp @@ -55,7 +55,12 @@ static struct { int done; int glib_stop; -}wrap; +} wrap; + +extern "C" { +API void vsm_string_free(VsmString string); +API void vsm_array_string_free(VsmArrayString astring); +} #ifndef offsetof #define offsetof(type, memb) ((size_t)&((type *)0)->memb) @@ -70,7 +75,6 @@ static struct #define UNUSED(x) ((void)(x)) -#define vsm_error_t vsm_error_s #define vsm_attach_command_t vsm_attach_command_s #define vsm_attach_options_t vsm_attach_options_s #define vsm_zone_state_cb vsm_zone_state_changed_cb @@ -85,6 +89,7 @@ void wrapper_load(void) { Logger::setLogLevel(LogLevel::TRACE); Logger::setLogBackend(new SystemdJournalBackend()); + LOGI("wrapper_load"); init_wrapper(); } @@ -92,6 +97,7 @@ void wrapper_unload(void) { if (wrap.glib_stop) Client::vsm_stop_glib_loop(); wrap.glib_stop = 0; + LOGI("wrapper_unload"); } static void callcheck() @@ -104,7 +110,7 @@ void init_wrapper() if (wrap.done) return ; memset(&wrap,0,sizeof(wrap)); wrap.done = 1; - LOGS(""); + LOGS("WRAP:"); } static struct vsm_zone* wrap_vsm_zone(WrappedContext *w, VsmZone zone, bool create = false) @@ -197,7 +203,8 @@ static void init_context_wrap(WrappedContext *w) API vsm_context_h vsm_create_context(void) { - LOGS(""); callcheck(); + LOGS("WRAP:"); + callcheck(); WrappedContext *w = new WrappedContext(); init_context_wrap(w); @@ -207,7 +214,8 @@ API vsm_context_h vsm_create_context(void) API int vsm_cleanup_context(vsm_context_h ctx) { - LOGS(""); callcheck(); + LOGS("WRAP:"); + callcheck(); WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); if (w->client != NULL) { delete w->client; @@ -250,18 +258,10 @@ API vsm_error_e vsm_last_error(struct vsm_context *ctx) return static_cast(-1); } -API const char *vsm_error_string(vsm_error_e error) -{ - LOGS(""); callcheck(); - if (error < 0 || error > VSM_MAX_ERROR) { - return NULL; - } - return vsm_error_strtab[error]; -} - API int vsm_get_poll_fd(struct vsm_context *ctx) { - LOGS(""); callcheck(); + LOGS("WRAP:"); + callcheck(); WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); UNUSED(w); //FIXME Client should create Dispatcher and pass to IPCConnection @@ -271,7 +271,8 @@ API int vsm_get_poll_fd(struct vsm_context *ctx) } API int vsm_enter_eventloop(struct vsm_context *ctx, int flags, int timeout) { - LOGS(""); callcheck(); + LOGS("WRAP:"); + callcheck(); UNUSED(flags); UNUSED(timeout); WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); @@ -284,7 +285,8 @@ API int vsm_enter_eventloop(struct vsm_context *ctx, int flags, int timeout) API int vsm_create_zone(struct vsm_context *ctx, const char *zone_name, const char *template_name, int flag) { - LOGS("create_zone " << zone_name); callcheck(); + LOGS("WRAP:create_zone " << zone_name); + callcheck(); WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); UNUSED(flag); //template_name = NULL; //template name not supported by libvasum-client @@ -298,7 +300,8 @@ API int vsm_create_zone(struct vsm_context *ctx, const char *zone_name, const ch API int vsm_destroy_zone(struct vsm_context *ctx, const char *zone_name, int force) { - LOGS("zone=" << zone_name); callcheck(); + LOGS("WRAP:zone=" << zone_name); + callcheck(); WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); UNUSED(force); if (!w->client) return VSM_ERROR_GENERIC; @@ -313,7 +316,8 @@ API int vsm_destroy_zone(struct vsm_context *ctx, const char *zone_name, int for API int vsm_start_zone(struct vsm_context *ctx, const char *zone_name) { - LOGS("zone=" << zone_name); callcheck(); + LOGS("WRAP:zone=" << zone_name); + callcheck(); WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); if (!w->client) return VSM_ERROR_GENERIC; VsmStatus st = w->client->vsm_start_zone(zone_name); @@ -322,7 +326,8 @@ API int vsm_start_zone(struct vsm_context *ctx, const char *zone_name) API int vsm_shutdown_zone(struct vsm_context *ctx, const char *zone_name, int force) { - LOGS("zone=" << zone_name); callcheck(); + LOGS("WRAP:zone=" << zone_name); + callcheck(); WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); UNUSED(force); if (!w->client) return VSM_ERROR_GENERIC; @@ -332,7 +337,8 @@ API int vsm_shutdown_zone(struct vsm_context *ctx, const char *zone_name, int fo API int vsm_lock_zone(struct vsm_context *ctx, const char *zone_name, int shutdown) { - LOGS("zone=" << zone_name); callcheck(); + LOGS("WRAP:zone=" << zone_name); + callcheck(); WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); UNUSED(shutdown); if (!w->client) return VSM_ERROR_GENERIC; @@ -342,7 +348,8 @@ API int vsm_lock_zone(struct vsm_context *ctx, const char *zone_name, int shutdo API int vsm_unlock_zone(struct vsm_context *ctx, const char *zone_name) { - LOGS("zone=" << zone_name); callcheck(); + LOGS("WRAP:zone=" << zone_name); + callcheck(); WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); if (!w->client) return VSM_ERROR_GENERIC; VsmStatus st = w->client->vsm_lock_zone(zone_name); @@ -351,7 +358,8 @@ API int vsm_unlock_zone(struct vsm_context *ctx, const char *zone_name) API int vsm_set_foreground(struct vsm_zone *zone) { - LOGS(""); callcheck(); + LOGS("WRAP:"); + callcheck(); WrappedZone *w = container_of(zone, WrappedZone, vz); if (!w->client) return VSM_ERROR_GENERIC; VsmStatus st = w->client->vsm_set_active_zone(zone->name); @@ -380,7 +388,8 @@ API int vsm_attach_zone_wait(struct vsm_context *ctx, API int vsm_iterate_zone(struct vsm_context *ctx, void (*callback)(struct vsm_zone *zone, void *user_data), void *user_data) { - LOGS(""); callcheck(); + LOGS("WRAP:"); + callcheck(); WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); if (!w->client) return -VSM_ERROR_GENERIC; callback(ctx->root_zone, user_data); @@ -392,7 +401,8 @@ API int vsm_iterate_zone(struct vsm_context *ctx, void (*callback)(struct vsm_zo API struct vsm_zone *vsm_lookup_zone_by_name(struct vsm_context *ctx, const char *path) { - LOGS("name=" << path); callcheck(); + LOGS("WRAP:name=" << path); + callcheck(); WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); VsmZone zone; if (!w->client) return NULL; @@ -402,9 +412,11 @@ API struct vsm_zone *vsm_lookup_zone_by_name(struct vsm_context *ctx, const char return wrap_vsm_zone(w, zone, true); } +//supposed return ref to internal struct API struct vsm_zone *vsm_lookup_zone_by_pid(struct vsm_context *ctx, pid_t pid) { - LOGS("pid=" << pid); callcheck(); + LOGS("WRAP: pid=" << pid); + callcheck(); WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); VsmZone zone; VsmString id; @@ -420,22 +432,10 @@ API struct vsm_zone *vsm_lookup_zone_by_pid(struct vsm_context *ctx, pid_t pid) return wrap_vsm_zone(w, zone); } -API struct vsm_zone *vsm_lookup_zone_by_terminal_id(struct vsm_context *ctx, int terminal) -{ - LOGS("terminal=" << terminal); callcheck(); - WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); - VsmZone zone; - VsmString id; - if (!w->client) return NULL; - if (w->client->vsm_lookup_zone_by_terminal_id(terminal, &id) != VSMCLIENT_SUCCESS) - return NULL; - w->client->vsm_lookup_zone_by_id(id, &zone); - return wrap_vsm_zone(w, zone); -} -#if 0 API int vsm_add_state_changed_callback(struct vsm_context *ctx, vsm_zone_state_cb callback, void *user_data) { - LOGS(""); callcheck(); + LOGS("WRAP:"); + callcheck(); WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); VsmSubscriptionId subscriptionId; @@ -443,9 +443,10 @@ API int vsm_add_state_changed_callback(struct vsm_context *ctx, vsm_zone_state_c void { VsmZone zone; //TODO what are valid state, event + vsm_zone_state_t t=VSM_ZONE_STATE_RUNNING; UNUSED(dbusAddress); w->client->vsm_lookup_zone_by_id(id, &zone); - callback(wrap_vsm_zone(w, zone), data); + callback(wrap_vsm_zone(w, zone), t, data); }; w->client->vsm_add_state_callback(dbus_cb, user_data, &subscriptionId); return (int)subscriptionId; @@ -453,16 +454,18 @@ API int vsm_add_state_changed_callback(struct vsm_context *ctx, vsm_zone_state_c API int vsm_del_state_changed_callback(struct vsm_context *ctx, int handle) { - LOGS(""); callcheck(); + LOGS("WRAP:"); + callcheck(); WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); VsmSubscriptionId subscriptionId = (VsmSubscriptionId)handle; VsmStatus st = w->client->vsm_del_state_callback(subscriptionId); return wrap_error(st, w->client); } -#endif + API int vsm_grant_device(struct vsm_zone *dom, const char *name, uint32_t flags) { - LOGS(""); callcheck(); + LOGS("WRAP:"); + callcheck(); WrappedZone *w = container_of(dom, WrappedZone, vz); const char *id = dom->name; VsmZone zone; @@ -473,7 +476,8 @@ API int vsm_grant_device(struct vsm_zone *dom, const char *name, uint32_t flags) API int vsm_revoke_device(struct vsm_zone *dom, const char *name) { - LOGS(""); callcheck(); + LOGS("WRAP:"); + callcheck(); WrappedZone *w = container_of(dom, WrappedZone, vz); const char *id = dom->name; VsmStatus st = w->client->vsm_revoke_device(id, name); @@ -482,7 +486,8 @@ API int vsm_revoke_device(struct vsm_zone *dom, const char *name) API struct vsm_netdev *vsm_create_netdev(struct vsm_zone *zone, vsm_netdev_type_t type, const char *target, const char *netdev) { - LOGS(""); callcheck(); + LOGS("WRAP:"); + callcheck(); UNUSED(zone); UNUSED(type); UNUSED(target); @@ -518,7 +523,8 @@ API struct vsm_netdev *vsm_create_netdev(struct vsm_zone *zone, vsm_netdev_type_ API int vsm_destroy_netdev(struct vsm_zone *zone, struct vsm_netdev *netdev) { - LOGS(""); callcheck(); + LOGS("WRAP:"); + callcheck(); WrappedZone *w = container_of(zone, WrappedZone, vz); VsmStatus st = w->client->vsm_destroy_netdev(zone->name, netdev->name); @@ -534,7 +540,8 @@ API int vsm_destroy_netdev(struct vsm_zone *zone, struct vsm_netdev *netdev) API int vsm_iterate_netdev(struct vsm_zone *zone, void (*callback)(struct vsm_netdev *, void *user_data), void *user_data) { - LOGS(""); callcheck(); + LOGS("WRAP:"); + callcheck(); WrappedZone *w = container_of(zone, WrappedZone, vz); for (auto nd : w->netdevs) { callback(&nd, user_data); @@ -544,7 +551,8 @@ API int vsm_iterate_netdev(struct vsm_zone *zone, void (*callback)(struct vsm_ne API struct vsm_netdev *vsm_lookup_netdev_by_name(struct vsm_zone *zone, const char *name) { - LOGS(""); callcheck(); + LOGS("WRAP:"); + callcheck(); WrappedZone *w = container_of(zone, WrappedZone, vz); VsmNetdev nd; VsmStatus st = w->client->vsm_lookup_netdev_by_name(zone->name, name, &nd); @@ -560,13 +568,65 @@ API struct vsm_netdev *vsm_lookup_netdev_by_name(struct vsm_zone *zone, const ch API int vsm_declare_file(struct vsm_context *ctx, vsm_fso_type_t ftype, const char *path, int flags, vsm_mode_t mode) { - LOGS(""); callcheck(); - UNUSED(ctx); - UNUSED(ftype); - UNUSED(path); - UNUSED(flags); - UNUSED(mode); - //TODO apply declare link for existing zones (and those created in the future, so must store paits source, target) + LOGS("WRAP:"); + callcheck(); +/* Old implementation is following: (but implemented in server) + args.oldpath = oldpath; + args.newpath = newpath; + ret = iterate_running_zone("/sys/fs/cgroup/cpuset/lxc", file_resource, &args); +*/ + WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); + VsmArrayString ids = NULL; + VsmFileType type; + switch (ftype) { + case VSM_FSO_TYPE_DIR: /**< Directoy type */ + type = VSMFILE_DIRECTORY; + break; + case VSM_FSO_TYPE_REG: /**< Regular file type */ + type = VSMFILE_REGULAR; + break; + case VSM_FSO_TYPE_FIFO: /**< Fifo file type */ + type = VSMFILE_FIFO; + break; + case VSM_FSO_TYPE_SOCK: /**< Socket file type */ + return VSM_ERROR_NONE; + case VSM_FSO_TYPE_DEV: /**< Device node type */ + return VSM_ERROR_NONE; + default: + return VSM_ERROR_NONE; + } + w->client->vsm_get_zone_ids(&ids); + if (ids != NULL) { + for (VsmString* id = ids; *id; ++id) { + VsmStatus st = w->client->vsm_declare_file(*id, type, path, (int32_t)flags, (mode_t)mode, NULL); + if (st != VSMCLIENT_SUCCESS) { + wrap_error(st, w->client); + } + } + } + vsm_array_string_free(ids); + return VSM_ERROR_NONE; +} + +API int vsm_declare_link(struct vsm_context *ctx, const char *source, const char *target) +{ + LOGS("WRAP:src=" << source << ", dst=" << target); + callcheck(); +/* Old implementation is following: (but implemented in server) + args.oldpath = oldpath; + args.newpath = newpath; + ret = iterate_running_zone("/sys/fs/cgroup/cpuset/lxc", link_resource, &args); +*/ + WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); + VsmArrayString ids = NULL; + w->client->vsm_get_zone_ids(&ids); + if (ids != NULL) + for (VsmString* id = ids; *id; ++id) { + VsmStatus st = w->client->vsm_declare_link(source, *id, target, NULL); + if (st != VSMCLIENT_SUCCESS) + wrap_error(st, w->client); + } + vsm_array_string_free(ids); return VSM_ERROR_NONE; } @@ -577,54 +637,119 @@ API int vsm_declare_mount(struct vsm_context *ctx, unsigned long flags, const void *data) { - LOGS(""); callcheck(); - UNUSED(ctx); - UNUSED(source); - UNUSED(target); - UNUSED(fstype); - UNUSED(flags); - UNUSED(data); - //TODO apply declare link for existing zones (and those created in the future, so must store paits source, target) - return VSM_ERROR_NONE; -} - -API int vsm_declare_link(struct vsm_context *ctx, const char *source, const char *target) -{ - LOGS("src=" << source << "dst=" << target); callcheck(); - UNUSED(ctx); - UNUSED(source); - UNUSED(target); - //TODO apply declare link for existing zones (and those created in the future, so must store paits source, target) + LOGS("WRAP:"); + callcheck(); +/* Old implementation is following: (but implemented in server) + args.oldpath = oldpath; + args.newpath = newpath; + ret = iterate_running_zone("/sys/fs/cgroup/cpuset/lxc", mount_resource, &args); +*/ + WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); + VsmArrayString ids = NULL; + w->client->vsm_get_zone_ids(&ids); + if (ids != NULL) { + for (VsmString* id = ids; *id; ++id) { + VsmStatus st = w->client->vsm_declare_mount(source, *id, target, fstype, flags, (const char *)data, NULL); + if (st != VSMCLIENT_SUCCESS) { + wrap_error(st, w->client); + } + } + } + vsm_array_string_free(ids); return VSM_ERROR_NONE; } -API int vsm_add_state_changed_callback(vsm_context_h /*ctx*/, vsm_zone_state_changed_cb /*callback*/, void * /*user_data*/) -{ - return VSM_ERROR_NONE; -} -API int vsm_del_state_changed_callback(vsm_context_h /*ctx*/, int /*id*/) -{ - return VSM_ERROR_NONE; -} API const char * vsm_get_zone_rootpath(vsm_zone_h /*zone*/) { + LOGS("WRAP:"); return NULL; } API const char * vsm_get_zone_name(vsm_zone_h /*zone*/) { + LOGS("WRAP:"); return NULL; } API int vsm_is_host_zone(vsm_zone_h /*zone*/) { + LOGS("WRAP:"); return VSM_ERROR_NONE; } API vsm_zone_h vsm_join_zone(vsm_zone_h /*zone*/) { + LOGS("WRAP:"); return NULL; } API int vsm_canonicalize_path(const char * /*input_path*/, char ** /*output_path*/) { + LOGS("WRAP:"); return VSM_ERROR_NONE; } +static int is_valid_context(void * /*v*/) +{ + return 1; +} +static const char *vsm_error_string_v0_34(struct vsm_context *ctx) +{ + vsm_error_e error = ctx->error; + if (error < 0 || error > VSM_MAX_ERROR) { + return NULL; + } + return vsm_error_strtab[error]; +} +static const char *vsm_error_string_v0_3_1(vsm_error_e error) +{ + if (error < 0 || error > VSM_MAX_ERROR) { + return NULL; + } + return vsm_error_strtab[error]; +} + +extern "C" { +// Note: incomaptible API, try support both +// API(v0.34) const char *vsm_error_string(struct vsm_context *ctx) +// API(v0.3.1) const char *vsm_error_string(vsm_error_e error) +API const char *vsm_error_string(vsm_error_e e) +{ + LOGS("WRAP:"); + callcheck(); + struct vsm_context *ctx=(struct vsm_context *)e; + if (is_valid_context(ctx)) { + return vsm_error_string_v0_34((struct vsm_context *)ctx); + } + else { + return vsm_error_string_v0_3_1(static_cast((int)ctx)); + } +} + +API struct vsm_zone *vsm_lookup_zone_by_terminal_id(struct vsm_context *ctx, int terminal) +{ + LOGS("WRAP:terminal=" << terminal); + callcheck(); + WrappedContext *w = container_of(ctx, WrappedContext, hq_ctx); + VsmZone zone; + VsmString id; + if (!w->client) return NULL; + if (w->client->vsm_lookup_zone_by_terminal_id(terminal, &id) != VSMCLIENT_SUCCESS) + return NULL; + w->client->vsm_lookup_zone_by_id(id, &zone); + return wrap_vsm_zone(w, zone); +} + +API void vsm_array_string_free(VsmArrayString astring) +{ + if (!astring) { + return; + } + for (char** ptr = astring; *ptr; ++ptr) { + vsm_string_free(*ptr); + } + free(astring); +} + +API void vsm_string_free(VsmString string) +{ + free(string); +} +} // extern "C" -- 2.7.4