1ae679483SSeth Howell#!/usr/bin/env bash 2eb53c232Spaul luse# SPDX-License-Identifier: BSD-3-Clause 3eb53c232Spaul luse# Copyright (C) 2019 Intel Corporation 4eb53c232Spaul luse# All rights reserved. 5eb53c232Spaul luse# 6ae679483SSeth Howelltestdir=$(readlink -f $(dirname $0)) 7ae679483SSeth Howellrootdir=$(readlink -f $testdir/../..) 8ae679483SSeth Howell 9ae679483SSeth Howellsource "$rootdir/test/common/autotest_common.sh" 10ae679483SSeth Howell 11e394fb3bSSeth HowellTEST_TIMEOUT=1200 12e394fb3bSSeth Howell 13*e4cb15c1SKamil Godzwonfunction prepare_config() { 14*e4cb15c1SKamil Godzwon local allowed_transports 15*e4cb15c1SKamil Godzwon local test_module=$1 16*e4cb15c1SKamil Godzwon 17*e4cb15c1SKamil Godzwon config_params=("--enable-asan" "--enable-ubsan" "--enable-debug") 18*e4cb15c1SKamil Godzwon 19*e4cb15c1SKamil Godzwon case "$test_module" in 20*e4cb15c1SKamil Godzwon nvmf) 21*e4cb15c1SKamil Godzwon allowed_transports=("rdma" "tcp") 22*e4cb15c1SKamil Godzwon ;; 23*e4cb15c1SKamil Godzwon vhost) 24*e4cb15c1SKamil Godzwon allowed_transports=("scsi" "blk" "all") 25*e4cb15c1SKamil Godzwon config_params+=("--with-vhost") 26*e4cb15c1SKamil Godzwon config_params+=("--with-virtio") 27*e4cb15c1SKamil Godzwon ;; 28*e4cb15c1SKamil Godzwon iscsi) 29*e4cb15c1SKamil Godzwon allowed_transports=("tcp") 30*e4cb15c1SKamil Godzwon config_params+=("--with-iscsi-initiator") 31*e4cb15c1SKamil Godzwon ;; 32*e4cb15c1SKamil Godzwon *) 33*e4cb15c1SKamil Godzwon echo "Invalid module specified. Please specify either nvmf, vhost or iscsi." >&2 34*e4cb15c1SKamil Godzwon return 1 35*e4cb15c1SKamil Godzwon ;; 36*e4cb15c1SKamil Godzwon esac 37*e4cb15c1SKamil Godzwon 38*e4cb15c1SKamil Godzwon if ! grep -q "$TEST_TRANSPORT" <(printf '%s\n' "${allowed_transports[@]}"); then 39*e4cb15c1SKamil Godzwon echo "Invalid transport. Please supply one of the following for module: $test_module." >&2 40*e4cb15c1SKamil Godzwon echo "${allowed_transports[@]}" >&2 41*e4cb15c1SKamil Godzwon return 1 42*e4cb15c1SKamil Godzwon fi 43*e4cb15c1SKamil Godzwon 44*e4cb15c1SKamil Godzwon if [[ "$TEST_TRANSPORT" == "rdma" ]]; then 45*e4cb15c1SKamil Godzwon config_params+=("--with-rdma") 46*e4cb15c1SKamil Godzwon fi 47*e4cb15c1SKamil Godzwon 48*e4cb15c1SKamil Godzwon printf '%s\n' "${config_params[@]}" 49*e4cb15c1SKamil Godzwon} 50*e4cb15c1SKamil Godzwon 51*e4cb15c1SKamil Godzwonfunction run_fuzzer() { 52*e4cb15c1SKamil Godzwon local test_module=$1 53*e4cb15c1SKamil Godzwon # supply --iso to each test module so that it can run setup.sh. 54*e4cb15c1SKamil Godzwon "$testdir/autofuzz_$test_module.sh" --iso "--transport=$TEST_TRANSPORT" "--timeout=$TEST_TIMEOUT" 55*e4cb15c1SKamil Godzwon} 56ae679483SSeth Howell 57e394fb3bSSeth Howell# These arguments are used in addition to the test arguments in autotest_common.sh 58ae679483SSeth Howellfor i in "$@"; do 59ae679483SSeth Howell case "$i" in 60ae679483SSeth Howell --module=*) 61ae679483SSeth Howell TEST_MODULE="${i#*=}" 62ae679483SSeth Howell ;; 63e394fb3bSSeth Howell --timeout=*) 64e394fb3bSSeth Howell TEST_TIMEOUT="${i#*=}" 65e394fb3bSSeth Howell ;; 66ae679483SSeth Howell esac 67ae679483SSeth Howelldone 68ae679483SSeth Howell 69ae679483SSeth Howelltiming_enter autofuzz 70ae679483SSeth Howell 71*e4cb15c1SKamil Godzwonconfig_params=($(prepare_config "$TEST_MODULE")) 72ae679483SSeth Howell 73ae679483SSeth Howelltiming_enter make 74*e4cb15c1SKamil Godzwoncd "$rootdir" 75*e4cb15c1SKamil Godzwon./configure "${config_params[@]}" 76ae679483SSeth Howell$MAKE $MAKEFLAGS 77ae679483SSeth Howelltiming_exit make 78ae679483SSeth Howell 79ae679483SSeth Howelltiming_enter fuzz_module 80*e4cb15c1SKamil Godzwonrun_fuzzer "$TEST_MODULE" 81ae679483SSeth Howelltiming_exit fuzz_module 82*e4cb15c1SKamil Godzwon 83ae679483SSeth Howelltiming_exit autofuzz 84