numam-spdk/test/nvme/hw_hotplug.sh
Tomasz Zawadzki b8a51a937e test/common: move all LIB paths to autotest_common.sh
The common file is sourced in all test scripts, so it
is ideal place to put all library paths.

It will make changes to those paths simpler in next patch.

Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: Ic37148e6be669f296e8561d6554e735132941413
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6685
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
2022-01-26 08:19:06 +00:00

90 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
testdir=$(readlink -f $(dirname $0))
rootdir=$(readlink -f $testdir/../..)
source $rootdir/test/common/autotest_common.sh
function insert_device() {
ssh root@$ip 'Beetle --SetGpio "$gpio" HIGH'
waitforblk $name
DRIVER_OVERRIDE=$driver $rootdir/scripts/setup.sh
}
function remove_device() {
ssh root@$ip 'Beetle --SetGpio "$gpio" LOW'
}
ip=$1
gpio=$2
driver=$3
declare -i io_time=5
declare -i kernel_hotplug_time=7
timing_enter hotplug_hw_cfg
# Configure microcontroller
ssh root@$ip 'Beetle --SetGpioDirection "$gpio" OUT'
# Get blk dev name connected to interposer
ssh root@$ip 'Beetle --SetGpio "$gpio" HIGH'
sleep $kernel_hotplug_time
$rootdir/scripts/setup.sh reset
blk_list1=$(lsblk -d --output NAME | grep "^nvme")
remove_device
sleep $kernel_hotplug_time
blk_list2=$(lsblk -d --output NAME | grep "^nvme") || true
name=${blk_list1#"$blk_list2"}
insert_device
timing_exit hotplug_hw_cfg
timing_enter hotplug_hw_test
mode=""
if [ "$driver" = "uio_pci_generic" ]; then
mode="-m pa"
fi
exec {log}> >(tee -a "$testdir/log.txt")
exec >&$log 2>&1
$SPDK_EXAMPLE_DIR/hotplug -i 0 -t 100 -n 2 -r 2 $mode &
hotplug_pid=$!
trap 'killprocess $hotplug_pid; exit 1' SIGINT SIGTERM EXIT
i=0
while ! grep "Starting I/O" $testdir/log.txt; do
[ $i -lt 20 ] || break
i=$((i + 1))
sleep 1
done
if ! grep "Starting I/O" $testdir/log.txt; then
return 1
fi
# Add and remove NVMe with delays between to give some time for IO to proceed
remove_device
sleep $io_time
insert_device
sleep $io_time
remove_device
sleep $io_time
insert_device
sleep $io_time
timing_enter wait_for_example
if ! wait $hotplug_pid; then
echo "Hotplug example returned error!"
return 1
fi
timing_exit wait_for_example
trap - SIGINT SIGTERM EXIT
timing_exit hotplug_hw_test