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

Bart Van Assche
2019-12-13T20:37:51Z

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 --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