test/nvmf: shorten shutdown test
Currently it blindly waits 5 seconds to make sure bdevperf has started I/O - and it does this for two different tests. Improve that by using the get_bdevs_iostat RPC to check when I/O start occurring. Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: If7bc773ab65d23f69524d3a42123be090f3b4eac Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/452753 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Seth Howell <seth.howell5141@gmail.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
This commit is contained in:
parent
36d1cf3ad8
commit
e259d2bb61
@ -23,6 +23,30 @@ if [ -z $NVMF_FIRST_TARGET_IP ]; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
function waitforio() {
|
||||||
|
# $1 = RPC socket
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# $2 = bdev name
|
||||||
|
if [ -z "$2" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
local ret=1
|
||||||
|
local i
|
||||||
|
for (( i = 10; i != 0; i-- )); do
|
||||||
|
read_io_count=$($rpc_py -s $1 get_bdevs_iostat -b $2 | jq -r '.[1].num_read_ops')
|
||||||
|
# A few I/O will happen during initial examine. So wait until at least 100 I/O
|
||||||
|
# have completed to know that bdevperf is really generating the I/O.
|
||||||
|
if [ $read_io_count -ge 100 ]; then
|
||||||
|
ret=0
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 0.25
|
||||||
|
done
|
||||||
|
return $ret
|
||||||
|
}
|
||||||
|
|
||||||
timing_enter shutdown
|
timing_enter shutdown
|
||||||
timing_enter start_nvmf_tgt
|
timing_enter start_nvmf_tgt
|
||||||
# Start up the NVMf target in another process
|
# Start up the NVMf target in another process
|
||||||
@ -91,8 +115,7 @@ perfpid=$!
|
|||||||
waitforlisten $perfpid /var/tmp/bdevperf.sock
|
waitforlisten $perfpid /var/tmp/bdevperf.sock
|
||||||
$rpc_py -s /var/tmp/bdevperf.sock wait_subsystem_init
|
$rpc_py -s /var/tmp/bdevperf.sock wait_subsystem_init
|
||||||
|
|
||||||
# Sleep for a few seconds to allow I/O to begin
|
waitforio /var/tmp/bdevperf.sock Nvme1n1
|
||||||
sleep 5
|
|
||||||
|
|
||||||
# Kill bdevperf half way through
|
# Kill bdevperf half way through
|
||||||
killprocess $perfpid
|
killprocess $perfpid
|
||||||
@ -114,8 +137,7 @@ $rpc_py -s /var/tmp/bdevperf.sock wait_subsystem_init
|
|||||||
# Expand the trap to clean up bdevperf if something goes wrong
|
# Expand the trap to clean up bdevperf if something goes wrong
|
||||||
trap "process_shm --id $NVMF_APP_SHM_ID; killprocess $pid; kill -9 $perfpid; nvmfcleanup; nvmftestfini $1; exit 1" SIGINT SIGTERM EXIT
|
trap "process_shm --id $NVMF_APP_SHM_ID; killprocess $pid; kill -9 $perfpid; nvmfcleanup; nvmftestfini $1; exit 1" SIGINT SIGTERM EXIT
|
||||||
|
|
||||||
# Sleep for a few seconds to allow I/O to begin
|
waitforio /var/tmp/bdevperf.sock Nvme1n1
|
||||||
sleep 5
|
|
||||||
|
|
||||||
# Kill the target half way through
|
# Kill the target half way through
|
||||||
killprocess $pid
|
killprocess $pid
|
||||||
|
Loading…
Reference in New Issue
Block a user