1343e2c85SAlexey Marchuk#!/usr/bin/env bash 2eb53c232Spaul luse# SPDX-License-Identifier: BSD-3-Clause 3eb53c232Spaul luse# Copyright (C) 2021 Intel Corporation 4eb53c232Spaul luse# All rights reserved. 5eb53c232Spaul luse# 6343e2c85SAlexey Marchuk 7343e2c85SAlexey Marchuktestdir=$(readlink -f $(dirname $0)) 8343e2c85SAlexey Marchukrootdir=$(readlink -f $testdir/../../..) 9343e2c85SAlexey Marchuksource $rootdir/test/common/autotest_common.sh 10343e2c85SAlexey Marchuksource $rootdir/test/nvmf/common.sh 11343e2c85SAlexey Marchuk 12343e2c85SAlexey Marchuknvmftestinit 13343e2c85SAlexey Marchuknvmfappstart -m 0x3 14343e2c85SAlexey Marchuk 15343e2c85SAlexey Marchuk$rpc_py nvmf_create_transport $NVMF_TRANSPORT_OPTS -u 8192 16343e2c85SAlexey Marchuk$rpc_py nvmf_create_subsystem nqn.2016-06.io.spdk:cnode1 -a -s SPDK00000000000001 -m 10 17343e2c85SAlexey Marchuk$rpc_py nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode1 -t $TEST_TRANSPORT -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT 18343e2c85SAlexey Marchuk$rpc_py bdev_null_create NULL1 1000 512 19343e2c85SAlexey Marchuk# Subsystem destruction process waits for all controllers to be destroyed which in turn wait 20c9c7c281SJosh Soref# for all qpairs to be deleted. A qpair can only be deleted when all outstanding requests are completed 21343e2c85SAlexey Marchuk# bdev_delay is used in this test to make a situation when qpair has outstanding requests when disconnect 22343e2c85SAlexey Marchuk# starts. It allows to trigger async qpair/controller/subsystem destruction path 23343e2c85SAlexey Marchuk$rpc_py bdev_delay_create -b NULL1 -d Delay0 -r 1000000 -t 1000000 -w 1000000 -n 1000000 24343e2c85SAlexey Marchuk$rpc_py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 Delay0 25343e2c85SAlexey Marchuk 26*48ac1225SBen Walker"$SPDK_BIN_DIR/spdk_nvme_perf" -c 0xC -r "trtype:$TEST_TRANSPORT adrfam:IPv4 traddr:$NVMF_FIRST_TARGET_IP trsvcid:$NVMF_PORT" \ 271826245aSSarvesh Lanke -t 5 -q 128 -w randrw -M 70 -o 512 -P 4 "${NO_HUGE[@]}" & 28343e2c85SAlexey Marchukperf_pid=$! 29343e2c85SAlexey Marchuk 30343e2c85SAlexey Marchuksleep 2 31343e2c85SAlexey Marchuk 32343e2c85SAlexey Marchuk$rpc_py nvmf_delete_subsystem nqn.2016-06.io.spdk:cnode1 33343e2c85SAlexey Marchuk 34343e2c85SAlexey Marchukdelay=0 35343e2c85SAlexey Marchukwhile kill -0 $perf_pid; do 36343e2c85SAlexey Marchuk sleep 0.5 37343e2c85SAlexey Marchuk #wait 15 seconds max 38343e2c85SAlexey Marchuk if ((delay++ > 30)); then 39343e2c85SAlexey Marchuk echo "perf is still running, failing the test" 40343e2c85SAlexey Marchuk false 41343e2c85SAlexey Marchuk fi 42343e2c85SAlexey Marchukdone 43343e2c85SAlexey Marchuk 44ce37c9e6SMichal Berger# Verify perf's exit status to make sure we catch a potential crash 45ce37c9e6SMichal BergerNOT wait "$perf_pid" 46ce37c9e6SMichal Berger 47343e2c85SAlexey Marchuk#check that traffic goes when a new subsystem is created 48343e2c85SAlexey Marchuk$rpc_py nvmf_create_subsystem nqn.2016-06.io.spdk:cnode1 -a -s SPDK00000000000001 -m 10 49343e2c85SAlexey Marchuk$rpc_py nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode1 -t $TEST_TRANSPORT -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT 50343e2c85SAlexey Marchuk$rpc_py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 Delay0 51343e2c85SAlexey Marchuk 52*48ac1225SBen Walker$SPDK_BIN_DIR/spdk_nvme_perf -c 0xC -r "trtype:$TEST_TRANSPORT adrfam:IPv4 traddr:$NVMF_FIRST_TARGET_IP trsvcid:$NVMF_PORT" \ 531826245aSSarvesh Lanke -t 3 -q 128 -w randrw -M 70 -o 512 -P 4 "${NO_HUGE[@]}" & 54343e2c85SAlexey Marchukperf_pid=$! 55343e2c85SAlexey Marchuk 56343e2c85SAlexey Marchukdelay=0 57343e2c85SAlexey Marchukwhile kill -0 $perf_pid; do 58343e2c85SAlexey Marchuk sleep 0.5 59343e2c85SAlexey Marchuk #wait 10 seconds max 60343e2c85SAlexey Marchuk if ((delay++ > 20)); then 61343e2c85SAlexey Marchuk echo "perf didn't finish on time" 62343e2c85SAlexey Marchuk false 63343e2c85SAlexey Marchuk fi 64343e2c85SAlexey Marchukdone 65343e2c85SAlexey Marchuk 66ce37c9e6SMichal Berger# Verify perf's exit status to make sure we catch a potential crash 67ce37c9e6SMichal Bergerwait "$perf_pid" 68ce37c9e6SMichal Berger 69343e2c85SAlexey Marchuktrap - SIGINT SIGTERM EXIT 70343e2c85SAlexey Marchuk 71343e2c85SAlexey Marchuknvmftestfini 72