[OE-core] [PATCH 1/1] util-linux: Add ptest

Tudor Florea tudor.florea at enea.com
Mon Nov 23 23:41:37 UTC 2015


Signed-off-by: Tudor Florea <tudor.florea at enea.com>
---
 meta/recipes-core/util-linux/util-linux.inc        |  31 ++++-
 .../util-linux/avoid_parallel_tests.patch          | 145 +++++++++++++++++++++
 .../util-linux/avoid_unsupported_sleep_param.patch |  20 +++
 .../util-linux/display_testname_for_subtest.patch  |  18 +++
 .../recipes-core/util-linux/util-linux/ptest.patch |  17 +++
 meta/recipes-core/util-linux/util-linux/run-ptest  |  10 ++
 meta/recipes-core/util-linux/util-linux_2.26.2.bb  |   5 +
 7 files changed, 245 insertions(+), 1 deletion(-)
 create mode 100644 meta/recipes-core/util-linux/util-linux/avoid_parallel_tests.patch
 create mode 100644 meta/recipes-core/util-linux/util-linux/avoid_unsupported_sleep_param.patch
 create mode 100644 meta/recipes-core/util-linux/util-linux/display_testname_for_subtest.patch
 create mode 100644 meta/recipes-core/util-linux/util-linux/ptest.patch
 create mode 100644 meta/recipes-core/util-linux/util-linux/run-ptest

diff --git a/meta/recipes-core/util-linux/util-linux.inc b/meta/recipes-core/util-linux/util-linux.inc
index 594108f..95a7297 100644
--- a/meta/recipes-core/util-linux/util-linux.inc
+++ b/meta/recipes-core/util-linux/util-linux.inc
@@ -17,7 +17,7 @@ LIC_FILES_CHKSUM = "file://README.licensing;md5=1715f5ee3e01203ca1e1e0b9ee65918c
                     file://libmount/COPYING;md5=fb93f01d4361069c5616327705373b16 \
                     file://libblkid/COPYING;md5=fb93f01d4361069c5616327705373b16"
 
-inherit autotools gettext pkgconfig systemd update-alternatives python-dir
+inherit autotools gettext pkgconfig systemd update-alternatives python-dir ptest
 DEPENDS = "zlib ncurses"
 DEPENDS_append_class-native = " lzo-native"
 DEPENDS_append_class-nativesdk = " lzo-native"
@@ -272,3 +272,32 @@ python populate_packages_prepend() {
                       description='util-linux lib%s',
                       extra_depends='', prepend=True, allow_links=True)
 }
