diff options
Diffstat (limited to 'src/spdk/test/fuzz/autofuzz.sh')
-rwxr-xr-x | src/spdk/test/fuzz/autofuzz.sh | 74 |
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 |