test/nvmf: add asynchronous NVMe initialization test
The test verifies that the NVMe driver initialization is asynchronous. There are some error logs during shutdown, as the detach path isn't asynchronous yet, but as long as the detach is performed implicitly, the test completes successfully. Signed-off-by: Jim Harris <james.r.harris@intel.com> Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I97483d8a8ba2487e279f7674514ad2cc2c54d504 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8625 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
This commit is contained in:
parent
b3ddd46e0d
commit
51b018da0f
44
test/nvmf/host/async_init.sh
Executable file
44
test/nvmf/host/async_init.sh
Executable file
@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
testdir=$(readlink -f $(dirname $0))
|
||||
rootdir=$(readlink -f $testdir/../../..)
|
||||
rpc_py=$rootdir/scripts/rpc.py
|
||||
|
||||
source $rootdir/test/common/autotest_common.sh
|
||||
source $rootdir/test/nvmf/common.sh
|
||||
|
||||
null_bdev_size=1024
|
||||
null_block_size=512
|
||||
null_bdev=null0
|
||||
nvme_bdev=nvme0
|
||||
|
||||
if [ "$TEST_TRANSPORT" != "tcp" ]; then
|
||||
echo "This test can only be executed with TCP for now"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
nvmftestinit
|
||||
nvmfappstart -m 0x1
|
||||
|
||||
# First create a null bdev and expose it over NVMeoF
|
||||
$rpc_py nvmf_create_transport $NVMF_TRANSPORT_OPTS
|
||||
$rpc_py bdev_null_create $null_bdev $null_bdev_size $null_block_size
|
||||
$rpc_py bdev_wait_for_examine
|
||||
$rpc_py nvmf_create_subsystem nqn.2016-06.io.spdk:cnode0 -a
|
||||
$rpc_py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode0 $null_bdev
|
||||
$rpc_py nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode0 -t $TEST_TRANSPORT \
|
||||
-a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT
|
||||
|
||||
# Then attach NVMe bdev by connecting back to itself, with the target app running on a single core.
|
||||
# This verifies that the initialization is completely asynchronous, as each blocking call would
|
||||
# stall the application.
|
||||
$rpc_py bdev_nvme_attach_controller -b $nvme_bdev -t $TEST_TRANSPORT -a $NVMF_FIRST_TARGET_IP \
|
||||
-f ipv4 -s $NVMF_PORT -n nqn.2016-06.io.spdk:cnode0
|
||||
|
||||
# Make sure the reset is also asynchronous
|
||||
$rpc_py bdev_nvme_reset_controller $nvme_bdev
|
||||
|
||||
# TODO: Once the async detach path is functional, send a bdev_nvme_detach_controller here
|
||||
|
||||
trap - SIGINT SIGTERM EXIT
|
||||
nvmftestfini
|
@ -68,6 +68,7 @@ run_test "nvmf_multicontroller" test/nvmf/host/multicontroller.sh "${TEST_ARGS[@
|
||||
#run_test test/nvmf/host/identify_kernel_nvmf.sh $TEST_ARGS
|
||||
run_test "nvmf_aer" test/nvmf/host/aer.sh "${TEST_ARGS[@]}"
|
||||
run_test "nvmf_fio" test/nvmf/host/fio.sh "${TEST_ARGS[@]}"
|
||||
run_test "nvmf_async_init" test/nvmf/host/async_init.sh "${TEST_ARGS[@]}"
|
||||
|
||||
# There is an intermittent error relating to those tests and Soft-RoCE.
|
||||
# Skip those tests if we are using rxe.
|
||||
|
Loading…
Reference in New Issue
Block a user