All of lore.kernel.org
 help / color / mirror / Atom feed
From: Artem Savkov <asavkov@redhat.com>
To: ltp-list@lists.sourceforge.net
Cc: Artem Savkov <asavkov@redhat.com>
Subject: [LTP] [PATCH v2 4/6] uts tests: runutstest.sh -> runtest/containers
Date: Wed, 13 Aug 2014 17:44:24 +0200	[thread overview]
Message-ID: <1407944666-32659-5-git-send-email-asavkov@redhat.com> (raw)
In-Reply-To: <1407944666-32659-1-git-send-email-asavkov@redhat.com>

Extracted utsname tests from runutstest.sh and container_test.sh and added
them one by one to runtest/containers.
hostname recovery moved to utstest.c. tst_exits removed from P2 so that
hostname is actually recovered.
README is removed as it was mostly duplicating utstest.c's header.

Signed-off-by: Artem Savkov <asavkov@redhat.com>
---
 runtest/containers                                 | 11 +++++
 testcases/kernel/containers/container_test.sh      |  7 ---
 testcases/kernel/containers/utsname/README         | 53 ----------------------
 .../containers/utsname/check_utsns_enabled.c       | 50 --------------------
 testcases/kernel/containers/utsname/runutstest.sh  | 33 --------------
 testcases/kernel/containers/utsname/utstest.c      | 51 +++++++++++++++++----
 6 files changed, 53 insertions(+), 152 deletions(-)
 delete mode 100644 testcases/kernel/containers/utsname/README
 delete mode 100644 testcases/kernel/containers/utsname/check_utsns_enabled.c
 delete mode 100755 testcases/kernel/containers/utsname/runutstest.sh

diff --git a/runtest/containers b/runtest/containers
index 0f40716..827a5d7 100644
--- a/runtest/containers
+++ b/runtest/containers
@@ -45,4 +45,15 @@ semtest_2ns_none semtest_2ns none
 semtest_2ns_clone semtest_2ns clone
 semtest_2ns_unshare semtest_2ns unshare
 
+utstest_unshare_1 utstest unshare 1
+utstest_unshare_2 utstest unshare 2
+utstest_unshare_3 utstest unshare 3
+utstest_unshare_4 utstest unshare 4
+utstest_unshare_5 utstest unshare 5
+utstest_clone_1 utstest clone 1
+utstest_clone_2 utstest clone 2
+utstest_clone_3 utstest clone 3
+utstest_clone_4 utstest clone 4
+utstest_clone_5 utstest clone 5
+
 Containers	container_test.sh
diff --git a/testcases/kernel/containers/container_test.sh b/testcases/kernel/containers/container_test.sh
index ca67bb2..9e515e4 100755
--- a/testcases/kernel/containers/container_test.sh
+++ b/testcases/kernel/containers/container_test.sh
@@ -15,13 +15,6 @@ if [ $? -eq 1 ]; then
 	echo "Unshare not supported.  Not running container tests"
 	exit 0
 fi
-check_utsns_enabled
-if [ $? -eq 0 ]; then
-	echo "Running utsns tests."
-	runutstest.sh
-else
-	echo "Uts namespaces not enabled in kernel.  Not running utsns tests."
-fi
 
 #check_userns_enabled
 #if [ $? -eq 0 ]; then
