xref: /spdk/test/nvmf/target/delete_subsystem.sh (revision 48ac1225ce0417608097b8f4cab4188ae3d7c2f4)
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