summaryrefslogtreecommitdiffstats
path: root/src/spdk/test/fuzz/autofuzz.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/spdk/test/fuzz/autofuzz.sh')
-rwxr-xr-xsrc/spdk/test/fuzz/autofuzz.sh74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/spdk/test/fuzz/autofuzz.sh b/src/spdk/test/fuzz/autofuzz.sh
new file mode 100755
index 000000000..92766bb06
--- /dev/null
+++ b/src/spdk/test/fuzz/autofuzz.sh
@@ -0,0 +1,74 @@
+#!/usr/bin/env bash
+
+testdir=$(readlink -f $(dirname $0))
+rootdir=$(readlink -f $testdir/../..)
+
+source "$rootdir/test/common/autotest_common.sh"
+
+TEST_TIMEOUT=1200
+
+# The term transport is used a bit loosely for vhost tests.
+allowed_nvme_transports=("rdma" "tcp")
+allowed_vhost_transports=("scsi" "blk" "all")
+bad_transport=true
+config_params="--enable-asan --enable-ubsan --enable-debug --without-isal"
+
+# These arguments are used in addition to the test arguments in autotest_common.sh
+for i in "$@"; do
+ case "$i" in
+ --module=*)
+ TEST_MODULE="${i#*=}"
+ ;;
+ --timeout=*)
+ TEST_TIMEOUT="${i#*=}"
+ ;;
+ esac
+done
+
+timing_enter autofuzz
+if [ "$TEST_MODULE" == "nvmf" ]; then
+ allowed_transports=("${allowed_nvme_transports[@]}")
+ if [ $TEST_TRANSPORT == "rdma" ]; then
+ config_params="$config_params --with-rdma"
+ fi
+elif [ "$TEST_MODULE" == "vhost" ]; then
+ allowed_transports=("${allowed_vhost_transports[@]}")
+ config_params="$config_params --with-vhost --with-virtio"
+else
+ echo "Invalid module specified. Please specify either nvmf or vhost."
+ exit 1
+fi
+
+for transport in "${allowed_transports[@]}"; do
+ if [ $transport == "$TEST_TRANSPORT" ]; then
+ bad_transport=false
+ fi
+done
+
+if $bad_transport; then
+ echo "invalid transport. Please supply one of the following for module: $TEST_MODULE."
+ echo "${allowed_transports[@]}"
+ exit 1
+fi
+
+timing_enter make
+cd $rootdir
+./configure $config_params
+$MAKE $MAKEFLAGS
+timing_exit make
+
+# supply --iso to each test module so that it can run setup.sh.
+timing_enter fuzz_module
+if [ "$TEST_MODULE" == "nvmf" ]; then
+ sudo $testdir/autofuzz_nvmf.sh --iso --transport=$TEST_TRANSPORT --timeout=$TEST_TIMEOUT
+fi
+
+if [ "$TEST_MODULE" == "vhost" ]; then
+ sudo $testdir/autofuzz_vhost.sh --iso --transport=$TEST_TRANSPORT --timeout=$TEST_TIMEOUT
+fi
+
+if [ "$TEST_MODULE" == "iscsi" ]; then
+ sudo $testdir/autofuzz_iscsi.sh --iso --transport=$TEST_TRANSPORT --timeout=$TEST_TIMEOUT
+fi
+timing_exit fuzz_module
+timing_exit autofuzz