Commit a0304f54 authored by Seth Howell's avatar Seth Howell Committed by Tomasz Zawadzki
Browse files

test/nvme: convert tests into run_test



This unifies the script and makes it easy to see what exactly we are
testing.

Change-Id: Icdbc08077ea4397bfde50493c718f99c3c499062
Signed-off-by: default avatarSeth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/476809


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarKarol Latecki <karol.latecki@intel.com>
parent 785c3f0f
Loading
Loading
Loading
Loading
+54 −81
Original line number Diff line number Diff line
@@ -5,6 +5,46 @@ rootdir=$(readlink -f $testdir/../..)
source $rootdir/scripts/common.sh
source $rootdir/test/common/autotest_common.sh

function nvme_identify {
	$rootdir/examples/nvme/identify/identify -i 0
	for bdf in $(iter_pci_class_code 01 08 02); do
		$rootdir/examples/nvme/identify/identify -r "trtype:PCIe traddr:${bdf}" -i 0
	done
	timing_exit identify
}

function nvme_perf {
	# enable no shutdown notification option
	$rootdir/examples/nvme/perf/perf -q 128 -w read -o 12288 -t 1 -LL -i 0 -N
	$rootdir/examples/nvme/perf/perf -q 128 -w write -o 12288 -t 1 -LL -i 0
	if [ -b /dev/ram0 ]; then
		# Test perf with AIO device
		$rootdir/examples/nvme/perf/perf /dev/ram0 -q 128 -w read -o 12288 -t 1 -LL -i 0
		report_test_completion "nvme_perf"
	fi
}

function nvme_fio_test {
	PLUGIN_DIR=$rootdir/examples/nvme/fio_plugin
	for bdf in $(iter_pci_class_code 01 08 02); do
		for blkname in $(get_nvme_name_from_bdf $bdf); do
			fio_nvme $PLUGIN_DIR/example_config.fio --filename="trtype=PCIe traddr=${bdf//:/.} ns=${blkname##*n}"
			report_test_completion "nvme_fio"
		done
	done
}

function nvme_multi_secondary {
	$rootdir/examples/nvme/perf/perf -i 0 -q 16 -w read -o 4096 -t 3 -c 0x1 &
	pid0=$!
	$rootdir/examples/nvme/perf/perf -i 0 -q 16 -w read -o 4096 -t 3 -c 0x2 &
	pid1=$!
	$rootdir/examples/nvme/perf/perf -i 0 -q 16 -w read -o 4096 -t 3 -c 0x4
	wait $pid0
	wait $pid1
	report_test_completion "nvme_multi_secondary"
}

if [ $(uname) = Linux ]; then
	# check that our setup.sh script does not bind NVMe devices to uio/vfio if they
	# have an active mountpoint
@@ -69,92 +109,25 @@ if [ $(uname) = Linux ]; then
	trap "kill_stub -9; exit 1" SIGINT SIGTERM EXIT
fi

timing_enter reset
$testdir/reset/reset -q 64 -w write -s 4096 -t 5
timing_exit reset

timing_enter identify
$rootdir/examples/nvme/identify/identify -i 0
for bdf in $(iter_pci_class_code 01 08 02); do
	$rootdir/examples/nvme/identify/identify -r "trtype:PCIe traddr:${bdf}" -i 0
done
timing_exit identify

timing_enter perf
#enable no shutdown notification option
$rootdir/examples/nvme/perf/perf -q 128 -w read -o 12288 -t 1 -LL -i 0 -N
$rootdir/examples/nvme/perf/perf -q 128 -w write -o 12288 -t 1 -LL -i 0
if [ -b /dev/ram0 ]; then
	# Test perf with AIO device
	$rootdir/examples/nvme/perf/perf /dev/ram0 -q 128 -w read -o 12288 -t 1 -LL -i 0
	report_test_completion "nvme_perf"
fi
timing_exit perf

timing_enter reserve
$rootdir/examples/nvme/reserve/reserve
timing_exit reserve

timing_enter hello_world
$rootdir/examples/nvme/hello_world/hello_world
timing_exit

timing_enter deallocated_value
$testdir/deallocated_value/deallocated_value
timing_exit deallocated_value

timing_enter sgl
$testdir/sgl/sgl
timing_exit sgl

timing_enter e2edp
$testdir/e2edp/nvme_dp
timing_exit e2edp

timing_enter err_injection
$testdir/err_injection/err_injection
timing_exit err_injection
run_test "case" "nvme_reset" $testdir/reset/reset -q 64 -w write -s 4096 -t 5
run_test "case" "nvme_identify" nvme_identify
run_test "case" "nvme_perf" nvme_perf
run_test "case" "nvme_reserve" $rootdir/examples/nvme/reserve/reserve
run_test "case" "nvme_hello_world" $rootdir/examples/nvme/hello_world/hello_world
run_test "case" "nvme_deallocated_value" $testdir/deallocated_value/deallocated_value
run_test "case" "nvme_sgl" $testdir/sgl/sgl
run_test "case" "nvme_e2edp" $testdir/e2edp/nvme_dp
run_test "case" "nvme_err_injection" $testdir/err_injection/err_injection
run_test "case" "nvme_overhead" $testdir/overhead/overhead -s 4096 -t 1 -H
run_test "case" "nvme_arbitration" $rootdir/examples/nvme/arbitration/arbitration -t 3 -i 0

if [ $(uname) != "FreeBSD" ]; then
	timing_enter startup
	$testdir/startup/startup -t 1000000
	timing_exit startup
fi

timing_enter overhead
$testdir/overhead/overhead -s 4096 -t 1 -H
timing_exit overhead

timing_enter arbitration
$rootdir/examples/nvme/arbitration/arbitration -t 3 -i 0
timing_exit arbitration

if [ $(uname) = Linux ]; then
	timing_enter multi_secondary
	$rootdir/examples/nvme/perf/perf -i 0 -q 16 -w read -o 4096 -t 3 -c 0x1 &
	pid0=$!
	$rootdir/examples/nvme/perf/perf -i 0 -q 16 -w read -o 4096 -t 3 -c 0x2 &
	pid1=$!
	$rootdir/examples/nvme/perf/perf -i 0 -q 16 -w read -o 4096 -t 3 -c 0x4
	wait $pid0
	wait $pid1
	report_test_completion "nvme_multi_secondary"
	timing_exit multi_secondary
fi

if [ $(uname) = Linux ]; then
	run_test "case" "nvme_startup" $testdir/startup/startup -t 1000000
	run_test "case" "nvme_multi_secondary" nvme_multi_secondary
	trap - SIGINT SIGTERM EXIT
	kill_stub
fi

if [ -d /usr/src/fio ]; then
	timing_enter fio_plugin
	PLUGIN_DIR=$rootdir/examples/nvme/fio_plugin
	for bdf in $(iter_pci_class_code 01 08 02); do
		for blkname in $(get_nvme_name_from_bdf $bdf); do
			fio_nvme $PLUGIN_DIR/example_config.fio --filename="trtype=PCIe traddr=${bdf//:/.} ns=${blkname##*n}"
			report_test_completion "bdev_fio"
		done
	done
	timing_exit fio_plugin
	run_test "case" "nvme_fio" nvme_fio_test
fi