From 1c442639dfe3e31b20777a676ac9168249b12ed6 Mon Sep 17 00:00:00 2001 From: Cunyin Chang Date: Sun, 30 Jul 2017 21:27:02 +0800 Subject: [PATCH] autotest: Add hotplug test case for iscsi tgt. Change-Id: I421a718d363395200311fd658f874deb27cd31bc Signed-off-by: Cunyin Chang Reviewed-on: https://review.gerrithub.io/371814 Tested-by: SPDK Automated Test System Reviewed-by: Ben Walker Reviewed-by: Jim Harris --- test/iscsi_tgt/fio/fio.sh | 52 ++++++++++++++++++++++++++++++-- test/iscsi_tgt/fio/iscsi.conf.in | 7 +++++ test/iscsi_tgt/iscsi_tgt.sh | 3 +- 3 files changed, 58 insertions(+), 4 deletions(-) diff --git a/test/iscsi_tgt/fio/fio.sh b/test/iscsi_tgt/fio/fio.sh index 19ea4f240..9162e4ba5 100755 --- a/test/iscsi_tgt/fio/fio.sh +++ b/test/iscsi_tgt/fio/fio.sh @@ -5,6 +5,17 @@ rootdir=$(readlink -f $testdir/../../..) source $rootdir/scripts/autotest_common.sh source $rootdir/test/iscsi_tgt/common.sh +function linux_iter_pci { + # Argument is the class code + # TODO: More specifically match against only class codes in the grep + # step. + lspci -mm -n -D | grep $1 | tr -d '"' | awk -F " " '{print $1}' +} + +function linux_remove_nvme_devices() { + echo 1 > "/sys/bus/pci/devices/$bdf/remove" +} + function running_config() { # generate a config file from the running iscsi_tgt # running_config.sh will leave the file at /tmp/iscsi.conf @@ -99,11 +110,48 @@ if [ $RUN_NIGHTLY -eq 1 ]; then running_config fi +iscsicleanup +$rpc_py delete_target_node 'iqn.2016-06.io.spdk:Target3' + + +if [ -z "$NO_NVME" ]; then +$rpc_py construct_target_node Target3 Target3_alias HotInNvme0n1:0 1:2 64 1 0 0 0 +iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$PORT +iscsiadm -m node --login -p $TARGET_IP:$PORT +sleep 1 +$fio_py 1048576 128 read 10 & +fio_pid=$! + +sleep 3 + +set +e + +for bdf in $(linux_iter_pci 0108); do + linux_remove_nvme_devices "$bdf" +done + +wait $fio_pid +fio_status=$? + +if [ $fio_status -eq 0 ]; then + echo "fio successful - expected failure" + iscsicleanup + rm -f $testdir/iscsi.conf + killprocess $pid + exit 1 +else + echo "fio failed as expected" +fi +fi + +set -e + rm -f ./local-job0-0-verify.state - trap - SIGINT SIGTERM EXIT - iscsicleanup rm -f $testdir/iscsi.conf killprocess $pid +echo 1 > /sys/bus/pci/rescan +$rootdir/scripts/setup.sh + timing_exit fio diff --git a/test/iscsi_tgt/fio/iscsi.conf.in b/test/iscsi_tgt/fio/iscsi.conf.in index fde6fbf6c..25b1aad11 100644 --- a/test/iscsi_tgt/fio/iscsi.conf.in +++ b/test/iscsi_tgt/fio/iscsi.conf.in @@ -11,3 +11,10 @@ [Rpc] Enable Yes + +[Nvme] + RetryCount 4 + Timeout 0 + ActionOnTimeout None + AdminPollRate 100000 + HotplugEnable Yes diff --git a/test/iscsi_tgt/iscsi_tgt.sh b/test/iscsi_tgt/iscsi_tgt.sh index cc3baa2e0..6ea0a965b 100755 --- a/test/iscsi_tgt/iscsi_tgt.sh +++ b/test/iscsi_tgt/iscsi_tgt.sh @@ -28,7 +28,6 @@ export ISCSI_APP="./app/iscsi_tgt/iscsi_tgt -i 0" run_test ./test/iscsi_tgt/calsoft/calsoft.sh run_test ./test/iscsi_tgt/filesystem/filesystem.sh -run_test ./test/iscsi_tgt/fio/fio.sh run_test ./test/iscsi_tgt/reset/reset.sh run_test ./test/iscsi_tgt/rpc_config/rpc_config.sh run_test ./test/iscsi_tgt/idle_migration/idle_migration.sh @@ -49,5 +48,5 @@ kill_stub run_test ./test/iscsi_tgt/nvme_remote/fio_remote_nvme.sh 0 #Test configure remote NVMe device from conf file run_test ./test/iscsi_tgt/nvme_remote/fio_remote_nvme.sh 1 - +run_test ./test/iscsi_tgt/fio/fio.sh timing_exit iscsi_tgt