From 0fea9525a413f3cf0fb853d28f11f91218a0a2fe Mon Sep 17 00:00:00 2001 From: akoszewski Date: Fri, 20 Apr 2018 16:59:35 +0200 Subject: [PATCH] Make cynara-test do not require partition RW remount Change-Id: I988b4de06217fd5a34548e1efb5a609baa859cc6 --- src/cynara-tests/common/cynara_test_env.cpp | 21 ++++++++++++--------- src/cynara-tests/common/cynara_test_env.h | 2 +- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/cynara-tests/common/cynara_test_env.cpp b/src/cynara-tests/common/cynara_test_env.cpp index 4af7659..7b9a1a9 100644 --- a/src/cynara-tests/common/cynara_test_env.cpp +++ b/src/cynara-tests/common/cynara_test_env.cpp @@ -21,6 +21,8 @@ #include +#include + using namespace FileOperations; CynaraTestEnv::CynaraTestEnv() @@ -36,25 +38,26 @@ void CynaraTestEnv::init(const std::string &testName) { m_saveDir = TMP_DIR + "/" + testName; m_dbSaveDir = m_saveDir + "/db"; - m_pluginsSaveDir = m_saveDir + "/plugins"; m_defaultDir = "/etc/security-tests/db_patterns/default"; + m_pluginsToInstallDir = "/opt/plugins_to_install"; CynaraMask mask; removeDirFiles(m_dbSaveDir); removeDirIfExists(m_dbSaveDir); - removeDirFiles(m_pluginsSaveDir); - removeDirIfExists(m_pluginsSaveDir); removeDirIfExists(m_saveDir); makeDir(m_saveDir); + makeDir(m_pluginsToInstallDir); + + int res = mount(m_pluginsToInstallDir.c_str(), CynaraTestConsts::SERVICE_PLUGINS_DIR.c_str(), NULL, MS_BIND, NULL); + RUNNER_ASSERT_ERRNO_MSG(res == 0, "Bind mount failed"); + m_dbPresent = dirExists(CynaraTestConsts::DB_DIR); if (m_dbPresent) { makeDir(m_dbSaveDir); copyCynaraFiles(CynaraTestConsts::DB_DIR, m_dbSaveDir); } - makeDir(m_pluginsSaveDir); - copyCynaraFiles(CynaraTestConsts::SERVICE_PLUGINS_DIR, m_pluginsSaveDir); unmaskedLoadDefaultDatabase(); } @@ -68,14 +71,14 @@ void CynaraTestEnv::finish() else removeDirIfExists(CynaraTestConsts::DB_DIR); - removeDirFiles(CynaraTestConsts::SERVICE_PLUGINS_DIR); - copyCynaraFiles(m_pluginsSaveDir, CynaraTestConsts::SERVICE_PLUGINS_DIR); + int res = umount(CynaraTestConsts::SERVICE_PLUGINS_DIR.c_str()); + RUNNER_ASSERT_ERRNO_MSG(res == 0, "Unmounting failed"); removeDirFiles(m_dbSaveDir); removeDirIfExists(m_dbSaveDir); - removeDirFiles(m_pluginsSaveDir); - removeDirIfExists(m_pluginsSaveDir); removeDirIfExists(m_saveDir); + removeDirFiles(m_pluginsToInstallDir); + removeDirIfExists(m_pluginsToInstallDir); } void CynaraTestEnv::unmaskedLoadDefaultDatabase() diff --git a/src/cynara-tests/common/cynara_test_env.h b/src/cynara-tests/common/cynara_test_env.h index 387d6ba..a3bb18c 100644 --- a/src/cynara-tests/common/cynara_test_env.h +++ b/src/cynara-tests/common/cynara_test_env.h @@ -32,8 +32,8 @@ private: void unmaskedLoadDefaultDatabase(); std::string m_saveDir; std::string m_dbSaveDir; - std::string m_pluginsSaveDir; std::string m_defaultDir; + std::string m_pluginsToInstallDir; bool m_dbPresent; }; -- 2.7.4