|
@@ -22,6 +22,7 @@
|
|
|
|
|
|
extern "C" {
|
|
extern "C" {
|
|
#include "utils/docker-util.c"
|
|
#include "utils/docker-util.c"
|
|
|
|
+#include "utils/mount-utils.c"
|
|
}
|
|
}
|
|
|
|
|
|
namespace ContainerExecutor {
|
|
namespace ContainerExecutor {
|
|
@@ -121,7 +122,7 @@ namespace ContainerExecutor {
|
|
for (itr = file_cmd_vec.begin(); itr != file_cmd_vec.end(); ++itr) {
|
|
for (itr = file_cmd_vec.begin(); itr != file_cmd_vec.end(); ++itr) {
|
|
write_command_file(itr->first);
|
|
write_command_file(itr->first);
|
|
int ret = (*docker_func)(docker_command_file.c_str(), &container_executor_cfg, &tmp);
|
|
int ret = (*docker_func)(docker_command_file.c_str(), &container_executor_cfg, &tmp);
|
|
- ASSERT_EQ(0, ret) << "error message: " << get_docker_error_message(ret) << " for input " << itr->first;
|
|
|
|
|
|
+ ASSERT_EQ(0, ret) << "error message: " << get_error_message(ret) << " for input " << itr->first;
|
|
char *actual = flatten(&tmp);
|
|
char *actual = flatten(&tmp);
|
|
ASSERT_STREQ(itr->second.c_str(), actual);
|
|
ASSERT_STREQ(itr->second.c_str(), actual);
|
|
reset_args(&tmp);
|
|
reset_args(&tmp);
|
|
@@ -136,7 +137,7 @@ namespace ContainerExecutor {
|
|
reset_args(&tmp);
|
|
reset_args(&tmp);
|
|
}
|
|
}
|
|
int ret = (*docker_func)("unknown-file", &container_executor_cfg, &tmp);
|
|
int ret = (*docker_func)("unknown-file", &container_executor_cfg, &tmp);
|
|
- ASSERT_EQ(static_cast<int>(INVALID_COMMAND_FILE), ret);
|
|
|
|
|
|
+ ASSERT_EQ(static_cast<int>(INVALID_DOCKER_COMMAND_FILE), ret);
|
|
reset_args(&tmp);
|
|
reset_args(&tmp);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -181,10 +182,10 @@ namespace ContainerExecutor {
|
|
std::vector<std::pair<std::string, int> > bad_file_cmd_vec;
|
|
std::vector<std::pair<std::string, int> > bad_file_cmd_vec;
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=run\n format='{{.State.Status}}'",
|
|
"[docker-command-execution]\n docker-command=run\n format='{{.State.Status}}'",
|
|
- static_cast<int>(INCORRECT_COMMAND)));
|
|
|
|
|
|
+ static_cast<int>(INCORRECT_DOCKER_COMMAND)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"docker-command=inspect\n format='{{.State.Status}}'",
|
|
"docker-command=inspect\n format='{{.State.Status}}'",
|
|
- static_cast<int>(INCORRECT_COMMAND)));
|
|
|
|
|
|
+ static_cast<int>(INCORRECT_DOCKER_COMMAND)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=inspect\n format={{.State.Status}}\n name=",
|
|
"[docker-command-execution]\n docker-command=inspect\n format={{.State.Status}}\n name=",
|
|
static_cast<int>(INVALID_DOCKER_CONTAINER_NAME)));
|
|
static_cast<int>(INVALID_DOCKER_CONTAINER_NAME)));
|
|
@@ -218,9 +219,9 @@ namespace ContainerExecutor {
|
|
|
|
|
|
std::vector<std::pair<std::string, int> > bad_file_cmd_vec;
|
|
std::vector<std::pair<std::string, int> > bad_file_cmd_vec;
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
- "[docker-command-execution]\n docker-command=run\n image=image-id", static_cast<int>(INCORRECT_COMMAND)));
|
|
|
|
|
|
+ "[docker-command-execution]\n docker-command=run\n image=image-id", static_cast<int>(INCORRECT_DOCKER_COMMAND)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
- "docker-command=load\n image=image-id", static_cast<int>(INCORRECT_COMMAND)));
|
|
|
|
|
|
+ "docker-command=load\n image=image-id", static_cast<int>(INCORRECT_DOCKER_COMMAND)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=load\n image=", static_cast<int>(INVALID_DOCKER_IMAGE_NAME)));
|
|
"[docker-command-execution]\n docker-command=load\n image=", static_cast<int>(INVALID_DOCKER_IMAGE_NAME)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>("[docker-command-execution]\n docker-command=load",
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>("[docker-command-execution]\n docker-command=load",
|
|
@@ -288,9 +289,9 @@ namespace ContainerExecutor {
|
|
|
|
|
|
std::vector<std::pair<std::string, int> > bad_file_cmd_vec;
|
|
std::vector<std::pair<std::string, int> > bad_file_cmd_vec;
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
- "[docker-command-execution]\n docker-command=run\n image=image-id", static_cast<int>(INCORRECT_COMMAND)));
|
|
|
|
|
|
+ "[docker-command-execution]\n docker-command=run\n image=image-id", static_cast<int>(INCORRECT_DOCKER_COMMAND)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
- "docker-command=pull\n image=image-id", static_cast<int>(INCORRECT_COMMAND)));
|
|
|
|
|
|
+ "docker-command=pull\n image=image-id", static_cast<int>(INCORRECT_DOCKER_COMMAND)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=pull\n image=", static_cast<int>(INVALID_DOCKER_IMAGE_NAME)));
|
|
"[docker-command-execution]\n docker-command=pull\n image=", static_cast<int>(INVALID_DOCKER_IMAGE_NAME)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>("[docker-command-execution]\n docker-command=pull",
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>("[docker-command-execution]\n docker-command=pull",
|
|
@@ -309,9 +310,9 @@ namespace ContainerExecutor {
|
|
std::vector<std::pair<std::string, int> > bad_file_cmd_vec;
|
|
std::vector<std::pair<std::string, int> > bad_file_cmd_vec;
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=run\n name=container_e1_12312_11111_02_000001",
|
|
"[docker-command-execution]\n docker-command=run\n name=container_e1_12312_11111_02_000001",
|
|
- static_cast<int>(INCORRECT_COMMAND)));
|
|
|
|
|
|
+ static_cast<int>(INCORRECT_DOCKER_COMMAND)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
- "docker-command=rm\n name=ctr-id", static_cast<int>(INCORRECT_COMMAND)));
|
|
|
|
|
|
+ "docker-command=rm\n name=ctr-id", static_cast<int>(INCORRECT_DOCKER_COMMAND)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=rm\n name=", static_cast<int>(INVALID_DOCKER_CONTAINER_NAME)));
|
|
"[docker-command-execution]\n docker-command=rm\n name=", static_cast<int>(INVALID_DOCKER_CONTAINER_NAME)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
@@ -332,9 +333,9 @@ namespace ContainerExecutor {
|
|
std::vector<std::pair<std::string, int> > bad_file_cmd_vec;
|
|
std::vector<std::pair<std::string, int> > bad_file_cmd_vec;
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=run\n name=container_e1_12312_11111_02_000001",
|
|
"[docker-command-execution]\n docker-command=run\n name=container_e1_12312_11111_02_000001",
|
|
- static_cast<int>(INCORRECT_COMMAND)));
|
|
|
|
|
|
+ static_cast<int>(INCORRECT_DOCKER_COMMAND)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
- "docker-command=stop\n name=ctr-id", static_cast<int>(INCORRECT_COMMAND)));
|
|
|
|
|
|
+ "docker-command=stop\n name=ctr-id", static_cast<int>(INCORRECT_DOCKER_COMMAND)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=stop\n name=", static_cast<int>(INVALID_DOCKER_CONTAINER_NAME)));
|
|
"[docker-command-execution]\n docker-command=stop\n name=", static_cast<int>(INVALID_DOCKER_CONTAINER_NAME)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
@@ -359,9 +360,9 @@ namespace ContainerExecutor {
|
|
std::vector<std::pair<std::string, int> > bad_file_cmd_vec;
|
|
std::vector<std::pair<std::string, int> > bad_file_cmd_vec;
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=run\n name=container_e1_12312_11111_02_000001",
|
|
"[docker-command-execution]\n docker-command=run\n name=container_e1_12312_11111_02_000001",
|
|
- static_cast<int>(INCORRECT_COMMAND)));
|
|
|
|
|
|
+ static_cast<int>(INCORRECT_DOCKER_COMMAND)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
- "docker-command=kill\n name=ctr-id", static_cast<int>(INCORRECT_COMMAND)));
|
|
|
|
|
|
+ "docker-command=kill\n name=ctr-id", static_cast<int>(INCORRECT_DOCKER_COMMAND)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=kill\n name=", static_cast<int>(INVALID_DOCKER_CONTAINER_NAME)));
|
|
"[docker-command-execution]\n docker-command=kill\n name=", static_cast<int>(INVALID_DOCKER_CONTAINER_NAME)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
@@ -382,9 +383,9 @@ namespace ContainerExecutor {
|
|
std::vector<std::pair<std::string, int> > bad_file_cmd_vec;
|
|
std::vector<std::pair<std::string, int> > bad_file_cmd_vec;
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=run\n name=container_e1_12312_11111_02_000001",
|
|
"[docker-command-execution]\n docker-command=run\n name=container_e1_12312_11111_02_000001",
|
|
- static_cast<int>(INCORRECT_COMMAND)));
|
|
|
|
|
|
+ static_cast<int>(INCORRECT_DOCKER_COMMAND)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
- "docker-command=start\n name=ctr-id", static_cast<int>(INCORRECT_COMMAND)));
|
|
|
|
|
|
+ "docker-command=start\n name=ctr-id", static_cast<int>(INCORRECT_DOCKER_COMMAND)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=start\n name=", static_cast<int>(INVALID_DOCKER_CONTAINER_NAME)));
|
|
"[docker-command-execution]\n docker-command=start\n name=", static_cast<int>(INVALID_DOCKER_CONTAINER_NAME)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
@@ -474,7 +475,7 @@ namespace ContainerExecutor {
|
|
}
|
|
}
|
|
ret = set_runtime(&cmd_cfg, &container_cfg, &buff);
|
|
ret = set_runtime(&cmd_cfg, &container_cfg, &buff);
|
|
char *actual = flatten(&buff);
|
|
char *actual = flatten(&buff);
|
|
- ASSERT_EQ(0, ret) << "error message: " << get_docker_error_message(ret) << " for input " << itr->first;
|
|
|
|
|
|
+ ASSERT_EQ(0, ret) << "error message: " << get_error_message(ret) << " for input " << itr->first;
|
|
ASSERT_STREQ(itr->second.c_str(), actual);
|
|
ASSERT_STREQ(itr->second.c_str(), actual);
|
|
reset_args(&buff);
|
|
reset_args(&buff);
|
|
free(actual);
|
|
free(actual);
|
|
@@ -599,7 +600,7 @@ namespace ContainerExecutor {
|
|
}
|
|
}
|
|
ret = add_ports_mapping_to_command(&cmd_cfg, &buff);
|
|
ret = add_ports_mapping_to_command(&cmd_cfg, &buff);
|
|
char *actual = flatten(&buff);
|
|
char *actual = flatten(&buff);
|
|
- ASSERT_EQ(0, ret) << "error message: " << get_docker_error_message(ret) << " for input " << itr->first;
|
|
|
|
|
|
+ ASSERT_EQ(0, ret) << "error message: " << get_error_message(ret) << " for input " << itr->first;
|
|
ASSERT_STREQ(itr->second.c_str(), actual);
|
|
ASSERT_STREQ(itr->second.c_str(), actual);
|
|
reset_args(&buff);
|
|
reset_args(&buff);
|
|
free(actual);
|
|
free(actual);
|
|
@@ -655,7 +656,7 @@ namespace ContainerExecutor {
|
|
"[docker-command-execution]\n docker-command=run", ""));
|
|
"[docker-command-execution]\n docker-command=run", ""));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=run\n pid=other",
|
|
"[docker-command-execution]\n docker-command=run\n pid=other",
|
|
- static_cast<int>(INVALID_PID_NAMESPACE)));
|
|
|
|
|
|
+ static_cast<int>(INVALID_DOCKER_PID_NAMESPACE)));
|
|
|
|
|
|
for (int i = 1; i < 3; ++i) {
|
|
for (int i = 1; i < 3; ++i) {
|
|
write_container_executor_cfg(container_executor_cfg_contents[0]);
|
|
write_container_executor_cfg(container_executor_cfg_contents[0]);
|
|
@@ -719,10 +720,10 @@ namespace ContainerExecutor {
|
|
bad_file_cmd_vec.clear();
|
|
bad_file_cmd_vec.clear();
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=run\n pid=other",
|
|
"[docker-command-execution]\n docker-command=run\n pid=other",
|
|
- static_cast<int>(INVALID_PID_NAMESPACE)));
|
|
|
|
|
|
+ static_cast<int>(INVALID_DOCKER_PID_NAMESPACE)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=run\n pid=host",
|
|
"[docker-command-execution]\n docker-command=run\n pid=host",
|
|
- static_cast<int>(PID_HOST_DISABLED)));
|
|
|
|
|
|
+ static_cast<int>(DOCKER_PID_HOST_DISABLED)));
|
|
for (itr2 = bad_file_cmd_vec.begin(); itr2 != bad_file_cmd_vec.end(); ++itr2) {
|
|
for (itr2 = bad_file_cmd_vec.begin(); itr2 != bad_file_cmd_vec.end(); ++itr2) {
|
|
write_command_file(itr2->first);
|
|
write_command_file(itr2->first);
|
|
ret = read_config(docker_command_file.c_str(), &cmd_cfg);
|
|
ret = read_config(docker_command_file.c_str(), &cmd_cfg);
|
|
@@ -816,7 +817,7 @@ namespace ContainerExecutor {
|
|
FAIL();
|
|
FAIL();
|
|
}
|
|
}
|
|
ret = set_privileged(&cmd_cfg, &container_cfg, &buff);
|
|
ret = set_privileged(&cmd_cfg, &container_cfg, &buff);
|
|
- ASSERT_EQ(6, ret);
|
|
|
|
|
|
+ ASSERT_EQ(INVALID_DOCKER_USER_NAME, ret);
|
|
ASSERT_EQ(0, buff.length);
|
|
ASSERT_EQ(0, buff.length);
|
|
reset_args(&buff);
|
|
reset_args(&buff);
|
|
free_configuration(&cmd_cfg);
|
|
free_configuration(&cmd_cfg);
|
|
@@ -827,7 +828,7 @@ namespace ContainerExecutor {
|
|
FAIL();
|
|
FAIL();
|
|
}
|
|
}
|
|
ret = set_privileged(&cmd_cfg, &container_cfg, &buff);
|
|
ret = set_privileged(&cmd_cfg, &container_cfg, &buff);
|
|
- ASSERT_EQ(PRIVILEGED_CONTAINERS_DISABLED, ret);
|
|
|
|
|
|
+ ASSERT_EQ(PRIVILEGED_DOCKER_CONTAINERS_DISABLED, ret);
|
|
ASSERT_EQ(0, buff.length);
|
|
ASSERT_EQ(0, buff.length);
|
|
reset_args(&buff);
|
|
reset_args(&buff);
|
|
free_configuration(&cmd_cfg);
|
|
free_configuration(&cmd_cfg);
|
|
@@ -864,7 +865,7 @@ namespace ContainerExecutor {
|
|
FAIL();
|
|
FAIL();
|
|
}
|
|
}
|
|
ret = set_privileged(&cmd_cfg, &container_cfg, &buff);
|
|
ret = set_privileged(&cmd_cfg, &container_cfg, &buff);
|
|
- ASSERT_EQ(PRIVILEGED_CONTAINERS_DISABLED, ret);
|
|
|
|
|
|
+ ASSERT_EQ(PRIVILEGED_DOCKER_CONTAINERS_DISABLED, ret);
|
|
ASSERT_EQ(0, buff.length);
|
|
ASSERT_EQ(0, buff.length);
|
|
reset_args(&buff);
|
|
reset_args(&buff);
|
|
free_configuration(&cmd_cfg);
|
|
free_configuration(&cmd_cfg);
|
|
@@ -1069,7 +1070,7 @@ namespace ContainerExecutor {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- TEST_F(TestDockerUtil, test_add_mounts) {
|
|
|
|
|
|
+ TEST_F(TestDockerUtil, test_add_docker_mounts) {
|
|
struct configuration container_cfg, cmd_cfg;
|
|
struct configuration container_cfg, cmd_cfg;
|
|
struct args buff = ARGS_INITIAL_VALUE;
|
|
struct args buff = ARGS_INITIAL_VALUE;
|
|
int ret = 0;
|
|
int ret = 0;
|
|
@@ -1125,7 +1126,7 @@ namespace ContainerExecutor {
|
|
if (ret != 0) {
|
|
if (ret != 0) {
|
|
FAIL();
|
|
FAIL();
|
|
}
|
|
}
|
|
- ret = add_mounts(&cmd_cfg, &container_cfg, &buff);
|
|
|
|
|
|
+ ret = add_docker_mounts(&cmd_cfg, &container_cfg, &buff);
|
|
char *actual = flatten(&buff);
|
|
char *actual = flatten(&buff);
|
|
ASSERT_EQ(0, ret);
|
|
ASSERT_EQ(0, ret);
|
|
ASSERT_STREQ(itr->second.c_str(), actual);
|
|
ASSERT_STREQ(itr->second.c_str(), actual);
|
|
@@ -1137,22 +1138,22 @@ namespace ContainerExecutor {
|
|
std::vector<std::pair<std::string, int> > bad_file_cmds_vec;
|
|
std::vector<std::pair<std::string, int> > bad_file_cmds_vec;
|
|
bad_file_cmds_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmds_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=run\n image=hadoop/image\n mounts=/lib:/lib:rw",
|
|
"[docker-command-execution]\n docker-command=run\n image=hadoop/image\n mounts=/lib:/lib:rw",
|
|
- static_cast<int>(INVALID_DOCKER_RW_MOUNT)));
|
|
|
|
|
|
+ static_cast<int>(INVALID_RW_MOUNT)));
|
|
bad_file_cmds_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmds_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=run\n image=hadoop/image\n mounts=/usr/bin/:/usr/bin:rw",
|
|
"[docker-command-execution]\n docker-command=run\n image=hadoop/image\n mounts=/usr/bin/:/usr/bin:rw",
|
|
- static_cast<int>(INVALID_DOCKER_RW_MOUNT)));
|
|
|
|
|
|
+ static_cast<int>(INVALID_RW_MOUNT)));
|
|
bad_file_cmds_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmds_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=run\n image=hadoop/image\n mounts=/blah:/blah:rw",
|
|
"[docker-command-execution]\n docker-command=run\n image=hadoop/image\n mounts=/blah:/blah:rw",
|
|
- static_cast<int>(INVALID_DOCKER_MOUNT)));
|
|
|
|
|
|
+ static_cast<int>(INVALID_MOUNT)));
|
|
bad_file_cmds_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmds_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=run\n image=hadoop/image\n mounts=/tmp:/tmp:shared",
|
|
"[docker-command-execution]\n docker-command=run\n image=hadoop/image\n mounts=/tmp:/tmp:shared",
|
|
- static_cast<int>(INVALID_DOCKER_MOUNT)));
|
|
|
|
|
|
+ static_cast<int>(INVALID_MOUNT)));
|
|
bad_file_cmds_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmds_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=run\n image=hadoop/image\n mounts=/lib:/lib",
|
|
"[docker-command-execution]\n docker-command=run\n image=hadoop/image\n mounts=/lib:/lib",
|
|
- static_cast<int>(INVALID_DOCKER_MOUNT)));
|
|
|
|
|
|
+ static_cast<int>(INVALID_MOUNT)));
|
|
bad_file_cmds_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmds_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=run\n image=hadoop/image\n mounts=/lib:/lib:other",
|
|
"[docker-command-execution]\n docker-command=run\n image=hadoop/image\n mounts=/lib:/lib:other",
|
|
- static_cast<int>(INVALID_DOCKER_MOUNT)));
|
|
|
|
|
|
+ static_cast<int>(INVALID_MOUNT)));
|
|
|
|
|
|
std::vector<std::pair<std::string, int> >::const_iterator itr2;
|
|
std::vector<std::pair<std::string, int> >::const_iterator itr2;
|
|
|
|
|
|
@@ -1162,7 +1163,7 @@ namespace ContainerExecutor {
|
|
if (ret != 0) {
|
|
if (ret != 0) {
|
|
FAIL();
|
|
FAIL();
|
|
}
|
|
}
|
|
- ret = add_mounts(&cmd_cfg, &container_cfg, &buff);
|
|
|
|
|
|
+ ret = add_docker_mounts(&cmd_cfg, &container_cfg, &buff);
|
|
char *actual = flatten(&buff);
|
|
char *actual = flatten(&buff);
|
|
ASSERT_EQ(itr2->second, ret);
|
|
ASSERT_EQ(itr2->second, ret);
|
|
ASSERT_STREQ("", actual);
|
|
ASSERT_STREQ("", actual);
|
|
@@ -1181,8 +1182,8 @@ namespace ContainerExecutor {
|
|
if (ret != 0) {
|
|
if (ret != 0) {
|
|
FAIL();
|
|
FAIL();
|
|
}
|
|
}
|
|
- ret = add_mounts(&cmd_cfg, &container_cfg, &buff);
|
|
|
|
- ASSERT_EQ(INVALID_DOCKER_RW_MOUNT, ret) << " for input " << cmd_file_contents;
|
|
|
|
|
|
+ ret = add_docker_mounts(&cmd_cfg, &container_cfg, &buff);
|
|
|
|
+ ASSERT_EQ(INVALID_RW_MOUNT, ret) << " for input " << cmd_file_contents;
|
|
char *actual = flatten(&buff);
|
|
char *actual = flatten(&buff);
|
|
ASSERT_STREQ("", actual);
|
|
ASSERT_STREQ("", actual);
|
|
reset_args(&buff);
|
|
reset_args(&buff);
|
|
@@ -1196,7 +1197,7 @@ namespace ContainerExecutor {
|
|
free(ce_path);
|
|
free(ce_path);
|
|
free_configuration(&container_cfg);
|
|
free_configuration(&container_cfg);
|
|
|
|
|
|
- // For untrusted image, container add_mounts will pass through
|
|
|
|
|
|
+ // For untrusted image, container add_docker_mounts will pass through
|
|
// without mounting or report error code.
|
|
// without mounting or report error code.
|
|
container_executor_cfg_contents = "[docker]\n";
|
|
container_executor_cfg_contents = "[docker]\n";
|
|
write_container_executor_cfg(container_executor_cfg_contents);
|
|
write_container_executor_cfg(container_executor_cfg_contents);
|
|
@@ -1204,7 +1205,7 @@ namespace ContainerExecutor {
|
|
if (ret != 0) {
|
|
if (ret != 0) {
|
|
FAIL();
|
|
FAIL();
|
|
}
|
|
}
|
|
- ret = add_mounts(&cmd_cfg, &container_cfg, &buff);
|
|
|
|
|
|
+ ret = add_docker_mounts(&cmd_cfg, &container_cfg, &buff);
|
|
char *actual = flatten(&buff);
|
|
char *actual = flatten(&buff);
|
|
ASSERT_EQ(0, ret);
|
|
ASSERT_EQ(0, ret);
|
|
ASSERT_STREQ("", actual);
|
|
ASSERT_STREQ("", actual);
|
|
@@ -1266,7 +1267,7 @@ namespace ContainerExecutor {
|
|
if (ret != 0) {
|
|
if (ret != 0) {
|
|
FAIL();
|
|
FAIL();
|
|
}
|
|
}
|
|
- ret = add_mounts(&cmd_cfg, &container_cfg, &buff);
|
|
|
|
|
|
+ ret = add_docker_mounts(&cmd_cfg, &container_cfg, &buff);
|
|
char *actual = flatten(&buff);
|
|
char *actual = flatten(&buff);
|
|
ASSERT_EQ(0, ret);
|
|
ASSERT_EQ(0, ret);
|
|
ASSERT_STREQ(itr->second.c_str(), actual);
|
|
ASSERT_STREQ(itr->second.c_str(), actual);
|
|
@@ -1278,10 +1279,10 @@ namespace ContainerExecutor {
|
|
std::vector<std::pair<std::string, int> > bad_file_cmds_vec;
|
|
std::vector<std::pair<std::string, int> > bad_file_cmds_vec;
|
|
bad_file_cmds_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmds_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=run\n image=hadoop/image\n mounts=/etc:/etc:ro",
|
|
"[docker-command-execution]\n docker-command=run\n image=hadoop/image\n mounts=/etc:/etc:ro",
|
|
- static_cast<int>(INVALID_DOCKER_RO_MOUNT)));
|
|
|
|
|
|
+ static_cast<int>(INVALID_RO_MOUNT)));
|
|
bad_file_cmds_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmds_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=run\n image=hadoop/image\n mounts=/blah:/blah:ro",
|
|
"[docker-command-execution]\n docker-command=run\n image=hadoop/image\n mounts=/blah:/blah:ro",
|
|
- static_cast<int>(INVALID_DOCKER_MOUNT)));
|
|
|
|
|
|
+ static_cast<int>(INVALID_MOUNT)));
|
|
|
|
|
|
std::vector<std::pair<std::string, int> >::const_iterator itr2;
|
|
std::vector<std::pair<std::string, int> >::const_iterator itr2;
|
|
|
|
|
|
@@ -1291,7 +1292,7 @@ namespace ContainerExecutor {
|
|
if (ret != 0) {
|
|
if (ret != 0) {
|
|
FAIL();
|
|
FAIL();
|
|
}
|
|
}
|
|
- ret = add_mounts(&cmd_cfg, &container_cfg, &buff);
|
|
|
|
|
|
+ ret = add_docker_mounts(&cmd_cfg, &container_cfg, &buff);
|
|
char *actual = flatten(&buff);
|
|
char *actual = flatten(&buff);
|
|
ASSERT_EQ(itr2->second, ret);
|
|
ASSERT_EQ(itr2->second, ret);
|
|
ASSERT_STREQ("", actual);
|
|
ASSERT_STREQ("", actual);
|
|
@@ -1312,8 +1313,8 @@ namespace ContainerExecutor {
|
|
if (ret != 0) {
|
|
if (ret != 0) {
|
|
FAIL();
|
|
FAIL();
|
|
}
|
|
}
|
|
- ret = add_mounts(&cmd_cfg, &container_cfg, &buff);
|
|
|
|
- ASSERT_EQ(INVALID_DOCKER_RO_MOUNT, ret);
|
|
|
|
|
|
+ ret = add_docker_mounts(&cmd_cfg, &container_cfg, &buff);
|
|
|
|
+ ASSERT_EQ(INVALID_RO_MOUNT, ret);
|
|
ASSERT_EQ(0, buff.length);
|
|
ASSERT_EQ(0, buff.length);
|
|
reset_args(&buff);
|
|
reset_args(&buff);
|
|
free_configuration(&cmd_cfg);
|
|
free_configuration(&cmd_cfg);
|
|
@@ -1508,7 +1509,7 @@ namespace ContainerExecutor {
|
|
" network=bridge\n privileged=true\n"
|
|
" network=bridge\n privileged=true\n"
|
|
" cap-add=CHOWN,SETUID\n cgroup-parent=ctr-cgroup\n detach=true\n rm=true\n group-add=1000,1001\n"
|
|
" cap-add=CHOWN,SETUID\n cgroup-parent=ctr-cgroup\n detach=true\n rm=true\n group-add=1000,1001\n"
|
|
" launch-command=bash,test_script.sh,arg1,arg2",
|
|
" launch-command=bash,test_script.sh,arg1,arg2",
|
|
- PRIVILEGED_CONTAINERS_DISABLED));
|
|
|
|
|
|
+ PRIVILEGED_DOCKER_CONTAINERS_DISABLED));
|
|
|
|
|
|
// invalid rw mount
|
|
// invalid rw mount
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
@@ -1518,7 +1519,7 @@ namespace ContainerExecutor {
|
|
" network=bridge\n devices=/dev/test:/dev/test\n"
|
|
" network=bridge\n devices=/dev/test:/dev/test\n"
|
|
" cap-add=CHOWN,SETUID\n cgroup-parent=ctr-cgroup\n detach=true\n rm=true\n"
|
|
" cap-add=CHOWN,SETUID\n cgroup-parent=ctr-cgroup\n detach=true\n rm=true\n"
|
|
" launch-command=bash,test_script.sh,arg1,arg2",
|
|
" launch-command=bash,test_script.sh,arg1,arg2",
|
|
- static_cast<int>(INVALID_DOCKER_RW_MOUNT)));
|
|
|
|
|
|
+ static_cast<int>(INVALID_RW_MOUNT)));
|
|
|
|
|
|
// invalid ro mount
|
|
// invalid ro mount
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
@@ -1528,7 +1529,7 @@ namespace ContainerExecutor {
|
|
" network=bridge\n devices=/dev/test:/dev/test\n"
|
|
" network=bridge\n devices=/dev/test:/dev/test\n"
|
|
" cap-add=CHOWN,SETUID\n cgroup-parent=ctr-cgroup\n detach=true\n rm=true\n"
|
|
" cap-add=CHOWN,SETUID\n cgroup-parent=ctr-cgroup\n detach=true\n rm=true\n"
|
|
" launch-command=bash,test_script.sh,arg1,arg2",
|
|
" launch-command=bash,test_script.sh,arg1,arg2",
|
|
- static_cast<int>(INVALID_DOCKER_RO_MOUNT)));
|
|
|
|
|
|
+ static_cast<int>(INVALID_RO_MOUNT)));
|
|
|
|
|
|
// invalid capability
|
|
// invalid capability
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
@@ -1548,7 +1549,7 @@ namespace ContainerExecutor {
|
|
" network=bridge\n devices=/dev/dev1:/dev/dev1\n privileged=true\n"
|
|
" network=bridge\n devices=/dev/dev1:/dev/dev1\n privileged=true\n"
|
|
" cap-add=CHOWN,SETUID\n cgroup-parent=ctr-cgroup\n detach=true\n rm=true\n"
|
|
" cap-add=CHOWN,SETUID\n cgroup-parent=ctr-cgroup\n detach=true\n rm=true\n"
|
|
" launch-command=bash,test_script.sh,arg1,arg2",
|
|
" launch-command=bash,test_script.sh,arg1,arg2",
|
|
- static_cast<int>(PRIVILEGED_CONTAINERS_DISABLED)));
|
|
|
|
|
|
+ static_cast<int>(PRIVILEGED_DOCKER_CONTAINERS_DISABLED)));
|
|
|
|
|
|
// invalid network
|
|
// invalid network
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
@@ -1690,7 +1691,7 @@ namespace ContainerExecutor {
|
|
" network=bridge\n devices=/dev/test:/dev/test\n privileged=true\n"
|
|
" network=bridge\n devices=/dev/test:/dev/test\n privileged=true\n"
|
|
" cap-add=CHOWN,SETUID\n cgroup-parent=ctr-cgroup\n detach=true\n rm=true\n"
|
|
" cap-add=CHOWN,SETUID\n cgroup-parent=ctr-cgroup\n detach=true\n rm=true\n"
|
|
" launch-command=bash,test_script.sh,arg1,arg2",
|
|
" launch-command=bash,test_script.sh,arg1,arg2",
|
|
- static_cast<int>(PRIVILEGED_CONTAINERS_DISABLED)));
|
|
|
|
|
|
+ static_cast<int>(PRIVILEGED_DOCKER_CONTAINERS_DISABLED)));
|
|
|
|
|
|
run_docker_command_test(file_cmd_vec, bad_file_cmd_vec, get_docker_run_command);
|
|
run_docker_command_test(file_cmd_vec, bad_file_cmd_vec, get_docker_run_command);
|
|
free_configuration(&container_executor_cfg);
|
|
free_configuration(&container_executor_cfg);
|
|
@@ -1978,10 +1979,10 @@ namespace ContainerExecutor {
|
|
std::vector<std::pair<std::string, int> > bad_file_cmd_vec;
|
|
std::vector<std::pair<std::string, int> > bad_file_cmd_vec;
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"[docker-command-execution]\n docker-command=run\n image=image-id",
|
|
"[docker-command-execution]\n docker-command=run\n image=image-id",
|
|
- static_cast<int>(INCORRECT_COMMAND)));
|
|
|
|
|
|
+ static_cast<int>(INCORRECT_DOCKER_COMMAND)));
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
bad_file_cmd_vec.push_back(std::make_pair<std::string, int>(
|
|
"docker-command=images\n image=image-id",
|
|
"docker-command=images\n image=image-id",
|
|
- static_cast<int>(INCORRECT_COMMAND)));
|
|
|
|
|
|
+ static_cast<int>(INCORRECT_DOCKER_COMMAND)));
|
|
|
|
|
|
run_docker_command_test(file_cmd_vec, bad_file_cmd_vec,
|
|
run_docker_command_test(file_cmd_vec, bad_file_cmd_vec,
|
|
get_docker_images_command);
|
|
get_docker_images_command);
|