#include <cynara_test_env.h>
+#include <sys/mount.h>
+
using namespace FileOperations;
CynaraTestEnv::CynaraTestEnv()
{
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();
}
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()