[CRIU] [PATCH 4/4] Modify and add test for configuration file functionality

vkabatov at redhat.com vkabatov at redhat.com
Mon May 22 08:00:17 PDT 2017


From: Veronika Kabatova <vkabatov at redhat.com>

Creating a test for verifying configuration parsing feature. The
test is created by reusing already present inotify_irmap test.

Because of addition of default configuration files, --no-default-config
option is added to zdtm.py to not break the test suite on systems with
these files present.

Signed-off-by: Veronika Kabatova <vkabatov at redhat.com>
---
 test/Makefile                              |  2 +-
 test/zdtm.py                               |  5 +-
 test/zdtm/static/Makefile                  |  1 +
 test/zdtm/static/config_inotify_irmap.c    | 91 ++++++++++++++++++++++++++++++
 test/zdtm/static/config_inotify_irmap.desc |  3 +
 5 files changed, 100 insertions(+), 2 deletions(-)
 create mode 100644 test/zdtm/static/config_inotify_irmap.c
 create mode 100644 test/zdtm/static/config_inotify_irmap.desc

diff --git a/test/Makefile b/test/Makefile
index a728e0c..b6f74e1 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -51,7 +51,7 @@ clean_root:
 .PHONY: clean_root
 
 clean: clean_root
-	$(RM) zdtm_ct zdtm-tst-list umount2
+	$(RM) zdtm_ct zdtm-tst-list umount2 zdtm_test_config.conf
 	$(Q) $(RM) *.log
 	$(Q) $(RM) -r ./dump/
 	$(Q) $(MAKE) -C zdtm cleandep clean cleanout
diff --git a/test/zdtm.py b/test/zdtm.py
index 26b8939..03e1f12 100755
--- a/test/zdtm.py
+++ b/test/zdtm.py
@@ -479,7 +479,10 @@ class zdtm_test:
 		return self.__name
 
 	def __getcropts(self):
-		opts = self.__desc.get('opts', '').split() + ["--pidfile", os.path.realpath(self.__pidfile())]
+		opts = self.__desc.get('opts', '').split() + [
+				"--pidfile",
+				os.path.realpath(self.__pidfile()),
+				"--no-default-config"]
 		if self.__flavor.ns:
 			opts += ["--root", self.__flavor.root]
 		if test_flag(self.__desc, 'crlib'):
diff --git a/test/zdtm/static/Makefile b/test/zdtm/static/Makefile
index 1ea9393..2908439 100644
--- a/test/zdtm/static/Makefile
+++ b/test/zdtm/static/Makefile
@@ -178,6 +178,7 @@ TST_NOFILE	:=				\
 		netns_sub_veth			\
 		pidns00				\
 		pidns01				\
+		config_inotify_irmap		\
 #		jobctl00			\
 
 ifneq ($(SRCARCH),arm)
diff --git a/test/zdtm/static/config_inotify_irmap.c b/test/zdtm/static/config_inotify_irmap.c
new file mode 100644
index 0000000..9c14184
--- /dev/null
+++ b/test/zdtm/static/config_inotify_irmap.c
@@ -0,0 +1,91 @@
+#include <unistd.h>
+#include <limits.h>
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <string.h>
+#include <stdio.h>
+#include <errno.h>
+#include <sys/inotify.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+#include "zdtmtst.h"
+
+/*
+ * This test reuses inotify_irmap test for testing configuration files
+ * functionality. For parts not related to configuration files, please
+ * refer to the original test case and it's author.
+ */
+
+const char *test_doc	= "Default configuration files usage";
+const char *test_author	= "Veronika Kabatova <vkabatov at redhat.com>";
+
+#define TDIR		"/etc"
+char test_files[2][128] = {TDIR"/zdtm-test", TDIR"/zdtm-test1",};
+#define CONFIG_PATH	"../../zdtm_test_config.conf"
+
+#define BUFF_SIZE ((sizeof(struct inotify_event) + PATH_MAX))
+
+int main (int argc, char *argv[])
+{
+	char buf[BUFF_SIZE];
+	int fd, wd, i;
+
+	test_init(argc, argv);
+
+	for (i = 0; i < 2; i++) {
+		unlink(test_files[i]);
+		if (creat(test_files[i], 0600) < 0) {
+			pr_perror("Can't make test file");
+			exit(1);
+		}
+	}
+	fd = inotify_init1(IN_NONBLOCK);
+	if (fd < 0) {
+		pr_perror("inotify_init failed");
+		goto err;
+	}
+	for (i = 0; i < 2; i++) {
+		wd = inotify_add_watch(fd, test_files[i], IN_OPEN);
+		if (wd < 0) {
+			pr_perror("inotify_add_watch failed");
+			goto err;
+		}
+	}
+
+	FILE *configfile = fopen(CONFIG_PATH, "w");
+	if (configfile == NULL) {
+		pr_perror("Unable to create configuration file %s", CONFIG_PATH);
+		goto err;
+	}
+	fprintf(configfile, "force-irmap\nirmap-scan-path /zdtm/static\n");
+	fclose(configfile);
+
+	test_daemon();
+	test_waitsig();
+
+	for (i = 0; i < 2; i++) {
+		memset(buf, 0, sizeof(buf));
+		wd = open(test_files[i], O_RDONLY);
+		if (read(fd, buf, sizeof(buf)) <= 0) {
+			fail("No events in queue");
+			unlink(CONFIG_PATH);
+			goto err;
+		}
+	}
+
+	close(wd);
+	close(fd);
+	for (i = 0; i < 2; i++)
+		unlink(test_files[i]);
+	unlink(CONFIG_PATH);
+	pass();
+	return 0;
+err:
+	for (i = 0; i < 2; i++)
+		unlink(test_files[i]);
+	return 1;
+}
diff --git a/test/zdtm/static/config_inotify_irmap.desc b/test/zdtm/static/config_inotify_irmap.desc
new file mode 100644
index 0000000..591ae71
--- /dev/null
+++ b/test/zdtm/static/config_inotify_irmap.desc
@@ -0,0 +1,3 @@
+(lambda confpath:
+{'flags': 'suid', 'opts': '--config %s' % (confpath)
+}) (os.path.abspath('./zdtm_test_config.conf'))
-- 
2.7.4



More information about the CRIU mailing list