diff mbox series

[v2,4/4] tests/srp/015: Add a test that uses the SoftiWARP (siw) driver

Message ID 20191213143232.29899-5-bvanassche@acm.org (mailing list archive)
State New, archived
Headers show
Series Add an SRP test for the SoftiWARP driver | expand

Commit Message

Bart Van Assche Dec. 13, 2019, 2:32 p.m. UTC
Recently support has been added in the SRP initiator and target drivers
for the SoftiWARP driver. Add a test for SRP over SoftiWARP.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
 common/rc         | 28 ++++++++++++++++++++++++++++
 tests/srp/015     | 45 +++++++++++++++++++++++++++++++++++++++++++++
 tests/srp/015.out |  2 ++
 3 files changed, 75 insertions(+)
 create mode 100755 tests/srp/015
 create mode 100644 tests/srp/015.out
diff mbox series

Patch

diff --git a/common/rc b/common/rc
index 87b1e0718382..63b29be7ba74 100644
--- a/common/rc
+++ b/common/rc
@@ -87,6 +87,21 @@  _have_program() {
 	return 1
 }
 
+# Check whether the iproute2 snapshot is greater than or equal to $1.
+_have_iproute2() {
+	local snapshot
+
+	if ! snapshot=$(ip -V | sed 's/ip utility, iproute2-ss//'); then
+		SKIP_REASON="ip utility not found"
+		return 1
+	fi
+	if [ "$snapshot" -lt "$1" ]; then
+		SKIP_REASON="ip utility too old"
+		return 1
+	fi
+	return 0
+}
+
 _have_src_program() {
 	if [[ ! -x "$SRCDIR/$1" ]]; then
 		SKIP_REASON="$1 was not built; run \`make\`"
@@ -134,6 +149,19 @@  _have_kernel_option() {
 	return 1
 }
 
+# Check whether the version of the running kernel is greater than or equal to
+# $1.$2.$3
+_have_kver() {
+	local d=$1 e=$2 f=$3
+
+	IFS='.' read -r a b c < <(uname -r | sed 's/-.*//')
+	if [ $((a * 65536 + b * 256 + c)) -lt $((d * 65536 + e * 256 + f)) ];
+	then
+		SKIP_REASON="Kernel version too old"
+		return 1
+	fi
+}
+
 _have_tracefs() {
 	stat /sys/kernel/debug/tracing/trace > /dev/null 2>&1
 	if ! findmnt -t tracefs /sys/kernel/debug/tracing >/dev/null; then
diff --git a/tests/srp/015 b/tests/srp/015
new file mode 100755
index 000000000000..e9769dc8a6a0
--- /dev/null
+++ b/tests/srp/015
@@ -0,0 +1,45 @@ 
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0+
+# Copyright 2019 Google LLC
+
+. tests/srp/rc
+
+DESCRIPTION="File I/O on top of multipath concurrently with logout and login (mq) using the SoftiWARP (siw) driver"
+TIMED=1
+
+requires() {
+	_have_modules siw
+	_have_kver 5 5
+	# See also commit 4336c5821a7b ("rdma: add 'link add/delete' commands").
+	_have_iproute2 190404
+}
+
+test_disconnect_repeatedly() {
+	local dev fio_status m
+
+	use_blk_mq y y || return $?
+	dev=$(get_bdev 0) || return $?
+	m=$(mountpoint 0) || return $?
+	create_filesystem "$dev" || return $?
+	mount_and_check "$dev" "$m" || return $?
+	# shellcheck disable=SC2064
+	trap "unmount_and_check $m" RETURN
+	simulate_network_failure_loop "$dev" "$TIMEOUT" &
+	run_fio --verify=md5 --rw=randwrite --bs=4K --loops=$((10**6)) \
+		--iodepth=64 --group_reporting --sync=1 --direct=1 \
+		--ioengine=libaio --directory="$m" --runtime="${TIMEOUT}" \
+		--name=data-integrity-test-mq --thread --numjobs=16 \
+		--output="${RESULTS_DIR}/srp/fio-output-015.txt" \
+		>>"$FULL"
+	fio_status=$?
+	wait
+	log_in
+	return $fio_status
+}
+
+test() {
+	: "${TIMEOUT:=30}"
+	trap 'trap "" EXIT; teardown' EXIT
+	use_siw=1
+	setup && test_disconnect_repeatedly && echo Passed
+}
diff --git a/tests/srp/015.out b/tests/srp/015.out
new file mode 100644
index 000000000000..5e25d8e8672d
--- /dev/null
+++ b/tests/srp/015.out
@@ -0,0 +1,2 @@ 
+Configured SRP target driver
+Passed