Commit 53ec23ca authored by Michal Berger's avatar Michal Berger Committed by Tomasz Zawadzki
Browse files

test/xnvme: Add simple test covering xnvme



This test is meant to simply verify basic IO and rpc integrity with
regards to different io_mechanisms.

Signed-off-by: default avatarMichal Berger <michal.berger@intel.com>
Change-Id: I936d57c6ac539e77761656a1ec2b8ad1013f918f
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14119


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarDong Yi <dongx.yi@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
parent c8f62d79
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -220,6 +220,10 @@ if [ $SPDK_RUN_FUNCTIONAL_TEST -eq 1 ]; then
		if [ $SPDK_RUN_ASAN -eq 0 ] && [ $(uname -s) = Linux ]; then
			run_test "sw_hotplug" test/nvme/sw_hotplug.sh
		fi

		if [[ $SPDK_TEST_XNVME -eq 1 ]]; then
			run_test "nvme_xnvme" test/nvme/xnvme/xnvme.sh
		fi
	fi

	if [ $SPDK_TEST_IOAT -eq 1 ]; then
+80 −0
Original line number Diff line number Diff line
#!/usr/bin/env bash
testdir=$(readlink -f "$(dirname "$0")")
rootdir=$(readlink -f "$testdir/../../../")
# Hook into dd suite to perform some basic IO tests
source "$rootdir/test/dd/common.sh"

malloc_to_xnvme_copy() {
	# Use zram for the xnvme backend
	init_zram

	local mbdev0=malloc0 mbdev0_b=1048576 mbdev0_bs=512
	local xnvme0=zram0 xnvme0_dev xnvme_io=()
	local io

	xnvme_io+=(libaio)
	xnvme_io+=(io_uring)

	xnvme0_dev=$(create_zram_dev)
	set_zram_dev "$xnvme0_dev" 512M

	local -A method_bdev_malloc_create_0=(
		["name"]=$mbdev0
		["num_blocks"]=$mbdev0_b
		["block_size"]=$mbdev0_bs
	)

	local -A method_bdev_xnvme_create_0=()
	method_bdev_xnvme_create_0["name"]=$xnvme0
	method_bdev_xnvme_create_0["filename"]="/dev/zram$xnvme0_dev"

	for io in "${xnvme_io[@]}"; do
		method_bdev_xnvme_create_0["io_mechanism"]="$io"

		"${DD_APP[@]}" \
			--ib="$mbdev0" \
			--ob="$xnvme0" \
			--json <(gen_conf)

		"${DD_APP[@]}" \
			--ib="$xnvme0" \
			--ob="$mbdev0" \
			--json <(gen_conf)
	done

	remove_zram_dev "$xnvme0_dev"
}

xnvme_bdevperf() {
	# Use zram for the xnvme backend
	init_zram

	local xnvme0=zram0 xnvme0_dev xnvme_io=()
	local io

	xnvme_io+=(libaio)
	xnvme_io+=(io_uring)

	xnvme0_dev=$(create_zram_dev)
	set_zram_dev "$xnvme0_dev" 512M

	local -A method_bdev_xnvme_create_0=()
	method_bdev_xnvme_create_0["name"]=$xnvme0
	method_bdev_xnvme_create_0["filename"]="/dev/zram$xnvme0_dev"

	for io in "${xnvme_io[@]}"; do
		method_bdev_xnvme_create_0["io_mechanism"]="$io"
		"$rootdir/test/bdev/bdevperf/bdevperf" \
			--json <(gen_conf) \
			-q 64 \
			-w randread \
			-t 5 \
			-T "$xnvme0" \
			-o 4096
	done

	remove_zram_dev "$xnvme0_dev"
}

run_test "xnvme_to_malloc_dd_copy" malloc_to_xnvme_copy
run_test "xnvme_bdevperf" xnvme_bdevperf