diff --git a/autotest.sh b/autotest.sh index d7b6922df..314e238c8 100755 --- a/autotest.sh +++ b/autotest.sh @@ -176,9 +176,12 @@ if [ $SPDK_RUN_FUNCTIONAL_TEST -eq 1 ]; then if [ $SPDK_TEST_NVME -eq 1 ]; then run_test suite test/nvme/nvme.sh - if [ $SPDK_TEST_NVME_CLI -eq 1 ]; then + if [[ $SPDK_TEST_NVME_CLI -eq 1 ]]; then run_test suite test/nvme/spdk_nvme_cli.sh fi + if [[ $SPDK_TEST_NVME_CUSE -eq 1 ]]; then + run_test suite test/nvme/spdk_nvme_cli_cuse.sh + fi # Only test hotplug without ASAN enabled. Since if it is # enabled, it catches SEGV earlier than our handler which # breaks the hotplug logic. diff --git a/test/common/autotest_common.sh b/test/common/autotest_common.sh index d3338b91e..c28a376cb 100644 --- a/test/common/autotest_common.sh +++ b/test/common/autotest_common.sh @@ -39,6 +39,7 @@ export RUN_NIGHTLY_FAILING : ${SPDK_TEST_ISCSI_INITIATOR=0}; export SPDK_TEST_ISCSI_INITIATOR : ${SPDK_TEST_NVME=0}; export SPDK_TEST_NVME : ${SPDK_TEST_NVME_CLI=0}; export SPDK_TEST_NVME_CLI +: ${SPDK_TEST_NVME_CUSE=0}; export SPDK_TEST_NVME_CUSE : ${SPDK_TEST_NVMF=0}; export SPDK_TEST_NVMF : ${SPDK_TEST_NVMF_TRANSPORT="rdma"}; export SPDK_TEST_NVMF_TRANSPORT : ${SPDK_TEST_RBD=0}; export SPDK_TEST_RBD @@ -162,6 +163,10 @@ if [ -d /usr/include/iscsi ]; then fi fi +if [ $SPDK_TEST_NVME_CUSE -eq 1 ]; then + config_params+=' --with-nvme-cuse' +fi + # for options with both dependencies and a test flag, set them here if [ -f /usr/include/libpmemblk.h ] && [ $SPDK_TEST_PMDK -eq 1 ]; then config_params+=' --with-pmdk' diff --git a/test/nvme/spdk_nvme_cli_cuse.sh b/test/nvme/spdk_nvme_cli_cuse.sh new file mode 100755 index 000000000..f75d5076e --- /dev/null +++ b/test/nvme/spdk_nvme_cli_cuse.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +testdir=$(readlink -f $(dirname $0)) +rootdir=$(readlink -f $testdir/../..) +source $rootdir/scripts/common.sh +source $rootdir/test/common/autotest_common.sh + +timing_enter nvme_cli_cuse + +NVME_CMD=/usr/local/src/nvme-cli/nvme +rpc_py=$rootdir/scripts/rpc.py + +$rootdir/app/spdk_tgt/spdk_tgt -m 0x3 & +spdk_tgt_pid=$! +trap 'kill -9 ${spdk_tgt_pid}; exit 1' SIGINT SIGTERM EXIT + +waitforlisten $spdk_tgt_pid + +bdf=$(iter_pci_class_code 01 08 02 | head -1) + +$rpc_py bdev_nvme_attach_controller -b Nvme0 -t PCIe -a ${bdf} +$rpc_py bdev_nvme_cuse_register -n Nvme0 -p spdk/nvme0 + +sleep 5 + +$rpc_py bdev_get_bdevs +$rpc_py bdev_nvme_get_controllers + +for ns in $(ls /dev/spdk/nvme?n?); do + ${NVME_CMD} get-ns-id $ns + ${NVME_CMD} id-ns $ns + ${NVME_CMD} list-ns $ns +done + +for ctrlr in $(ls /dev/spdk/nvme?); do + ${NVME_CMD} id-ctrl $ctrlr + ${NVME_CMD} list-ctrl $ctrlr + ${NVME_CMD} fw-log $ctrlr + ${NVME_CMD} smart-log $ctrlr + ${NVME_CMD} error-log $ctrlr + ${NVME_CMD} get-feature $ctrlr -f 1 -s 1 -l 100 + ${NVME_CMD} get-log $ctrlr -i 1 -l 100 + ${NVME_CMD} reset $ctrlr +done + +trap - SIGINT SIGTERM EXIT +kill $spdk_tgt_pid + +report_test_completion spdk_nvme_cli_cuse +timing_exit nvme_cli_cuse