summaryrefslogtreecommitdiff
path: root/test/regression.sh
blob: 066490bdb185195278f1e83aacdb123f8ffc07cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#!/bin/bash
#
# iSCSI Regression Test Utility
# Copyright (C) 2004 Dmitry Yusupov, Alex Aizman
# maintained by open-iscsi@@googlegroups.com
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published
# by the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# See the file COPYING included with this distribution for more details.
#

PATH=$PATH:.

function write_cfg() {
cat << EOF > iscsi.conf
initiator_name = iqn.com.dima
initiator_alias = dima-um
isid = '012345'
first_burst = $first_burst
max_recv_dlength = $max_recv_dlength
max_burst = $max_burst
max_r2t = $max_r2t
max_cnx = $max_cnx
erl = 0
initial_r2t_en = $initial_r2t_en
imm_data_en  = $imm_data_en
hdrdgst_en = 0
datadgst_en = 0
ifmarker_en = 0
ofmarker_en = 0
pdu_inorder_en = 1
dataseq_inorder_en = 1
time2wait = 5
time2retain = 20
EOF
}

function disktest_run() {
	for bs in 512 1024 2048 4096 8192 16384 32768 65536 131072 1000000; do
		echo -n "disktest -T2 -K8 -B$bs -r -ID /dev/sda: "
		if ! disktest -T2 -K8 -B$bs -r -ID /dev/sda >/dev/null; then
			echo "FAILED"
			return 1;
		fi
		echo "PASSED"
		echo -n "disktest -T2 -K8 -B$bs -E16 -w -ID /dev/sda: "
		if ! disktest -T2 -K8 -B$bs -E16 -w -ID /dev/sda >/dev/null;then
			echo "FAILED"
			return 1;
		fi
		echo "PASSED"
	done
	return 0;
}

function fatal() {
	echo "regression.sh: $1"
	exit 1
}

############################ main ###################################

test ! -e regression.dat && fatal "can not find regression.dat"
test ! -e disktest && fatal "can not find disktest"
test ! -e iscsiadm && fatal "can not find iscsiadm"
test x$1 = x && fatal "parameter error
	Usage: regression.sh <ipaddr:port> [test#]"

portal=$1
test x$2 != x && begin=$2

i=0
cat regression.dat | while read line; do
	if test x$begin != x; then
		if test x$begin != x$i; then
			let i=i+1
			continue
		fi
	fi
	imm_data_en=`echo $line | awk '/^[0-9]/ {print $1}'`
	if test x$imm_data_en = x; then continue; fi
	initial_r2t_en=`echo $line | awk '/^[0-9]/ {print $2}'`
	first_burst=`echo $line | awk '/^[0-9]/ {print $3}'`
	max_burst=`echo $line | awk '/^[0-9]/ {print $4}'`
	max_recv_dlength=`echo $line | awk '/^[0-9]/ {print $5}'`
	max_r2t=`echo $line | awk '/^[0-9]/ {print $6}'`
	max_cnx=`echo $line | awk '/^[0-9]/ {print $7}'`
	write_cfg
	echo "================== TEST #$i BEGIN ===================="
	echo "imm_data_en = $imm_data_en"
	echo "initial_r2t_en = $initial_r2t_en"
	echo "first_burst = $first_burst"
	echo "max_burst = $max_burst"
	echo "max_recv_dlength = $max_recv_dlength"
	echo "max_r2t = $max_r2t"
	echo "max_cnx = $max_cnx"
	iscsiadm -f iscsi.conf -r1
	iscsiadm -f iscsi.conf -d $portal
	if ! disktest_run; then break; fi
	let i=i+1
done
echo
echo "===================== THE END ========================"