Spdk/test/nvmf/nvmf.sh
Jim Harris 74cd76db68 test/nvme, test/nvmf: add fused_ordering test
This test reproduced issue #2428. It does the following:

1) submit some large writes (requiring R2T or RDMA READ)
2) submit fused compare (first fused)
3) variable number of qpair polls
4) submit fused write (second fused)

The RDMA and TCP transports were not accounting for the
fused bits, and would send a non-fused command down to
the target layer between the two fused commands.

By adding the variable amount of delay between the fused
command submissions, it creates a window where a large
write's payload is fetched from the host and submitted
to the target between submission of the two fused commands.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: I1abd5a6bca08386279c09f8135387826149d30ef
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11963
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
2022-04-05 08:32:06 +00:00

91 lines
4.2 KiB
Bash
Executable File

#!/usr/bin/env bash
testdir=$(readlink -f $(dirname $0))
rootdir=$(readlink -f $testdir/../..)
source $rootdir/test/common/autotest_common.sh
if [ ! $(uname -s) = Linux ]; then
exit 0
fi
source $rootdir/test/nvmf/common.sh
trap "exit 1" SIGINT SIGTERM EXIT
TEST_ARGS=("$@")
if [[ $SPDK_TEST_URING -eq 0 ]]; then
run_test "nvmf_example" test/nvmf/target/nvmf_example.sh "${TEST_ARGS[@]}"
run_test "nvmf_filesystem" test/nvmf/target/filesystem.sh "${TEST_ARGS[@]}"
run_test "nvmf_discovery" test/nvmf/target/discovery.sh "${TEST_ARGS[@]}"
run_test "nvmf_connect_disconnect" test/nvmf/target/connect_disconnect.sh "${TEST_ARGS[@]}"
run_test "nvmf_create_transport" test/nvmf/target/create_transport.sh "${TEST_ARGS[@]}"
run_test "nvmf_multitarget" test/nvmf/target/multitarget.sh "${TEST_ARGS[@]}"
run_test "nvmf_rpc" test/nvmf/target/rpc.sh "${TEST_ARGS[@]}"
run_test "nvmf_invalid" test/nvmf/target/invalid.sh "${TEST_ARGS[@]}"
run_test "nvmf_abort" test/nvmf/target/abort.sh "${TEST_ARGS[@]}"
run_test "nvmf_ns_hotplug_stress" test/nvmf/target/ns_hotplug_stress.sh "${TEST_ARGS[@]}"
run_test "nvmf_connect_stress" test/nvmf/target/connect_stress.sh "${TEST_ARGS[@]}"
run_test "nvmf_fused_ordering" test/nvmf/target/fused_ordering.sh "${TEST_ARGS[@]}"
run_test "nvmf_delete_subsystem" test/nvmf/target/delete_subsystem.sh "${TEST_ARGS[@]}"
run_test "nvmf_multicontroller" test/nvmf/host/multicontroller.sh "${TEST_ARGS[@]}"
run_test "nvmf_aer" test/nvmf/host/aer.sh "${TEST_ARGS[@]}"
run_test "nvmf_async_init" test/nvmf/host/async_init.sh "${TEST_ARGS[@]}"
run_test "dma" test/nvmf/host/dma.sh "${TEST_ARGS[@]}"
if [[ $SPDK_TEST_NVME_CLI -eq 1 ]]; then
run_test "nvmf_nvme_cli" test/nvmf/target/nvme_cli.sh "${TEST_ARGS[@]}"
fi
if [[ $SPDK_TEST_VFIOUSER -eq 1 ]]; then
run_test "nvmf_vfio_user" test/nvmf/target/nvmf_vfio_user.sh "${TEST_ARGS[@]}"
run_test "nvmf_vfio_user_nvme_compliance" test/nvme/compliance/compliance.sh "${TEST_ARGS[@]}"
run_test "nvmf_vfio_user_fuzz" test/nvmf/target/vfio_user_fuzz.sh "${TEST_ARGS[@]}"
fi
fi
run_test "nvmf_host_management" test/nvmf/target/host_management.sh "${TEST_ARGS[@]}"
run_test "nvmf_lvol" test/nvmf/target/nvmf_lvol.sh "${TEST_ARGS[@]}"
run_test "nvmf_vhost" test/nvmf/target/nvmf_vhost.sh "${TEST_ARGS[@]}"
run_test "nvmf_bdev_io_wait" test/nvmf/target/bdev_io_wait.sh "${TEST_ARGS[@]}"
if [ $RUN_NIGHTLY -eq 1 ]; then
run_test "nvmf_fuzz" test/nvmf/target/fabrics_fuzz.sh "${TEST_ARGS[@]}"
run_test "nvmf_multiconnection" test/nvmf/target/multiconnection.sh "${TEST_ARGS[@]}"
run_test "nvmf_initiator_timeout" test/nvmf/target/initiator_timeout.sh "${TEST_ARGS[@]}"
if [ $SPDK_TEST_FUZZER -eq 1 ]; then
run_test "nvmf_llvm_fuzz" test/nvmf/target/llvm_nvme_fuzz.sh "${TEST_ARGS[@]}" "--time=60000" "--all"
fi
fi
run_test "nvmf_nmic" test/nvmf/target/nmic.sh "${TEST_ARGS[@]}"
run_test "nvmf_fio_target" test/nvmf/target/fio.sh "${TEST_ARGS[@]}"
run_test "nvmf_bdevio" test/nvmf/target/bdevio.sh "${TEST_ARGS[@]}"
if [[ $NET_TYPE == phy ]]; then
run_test "nvmf_shutdown" test/nvmf/target/shutdown.sh "${TEST_ARGS[@]}"
#TODO: disabled due to intermittent failures. Need to triage.
# run_test "nvmf_srq_overwhelm" test/nvmf/target/srq_overwhelm.sh $TEST_ARGS
fi
run_test "nvmf_queue_depth" test/nvmf/target/queue_depth.sh "${TEST_ARGS[@]}"
run_test "nvmf_multipath" test/nvmf/target/multipath.sh "${TEST_ARGS[@]}"
run_test "nvmf_zcopy" test/nvmf/target/zcopy.sh "${TEST_ARGS[@]}"
timing_enter host
run_test "nvmf_identify" test/nvmf/host/identify.sh "${TEST_ARGS[@]}"
run_test "nvmf_perf" test/nvmf/host/perf.sh "${TEST_ARGS[@]}"
run_test "nvmf_failover" test/nvmf/host/failover.sh "${TEST_ARGS[@]}"
run_test "nvmf_discovery" test/nvmf/host/discovery.sh "${TEST_ARGS[@]}"
# TODO: disabled due to intermittent failures (RDMA_CM_EVENT_UNREACHABLE/ETIMEDOUT)
#run_test test/nvmf/host/identify_kernel_nvmf.sh $TEST_ARGS
run_test "nvmf_fio_host" test/nvmf/host/fio.sh "${TEST_ARGS[@]}"
if [[ $NET_TYPE == phy ]]; then
# GitHub issue #1165
run_test "nvmf_bdevperf" test/nvmf/host/bdevperf.sh "${TEST_ARGS[@]}"
# GitHub issue #1043
run_test "nvmf_target_disconnect" test/nvmf/host/target_disconnect.sh "${TEST_ARGS[@]}"
fi
timing_exit host
trap - SIGINT SIGTERM EXIT