b8a51a937e
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>
90 lines
1.7 KiB
Bash
Executable File
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
|