diff --git a/testcases/kernel/containers/utsname/README b/testcases/kernel/containers/utsname/README
deleted file mode 100644
index 5734f88..0000000
--- a/testcases/kernel/containers/utsname/README
+++ /dev/null
@@ -1,53 +0,0 @@
-################################################################################
-##                                                                            ##
-## Copyright (c) International Business Machines  Corp., 2007                 ##
-##                                                                            ##
-## This program is free software;  you can redistribute it and#or modify      ##
-## it under the terms of the GNU General Public License as published by       ##
-## the Free Software Foundation; either version 2 of the License, or          ##
-## (at your option) any later version.                                        ##
-##                                                                            ##
-## This program is distributed in the hope that it will be useful, but        ##
-## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
-## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
-## for more details.                                                          ##
-##                                                                            ##
-## You should have received a copy of the GNU General Public License          ##
-## along with this program;  if not, write to the Free Software               ##
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
-##                                                                            ##
-################################################################################
-
-This contains five tests for the uts namespace unsharing functionality.
-
-To enable this functionality, you currently must use a -mm kernel (see
-kernel.org). Then to run these tests, just type
-
-	sh runutstest.sh
-
-The tests are intended to do the following:
-
-test 1: check that after fork, two children see the same utsname
-	P1: A=gethostname
-	P2: B=gethostname
-	Ensure(A==B)
-test 2: check that after fork, two children are in the same utsname namespace.
-	P1: sethostname(newname); A=gethostname
-	P2: (wait); B=gethostname
-	Ensure (A==B)
-
-test 3: check that after unshare, processes are in different utsname namespaces.
-	P1: A=gethostname; unshare(utsname); sethostname(newname); C=gethostname
-	P2: B=gethostname; (wait); (wait); D=gethostname
-	Ensure (A==B && A==D && C!=D)
-
-test 4: similar to test 3, but other child changes hostname.
-	P1: A=gethostname; unshare(utsname); (wait); C=gethostname
-	P2: B=gethostname; (wait); sethostname(newname); D=gethostname
-	Ensure (A==B && A==C && C!=D)
-
-test 5: check that unsharing utsname without required permissions (CAP_SYS_AUDIT)
-	fails.
-	P1: A=gethostname; unshare(utsname) without suff. perms; (wait); C=gethostname
-	P2: B=gethostname; (wait); sethostname(newname); D=gethostname
-	Ensure (A==B==C==D) and state is ok.
diff --git a/testcases/kernel/containers/utsname/check_utsns_enabled.c b/testcases/kernel/containers/utsname/check_utsns_enabled.c
deleted file mode 100644
index 8834052..0000000
--- a/testcases/kernel/containers/utsname/check_utsns_enabled.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-* Copyright (c) International Business Machines Corp., 2007
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation; either version 2 of the License, or
-* (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
-* the GNU General Public License for more details.
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*
-* Author: Serge Hallyn <serue@us.ibm.com>
-*
-* uts namespaces were introduced around 2.6.19.  Kernels before that,
-* assume they are not enabled.  Kernels after that, check for -EINVAL
-* when trying to use CLONE_NEWUTS.
-***************************************************************************/
-
-#include <sys/utsname.h>
-#include <sched.h>
-#include <stdio.h>
-#include "../libclone/libclone.h"
-#include "test.h"
-
-const char *TCID = "check_utsns_enabled";
-
-int dummy(void *v)
-{
-	return 0;
-}
-
-int main(void)
-{
-	int pid;
-
-	if (tst_kvercmp(2, 6, 19) < 0)
-		return 1;
-
-	pid = ltp_clone_quick(CLONE_NEWUTS, dummy, NULL);
-
-	if (pid == -1) {
-		perror("ltp_clone_quick");
-		return 3;
-	}
-	return 0;
-}
diff --git a/testcases/kernel/containers/utsname/runutstest.sh b/testcases/kernel/containers/utsname/runutstest.sh
deleted file mode 100755
index d3a8021..0000000
--- a/testcases/kernel/containers/utsname/runutstest.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-################################################################################
-##                                                                            ##
-## Copyright (c) International Business Machines  Corp., 2007                 ##
-##                                                                            ##
-## This program is free software;  you can redistribute it and#or modify      ##
-## it under the terms of the GNU General Public License as published by       ##
-## the Free Software Foundation; either version 2 of the License, or          ##
-## (at your option) any later version.                                        ##
-##                                                                            ##
-## This program is distributed in the hope that it will be useful, but        ##
-## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
-## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
-## for more details.                                                          ##
-##                                                                            ##
-## You should have received a copy of the GNU General Public License          ##
-## along with this program;  if not, write to the Free Software               ##
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    ##
-##                                                                            ##
-################################################################################
-
-oldhostname=`hostname`
-echo "unshare tests"
-for i in `seq 1 5`; do
-	echo "test $i (unshare)"
-	utstest unshare $i
-done
-echo "clone tests"
-for i in `seq 1 5`; do
-	echo "test $i (clone)"
-	utstest clone $i
-done
-hostname "$oldhostname"
diff --git a/testcases/kernel/containers/utsname/utstest.c b/testcases/kernel/containers/utsname/utstest.c
index a399605..c70f90b 100644
--- a/testcases/kernel/containers/utsname/utstest.c
+++ b/testcases/kernel/containers/utsname/utstest.c
@@ -54,11 +54,32 @@
 #include <errno.h>
 #include "test.h"
 #include <libclone.h>
+#include "safe_macros.h"
 
 char *TCID = "uts_namespace";
 int TST_TOTAL = 1;
 
-int drop_root()
+static int dummy_child(void *v)
+{
+	(void) v;
+	return 0;
+}
+
+static void check_newuts(void)
+{
+	int pid, status;
+
+	if (tst_kvercmp(2, 6, 19) < 0)
+		tst_brkm(TCONF, NULL, "CLONE_NEWUTS not supported");
+
+	pid = do_clone_unshare_test(T_CLONE, CLONE_NEWUTS, dummy_child, NULL);
+	if (pid == -1)
+		tst_brkm(TCONF | TERRNO, NULL, "CLONE_NEWUTS not supported");
+
+	SAFE_WAIT(NULL, &status);
+}
+
+int drop_root(void)
 {
 	int ret;
 	ret = setresuid(1000, 1000, 1000);
@@ -69,13 +90,14 @@ int drop_root()
 	return 1;
 }
 
-int p1fd[2], p2fd[2];
-pid_t cpid;
-
 #define HLEN 100
 #define NAME1 "serge1"
 #define NAME2 "serge2"
 
+int p1fd[2], p2fd[2];
+static char oldhost[HLEN];
+pid_t cpid;
+
 void picknewhostname(char *orig, char *new)
 {
 	memset(new, 0, HLEN);
@@ -198,7 +220,7 @@ int P1(void *vtest)
 	default:
 		break;
 	}
-	return -1;
+	tst_exit();
 }
 
 int P2(void *vtest)
