lib/nvmf: Functional test for custom admin cmd handler
This test verifies the custom identify handler functionality by querying the NVMe drive and comparing serial and model number from the NVMe drive with the corresponding info from the NVMF identify result. Signed-off-by: Michael Haeuptle <michael.haeuptle@hpe.com> Change-Id: I9d4edb1bf32550cbf5fbd45cbfa85f9afc408fc0 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/481910 Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Community-CI: SPDK CI Jenkins <sys_sgci@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
c9874b91a7
commit
bf4db834b9
@ -221,6 +221,7 @@ if [ $SPDK_RUN_FUNCTIONAL_TEST -eq 1 ]; then
|
||||
elif [ "$SPDK_TEST_NVMF_TRANSPORT" = "tcp" ]; then
|
||||
run_test "nvmf_tcp" ./test/nvmf/nvmf.sh --transport=$SPDK_TEST_NVMF_TRANSPORT
|
||||
run_test "spdkcli_nvmf_tcp" ./test/spdkcli/nvmf.sh
|
||||
run_test "nvmf_identify_passthru" test/nvmf/target/identify_passthru.sh --transport=$SPDK_TEST_NVMF_TRANSPORT
|
||||
elif [ "$SPDK_TEST_NVMF_TRANSPORT" = "fc" ]; then
|
||||
run_test "nvmf_fc" ./test/nvmf/nvmf.sh --transport=$SPDK_TEST_NVMF_TRANSPORT
|
||||
run_test "spdkcli_nvmf_fc" ./test/spdkcli/nvmf.sh
|
||||
|
76
test/nvmf/target/identify_passthru.sh
Executable file
76
test/nvmf/target/identify_passthru.sh
Executable file
@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
testdir=$(readlink -f $(dirname $0))
|
||||
rootdir=$(readlink -f $testdir/../../..)
|
||||
source $rootdir/test/common/autotest_common.sh
|
||||
source $rootdir/test/nvmf/common.sh
|
||||
source $rootdir/scripts/common.sh
|
||||
|
||||
rpc_py="$rootdir/scripts/rpc.py"
|
||||
|
||||
nvmftestinit
|
||||
|
||||
timing_enter nvme_identify
|
||||
|
||||
bdf=$(iter_pci_class_code 01 08 02 | head -1)
|
||||
if [ -z "${bdf}" ] ; then
|
||||
echo "No NVMe drive found but test requires it. Failing the test."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Expected values
|
||||
nvme_serial_number=$($rootdir/examples/nvme/identify/identify -r "trtype:PCIe traddr:${bdf}" -i 0 | grep "Serial Number:" | awk '{print $3}')
|
||||
nvme_model_number=$($rootdir/examples/nvme/identify/identify -r "trtype:PCIe traddr:${bdf}" -i 0 | grep "Model Number:" | awk '{print $3}')
|
||||
|
||||
timing_exit nvme_identify
|
||||
|
||||
timing_enter start_nvmf_tgt
|
||||
|
||||
$NVMF_APP -m 0xF --wait-for-rpc &
|
||||
nvmfpid=$!
|
||||
|
||||
trap 'process_shm --id $NVMF_APP_SHM_ID; nvmftestfini; exit 1' SIGINT SIGTERM EXIT
|
||||
|
||||
waitforlisten $nvmfpid
|
||||
$rpc_py -v nvmf_set_config --passthru-identify-ctrlr
|
||||
$rpc_py -v framework_start_init
|
||||
$rpc_py nvmf_create_transport $NVMF_TRANSPORT_OPTS -u 8192
|
||||
timing_exit start_nvmf_tgt
|
||||
|
||||
$rpc_py bdev_nvme_attach_controller -b Nvme0 -t PCIe -a ${bdf}
|
||||
$rpc_py nvmf_create_subsystem nqn.2016-06.io.spdk:cnode1 -a -s SPDK00000000000001
|
||||
$rpc_py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 Nvme0n1
|
||||
$rpc_py nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode1 -t $TEST_TRANSPORT -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT
|
||||
|
||||
$rpc_py nvmf_get_subsystems
|
||||
|
||||
# Discovered values
|
||||
nvmf_serial_number=$($rootdir/examples/nvme/identify/identify -r "\
|
||||
trtype:$TEST_TRANSPORT \
|
||||
adrfam:IPv4 \
|
||||
traddr:$NVMF_FIRST_TARGET_IP \
|
||||
trsvcid:$NVMF_PORT \
|
||||
subnqn:nqn.2016-06.io.spdk:cnode1" | grep "Serial Number:" | awk '{print $3}')
|
||||
|
||||
nvmf_model_number=$($rootdir/examples/nvme/identify/identify -r "\
|
||||
trtype:$TEST_TRANSPORT \
|
||||
adrfam:IPv4 \
|
||||
traddr:$NVMF_FIRST_TARGET_IP \
|
||||
trsvcid:$NVMF_PORT \
|
||||
subnqn:nqn.2016-06.io.spdk:cnode1" | grep "Model Number:" | awk '{print $3}')
|
||||
|
||||
if [ ${nvme_serial_number} != ${nvmf_serial_number} ] ; then
|
||||
echo "Serial number doesn't match"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ${nvme_model_number} != ${nvmf_model_number} ] ; then
|
||||
echo "Model number doesn't match"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
$rpc_py nvmf_delete_subsystem nqn.2016-06.io.spdk:cnode1
|
||||
|
||||
trap - SIGINT SIGTERM EXIT
|
||||
|
||||
nvmftestfini
|
Loading…
Reference in New Issue
Block a user