Commit 1440f217 authored by Sebastian Brzezinka's avatar Sebastian Brzezinka Committed by Tomasz Zawadzki
Browse files

test/cuse: add tests for SPDK plugin



This test saves output of nvme-cli command for kernel and
SPDK controlled devices and compares it.

Signed-off-by: default avatarSebastian Brzezinka <sebastian.brzezinka@intel.com>
Signed-off-by: default avatarMichal Berger <michal.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/18921

 (master)

(cherry picked from commit 12755b7d)
Change-Id: Ieb5ec49284dca9e74079a8ee021d62dc45d4b09e
Signed-off-by: default avatarKrzysztof Karas <krzysztof.karas@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/20111


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
parent 01950140
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ rpc_py=$rootdir/scripts/rpc.py
declare -A ctrls=()
declare -A nvmes=()
declare -A bdfs=()
declare -a ordered_ctrls=()
nvme_name=""

nvme_get() {
@@ -62,7 +63,9 @@ scan_nvme_ctrls() {
		ctrls["$ctrl_dev"]=$ctrl_dev
		nvmes["$ctrl_dev"]=${ctrl_dev}_ns
		bdfs["$ctrl_dev"]=$pci
		ordered_ctrls[${ctrl_dev/nvme/}]=$ctrl_dev
	done
	((${#ctrls[@]} > 0))
}

get_nvme_ctrl_feature() {
+1 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ modprobe cuse
run_test "nvme_cuse_app" $testdir/cuse
run_test "nvme_cuse_rpc" $testdir/nvme_cuse_rpc.sh
run_test "nvme_cli_cuse" $testdir/spdk_nvme_cli_cuse.sh
run_test "nvme_cli_plugin" $testdir/spdk_nvme_cli_plugin.sh
run_test "nvme_smartctl_cuse" $testdir/spdk_smartctl_cuse.sh
run_test "nvme_ns_manage_cuse" $testdir/nvme_ns_manage_cuse.sh
rmmod cuse
+66 −0
Original line number Diff line number Diff line
#!/usr/bin/env bash
#  SPDX-License-Identifier: BSD-3-Clause
#  Copyright (C) 2023 Intel Corporation
#  All rights reserved.

testdir=$(readlink -f $(dirname $0))
rootdir=$(readlink -f $testdir/../../..)
source "$testdir/common.sh"

trap 'killprocess $spdk_tgt_pid' EXIT

nvme() {
	# Apply some custom filters to align output between the plugin's listing and base nvme-cli's
	/usr/local/src/nvme-cli-plugin/nvme "$@" \
		| sed \
			-e 's#nqn.\+ ##g' \
			-e 's#"SubsystemNQN.*##g' \
			-e 's#NQN=.*##g' \
			-e 's#/dev\(/spdk\)\?/##g' \
			-e 's#ng#nvme##g' \
			-e 's#-subsys##g' \
			-e 's#PCIE#pcie#g' \
			-e 's#(null)#live#g'
}

kernel_out=()
cuse_out=()

rpc_py=$rootdir/scripts/rpc.py

"$rootdir/scripts/setup.sh" reset
scan_nvme_ctrls

kernel_out[0]=$(nvme list)
kernel_out[1]=$(nvme list -v)
kernel_out[2]=$(nvme list -v -o json)
kernel_out[3]=$(nvme list-subsys)

$rootdir/scripts/setup.sh

$SPDK_BIN_DIR/spdk_tgt &
spdk_tgt_pid=$!

waitforlisten $spdk_tgt_pid

# Keep ctrls in order as cuse will always start registering with id 0 regardless of the ctrl's name
for ctrl in "${ordered_ctrls[@]}"; do
	$rpc_py bdev_nvme_attach_controller -b "$ctrl" -t PCIe -a "${bdfs["$ctrl"]}"
	$rpc_py bdev_nvme_cuse_register -n "$ctrl"

done

$rpc_py bdev_get_bdevs
$rpc_py bdev_nvme_get_controllers

cuse_out[0]=$(nvme spdk list)
cuse_out[1]=$(nvme spdk list -v)
cuse_out[2]=$(nvme spdk list -v -o json)
cuse_out[3]=$(nvme spdk list-subsys)

# plugin does not support json output for the list-subsys
[[ $(nvme spdk list-subsys -v -o json 2>&1) == "Json output format is not supported." ]]

diff -ub \
	<(printf '%s\n' "${kernel_out[@]}") \
	<(printf '%s\n' "${cuse_out[@]}")