summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2022-07-06 22:28:37 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2022-07-07 23:52:08 -0400
commitf0f07641db06cc9e864db6aa7c2c5ae5b87195a8 (patch)
treef51592d2514d9d5420f6186ebdf73c34eb6d8f5f
parent51e977fcbcc8c32af5c3741c53c265ed91d1040d (diff)
Rework ktest -> test interface
This is the start of making .ktest tests programs that are executed directly, instead of having them sourced and invoked by ktest. - Kill require-lib - list_tests, run_test, run_tests are now normal library functions, instead of using code injection Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r--boot.ktest2
-rw-r--r--lib/common.sh49
-rw-r--r--lib/libktest.sh8
-rw-r--r--lib/parse-test.sh245
-rwxr-xr-xlib/testrunner17
-rw-r--r--lib/util.sh59
-rwxr-xr-xtests/aio/aio2
-rwxr-xr-x[-rw-r--r--]tests/bcache/32bit.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/backingdev.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/backingdev_detach.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/backingdev_reboot_fio.ktest4
-rwxr-xr-x[-rw-r--r--]tests/bcache/backingdev_reboot_fs.ktest4
-rwxr-xr-x[-rw-r--r--]tests/bcache/backingdev_stripes.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/backingdev_unregister.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/backingdev_verify.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/backingdev_writearound.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/backingdev_writethrough.ktest2
-rw-r--r--tests/bcache/bcache-test-libs.sh2
-rwxr-xr-x[-rw-r--r--]tests/bcache/discard.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/flash_dev.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/flash_dev_enospc.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/flash_dev_small_buckets.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/init_errors.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/journal_stress.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/passthrough.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/reboot_dd.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/reboot_fio.ktest4
-rwxr-xr-x[-rw-r--r--]tests/bcache/reboot_fio_new.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/reboot_tier.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/register.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcache/suspend.ktest2
-rwxr-xr-x[-rw-r--r--]tests/bcachefs/32bit.ktest4
-rw-r--r--tests/bcachefs/bcachefs-test-libs.sh3
-rwxr-xr-x[-rw-r--r--]tests/bcachefs/ec.ktest4
-rwxr-xr-x[-rw-r--r--]tests/bcachefs/nas_apps.ktest4
-rwxr-xr-x[-rw-r--r--]tests/bcachefs/nfs.ktest3
-rwxr-xr-x[-rw-r--r--]tests/bcachefs/perf.ktest4
-rwxr-xr-x[-rw-r--r--]tests/bcachefs/quota.ktest4
-rwxr-xr-x[-rw-r--r--]tests/bcachefs/replication.ktest4
-rwxr-xr-x[-rw-r--r--]tests/bcachefs/single_device.ktest4
-rwxr-xr-x[-rw-r--r--]tests/bcachefs/subvol.ktest4
-rwxr-xr-x[-rw-r--r--]tests/bcachefs/tier.ktest6
-rwxr-xr-x[-rw-r--r--]tests/bcachefs/units.ktest4
-rwxr-xr-x[-rw-r--r--]tests/bcachefs/xfstests.ktest6
-rwxr-xr-xtests/blkdev.ktest4
-rwxr-xr-x[-rw-r--r--]tests/blktests.ktest4
-rwxr-xr-x[-rw-r--r--]tests/btrfs.ktest6
-rwxr-xr-x[-rw-r--r--]tests/dm.ktest5
-rwxr-xr-x[-rw-r--r--]tests/ext2.ktest6
-rwxr-xr-x[-rw-r--r--]tests/ext3.ktest6
-rwxr-xr-x[-rw-r--r--]tests/ext4.ktest6
-rwxr-xr-x[-rw-r--r--]tests/f2fs.ktest6
-rwxr-xr-x[-rw-r--r--]tests/fio.ktest2
-rwxr-xr-x[-rw-r--r--]tests/jfs.ktest6
-rw-r--r--tests/kconfig.sh223
-rwxr-xr-x[-rw-r--r--]tests/md.ktest4
-rwxr-xr-x[-rw-r--r--]tests/nilfs2.ktest6
-rw-r--r--tests/prelude.sh486
-rw-r--r--tests/test-libs.sh3
-rwxr-xr-xtests/timeout.ktest4
-rwxr-xr-xtests/xfs.ktest6
-rw-r--r--tests/xfstests.sh4
62 files changed, 670 insertions, 607 deletions
diff --git a/boot.ktest b/boot.ktest
index 5cb6e7e..32631d3 100644
--- a/boot.ktest
+++ b/boot.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib tests/prelude.sh
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/tests/test-libs.sh
config-mem 2G
config-scratch-devs 4G
diff --git a/lib/common.sh b/lib/common.sh
new file mode 100644
index 0000000..1318a27
--- /dev/null
+++ b/lib/common.sh
@@ -0,0 +1,49 @@
+
+log_verbose()
+{
+ if [[ $ktest_verbose != 0 ]]; then
+ echo "$@"
+ fi
+}
+
+run_quiet()
+{
+ local msg=$1
+ shift
+
+ if [[ $ktest_verbose = 0 ]]; then
+ if [[ -n $msg ]]; then
+ echo -n "$msg... "
+ fi
+
+ get_tmpdir
+ local out="$ktest_tmp/out-$msg"
+
+ set +e
+ (set -e; "$@") > "$out" 2>&1
+ local ret=$?
+ set -e
+
+ if [[ $ret != 0 ]]; then
+ echo
+ cat "$out"
+ exit 1
+ fi
+
+ if [[ -n $msg ]]; then
+ echo done
+ fi
+ else
+ if [[ -n $msg ]]; then
+ echo "$msg:"
+ fi
+ "$@"
+ fi
+}
+
+join_by()
+{
+ local IFS="$1"
+ shift
+ echo "$*"
+}
diff --git a/lib/libktest.sh b/lib/libktest.sh
index 0e5aae7..99bccc1 100644
--- a/lib/libktest.sh
+++ b/lib/libktest.sh
@@ -266,6 +266,14 @@ save_env()
rm -rf "$ktest_out/vm/env_tmp"
}
+get_unused_port()
+{
+ comm -23 --nocheck-order \
+ <(seq 10000 65535) \
+ <(ss -tan | awk '{print $4}' | cut -d':' -f2 | grep '[0-9]\{1,5\}' | sort -n | uniq) \
+ | shuf | head -n1
+}
+
start_vm()
{
make -C "$ktest_dir/lib" qemu-wrapper
diff --git a/lib/parse-test.sh b/lib/parse-test.sh
index ce8c1dc..c1f374a 100644
--- a/lib/parse-test.sh
+++ b/lib/parse-test.sh
@@ -1,168 +1,9 @@
parse_test_deps()
{
- ktest_cpus=$(nproc)
- ktest_mem=""
- ktest_timeout=""
- ktest_kernel_append=()
- ktest_images=()
- ktest_scratch_devs=()
- ktest_make_install=()
- ktest_kernel_config_require=()
- ktest_qemu_append=()
ktest_basename=$(basename -s .ktest "$ktest_test")
- local NEXT_SCRATCH_DEV="b"
- local TESTPROG=$1
- local BUILD_ON_HOST=""
-
- require-lib()
- {
- local req="$1"
-
- pushd "$(dirname "$req")" > /dev/null
- . $(basename "$req")
- popd > /dev/null
- }
-
- require-git()
- {
- local req="$1"
- local dir=$(basename $req)
- dir=${dir%%.git}
-
- if [[ $# -ge 2 ]]; then
- dir=$2
- fi
-
- if [[ ! -d $dir ]]; then
- git clone $req $dir
- fi
- }
-
- do-build-deb()
- {
- local path=$(readlink -e "$1")
- local name=$(basename $path)
-
- get_tmpdir
-
- make -C "$path"
-
- cp -drl $path $ktest_tmp
- pushd "$ktest_tmp/$name" > /dev/null
-
- # make -nc actually work:
- rm -f debian/*.debhelper.log
-
- debuild --no-lintian -b -i -I -us -uc -nc
- popd > /dev/null
- }
-
- # $1 is a source repository, which will be built (with make) and then turned
- # into a dpkg
- require-build-deb()
- {
- local req=$1
-
- if ! [[ -d $req ]]; then
- echo "build-deb dependency $req not found"
- exit 1
- fi
-
- checkdep debuild devscripts
-
- run_quiet "building $(basename $req)" do-build-deb $req
- }
-
- require-make()
- {
- if [[ ! -d "$1" ]]; then
- echo "require-make: $1 not found"
- exit 1
- fi
-
- local req=$(readlink -e "$1")
-
- ktest_make_install+=("$req")
-
- if [[ -n $BUILD_ON_HOST ]]; then
- run_quiet "building $1" make -C "$req"
- fi
- }
-
- require-kernel-config()
- {
- local OLDIFS=$IFS
- IFS=','
-
- for i in $1; do
- ktest_kernel_config_require+=("$i")
- done
-
- IFS=$OLDIFS
- }
-
- require-qemu-append()
- {
- local OLDIFS=$IFS
- IFS=','
-
- for i in $1; do
- ktest_kernel_config_require+=("$i")
- done
-
- IFS=$OLDIFS
- }
-
- require-kernel-append()
- {
- ktest_kernel_append+=($1)
- }
-
- config-scratch-devs()
- {
- ktest_scratch_devs+=("$1")
- }
-
- config-pmem-devs()
- {
- ktest_pmem_devs+=("$1")
- }
-
- config-image()
- {
- ktest_images+=("$1")
- }
-
- config-cpus()
- {
- ktest_cpus=$1
- }
-
- config-mem()
- {
- ktest_mem=$1
- }
-
- config-timeout()
- {
- n=$1
- if [ "${EXTENDED_DEBUG:-0}" == 1 ]; then
- n=$((n * 2))
- fi
- ktest_timeout=$n
- }
-
- config-arch()
- {
- parse_arch "$1"
- checkdep_arch
- }
-
- pushd "$(dirname "$TESTPROG")" > /dev/null
- . $(basename "$TESTPROG")
- popd > /dev/null
+ eval $("$ktest_test" deps)
if [ -z "$ktest_mem" ]; then
echo "test must specify config-mem"
@@ -173,89 +14,7 @@ parse_test_deps()
ktest_timeout=6000
fi
- # may be overridden by test:
- if [[ $(type -t run_test) != function ]]; then
- run_test()
- {
- local test=test_$1
-
- if [[ $(type -t $test) != function ]]; then
- echo "test $1 does not exist"
- exit 1
- fi
-
- $test
- }
- fi
-
- # may be overridden by test:
- if [[ $(type -t run_tests) != function ]]; then
- run_tests()
- {
- local tests_passed=()
- local tests_failed=()
-
- echo
- echo "Running tests $@"
- echo
-
- for i in $@; do
- echo "========= TEST $i"
- echo
-
- local start=$(date '+%s')
- local ret=0
- (set -e; run_test $i)
- ret=$?
- local finish=$(date '+%s')
-
- pkill -P $$ >/dev/null || true
-
- # XXX: check dmesg for warnings, oopses, slab corruption, etc. before
- # signaling success
-
- echo
-
- if [[ $ret = 0 ]]; then
- echo "========= PASSED $i in $(($finish - $start))s"
- tests_passed+=($i)
- else
- echo "========= FAILED $i in $(($finish - $start))s"
- tests_failed+=($i)
-
- # Try to clean up after a failed test so we can run the rest of
- # the tests - unless failfast is enabled, or there was only one
- # test to run:
-
- $ktest_failfast && break
- [[ $# = 1 ]] && break
-
- for mnt in $(awk '{print $2}' /proc/mounts|grep ^/mnt|sort -r); do
- while [[ -n $(fuser -k -M -m $mnt) ]]; do
- sleep 1
- done
- umount $mnt
- done
- fi
- done
-
- echo
- echo "Passed: ${tests_passed[@]}"
- echo "Failed: ${tests_failed[@]}"
-
- return ${#tests_failed[@]}
- }
- fi
-
- # may be overridden by test:
- if [[ $(type -t list_tests) != function ]]; then
- list_tests()
- {
- declare -F|sed -ne '/ test_/ s/.*test_// p'
- }
- fi
-
- ktest_tests=$(list_tests)
+ ktest_tests=$("$ktest_test" list-tests)
if [[ -z $ktest_tests ]]; then
echo "No tests found"
diff --git a/lib/testrunner b/lib/testrunner
index 7797a8f..251f943 100755
--- a/lib/testrunner
+++ b/lib/testrunner
@@ -169,21 +169,6 @@ if [[ $ktest_tests = "none" ]]; then
exit 0
fi
-# For now, timeouts/watchdogs are only handled in lib/qemu-wrapper.c:
-
-#if [[ $ktest_exit_on_success = 0 && $ktest_interactive = 0 ]]; then
-# (
-# sleep $ktest_timeout
-# echo "TEST TIMEOUT - triggering crash"
-# echo c > /proc/sysrq-trigger
-# ) &
-#fi
-
-set_watchdog()
-{
- echo WATCHDOG $1
-}
-
trap 'pkill -P $$ >/dev/null' EXIT
cd /root
@@ -191,7 +176,7 @@ set +e
ret=0
iterations=0
while [[ $ret = 0 ]]; do
- run_tests $ktest_tests
+ /host/$ktest_test run-tests $ktest_tests
ret=$?
pkill -P $$ >/dev/null || true
[[ $ret != 0 ]] && break
diff --git a/lib/util.sh b/lib/util.sh
index c894304..5d6c17d 100644
--- a/lib/util.sh
+++ b/lib/util.sh
@@ -1,4 +1,6 @@
+. "$ktest_dir/lib/common.sh"
+
ktest_no_cleanup_tmpdir=""
ktest_tmp=${ktest_tmp:-""}
@@ -163,60 +165,3 @@ parse_arch()
# CROSS_COMPILE=1
# fi
}
-
-join_by()
-{
- local IFS="$1"
- shift
- echo "$*"
-}
-
-log_verbose()
-{
- if [[ $ktest_verbose != 0 ]]; then
- echo "$@"
- fi
-}
-
-run_quiet()
-{
- local msg=$1
- shift
-
- if [[ $ktest_verbose = 0 ]]; then
- if [[ -n $msg ]]; then
- echo -n "$msg... "
- fi
-
- get_tmpdir
- local out="$ktest_tmp/out-$msg"
-
- set +e
- (set -e; "$@") > "$out" 2>&1
- local ret=$?
- set -e
-
- if [[ $ret != 0 ]]; then
- echo
- cat "$out"
- exit 1
- fi
-
- if [[ -n $msg ]]; then
- echo done
- fi
- else
- if [[ -n $msg ]]; then
- echo "$msg:"
- fi
- "$@"
- fi
-}
-
-get_unused_port()
-{
- comm -23 --nocheck-order \
- <(seq 10000 65535) \
- <(ss -tan | awk '{print $4}' | cut -d':' -f2 | grep '[0-9]\{1,5\}' | sort -n | uniq) \
- | shuf | head -n1
-}
diff --git a/tests/aio/aio b/tests/aio/aio
index a05cb55..0ebd19e 100755
--- a/tests/aio/aio
+++ b/tests/aio/aio
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib ../prelude.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/../test-libs.sh
config-timeout 60
config-mem 512M
diff --git a/tests/bcache/32bit.ktest b/tests/bcache/32bit.ktest
index af9d185..2fbcebb 100644..100755
--- a/tests/bcache/32bit.ktest
+++ b/tests/bcache/32bit.ktest
@@ -4,7 +4,7 @@
# going to be able to run much with this kernel - this is really just for
# checking if it builds
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
require-kernel-config 64BIT=n
diff --git a/tests/bcache/backingdev.ktest b/tests/bcache/backingdev.ktest
index cd8e040..e9c30af 100644..100755
--- a/tests/bcache/backingdev.ktest
+++ b/tests/bcache/backingdev.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-cache 512M
config-backing 2G,2G
diff --git a/tests/bcache/backingdev_detach.ktest b/tests/bcache/backingdev_detach.ktest
index 47352eb..5e84126 100644..100755
--- a/tests/bcache/backingdev_detach.ktest
+++ b/tests/bcache/backingdev_detach.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-cache 512M
config-backing 2G,2G
diff --git a/tests/bcache/backingdev_reboot_fio.ktest b/tests/bcache/backingdev_reboot_fio.ktest
index 07c743d..5b112d3 100644..100755
--- a/tests/bcache/backingdev_reboot_fio.ktest
+++ b/tests/bcache/backingdev_reboot_fio.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-cache 512M
config-backing 2G
@@ -8,4 +8,4 @@ config-bucket-size 32k
config-block-size 4k
config-writeback
-require-lib reboot-fio.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/reboot-fio.sh
diff --git a/tests/bcache/backingdev_reboot_fs.ktest b/tests/bcache/backingdev_reboot_fs.ktest
index 94e7938..24dcd45 100644..100755
--- a/tests/bcache/backingdev_reboot_fs.ktest
+++ b/tests/bcache/backingdev_reboot_fs.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-cache 2G
config-backing 4G
@@ -8,4 +8,4 @@ config-bucket-size 32k
config-block-size 4k
config-writeback
-require-lib reboot-fs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/reboot-fs.sh
diff --git a/tests/bcache/backingdev_stripes.ktest b/tests/bcache/backingdev_stripes.ktest
index ef7ad23..bf835de 100644..100755
--- a/tests/bcache/backingdev_stripes.ktest
+++ b/tests/bcache/backingdev_stripes.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
require-kernel-config BLK_DEV_MD,MD_RAID456
diff --git a/tests/bcache/backingdev_unregister.ktest b/tests/bcache/backingdev_unregister.ktest
index b6faf88..2d2acbc 100644..100755
--- a/tests/bcache/backingdev_unregister.ktest
+++ b/tests/bcache/backingdev_unregister.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-cache 512M
config-backing 2G,2G
diff --git a/tests/bcache/backingdev_verify.ktest b/tests/bcache/backingdev_verify.ktest
index 260aeca..c1bbf56 100644..100755
--- a/tests/bcache/backingdev_verify.ktest
+++ b/tests/bcache/backingdev_verify.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-cache 512M
config-backing 512M,512M
diff --git a/tests/bcache/backingdev_writearound.ktest b/tests/bcache/backingdev_writearound.ktest
index 1555679..0288886 100644..100755
--- a/tests/bcache/backingdev_writearound.ktest
+++ b/tests/bcache/backingdev_writearound.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-cache 512M
config-backing 512M,512M
diff --git a/tests/bcache/backingdev_writethrough.ktest b/tests/bcache/backingdev_writethrough.ktest
index d11357e..7661061 100644..100755
--- a/tests/bcache/backingdev_writethrough.ktest
+++ b/tests/bcache/backingdev_writethrough.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-cache 512M
config-backing 512M,512M
diff --git a/tests/bcache/bcache-test-libs.sh b/tests/bcache/bcache-test-libs.sh
index 38af96a..784db3d 100644
--- a/tests/bcache/bcache-test-libs.sh
+++ b/tests/bcache/bcache-test-libs.sh
@@ -3,7 +3,7 @@
# ktest framework.
#
-require-lib ../test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/../test-libs.sh
require-build-deb bcache-tools
require-kernel-config MD
diff --git a/tests/bcache/discard.ktest b/tests/bcache/discard.ktest
index 2eaa88a..967d76c 100644..100755
--- a/tests/bcache/discard.ktest
+++ b/tests/bcache/discard.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
require-lib ../../../vm-tests/container_lib.sh
require-container ioctl_test
diff --git a/tests/bcache/flash_dev.ktest b/tests/bcache/flash_dev.ktest
index 6a0fe52..fe8d59e 100644..100755
--- a/tests/bcache/flash_dev.ktest
+++ b/tests/bcache/flash_dev.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
# XXX possibly broken with 1 mb buckets
config-cache 2150MB
diff --git a/tests/bcache/flash_dev_enospc.ktest b/tests/bcache/flash_dev_enospc.ktest
index f33a632..b2929c1 100644..100755
--- a/tests/bcache/flash_dev_enospc.ktest
+++ b/tests/bcache/flash_dev_enospc.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-cache 512M
config-bucket-size 64k
diff --git a/tests/bcache/flash_dev_small_buckets.ktest b/tests/bcache/flash_dev_small_buckets.ktest
index d083e77..6e48149 100644..100755
--- a/tests/bcache/flash_dev_small_buckets.ktest
+++ b/tests/bcache/flash_dev_small_buckets.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-cache 2G
config-bucket-size 8k
diff --git a/tests/bcache/init_errors.ktest b/tests/bcache/init_errors.ktest
index 4c26659..e6c1416 100644..100755
--- a/tests/bcache/init_errors.ktest
+++ b/tests/bcache/init_errors.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-cache 2G
config-tier 4G
diff --git a/tests/bcache/journal_stress.ktest b/tests/bcache/journal_stress.ktest
index e6b5f4f..fe9eba9 100644..100755
--- a/tests/bcache/journal_stress.ktest
+++ b/tests/bcache/journal_stress.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-cache 256M,256M
config-tier 256M,256M,256M,256M,256M,256M,256M,256M,256M,256M
diff --git a/tests/bcache/passthrough.ktest b/tests/bcache/passthrough.ktest
index c42bee3..08c73c1 100644..100755
--- a/tests/bcache/passthrough.ktest
+++ b/tests/bcache/passthrough.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-backing 2G
config-bucket-size 64k
diff --git a/tests/bcache/reboot_dd.ktest b/tests/bcache/reboot_dd.ktest
index fbc6c2f..1c258c4 100644..100755
--- a/tests/bcache/reboot_dd.ktest
+++ b/tests/bcache/reboot_dd.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-cache 2G
config-bucket-size 32k
diff --git a/tests/bcache/reboot_fio.ktest b/tests/bcache/reboot_fio.ktest
index 06a85af..807a589 100644..100755
--- a/tests/bcache/reboot_fio.ktest
+++ b/tests/bcache/reboot_fio.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-cache 2G
config-tier 4G
@@ -8,4 +8,4 @@ config-bucket-size 32k
config-block-size 4k
config-volume 1600M
-require-lib reboot-fio.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/reboot-fio.sh
diff --git a/tests/bcache/reboot_fio_new.ktest b/tests/bcache/reboot_fio_new.ktest
index 5b92c83..4588c99 100644..100755
--- a/tests/bcache/reboot_fio_new.ktest
+++ b/tests/bcache/reboot_fio_new.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-cache 2G
config-tier 4G
diff --git a/tests/bcache/reboot_tier.ktest b/tests/bcache/reboot_tier.ktest
index 3e9f4e7..d88b6f2 100644..100755
--- a/tests/bcache/reboot_tier.ktest
+++ b/tests/bcache/reboot_tier.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-cache 512M
config-tier 2G
diff --git a/tests/bcache/register.ktest b/tests/bcache/register.ktest
index 2102d38..e6e728c 100644..100755
--- a/tests/bcache/register.ktest
+++ b/tests/bcache/register.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
config-cache 512M
config-backing 2G,2G
diff --git a/tests/bcache/suspend.ktest b/tests/bcache/suspend.ktest
index 7b17bfc..7162022 100644..100755
--- a/tests/bcache/suspend.ktest
+++ b/tests/bcache/suspend.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcache-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcache-test-libs.sh
#config-cache 512M
#config-backing 2G,2G
diff --git a/tests/bcachefs/32bit.ktest b/tests/bcachefs/32bit.ktest
index 86c1058..daf6450 100644..100755
--- a/tests/bcachefs/32bit.ktest
+++ b/tests/bcachefs/32bit.ktest
@@ -6,7 +6,7 @@
config-arch x86
-require-lib bcachefs-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcachefs-test-libs.sh
config-timeout 30
@@ -14,3 +14,5 @@ test_boot()
{
true
}
+
+main "$@"
diff --git a/tests/bcachefs/bcachefs-test-libs.sh b/tests/bcachefs/bcachefs-test-libs.sh
index 3e1b3d4..fb412bc 100644
--- a/tests/bcachefs/bcachefs-test-libs.sh
+++ b/tests/bcachefs/bcachefs-test-libs.sh
@@ -3,7 +3,8 @@
# ktest framework.
#
-require-lib ../test-libs.sh
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/../test-libs.sh
+
require-git http://evilpiepirate.org/git/bcachefs-tools.git
require-make bcachefs-tools
diff --git a/tests/bcachefs/ec.ktest b/tests/bcachefs/ec.ktest
index 7bf3724..b17d607 100644..100755
--- a/tests/bcachefs/ec.ktest
+++ b/tests/bcachefs/ec.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcachefs-test-libs.sh
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/bcachefs-test-libs.sh
require-kernel-config MD
require-kernel-config BLK_DEV_MD
@@ -271,3 +271,5 @@ d_test_device_evacuate_online()
{
do_remove_test 0 1
}
+
+main "$@"
diff --git a/tests/bcachefs/nas_apps.ktest b/tests/bcachefs/nas_apps.ktest
index bfd71e3..e634396 100644..100755
--- a/tests/bcachefs/nas_apps.ktest
+++ b/tests/bcachefs/nas_apps.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcachefs-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcachefs-test-libs.sh
require-kernel-config MD
require-kernel-config BLK_DEV_MD
@@ -110,3 +110,5 @@ test_nbd()
array_teardown
}
+
+main "$@"
diff --git a/tests/bcachefs/nfs.ktest b/tests/bcachefs/nfs.ktest
index 2717884..43396de 100644..100755
--- a/tests/bcachefs/nfs.ktest
+++ b/tests/bcachefs/nfs.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcachefs-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcachefs-test-libs.sh
config-scratch-devs 4G
@@ -33,3 +33,4 @@ test_nfs()
umount /export2
}
+main "$@"
diff --git a/tests/bcachefs/perf.ktest b/tests/bcachefs/perf.ktest
index 95d13a0..d9016f9 100644..100755
--- a/tests/bcachefs/perf.ktest
+++ b/tests/bcachefs/perf.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib ../prelude.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/../test-libs.sh
require-make bcachefs-tools
@@ -219,3 +219,5 @@ test_extents()
extent_overwrite_middle \
extent_overwrite_all
}
+
+main "$@"
diff --git a/tests/bcachefs/quota.ktest b/tests/bcachefs/quota.ktest
index 5ae7dc0..54d42aa 100644..100755
--- a/tests/bcachefs/quota.ktest
+++ b/tests/bcachefs/quota.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcachefs-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcachefs-test-libs.sh
require-kernel-config QUOTA
require-kernel-config BCACHEFS_QUOTA
@@ -164,3 +164,5 @@ test_prjquota_multidevices()
umount /mnt
}
+
+main "$@"
diff --git a/tests/bcachefs/replication.ktest b/tests/bcachefs/replication.ktest
index 288c013..fa3ce1e 100644..100755
--- a/tests/bcachefs/replication.ktest
+++ b/tests/bcachefs/replication.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcachefs-test-libs.sh
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/bcachefs-test-libs.sh
require-kernel-config MD
require-kernel-config BLK_DEV_MD
@@ -664,3 +664,5 @@ test_key_type_error()
umount /mnt
}
+
+main "$@"
diff --git a/tests/bcachefs/single_device.ktest b/tests/bcachefs/single_device.ktest
index 20e24e0..47d809f 100644..100755
--- a/tests/bcachefs/single_device.ktest
+++ b/tests/bcachefs/single_device.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcachefs-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcachefs-test-libs.sh
require-kernel-config BCACHEFS_TESTS
@@ -1413,3 +1413,5 @@ test_kill_btree_node()
bcachefs fsck -y /dev/sdb || true
done
}
+
+main "$@"
diff --git a/tests/bcachefs/subvol.ktest b/tests/bcachefs/subvol.ktest
index 8d3b00c..1b84160 100644..100755
--- a/tests/bcachefs/subvol.ktest
+++ b/tests/bcachefs/subvol.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcachefs-test-libs.sh
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/bcachefs-test-libs.sh
config-scratch-devs 4G
config-scratch-devs 4G
@@ -433,3 +433,5 @@ test_snapshot_copygc()
bcachefs fs usage -h /mnt
umount /mnt
}
+
+main "$@"
diff --git a/tests/bcachefs/tier.ktest b/tests/bcachefs/tier.ktest
index 2449f3d..0724434 100644..100755
--- a/tests/bcachefs/tier.ktest
+++ b/tests/bcachefs/tier.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib bcachefs-test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/bcachefs-test-libs.sh
config-scratch-devs 4G
config-scratch-devs 4G
@@ -227,7 +227,7 @@ test_mount_umount_torture()
test_change_replicas()
{
- set_watchdog 60
+ set_watchdog 180
run_quiet "" bcachefs format \
--label=ssd /dev/sd[bc] \
--label=hdd /dev/sd[de] \
@@ -268,3 +268,5 @@ test_change_replicas()
kill %1
umount /mnt
}
+
+main $@
diff --git a/tests/bcachefs/units.ktest b/tests/bcachefs/units.ktest
index 44412da..fb9dadd 100644..100755
--- a/tests/bcachefs/units.ktest
+++ b/tests/bcachefs/units.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib ../prelude.sh
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/bcachefs-test-libs.sh
require-make bcachefs-tools
@@ -53,3 +53,5 @@ list_tests()
echo extent_overwrite_all
echo snapshots
}
+
+main "$@"
diff --git a/tests/bcachefs/xfstests.ktest b/tests/bcachefs/xfstests.ktest
index 13ba8ec..2b2531d 100644..100755
--- a/tests/bcachefs/xfstests.ktest
+++ b/tests/bcachefs/xfstests.ktest
@@ -1,13 +1,13 @@
#!/bin/bash
-require-lib bcachefs-test-libs.sh
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/bcachefs-test-libs.sh
require-git http://evilpiepirate.org/git/linuxquota.git
require-make linuxquota
require-git http://evilpiepirate.org/git/xfstests.git ../xfstests
-require-lib ../xfstests.sh
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/../xfstests.sh
require-kernel-config BCACHEFS_POSIX_ACL
require-kernel-config BCACHEFS_QUOTA=y
@@ -26,3 +26,5 @@ run_tests()
run_xfstests bcachefs "$@"
}
+
+main "$@"
diff --git a/tests/blkdev.ktest b/tests/blkdev.ktest
index 355fc21..d8f4c88 100755
--- a/tests/blkdev.ktest
+++ b/tests/blkdev.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib ./test-libs.sh
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/test-libs.sh
config-scratch-devs 4G
@@ -36,3 +36,5 @@ test_block_simple()
run_fio /mnt/foo --size=1G
umount /mnt
}
+
+main "$@"
diff --git a/tests/blktests.ktest b/tests/blktests.ktest
index b1e8d42..7622c82 100644..100755
--- a/tests/blktests.ktest
+++ b/tests/blktests.ktest
@@ -2,11 +2,11 @@
# blktests wrapper:
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/test-libs.sh
+
require-git https://github.com/osandov/blktests.git
require-make blktests
-require-lib test-libs.sh
-
require-kernel-config FAULT_INJECTION,FAULT_INJECTION_DEBUG_FS,FAIL_MAKE_REQUEST
require-kernel-config MD,BLK_DEV_DM,DM_FLAKEY,DM_SNAPSHOT,DM_LOG_WRITES
require-kernel-config BLK_DEV
diff --git a/tests/btrfs.ktest b/tests/btrfs.ktest
index 4bbd0fd..4efc156 100644..100755
--- a/tests/btrfs.ktest
+++ b/tests/btrfs.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib test-libs.sh
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/xfstests.sh
require-kernel-config BTRFS_FS
require-kernel-config BTRFS_FS_POSIX_ACL
@@ -10,11 +10,11 @@ require-kernel-config BTRFS_DEBUG
require-kernel-config BTRFS_ASSERT
require-kernel-config BTRFS_FS_REF_VERIFY
-require-lib xfstests.sh
-
run_tests()
{
export MKFS_OPTIONS=
run_xfstests btrfs "$@"
}
+
+main "$@"
diff --git a/tests/dm.ktest b/tests/dm.ktest
index dda9fa3..bc00a6b 100644..100755
--- a/tests/dm.ktest
+++ b/tests/dm.ktest
@@ -1,6 +1,7 @@
#!/bin/bash
-require-lib test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/test-libs.sh
+
config-timeout $(stress_timeout)
require-kernel-config DM_CRYPT
@@ -144,3 +145,5 @@ test_s5p_sss_cryptsetup() {
echo "OK"
}
+
+main "$@"
diff --git a/tests/ext2.ktest b/tests/ext2.ktest
index 124fff8..1a43789 100644..100755
--- a/tests/ext2.ktest
+++ b/tests/ext2.ktest
@@ -1,14 +1,16 @@
#!/bin/bash
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/xfstests.sh
+
require-kernel-config EXT2_FS
require-kernel-config EXT2_FS_XATTR
require-kernel-config EXT2_FS_POSIX_ACL
-require-lib xfstests.sh
-
run_tests()
{
export MKFS_OPTIONS=
run_xfstests ext2 "$@"
}
+
+main "$@"
diff --git a/tests/ext3.ktest b/tests/ext3.ktest
index e00962e..bbacc28 100644..100755
--- a/tests/ext3.ktest
+++ b/tests/ext3.ktest
@@ -1,13 +1,15 @@
#!/bin/bash
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/xfstests.sh
+
require-kernel-config EXT3_FS
require-kernel-config EXT4_FS_POSIX_ACL
-require-lib xfstests.sh
-
run_tests()
{
export MKFS_OPTIONS=
run_xfstests ext3 "$@"
}
+
+main "$@"
diff --git a/tests/ext4.ktest b/tests/ext4.ktest
index 25096d0..2132996 100644..100755
--- a/tests/ext4.ktest
+++ b/tests/ext4.ktest
@@ -1,15 +1,17 @@
#!/bin/bash
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/xfstests.sh
+
require-kernel-config EXT4_FS
require-kernel-config EXT4_FS_POSIX_ACL
require-kernel-config EXT4_DEBUG
require-kernel-config QUOTA
-require-lib xfstests.sh
-
run_tests()
{
export MKFS_OPTIONS=
run_xfstests ext4 "$@"
}
+
+main "$@"
diff --git a/tests/f2fs.ktest b/tests/f2fs.ktest
index d841491..1fe5bfa 100644..100755
--- a/tests/f2fs.ktest
+++ b/tests/f2fs.ktest
@@ -1,5 +1,7 @@
#!/bin/bash
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/xfstests.sh
+
require-kernel-config F2FS_FS
require-kernel-config F2FS_STAT_FS
require-kernel-config F2FS_FS_XATTR
@@ -7,11 +9,11 @@ require-kernel-config F2FS_FS_POSIX_ACL
require-kernel-config F2FS_CHECK_FS
require-kernel-config F2FS_FAULT_INJECTION
-require-lib xfstests.sh
-
run_tests()
{
export MKFS_OPTIONS=
run_xfstests f2fs "$@"
}
+
+main "$@"
diff --git a/tests/fio.ktest b/tests/fio.ktest
index a30e583..7d801f8 100644..100755
--- a/tests/fio.ktest
+++ b/tests/fio.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/test-libs.sh
config-scratch-devs 1G
diff --git a/tests/jfs.ktest b/tests/jfs.ktest
index 27b1927..c55477e 100644..100755
--- a/tests/jfs.ktest
+++ b/tests/jfs.ktest
@@ -1,15 +1,17 @@
#!/bin/bash
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/xfstests.sh
+
require-kernel-config JFS_FS
require-kernel-config JFS_POSIX_ACL
require-kernel-config JFS_DEBUG
require-kernel-config QUOTA
-require-lib xfstests.sh
-
run_tests()
{
export MKFS_OPTIONS=
run_xfstests jfs "$@"
}
+
+main "$@"
diff --git a/tests/kconfig.sh b/tests/kconfig.sh
new file mode 100644
index 0000000..caf1294
--- /dev/null
+++ b/tests/kconfig.sh
@@ -0,0 +1,223 @@
+
+
+have_kvmguest=0
+have_virtio=0
+have_suspend=0
+
+case $ktest_arch in
+ x86)
+ require-kernel-config SMP
+ require-kernel-config MCORE2 # optimize for core2
+ require-kernel-config IO_DELAY_0XED
+ require-kernel-config 64BIT=n
+ require-kernel-config ACPI # way slower without it, do not know why
+ require-kernel-config UNWINDER_FRAME_POINTER
+ require-kernel-config HARDLOCKUP_DETECTOR
+
+ have_kvmguest=1
+ have_virtio=1
+ have_suspend=1
+ ;;
+ x86_64)
+ require-kernel-config SMP
+ require-kernel-config MCORE2 # optimize for core2
+ require-kernel-config IO_DELAY_0XED
+ #require-kernel-config IA32_EMULATION
+ require-kernel-config 64BIT
+ require-kernel-config ACPI # way slower without it, do not know why
+ require-kernel-config UNWINDER_FRAME_POINTER
+ require-kernel-config HARDLOCKUP_DETECTOR
+
+ have_kvmguest=1
+ have_virtio=1
+ have_suspend=1
+ ;;
+ powerpc)
+ require-kernel-config ADVANCED_OPTIONS
+
+ have_kvmguest=1
+ have_virtio=1
+ have_suspend=1
+ ;;
+ mips)
+ require-kernel-config MIPS_MALTA
+ require-kernel-config CPU_MIPS${BITS}_R2
+ require-kernel-config CPU_BIG_ENDIAN=y
+ require-kernel-config CPU_LITTLE_ENDIAN=n
+ require-kernel-config 32BIT
+
+ have_virtio=1
+ ktest_storage_bus=piix4-ide
+ ;;
+esac
+
+# Normal kernel functionality:
+#require-kernel-config PREEMPT
+#require-kernel-config NO_HZ
+#require-kernel-config HZ_100
+
+require-kernel-config LOCALVERSION_AUTO
+
+require-kernel-config HIGH_RES_TIMERS
+
+require-kernel-config SYSVIPC
+require-kernel-config CGROUPS
+require-kernel-config SWAP # systemd segfaults if you don't have swap support...
+require-kernel-config MODULES,MODULE_UNLOAD
+require-kernel-config DEVTMPFS
+require-kernel-config DEVTMPFS_MOUNT
+require-kernel-config BINFMT_ELF
+require-kernel-config BINFMT_SCRIPT
+
+require-kernel-config COMPACTION # virtfs doesn't do well without it
+
+require-kernel-config PROC_KCORE # XXX Needed?
+
+require-kernel-config TTY
+require-kernel-config VT
+
+# KVM guest support:
+if [[ $have_kvmguest = 1 ]]; then
+ require-kernel-config HYPERVISOR_GUEST
+ require-kernel-config PARAVIRT
+ require-kernel-config KVM_GUEST
+fi
+
+if [[ $have_virtio = 1 ]]; then
+ require-kernel-config VIRTIO_MENU
+ require-kernel-config VIRTIO_PCI
+ require-kernel-config HW_RANDOM_VIRTIO
+ require-kernel-config VIRTIO_CONSOLE
+ require-kernel-config VIRTIO_NET
+ require-kernel-config NET_9P_VIRTIO
+fi
+
+if [[ $have_suspend = 1 ]]; then
+ require-kernel-config PM
+ require-kernel-config SUSPEND
+ require-kernel-config PM_SLEEP
+ require-kernel-config PM_DEBUG
+ require-kernel-append no_console_suspend
+fi
+
+case $ktest_storage_bus in
+ virtio-scsi-pci)
+ require-kernel-config SCSI_VIRTIO
+ ;;
+ ahci)
+ require-kernel-config ATA
+ require-kernel-config SATA_AHCI
+ ;;
+ piix4-ide)
+ require-kernel-config ATA
+ require-kernel-config ATA_SFF
+ require-kernel-config ATA_PIIX
+ ;;
+ lsi)
+ require-kernel-config SCSI_MPT3SAS
+esac
+
+# PCI:
+require-kernel-config PCI
+
+# Rng:
+require-kernel-config HW_RANDOM
+
+# Clock:
+require-kernel-config RTC_CLASS
+require-kernel-config RTC_HCTOSYS
+require-kernel-config RTC_DRV_CMOS
+
+# Console:
+require-kernel-config SERIAL_8250 # XXX can probably drop
+require-kernel-config SERIAL_8250_CONSOLE
+
+# Block devices:
+require-kernel-config SCSI
+require-kernel-config SCSI_LOWLEVEL # what's this for?
+require-kernel-config BLK_DEV_SD # disk support
+
+# Networking
+require-kernel-config NET
+require-kernel-config PACKET
+require-kernel-config UNIX
+require-kernel-config INET
+require-kernel-config IP_MULTICAST
+require-kernel-config NETDEVICES
+
+# Filesystems:
+require-kernel-config TMPFS
+require-kernel-config INOTIFY_USER
+require-kernel-config CONFIGFS_FS # systemd
+
+# Root filesystem:
+require-kernel-config EXT4_FS
+require-kernel-config EXT4_FS_POSIX_ACL
+
+require-kernel-config NET_9P
+require-kernel-config NETWORK_FILESYSTEMS
+require-kernel-config 9P_FS
+
+# Fast RNG:
+require-kernel-config CONFIG_CRYPTO_DEV_VIRTIO
+
+# Crash dumps
+if [[ $ktest_crashdump = 1 ]]; then
+ require-kernel-config KEXEC
+ require-kernel-config CRASH_DUMP
+ require-kernel-config RELOCATABLE
+fi
+
+# KGDB:
+require-kernel-config KGDB
+require-kernel-config KGDB_SERIAL_CONSOLE
+require-kernel-config VMAP_STACK=n
+require-kernel-config RANDOMIZE_BASE=n
+require-kernel-config RANDOMIZE_MEMORY=n
+
+# Profiling:
+require-kernel-config PROFILING
+require-kernel-config JUMP_LABEL
+
+# Tracing
+require-kernel-config FTRACE
+require-kernel-config FTRACE_SYSCALLS
+require-kernel-config FUNCTION_TRACER
+#require-kernel-config ENABLE_DEFAULT_TRACERS
+
+require-kernel-config PANIC_ON_OOPS
+require-kernel-config SOFTLOCKUP_DETECTOR
+require-kernel-config DETECT_HUNG_TASK
+#require-kernel-config DEFAULT_HUNG_TASK_TIMEOUT=30
+require-kernel-config WQ_WATCHDOG
+
+require-kernel-config DEBUG_FS
+require-kernel-config MAGIC_SYSRQ
+require-kernel-config DEBUG_INFO
+require-kernel-config DEBUG_INFO_DWARF4
+require-kernel-config GDB_SCRIPTS
+require-kernel-config DEBUG_KERNEL
+#require-kernel-config DEBUG_RODATA
+#require-kernel-config DEBUG_SET_MODULE_RONX
+
+require-kernel-config DEBUG_LIST
+
+# More expensive
+#require-kernel-config DYNAMIC_DEBUG
+
+# Expensive
+#require-kernel-config DEBUG_ATOMIC_SLEEP
+#require-kernel-config DEBUG_MUTEXES
+#require-kernel-config DEBUG_PREEMPT
+
+#require-kernel-config DEBUG_SLAB
+#require-kernel-config DEBUG_SPINLOCK
+
+#require-kernel-config LOCKDEP_SUPPORT
+#require-kernel-config PROVE_LOCKING
+
+#require-kernel-config PROVE_RCU
+#require-kernel-config RCU_CPU_STALL_VERBOSE
+
+# expensive, doesn't catch that much
+# require-kernel-config DEBUG_PAGEALLOC
diff --git a/tests/md.ktest b/tests/md.ktest
index cb102ec..b9a936e 100644..100755
--- a/tests/md.ktest
+++ b/tests/md.ktest
@@ -1,6 +1,6 @@
#!/bin/bash
-require-lib ./test-libs.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/test-libs.sh
require-kernel-config MD
require-kernel-config BLK_DEV_MD
@@ -64,3 +64,5 @@ test_raid5()
{
run_mdtest 5
}
+
+main "$@"
diff --git a/tests/nilfs2.ktest b/tests/nilfs2.ktest
index c203f6d..f17b677 100644..100755
--- a/tests/nilfs2.ktest
+++ b/tests/nilfs2.ktest
@@ -1,8 +1,8 @@
#!/bin/bash
-require-kernel-config NILFS2_FS
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/xfstests.sh
-require-lib xfstests.sh
+require-kernel-config NILFS2_FS
run_tests()
{
@@ -10,3 +10,5 @@ run_tests()
run_xfstests nilfs2 "$@"
}
+
+main "$@"
diff --git a/tests/prelude.sh b/tests/prelude.sh
index caf1294..a521abb 100644
--- a/tests/prelude.sh
+++ b/tests/prelude.sh
@@ -1,223 +1,267 @@
+# Basic libs for ktest tests:
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/../lib/common.sh
-have_kvmguest=0
-have_virtio=0
-have_suspend=0
-
-case $ktest_arch in
- x86)
- require-kernel-config SMP
- require-kernel-config MCORE2 # optimize for core2
- require-kernel-config IO_DELAY_0XED
- require-kernel-config 64BIT=n
- require-kernel-config ACPI # way slower without it, do not know why
- require-kernel-config UNWINDER_FRAME_POINTER
- require-kernel-config HARDLOCKUP_DETECTOR
-
- have_kvmguest=1
- have_virtio=1
- have_suspend=1
- ;;
- x86_64)
- require-kernel-config SMP
- require-kernel-config MCORE2 # optimize for core2
- require-kernel-config IO_DELAY_0XED
- #require-kernel-config IA32_EMULATION
- require-kernel-config 64BIT
- require-kernel-config ACPI # way slower without it, do not know why
- require-kernel-config UNWINDER_FRAME_POINTER
- require-kernel-config HARDLOCKUP_DETECTOR
-
- have_kvmguest=1
- have_virtio=1
- have_suspend=1
- ;;
- powerpc)
- require-kernel-config ADVANCED_OPTIONS
-
- have_kvmguest=1
- have_virtio=1
- have_suspend=1
- ;;
- mips)
- require-kernel-config MIPS_MALTA
- require-kernel-config CPU_MIPS${BITS}_R2
- require-kernel-config CPU_BIG_ENDIAN=y
- require-kernel-config CPU_LITTLE_ENDIAN=n
- require-kernel-config 32BIT
-
- have_virtio=1
- ktest_storage_bus=piix4-ide
- ;;
-esac
-
-# Normal kernel functionality:
-#require-kernel-config PREEMPT
-#require-kernel-config NO_HZ
-#require-kernel-config HZ_100
-
-require-kernel-config LOCALVERSION_AUTO
-
-require-kernel-config HIGH_RES_TIMERS
-
-require-kernel-config SYSVIPC
-require-kernel-config CGROUPS
-require-kernel-config SWAP # systemd segfaults if you don't have swap support...
-require-kernel-config MODULES,MODULE_UNLOAD
-require-kernel-config DEVTMPFS
-require-kernel-config DEVTMPFS_MOUNT
-require-kernel-config BINFMT_ELF
-require-kernel-config BINFMT_SCRIPT
-
-require-kernel-config COMPACTION # virtfs doesn't do well without it
-
-require-kernel-config PROC_KCORE # XXX Needed?
-
-require-kernel-config TTY
-require-kernel-config VT
-
-# KVM guest support:
-if [[ $have_kvmguest = 1 ]]; then
- require-kernel-config HYPERVISOR_GUEST
- require-kernel-config PARAVIRT
- require-kernel-config KVM_GUEST
-fi
-
-if [[ $have_virtio = 1 ]]; then
- require-kernel-config VIRTIO_MENU
- require-kernel-config VIRTIO_PCI
- require-kernel-config HW_RANDOM_VIRTIO
- require-kernel-config VIRTIO_CONSOLE
- require-kernel-config VIRTIO_NET
- require-kernel-config NET_9P_VIRTIO
-fi
-
-if [[ $have_suspend = 1 ]]; then
- require-kernel-config PM
- require-kernel-config SUSPEND
- require-kernel-config PM_SLEEP
- require-kernel-config PM_DEBUG
- require-kernel-append no_console_suspend
-fi
-
-case $ktest_storage_bus in
- virtio-scsi-pci)
- require-kernel-config SCSI_VIRTIO
- ;;
- ahci)
- require-kernel-config ATA
- require-kernel-config SATA_AHCI
- ;;
- piix4-ide)
- require-kernel-config ATA
- require-kernel-config ATA_SFF
- require-kernel-config ATA_PIIX
- ;;
- lsi)
- require-kernel-config SCSI_MPT3SAS
-esac
-
-# PCI:
-require-kernel-config PCI
-
-# Rng:
-require-kernel-config HW_RANDOM
-
-# Clock:
-require-kernel-config RTC_CLASS
-require-kernel-config RTC_HCTOSYS
-require-kernel-config RTC_DRV_CMOS
-
-# Console:
-require-kernel-config SERIAL_8250 # XXX can probably drop
-require-kernel-config SERIAL_8250_CONSOLE
-
-# Block devices:
-require-kernel-config SCSI
-require-kernel-config SCSI_LOWLEVEL # what's this for?
-require-kernel-config BLK_DEV_SD # disk support
-
-# Networking
-require-kernel-config NET
-require-kernel-config PACKET
-require-kernel-config UNIX
-require-kernel-config INET
-require-kernel-config IP_MULTICAST
-require-kernel-config NETDEVICES
-
-# Filesystems:
-require-kernel-config TMPFS
-require-kernel-config INOTIFY_USER
-require-kernel-config CONFIGFS_FS # systemd
-
-# Root filesystem:
-require-kernel-config EXT4_FS
-require-kernel-config EXT4_FS_POSIX_ACL
-
-require-kernel-config NET_9P
-require-kernel-config NETWORK_FILESYSTEMS
-require-kernel-config 9P_FS
-
-# Fast RNG:
-require-kernel-config CONFIG_CRYPTO_DEV_VIRTIO
-
-# Crash dumps
-if [[ $ktest_crashdump = 1 ]]; then
- require-kernel-config KEXEC
- require-kernel-config CRASH_DUMP
- require-kernel-config RELOCATABLE
-fi
-
-# KGDB:
-require-kernel-config KGDB
-require-kernel-config KGDB_SERIAL_CONSOLE
-require-kernel-config VMAP_STACK=n
-require-kernel-config RANDOMIZE_BASE=n
-require-kernel-config RANDOMIZE_MEMORY=n
-
-# Profiling:
-require-kernel-config PROFILING
-require-kernel-config JUMP_LABEL
-
-# Tracing
-require-kernel-config FTRACE
-require-kernel-config FTRACE_SYSCALLS
-require-kernel-config FUNCTION_TRACER
-#require-kernel-config ENABLE_DEFAULT_TRACERS
-
-require-kernel-config PANIC_ON_OOPS
-require-kernel-config SOFTLOCKUP_DETECTOR
-require-kernel-config DETECT_HUNG_TASK
-#require-kernel-config DEFAULT_HUNG_TASK_TIMEOUT=30
-require-kernel-config WQ_WATCHDOG
-
-require-kernel-config DEBUG_FS
-require-kernel-config MAGIC_SYSRQ
-require-kernel-config DEBUG_INFO
-require-kernel-config DEBUG_INFO_DWARF4
-require-kernel-config GDB_SCRIPTS
-require-kernel-config DEBUG_KERNEL
-#require-kernel-config DEBUG_RODATA
-#require-kernel-config DEBUG_SET_MODULE_RONX
-
-require-kernel-config DEBUG_LIST
-
-# More expensive
-#require-kernel-config DYNAMIC_DEBUG
-
-# Expensive
-#require-kernel-config DEBUG_ATOMIC_SLEEP
-#require-kernel-config DEBUG_MUTEXES
-#require-kernel-config DEBUG_PREEMPT
-
-#require-kernel-config DEBUG_SLAB
-#require-kernel-config DEBUG_SPINLOCK
-
-#require-kernel-config LOCKDEP_SUPPORT
-#require-kernel-config PROVE_LOCKING
-
-#require-kernel-config PROVE_RCU
-#require-kernel-config RCU_CPU_STALL_VERBOSE
-
-# expensive, doesn't catch that much
-# require-kernel-config DEBUG_PAGEALLOC
+trap 'echo "Error $? from: $BASH_COMMAND, exiting" >&2' ERR
+
+ktest_cpus=$(nproc)
+ktest_mem=""
+ktest_timeout=""
+ktest_kernel_append=()
+ktest_images=()
+ktest_scratch_devs=()
+ktest_make_install=()
+ktest_kernel_config_require=()
+ktest_qemu_append=()
+
+NEXT_SCRATCH_DEV="b"
+BUILD_ON_HOST=""
+
+require-git()
+{
+ local req="$1"
+ local dir=$(basename $req)
+ dir=${dir%%.git}
+
+ if [[ $# -ge 2 ]]; then
+ dir=$2
+ fi
+
+ dir=$(dirname $(readlink -e "${BASH_SOURCE[1]}"))/$dir
+
+ if [[ ! -d $dir ]]; then
+ git clone $req $dir
+ fi
+}
+
+do-build-deb()
+{
+ local path=$(readlink -e "$1")
+ local name=$(basename $path)
+
+ get_tmpdir
+
+ make -C "$path"
+
+ cp -drl $path $ktest_tmp
+ pushd "$ktest_tmp/$name" > /dev/null
+
+ # make -nc actually work:
+ rm -f debian/*.debhelper.log
+
+ debuild --no-lintian -b -i -I -us -uc -nc
+ popd > /dev/null
+}
+
+# $1 is a source repository, which will be built (with make) and then turned
+# into a dpkg
+require-build-deb()
+{
+ local req=$1
+
+ if ! [[ -d $req ]]; then
+ echo "build-deb dependency $req not found"
+ exit 1
+ fi
+
+ checkdep debuild devscripts
+
+ run_quiet "building $(basename $req)" do-build-deb $req
+}
+
+require-make()
+{
+ local req=$(dirname $(readlink -e ${BASH_SOURCE[1]}))/$1
+
+ if [[ ! -d $req ]]; then
+ echo "require-make: $req not found"
+ exit 1
+ fi
+
+ ktest_make_install+=("$req")
+
+ if [[ -n $BUILD_ON_HOST ]]; then
+ run_quiet "building $1" make -C "$req"
+ fi
+}
+
+require-kernel-config()
+{
+ local OLDIFS=$IFS
+ IFS=','
+
+ for i in $1; do
+ ktest_kernel_config_require+=("$i")
+ done
+
+ IFS=$OLDIFS
+}
+
+require-qemu-append()
+{
+ local OLDIFS=$IFS
+ IFS=','
+
+ for i in $1; do
+ ktest_kernel_config_require+=("$i")
+ done
+
+ IFS=$OLDIFS
+}
+
+require-kernel-append()
+{
+ ktest_kernel_append+=($1)
+}
+
+config-scratch-devs()
+{
+ ktest_scratch_devs+=("$1")
+}
+
+config-pmem-devs()
+{
+ ktest_pmem_devs+=("$1")
+}
+
+config-image()
+{
+ ktest_images+=("$1")
+}
+
+config-cpus()
+{
+ ktest_cpus=$1
+}
+
+config-mem()
+{
+ ktest_mem=$1
+}
+
+config-timeout()
+{
+ n=$1
+ if [ "${EXTENDED_DEBUG:-0}" == 1 ]; then
+ n=$((n * 2))
+ fi
+ ktest_timeout=$n
+}
+
+config-arch()
+{
+ parse_arch "$1"
+ checkdep_arch
+}
+
+set_watchdog()
+{
+ echo WATCHDOG $1
+}
+
+run_test()
+{
+ local test=test_$1
+
+ if [[ $(type -t $test) != function ]]; then
+ echo "test $1 does not exist"
+ exit 1
+ fi
+
+ $test
+}
+
+run_tests()
+{
+ local tests_passed=()
+ local tests_failed=()
+
+ echo
+ echo "Running tests $@"
+ echo
+
+ for i in $@; do
+ echo "========= TEST $i"
+ echo
+
+ local start=$(date '+%s')
+ local ret=0
+ (set -e; run_test $i)
+ ret=$?
+ local finish=$(date '+%s')
+
+ pkill -P $$ >/dev/null || true
+
+ # XXX: check dmesg for warnings, oopses, slab corruption, etc. before
+ # signaling success
+
+ echo
+
+ if [[ $ret = 0 ]]; then
+ echo "========= PASSED $i in $(($finish - $start))s"
+ tests_passed+=($i)
+ else
+ echo "========= FAILED $i in $(($finish - $start))s"
+ tests_failed+=($i)
+
+ # Try to clean up after a failed test so we can run the rest of
+ # the tests - unless failfast is enabled, or there was only one
+ # test to run:
+
+ $ktest_failfast && break
+ [[ $# = 1 ]] && break
+
+ for mnt in $(awk '{print $2}' /proc/mounts|grep ^/mnt|sort -r); do
+ while [[ -n $(fuser -k -M -m $mnt) ]]; do
+ sleep 1
+ done
+ umount $mnt
+ done
+ fi
+ done
+
+ echo
+ echo "Passed: ${tests_passed[@]}"
+ echo "Failed: ${tests_failed[@]}"
+
+ return ${#tests_failed[@]}
+}
+
+list_tests()
+{
+ declare -F|sed -ne '/ test_/ s/.*test_// p'
+}
+
+main()
+{
+ if [[ $BASH_ARGC = 0 ]]; then
+ exit 0
+ fi
+
+ local arg=$1
+ shift
+
+ case $arg in
+ deps)
+ echo "ktest_cpus=$ktest_cpus"
+ echo "ktest_mem=$ktest_mem"
+ echo "ktest_timeout=$ktest_timeout"
+ echo "ktest_kernel_append=${ktest_kernel_append[@]}"
+ echo "ktest_images=(${ktest_images[@]})"
+ echo "ktest_scratch_devs=(${ktest_scratch_devs[@]})"
+ echo "ktest_make_install=(${ktest_make_install[@]})"
+ echo "ktest_kernel_config_require=(${ktest_kernel_config_require[@]})"
+ echo "ktest_qemu_append=(${ktest_qemu_append[@]})"
+ ;;
+ list-tests)
+ list_tests
+ ;;
+ run-tests)
+ run_tests "$@"
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+ esac
+}
diff --git a/tests/test-libs.sh b/tests/test-libs.sh
index 7b533c2..bea62c4 100644
--- a/tests/test-libs.sh
+++ b/tests/test-libs.sh
@@ -3,7 +3,8 @@
# ktest framework.
#
-require-lib prelude.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/prelude.sh
+. $(dirname $(readlink -e ${BASH_SOURCE[0]}))/kconfig.sh
config-mem 2G
diff --git a/tests/timeout.ktest b/tests/timeout.ktest
index a33452d..e5c07a5 100755
--- a/tests/timeout.ktest
+++ b/tests/timeout.ktest
@@ -1,5 +1,7 @@
#!/bin/bash
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/test-libs.sh
+
config-mem 512M
config-timeout 10
@@ -8,3 +10,5 @@ test_timeout()
sleep 30
false
}
+
+main "$@"
diff --git a/tests/xfs.ktest b/tests/xfs.ktest
index 4c06036..06c7ccd 100755
--- a/tests/xfs.ktest
+++ b/tests/xfs.ktest
@@ -1,5 +1,7 @@
#!/bin/bash
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/xfstests.sh
+
require-kernel-config XFS_FS
require-kernel-config XFS_QUOTA
require-kernel-config XFS_POSIX_ACL
@@ -7,10 +9,10 @@ require-kernel-config XFS_RT XFS_ONLINE_SCRUB
#require-kernel-config XFS_DEBUG
require-kernel-config QUOTA
-require-lib xfstests.sh
-
run_tests()
{
export MKFS_OPTIONS="-m reflink=1,rmapbt=1 -i sparse=1 -b size=1024"
run_xfstests xfs "$@"
}
+
+main "$@"
diff --git a/tests/xfstests.sh b/tests/xfstests.sh
index 257e8df..e33f91c 100644
--- a/tests/xfstests.sh
+++ b/tests/xfstests.sh
@@ -1,6 +1,6 @@
# xfstests wrapper:
-require-lib test-libs.sh
+. $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/test-libs.sh
require-git https://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git xfstests
@@ -23,7 +23,7 @@ config-timeout 7200
list_tests()
{
- (cd "$ktest_dir/tests/xfstests/tests"; echo generic/???)
+ (cd $(dirname $(readlink -e "${BASH_SOURCE[0]}"))/xfstests/tests; echo generic/???)
}
hook_xfstests()