#include "ut.hpp"
#include "logger/logger.hpp"
+#include "lxcpp/exception.hpp"
+#include "lxcpp/process.hpp"
#include "lxcpp/cgroups/devices.hpp"
#include "lxcpp/cgroups/cgroup-config.hpp"
#include "lxcpp/commands/cgroups.hpp"
-#include "lxcpp/exception.hpp"
#include "utils/text.hpp"
namespace {
}
}
-BOOST_AUTO_TEST_CASE(ControlGroupParams)
+BOOST_AUTO_TEST_CASE(ModifyCGroupParams)
{
CGroup memg("memory:/ut-params");
+ if (memg.exists()) {
+ memg.destroy();
+ }
// this test can fail if prev. test round left unexpected
BOOST_CHECK_MESSAGE(memg.exists() == false, "Cgroup alredy exists");
return ;
}
- BOOST_CHECK_NO_THROW(memg.assignPid(::getpid()));
- BOOST_CHECK_NO_THROW(memg.assignGroup(::getpid()));
+ pid_t pid = lxcpp::fork();
+ if (pid == 0) {
+ BOOST_CHECK_NO_THROW(memg.assignPid(::getpid()));
+ BOOST_CHECK_NO_THROW(memg.assignGroup(::getpid()));
- BOOST_CHECK_NO_THROW(memg.setValue("limit_in_bytes", "10k"));
- BOOST_CHECK_NO_THROW(memg.setValue("soft_limit_in_bytes", "10k"));
- BOOST_CHECK_THROW(memg.getValue("non-existing-name"), CGroupException);
- BOOST_CHECK_THROW(memg.setValue("non-existing-name", "xxx"), CGroupException);
+ BOOST_CHECK_NO_THROW(memg.setValue("limit_in_bytes", "10k"));
+ BOOST_CHECK_NO_THROW(memg.setValue("soft_limit_in_bytes", "10k"));
+ BOOST_CHECK_THROW(memg.getValue("non-existing-name"), CGroupException);
+ BOOST_CHECK_THROW(memg.setValue("non-existing-name", "xxx"), CGroupException);
- LOGD("limit_in_bytes: " << memg.getValue("limit_in_bytes"));
- LOGD("soft_limit_in_bytes: " << memg.getValue("soft_limit_in_bytes"));
- LOGD("max_usage_in_bytes: " << memg.getValue("max_usage_in_bytes"));
-
- CGroup memtop("memory:/");
- memtop.assignPid(::getpid());
- memtop.setCommonValue("procs", std::to_string(::getpid()));
+ LOGD("limit_in_bytes: " << memg.getValue("limit_in_bytes"));
+ LOGD("soft_limit_in_bytes: " << memg.getValue("soft_limit_in_bytes"));
+ LOGD("max_usage_in_bytes: " << memg.getValue("max_usage_in_bytes"));
+ CGroup memtop("memory:/");
+ memtop.assignPid(::getpid());
+ memtop.setCommonValue("procs", std::to_string(::getpid()));
+ ::_exit(EXIT_SUCCESS);
+ }
+ lxcpp::waitpid(pid);
BOOST_CHECK_NO_THROW(memg.destroy());
}
-BOOST_AUTO_TEST_CASE(DevicesParams)
+BOOST_AUTO_TEST_CASE(ListDevicesPermissions)
{
DevicesCGroup devgrp("/tmp");