[Libct] [PATCH] test: add list of tests, which should be executed for all drivers
Andrey Vagin
avagin at openvz.org
Wed Nov 19 03:00:05 PST 2014
Signed-off-by: Andrey Vagin <avagin at openvz.org>
---
test/Makefile | 19 +++++++++++++------
test/vz_create_exec.c | 2 +-
test/vz_enter.c | 23 ++++++++++++++++++-----
test/vz_net_veth.c | 2 +-
4 files changed, 33 insertions(+), 13 deletions(-)
diff --git a/test/Makefile b/test/Makefile
index f199873..435b8c8 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -1,5 +1,7 @@
include ../Makefile.config
+COMMON_TESTS = vz_create_exec vz_net_veth vz_enter
+
LOCAL_TESTS = ct_create ct_enter ct_proc ct_root ct_root_enter \
ct_create_exec ct_cgroup_basic ct_net_host \
ct_net_veth ct_private_subdir \
@@ -7,10 +9,9 @@ LOCAL_TESTS = ct_create ct_enter ct_proc ct_root ct_root_enter \
ct_cgroup_sub ct_service ct_kill_nons ct_pid_enter \
ct_userns ct_caps
-VZ_TESTS = vz_create_exec vz_net_veth vz_enter \
- vz_cgroup_memory vz_cgroup_cpu vz_cgroup_blkio
+VZ_TESTS = vz_cgroup_memory vz_cgroup_cpu vz_cgroup_blkio
-TESTS = $(LOCAL_TESTS) $(VZ_TESTS)
+TESTS = $(LOCAL_TESTS) $(VZ_TESTS) $(COMMON_TESTS)
PIGS = file_piggy
@@ -25,12 +26,13 @@ LDFLAGS = -Wl,--no-as-needed \
-lct -L../src/ -Wl,-rpath,'$$ORIGIN/../src' \
-lnl-route-3 -lnl-3 -L$(LIBNLDIR) -Wl,-rpath,'$$ORIGIN/$(LIBNLDIR)'
+COMMON_OUTS = $(COMMON_TESTS:%=%.out)
LOCAL_OUTS = $(LOCAL_TESTS:%=%.out)
VZ_OUTS = $(VZ_TESTS:%=%.out)
ifdef CONFIG_APPARMOR
LDFLAGS += -lapparmor
-TESTS += ct_apparmor
+LOCAL_TESTS += ct_apparmor
endif
ifdef CONFIG_SELINUX
@@ -53,6 +55,7 @@ clean: cleanouts
rm -f $(TESTS)
rm -f $(PIGS)
rm -f $(OBJS)
+ rm -rf root
%.o: %.c
$(CC) -c $(CFLAGS) $^ -o $@
@@ -67,10 +70,14 @@ $(1).out: $(1)
endef
$(foreach t, $(TESTS), $(eval $(call gen-out,$(t))))
-run-local: cleanouts $(PIGS) $(LOCAL_OUTS)
+run-local: cleanouts root $(PIGS) $(LOCAL_OUTS) $(COMMON_OUTS)
-run-vz: cleanouts $(VZ_OUTS)
+run-vz: cleanouts root $(VZ_OUTS) $(COMMON_TESTS)
run: cleanouts $(PIGS) $(OUTS)
+root:
+ mkdir root
+ curl http://images.linuxcontainers.org/images/ubuntu/utopic/arm64/default/20141008_03:49/rootfs.tar.xz | tar -JxC root
+
.PHONY: all local vz clean run run-local run-vz
diff --git a/test/vz_create_exec.c b/test/vz_create_exec.c
index cb557bd..4363667 100644
--- a/test/vz_create_exec.c
+++ b/test/vz_create_exec.c
@@ -6,7 +6,7 @@
#include "test.h"
-#define FS_ROOT "/"
+#define FS_ROOT "root"
int main(int argc, char *argv[])
{
libct_session_t s;
diff --git a/test/vz_enter.c b/test/vz_enter.c
index d7e26f9..ab1cc25 100644
--- a/test/vz_enter.c
+++ b/test/vz_enter.c
@@ -3,18 +3,22 @@
#include <libct.h>
#include <unistd.h>
#include <linux/sched.h>
+#include <sys/types.h>
+#include <sys/wait.h>
#include "test.h"
-#define FS_ROOT "/"
+#define FS_ROOT "root"
int main(int argc, char *argv[])
{
libct_session_t s;
ct_handler_t ct;
ct_process_desc_t p;
- char *sleep_a[] = { "sleep", "60", NULL};
- char *ls_a[] = { "ls", "/root/work/libct/test", NULL};
+ char *sleep_a[] = { "read", NULL};
+ char *ls_a[] = { "sh", "-c", "echo ok > test.file", NULL};
int fds[] = {STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO};
+ int pfd[2], status;
+ pid_t pid;
s = libct_session_open_local();
ct = libct_container_create(s, "1339");
@@ -28,11 +32,20 @@ int main(int argc, char *argv[])
CLONE_NEWNET |
CLONE_NEWPID);
- if (libct_container_spawn_execvfds(ct, p, "/bin/sleep", sleep_a, fds) <= 0)
+ if (pipe(pfd))
goto err;
- if (libct_container_enter_execvfds(ct, p, "/bin/ls", ls_a, fds) <= 0)
+ fds[0] = pfd[1];
+ if (libct_container_spawn_execvfds(ct, p, "/bin/read", sleep_a, fds) <= 0)
goto err;
+ close(pfd[1]);
+
+ pid = libct_container_enter_execvfds(ct, p, "/bin/sh", ls_a, fds);
+ if (pid < 0)
+ goto err;
+ waitpid(pid, &status, 0);
+
+ close(pfd[0]);
libct_container_wait(ct);
libct_container_destroy(ct);
diff --git a/test/vz_net_veth.c b/test/vz_net_veth.c
index 89a35bf..ac56347 100644
--- a/test/vz_net_veth.c
+++ b/test/vz_net_veth.c
@@ -9,7 +9,7 @@
#define VETH_HOST_NAME "hveth0"
#define VETH_CT_NAME "cveth0"
-#define FS_ROOT "/"
+#define FS_ROOT "root"
int main(int argc, char *argv[])
{
libct_session_t s;
--
1.9.1
More information about the Libct
mailing list