Make cynara-test do not require partition RW remount 51/178351/6
authorakoszewski <a.koszewski@samsung.com>
Fri, 20 Apr 2018 14:59:35 +0000 (16:59 +0200)
committerakoszewski <a.koszewski@samsung.com>
Fri, 25 May 2018 14:19:47 +0000 (16:19 +0200)
Change-Id: I988b4de06217fd5a34548e1efb5a609baa859cc6

src/cynara-tests/common/cynara_test_env.cpp
src/cynara-tests/common/cynara_test_env.h

index 4af7659..7b9a1a9 100644 (file)
@@ -21,6 +21,8 @@
 
 #include <cynara_test_env.h>
 
+#include <sys/mount.h>
+
 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()
index 387d6ba..a3bb18c 100644 (file)
@@ -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;
 };