Commit a44c7434 authored by Tomasz Kulasek's avatar Tomasz Kulasek Committed by Ben Walker
Browse files

test/iscsi_tgt: make sure iscsi devices are ready



We have no guaranty that iscsiadm -m session shows all required iscsi
devices at some point of time after login. It may cause that not all
devices are used in further tests (e.g. in fio).

This patch allows to wait for a certain number of sessions after login.

Change-Id: I868cb8f1235dd04d88572bc8518e97de99a2c5e6
Signed-off-by: default avatarTomasz Kulasek <tomaszx.kulasek@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/458236


Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 0972838f
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -671,13 +671,13 @@ function waitforblk_disconnect()
function waitforfile()
{
	local i=0
	while [ ! -f $1 ]; do
	while [ ! -e $1 ]; do
		[ $i -lt 200 ] || break
		i=$[$i+1]
		sleep 0.1
	done

	if [ ! -f $1 ]; then
	if [ ! -e $1 ]; then
		return 1
	fi

+15 −0
Original line number Diff line number Diff line
@@ -64,6 +64,21 @@ function iscsitestinit() {
	fi
}

function waitforiscsidevices() {
	local num=$1

	for ((i=1; i<=20; i++)); do
		n=$( iscsiadm -m session -P 3 | grep "Attached scsi disk sd[a-z]*" | wc -l )
		if [ $n -ne $num ]; then
			sleep 0.1
		else
			return 0
		fi
	done

	return 1
}

function iscsitestfini() {
	if [ "$1" == "iso" ]; then
		if [ ! -z "$2" ]; then
+2 −1
Original line number Diff line number Diff line
@@ -14,10 +14,11 @@ function node_login_fio_logout() {
		iscsiadm -m node -p $TARGET_IP:$ISCSI_PORT -o update -n node.conn[0].iscsi.$arg
	done
	iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
	waitforiscsidevices 1
	$fio_py -p iscsi -i 512 -d 1 -t write -r 2
	$fio_py -p iscsi -i 512 -d 1 -t read -r 2
	iscsiadm -m node --logout -p $TARGET_IP:$ISCSI_PORT
	sleep 1
	waitforiscsidevices 0
}

function iscsi_header_digest_test() {
+2 −2
Original line number Diff line number Diff line
@@ -42,12 +42,11 @@ sleep 1

iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
waitforiscsidevices 1

trap 'for new_dir in $(dir -d /mnt/*dir); do umount $new_dir; rm -rf $new_dir; done; \
	iscsicleanup; killprocess $pid; iscsitestfini $1 $2; exit 1' SIGINT SIGTERM EXIT

sleep 1

echo "Test error injection"
$rpc_py bdev_inject_error EE_Malloc0 'all' 'failure' -n 1000

@@ -77,6 +76,7 @@ fi

iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
waitforiscsidevices 1

devs=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}')

+12 −6
Original line number Diff line number Diff line
@@ -64,15 +64,15 @@ sleep 1

iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
waitforiscsidevices 1

trap "remove_backends; umount /mnt/device; rm -rf /mnt/device; iscsicleanup; killprocess $pid; iscsitestfini $1 $2; exit 1" SIGINT SIGTERM EXIT

sleep 1

mkdir -p /mnt/device

dev=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}')

waitforfile /dev/$dev
parted -s /dev/$dev mklabel msdos
parted -s /dev/$dev mkpart primary '0%' '100%'
sleep 1
@@ -91,10 +91,13 @@ for fstype in "ext4" "btrfs" "xfs"; do
		umount /mnt/device

		iscsiadm -m node --logout
		sleep 1
		waitforiscsidevices 0
		iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
		sleep 1
		waitforiscsidevices 1

		dev=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}')

		waitforfile /dev/${dev}1
		mount -o rw /dev/${dev}1 /mnt/device
		if [ -f "/mnt/device/test" ]; then
			echo "File existed."
@@ -112,10 +115,13 @@ for fstype in "ext4" "btrfs" "xfs"; do
		umount /mnt/device

		iscsiadm -m node --logout
		sleep 1
		waitforiscsidevices 0
		iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
		sleep 1
		waitforiscsidevices 1

		dev=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}')

		waitforfile /dev/${dev}1
		mount -o rw /dev/${dev}1 /mnt/device

		if [ -f "/mnt/device/aaa" ]; then
Loading