+
+RDEPENDS_${PN}-ptest = "bash"
+
+do_compile_ptest() {
+    oe_runmake buildtest-TESTS
+}
+
+do_install_ptest() {
+    mkdir -p ${D}${PTEST_PATH}/tests/ts
+    find . -maxdepth 1 -type f -perm -111 -exec cp {} ${D}${PTEST_PATH} \;
+    cp ${S}/tests/functions.sh ${D}${PTEST_PATH}/tests/
+    cp ${S}/tests/commands.sh ${D}${PTEST_PATH}/tests/
+    cp ${S}/tests/run.sh ${D}${PTEST_PATH}/tests/
+    cp -pR ${S}/tests/expected ${D}${PTEST_PATH}/tests/expected
+
+    list="bitops build-sys cal col colrm column dmesg fsck hexdump hwclock ipcs isosize login look md5 misc more namei paths schedutils script swapon tailf"
+    # The following tests are not installed  yet:
+    # blkid scsi_debug module dependent
+    # cramfs gcc dependent
+    # eject gcc dependent
+    # fdisk scsi_debug module and gcc dependent
+    # lscpu gcc dependant
+    # libmount uuidgen dependent
+    # mount gcc dependant
+    # partx blkid dependant
+    for d in $list; do
+        cp -pR ${S}/tests/ts/$d ${D}${PTEST_PATH}/tests/ts/
+    done
+}
diff --git a/meta/recipes-core/util-linux/util-linux/avoid_parallel_tests.patch b/meta/recipes-core/util-linux/util-linux/avoid_parallel_tests.patch
new file mode 100644
index 0000000..ece260c
--- /dev/null
+++ b/meta/recipes-core/util-linux/util-linux/avoid_parallel_tests.patch
@@ -0,0 +1,145 @@
+Ptest needs buildtest-TESTS and runtest-TESTS targets.
+serial-tests is required to generate those targets.
+Revert run.sh script accordingly to serialize running tests 
+
+Signed-off-by: Tudor Florea  <tudor.florea at enea.com>
+Upstream-Status: Inappropriate 
+
+diff -ruN a/configure.ac b/configure.ac
+--- a/configure.ac	2014-05-27 12:37:42.119772658 +0200
++++ b/configure.ac	2014-05-27 12:41:46.225573272 +0200
+@@ -10,7 +10,7 @@
+ dnl AC_USE_SYSTEM_EXTENSIONS must be called before any macros that run
+ dnl the compiler (like AC_PROG_LIBTOOL) to avoid autoconf errors.
+ AC_USE_SYSTEM_EXTENSIONS
+-AM_INIT_AUTOMAKE([-Wall foreign 1.10 tar-pax dist-bzip2 no-dist-gzip dist-xz -Wno-portability subdir-objects])
++AM_INIT_AUTOMAKE([-Wall foreign 1.10 tar-pax dist-bzip2 no-dist-gzip dist-xz -Wno-portability subdir-objects serial-tests])
+
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
+ 			    [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
+--- a/tests/run.sh	2015-11-18 15:09:05.517018566 +0100
++++ b/tests/run.sh	2015-11-18 20:02:15.492749213 +0100
+@@ -16,22 +16,12 @@
+ # GNU General Public License for more details.
+ #
+ 
+-TS_TOPDIR=$(cd ${0%/*} && pwd)
++TS_TOPDIR=$(cd $(dirname $0) && pwd)
+ SUBTESTS=
+ OPTS=
+ 
+ top_srcdir=
+ top_builddir=
+-paraller_jobs=1
+-
+-function num_cpus()
+-{
+-	if lscpu -p &>/dev/null; then
+-		lscpu -p | grep -cv '^#'
+-	else
+-		echo 1
+-	fi
+-}
+ 
+ while [ -n "$1" ]; do
+ 	case "$1" in
+@@ -47,9 +37,6 @@
+ 	--verbose)
+ 		OPTS="$OPTS --verbose"
+ 		;;
+-	--skip-loopdevs)
+-		OPTS="$OPTS --skip-loopdevs"
+-		;;
+ 	--nonroot)
+ 		if [ $(id -ru) -eq 0 ]; then
+ 			echo "Ignore util-linux test suite [non-root UID expected]."
+@@ -62,14 +49,6 @@
+ 	--builddir=*)
+ 		top_builddir="${1##--builddir=}"
+ 		;;
+-	--parallel=*)
+-		paraller_jobs="${1##--parallel=}"
+-		OPTS="$OPTS --parallel"
+-		;;
+-	--parallel)
+-		paraller_jobs=$(num_cpus)
+-		OPTS="$OPTS --parallel"
+-		;;
+ 	--*)
+ 		echo "Unknown option $1"
+ 		echo "Usage: "
+@@ -82,7 +61,6 @@
+ 		echo "  --nonroot         ignore test suite if user is root"
+ 		echo "  --srcdir=<path>   autotools top source directory"
+ 		echo "  --builddir=<path> autotools top build directory"
+-		echo "  --parallel=<num>  number of parallel test jobs, default: num cpus"
+ 		echo
+ 		exit 1
+ 		;;
+@@ -109,24 +87,24 @@
+ 
+ OPTS="$OPTS --srcdir=$top_srcdir --builddir=$top_builddir"
+ 
+-declare -a comps
+ if [ -n "$SUBTESTS" ]; then
+ 	# selected tests only
+ 	for s in $SUBTESTS; do
+ 		if [ -d "$top_srcdir/tests/ts/$s" ]; then
+-			comps+=( $(find $top_srcdir/tests/ts/$s -type f -perm /a+x -regex ".*/[^\.~]*") )
++			co=$(find $top_srcdir/tests/ts/$s -type f -perm -111 -regex ".*/[^\.~]*" |  sort)
++			comps="$comps $co"
+ 		else
+ 			echo "Unknown test component '$s'"
+ 			exit 1
+ 		fi
+ 	done
+ else
+-	if [ ! -f "$top_builddir/test_ttyutils" ]; then
++	if [ ! -f "$top_builddir/test_ttyutils" ];  then
+ 		echo "Tests not compiled! Run 'make check' to fix the problem."
+ 		exit 1
+ 	fi
+ 
+-	comps=( $(find $top_srcdir/tests/ts/ -type f -perm /a+x -regex ".*/[^\.~]*") )
++	comps=$(find $top_srcdir/tests/ts/ -type f -perm -111 -regex ".*/[^\.~]*" |  sort)
+ fi
+ 
+ 
+@@ -141,27 +119,21 @@
+ echo "                 Don't execute on production system!                 "
+ echo
+ 
+-if [ $paraller_jobs -gt 1 ]; then
+-	echo "              Executing the tests in parallel ($paraller_jobs jobs)    "
+-	echo
+-fi
+-
++res=0
+ count=0
+->| $top_builddir/tests/failures
+-printf "%s\n" ${comps[*]} |
+-	sort |
+-	xargs -I '{}' -P $paraller_jobs -n 1 bash -c "'{}' \"$OPTS\" ||
+-		echo 1 >> $top_builddir/tests/failures"
+-declare -a fail_file
+-fail_file=( $( < $top_builddir/tests/failures ) ) || exit 1
+-rm -f $top_builddir/tests/failures
++for ts in $comps; do
++	$ts "$OPTS"
++	res=$(( $res + $? ))
++	count=$(( $count + 1 ))
++done
++
+ echo
+ echo "---------------------------------------------------------------------"
+-if [ ${#fail_file[@]} -eq 0 ]; then
+-	echo "  All ${#comps[@]} tests PASSED"
++if [ $res -eq 0 ]; then
++	echo "  All $count tests PASSED"
+ 	res=0
+ else
+-	echo "  ${#fail_file[@]} tests of ${#comps[@]} FAILED"
++	echo "  $res tests of $count FAILED"
+ 	res=1
+ fi
+ echo "---------------------------------------------------------------------"
diff --git a/meta/recipes-core/util-linux/util-linux/avoid_unsupported_sleep_param.patch b/meta/recipes-core/util-linux/util-linux/avoid_unsupported_sleep_param.patch
new file mode 100644
index 0000000..7a63a4e
--- /dev/null
+++ b/meta/recipes-core/util-linux/util-linux/avoid_unsupported_sleep_param.patch
@@ -0,0 +1,20 @@
+Avoid unsupported sleep parameter
+
+Signed-off-by: Tudor Florea <tudor.florea at enea.com>
+Upstream-Status: Pending
+
+diff -ruN a/simple b/simple
+--- a/tests/ts/tailf/simple	2015-11-12 11:34:49.971817130 +0200
++++ b/tests/ts/tailf/simple	2013-11-12 11:34:37.876325128 +0200
+@@ -27,9 +27,9 @@
+ 
+ $TS_CMD_TAILF $INPUT > $TS_OUTPUT 2>&1 &
+ 
+-sleep 0.5
++sleep 1
+ echo {0..9} >> $INPUT
+-sleep 0.5
++sleep 1
+ 
+ rm -f $INPUT
+ 
diff --git a/meta/recipes-core/util-linux/util-linux/display_testname_for_subtest.patch b/meta/recipes-core/util-linux/util-linux/display_testname_for_subtest.patch
new file mode 100644
index 0000000..0eb8810
--- /dev/null
+++ b/meta/recipes-core/util-linux/util-linux/display_testname_for_subtest.patch
@@ -0,0 +1,18 @@
+Display testname for subtest
+
+Signed-off-by: Tudor Florea <tudor.florea at enea.com>
+Upstream-Status: Pending
+
+diff -ruN a/functions.sh b/functions.sh
+--- a/tests/functions.sh	2015-11-12 21:32:02.434542124 +0100
++++ b/tests/functions.sh	2015-11-12 21:40:37.095317280 +0100
+@@ -297,7 +297,7 @@
+ 	if [ "$TS_PARALLEL" == "yes" ]; then
+ 		TS_TITLE=$(printf "%13s: %-30s ...\n%16s: %-27s ..." "$TS_COMPONENT" "$TS_DESC" "" "$TS_SUBNAME")
+ 	else
+-		TS_TITLE=$(printf "%16s: %-27s ..." "" "$TS_SUBNAME")
++               TS_TITLE=$(printf "%13s: %-30s ..." "$TS_COMPONENT" "$TS_SUBNAME")
+ 		echo -n "$TS_TITLE"
+ 	fi
+ }
+
diff --git a/meta/recipes-core/util-linux/util-linux/ptest.patch b/meta/recipes-core/util-linux/util-linux/ptest.patch
new file mode 100644
index 0000000..837f189
--- /dev/null
+++ b/meta/recipes-core/util-linux/util-linux/ptest.patch
@@ -0,0 +1,17 @@
+Define TESTS variable
+
+Signed-off-by: Tudor Florea <tudor.florea at enea.com>
+Upstream-Status: Pending
+
+diff -ruN a/Makefile.am b/Makefile.am
+--- a/Makefile.am	2015-11-12 20:29:46.778396936 +0100
++++ b/Makefile.am	2015-11-12 20:32:24.342450279 +0100
+@@ -48,7 +48,7 @@
+ dist_bashcompletion_DATA =
+ check_PROGRAMS =
+ dist_check_SCRIPTS =
+-TESTS =
++TESTS = $(check_PROGRAMS)
+ 
+ PATHFILES =
+
diff --git a/meta/recipes-core/util-linux/util-linux/run-ptest b/meta/recipes-core/util-linux/util-linux/run-ptest
new file mode 100644
index 0000000..e155ec6
--- /dev/null
+++ b/meta/recipes-core/util-linux/util-linux/run-ptest
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+cd tests || exit 1
+sh ./run.sh 2>&1 | {
+   sed '{
+      s/^\(.*\):\(.*\) \.\.\. OK$/PASS: \1:\2/
+      s/^\(.*\):\(.*\) \.\.\. FAILED \(.*\)$/FAIL: \1:\2 \3/
+      s/^\(.*\):\(.*\) \.\.\. SKIPPED \(.*\)$/SKIP: \1:\2 \3/
+   }'
+}
diff --git a/meta/recipes-core/util-linux/util-linux_2.26.2.bb b/meta/recipes-core/util-linux/util-linux_2.26.2.bb
index e09fdfa..bba7dc8 100644
--- a/meta/recipes-core/util-linux/util-linux_2.26.2.bb
+++ b/meta/recipes-core/util-linux/util-linux_2.26.2.bb
@@ -16,6 +16,11 @@ SRC_URI += "file://util-linux-ng-replace-siginterrupt.patch \
             file://runuser.pamd \
             file://runuser-l.pamd \
             ${OLDHOST} \
+            file://ptest.patch \
+            file://run-ptest \
+            file://avoid_unsupported_sleep_param.patch \
+            file://display_testname_for_subtest.patch \
+            file://avoid_parallel_tests.patch \
 "
 SRC_URI[md5sum] = "9bdf368c395f1b70325d0eb22c7f48fb"
 SRC_URI[sha256sum] = "0e29bda142528a48a0a953c39ff63093651a4809042e1790fbd6aa8663fd9666"
-- 
1.9.1




More information about the Openembedded-core mailing list