Skip to contentSkip to conversation

selftests: memfd: return Kselftest Skip code for skipped tests

PATCH In review Shuah Khan (Samsung OSG) 2 participants 2 messages May 7, 2018 – May 8, 2018 Kselftest

lore
Share & tools
lore

Shuah Khan (Samsung OSG)

author maintainer
#0 lore raw

PATCH v2 21/24 selftests: memfd: return Kselftest Skip code for skipped tests

When memfd test is skipped because of unmet dependencies and/or unsupported configuration, it returns non-zero value which is treated as a fail by the Kselftest framework. This leads to false negative result even when the test could not be run.

Change it to return kselftest skip code when a test gets skipped to clearly report that the test could not be run.

Added an explicit check for root user at the start of memfd hugetlbfs test and return skip code if a non-root user attempts to run it.

In addition, return skip code when not enough huge pages are available to run the test.

Kselftest framework SKIP code is 4 and the framework prints appropriate messages to indicate that the test is skipped.

Signed-off-by Shuah Khan (Samsung OSG) <shuah at kernel.org>

---

Changes since v1:
-- addressed review comments on v1
-- Fixed a regression in v1 that changed the behavior to require root
for all tests not just the hugetlbfs test.

 tools/testing/selftests/memfd/run_tests.sh | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)
tools/testing/selftests/memfd/run_tests.sh +9 -5
index c2d41ed81b24..2013f195e623 100755
@@ -1,6 +1,9 @@
 #!/bin/bash
 # please run as root
 
+# Kselftest framework requirement - SKIP code is 4.
+ksft_skip=4
+
 #
 # Normal tests requiring no special resources
 #
@@ -29,12 +32,13 @@ if [ -n "$freepgs" ] && [ $freepgs -lt $hpages_test ]; then
 	nr_hugepgs=`cat /proc/sys/vm/nr_hugepages`
 	hpages_needed=`expr $hpages_test - $freepgs`
 
+	if [ $UID != 0 ]; then
+		echo "Please run memfd with hugetlbfs test as root"
+		exit $ksft_skip
+	fi
+
 	echo 3 > /proc/sys/vm/drop_caches
 	echo $(( $hpages_needed + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages
-	if [ $? -ne 0 ]; then
-		echo "Please run this test as root"
-		exit 1
-	fi
 	while read name size unit; do
 		if [ "$name" = "HugePages_Free:" ]; then
 			freepgs=$size
@@ -53,7 +57,7 @@ if [ $freepgs -lt $hpages_test ]; then
 	fi
 	printf "Not enough huge pages available (%d < %d)\n" \
 		$freepgs $needpgs
-	exit 1
+	exit $ksft_skip
 fi
 
 #
Signature · 6 lines
2.14.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Reviewed-by on v2 21/24
#1 lore raw
Quoted 11 lines · Shuah Khan (Samsung OSG)

When memfd test is skipped because of unmet dependencies and/or unsupported configuration, it returns non-zero value which is treated as a fail by the Kselftest framework. This leads to false negative result even when the test could not be run.

Change it to return kselftest skip code when a test gets skipped to clearly report that the test could not be run.

Added an explicit check for root user at the start of memfd hugetlbfs test and return skip code if a non-root user attempts to run it.

Quoted 7 lines

In addition, return skip code when not enough huge pages are available to run the test.

Kselftest framework SKIP code is 4 and the framework prints appropriate messages to indicate that the test is skipped.

Signed-off-by Shuah Khan (Samsung OSG) <shuah at kernel.org>

Thanks for making the changes!

Reviewed-by Mike Kravetz <mike.kravetz at oracle.com>
Signature · 1 line
Mike Kravetz
Quoted 44 lines

---

Changes since v1:
-- addressed review comments on v1
-- Fixed a regression in v1 that changed the behavior to require root
for all tests not just the hugetlbfs test.

 tools/testing/selftests/memfd/run_tests.sh | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)
tools/testing/selftests/memfd/run_tests.sh +8 -4
index c2d41ed81b24..2013f195e623 100755
@@ -1,6 +1,9 @@
 #!/bin/bash
 # please run as root
 
+# Kselftest framework requirement - SKIP code is 4.
+ksft_skip=4
+
 #
 # Normal tests requiring no special resources
 #
@@ -29,12 +32,13 @@ if [ -n "$freepgs" ] && [ $freepgs -lt $hpages_test ]; then
 	nr_hugepgs=`cat /proc/sys/vm/nr_hugepages`
 	hpages_needed=`expr $hpages_test - $freepgs`
 
+	if [ $UID != 0 ]; then
+		echo "Please run memfd with hugetlbfs test as root"
+		exit $ksft_skip
+	fi
+
 	echo 3 > /proc/sys/vm/drop_caches
 	echo $(( $hpages_needed + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages
-	if [ $? -ne 0 ]; then
-		echo "Please run this test as root"
-		exit 1
-	fi
 	while read name size unit; do
 		if [ "$name" = "HugePages_Free:" ]; then
 			freepgs=$size

tools/testing/selftests/memfd/run_tests.sh if [ $freepgs -lt $hpages_test ]; then · line 63

Quoted 8 lines
tools/testing/selftests/memfd/run_tests.sh +1 -1
@@ -53,7 +57,7 @@ if [ $freepgs -lt $hpages_test ]; then
 	fi
 	printf "Not enough huge pages available (%d < %d)\n" \
 		$freepgs $needpgs
-	exit 1
+	exit $ksft_skip
 fi
 
 #

--
To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html