@@ -234,8 +256,7 @@ int P2(void *vtest)
 		}
 		if (hostname[0] == '0') {
 			tst_resm(TPASS, "P2: P1 claims error");
-			tst_exit();
-			exit(0);
+			return 0;
 		}
 		gethostname(hostname, HLEN);
 		picknewhostname(hostname, newhostname);
@@ -246,10 +267,21 @@ int P2(void *vtest)
 		tst_resm(TFAIL, "undefined test: %d", testnum);
 		break;
 	}
-	tst_exit();
 	return 0;
 }
 
+static void setup(void)
+{
+	gethostname(oldhost, HLEN);
+	tst_require_root(NULL);
+	check_newuts();
+}
+
+static void cleanup(void)
+{
+	sethostname(oldhost, strlen(oldhost));
+}
+
 #define UNSHARESTR "unshare"
 #define CLONESTR "clone"
 int main(int argc, char *argv[])
@@ -258,6 +290,7 @@ int main(int argc, char *argv[])
 	int testnum;
 	void *vtest;
 
+	setup();
 	if (argc != 3) {
 		tst_resm(TFAIL, "Usage: %s <clone|unshare> <testnum>",
 			 argv[0]);
@@ -304,7 +337,6 @@ int main(int argc, char *argv[])
 			if (!drop_root()) {
 				tst_resm(TFAIL, "failed to drop root.");
 				tst_exit();
-				exit(1);
 			}
 			r = do_clone_unshare_test(use_clone, CLONE_NEWUTS,
 						  P1, vtest);
@@ -320,5 +352,6 @@ int main(int argc, char *argv[])
 		break;
 	}
 
+	cleanup();
 	tst_exit();
 }
-- 
1.9.3


------------------------------------------------------------------------------
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

  parent reply	other threads:[~2014-08-13 15:44 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-13 15:44 [LTP] [PATCH v2 0/6] testcases/kernel/containers cleanup Artem Savkov
2014-08-13 15:44 ` [LTP] [PATCH v2 1/6] mqns tests: runmqnsstest.sh -> runtest/containers Artem Savkov
2014-08-13 15:44 ` [LTP] [PATCH v2 2/6] netns tests: runnetnstest.sh " Artem Savkov
2014-08-13 15:44 ` [LTP] [PATCH v2 3/6] ipcns tests: runipcnstest.sh " Artem Savkov
2014-08-13 15:44 ` Artem Savkov [this message]
2014-08-13 15:44 ` [LTP] [PATCH v2 5/6] check_for_unshare test removed from containers tests Artem Savkov
2014-08-13 15:44 ` [LTP] [PATCH v2 6/6] kernel/containers/netns cleanup Artem Savkov
2014-08-18 15:53 ` [LTP] [PATCH v2 0/6] testcases/kernel/containers cleanup chrubis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1407944666-32659-5-git-send-email-asavkov@redhat.com \
    --to=asavkov@redhat.com \
    --cc=ltp-list@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.