1009ea47eSEdward Tomasz Napierala#!/bin/sh
2009ea47eSEdward Tomasz Napierala#
3009ea47eSEdward Tomasz Napierala# Copyright (c) 2012 The FreeBSD Foundation
4009ea47eSEdward Tomasz Napierala#
5009ea47eSEdward Tomasz Napierala# This software was developed by Edward Tomasz Napierala under sponsorship
6009ea47eSEdward Tomasz Napierala# from the FreeBSD Foundation.
7009ea47eSEdward Tomasz Napierala#
8009ea47eSEdward Tomasz Napierala# Redistribution and use in source and binary forms, with or without
9009ea47eSEdward Tomasz Napierala# modification, are permitted provided that the following conditions
10009ea47eSEdward Tomasz Napierala# are met:
11009ea47eSEdward Tomasz Napierala# 1. Redistributions of source code must retain the above copyright
12009ea47eSEdward Tomasz Napierala#    notice, this list of conditions and the following disclaimer.
13009ea47eSEdward Tomasz Napierala# 2. Redistributions in binary form must reproduce the above copyright
14009ea47eSEdward Tomasz Napierala#    notice, this list of conditions and the following disclaimer in the
15009ea47eSEdward Tomasz Napierala#    documentation and/or other materials provided with the distribution.
16009ea47eSEdward Tomasz Napierala#
17009ea47eSEdward Tomasz Napierala# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18009ea47eSEdward Tomasz Napierala# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19009ea47eSEdward Tomasz Napierala# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20009ea47eSEdward Tomasz Napierala# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21009ea47eSEdward Tomasz Napierala# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22009ea47eSEdward Tomasz Napierala# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23009ea47eSEdward Tomasz Napierala# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24009ea47eSEdward Tomasz Napierala# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25009ea47eSEdward Tomasz Napierala# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26009ea47eSEdward Tomasz Napierala# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27009ea47eSEdward Tomasz Napierala# SUCH DAMAGE.
28009ea47eSEdward Tomasz Napierala#
29009ea47eSEdward Tomasz Napierala#
30009ea47eSEdward Tomasz Napierala
31009ea47eSEdward Tomasz Napierala#
32009ea47eSEdward Tomasz Napierala# This expects that the iSCSI server being tested is at $TARGETIP and exports
33009ea47eSEdward Tomasz Napierala# two targets: $TARGET1 and $TARGET2; the former requiring no authentication,
34009ea47eSEdward Tomasz Napierala# and the latter using CHAP with user $USER and secret $SECRET.  Discovery
35009ea47eSEdward Tomasz Napierala# must be permitted without authentication.  Each target must contain exactly
36009ea47eSEdward Tomasz Napierala# two LUNs, 4GB each.  For example, ctl.conf(5) should look like this:
37009ea47eSEdward Tomasz Napierala#
38009ea47eSEdward Tomasz Napierala# auth-group meh {
39009ea47eSEdward Tomasz Napierala# 	chap user secretsecret
40009ea47eSEdward Tomasz Napierala# }
41009ea47eSEdward Tomasz Napierala#
42009ea47eSEdward Tomasz Napierala# portal-group meh {
43009ea47eSEdward Tomasz Napierala# 	listen 0.0.0.0
44009ea47eSEdward Tomasz Napierala# 	discovery-auth-group no-authentication
45009ea47eSEdward Tomasz Napierala# }
46009ea47eSEdward Tomasz Napierala#
47009ea47eSEdward Tomasz Napierala# target iqn.2012-06.com.example:1 {
48009ea47eSEdward Tomasz Napierala# 	auth-group no-authentication
49009ea47eSEdward Tomasz Napierala# 	portal-group meh
50009ea47eSEdward Tomasz Napierala# 	lun 0 {
51009ea47eSEdward Tomasz Napierala# 		path /var/tmp/example_t1l0
52009ea47eSEdward Tomasz Napierala# 		size 4G
53009ea47eSEdward Tomasz Napierala# 	}
54009ea47eSEdward Tomasz Napierala# 	lun 1 {
55009ea47eSEdward Tomasz Napierala# 		path /var/tmp/example_t1l1
56009ea47eSEdward Tomasz Napierala# 		size 4G
57009ea47eSEdward Tomasz Napierala# 	}
58009ea47eSEdward Tomasz Napierala# }
59009ea47eSEdward Tomasz Napierala#
60009ea47eSEdward Tomasz Napierala# target iqn.2012-06.com.example:2 {
61009ea47eSEdward Tomasz Napierala# 	auth-group meh
62009ea47eSEdward Tomasz Napierala# 	portal-group meh
63009ea47eSEdward Tomasz Napierala# 	lun 0 {
64009ea47eSEdward Tomasz Napierala# 		path /var/tmp/example_t2l0
65009ea47eSEdward Tomasz Napierala# 		size 4G
66009ea47eSEdward Tomasz Napierala# 	}
67009ea47eSEdward Tomasz Napierala# 	lun 1 {
68009ea47eSEdward Tomasz Napierala# 		path /var/tmp/example_t2l1
69009ea47eSEdward Tomasz Napierala# 		size 4G
70009ea47eSEdward Tomasz Napierala# 	}
71009ea47eSEdward Tomasz Napierala# }
72009ea47eSEdward Tomasz Napierala#
73009ea47eSEdward Tomasz Napierala# Remember to create the backing files (/var/tmp/example_t1l0 etcc)
74009ea47eSEdward Tomasz Napierala#
75009ea47eSEdward Tomasz Napierala# On the initiator, $MNTDIR will be used for testing.
76009ea47eSEdward Tomasz Napierala#
77009ea47eSEdward Tomasz Napierala
78009ea47eSEdward Tomasz NapieralaTARGETIP=192.168.56.101
79009ea47eSEdward Tomasz NapieralaTARGET1=iqn.2012-06.com.example:1
80009ea47eSEdward Tomasz NapieralaTARGET2=iqn.2012-06.com.example:2
81009ea47eSEdward Tomasz NapieralaUSER=user
82009ea47eSEdward Tomasz NapieralaSECRET=secretsecret
83009ea47eSEdward Tomasz NapieralaMNTDIR=/mnt
84009ea47eSEdward Tomasz NapieralaTMPDIR=/tmp
85009ea47eSEdward Tomasz Napierala
86009ea47eSEdward Tomasz Napieraladie() {
87009ea47eSEdward Tomasz Napierala	echo "$*"
88009ea47eSEdward Tomasz Napierala	exit 1
89009ea47eSEdward Tomasz Napierala}
90009ea47eSEdward Tomasz Napierala
91009ea47eSEdward Tomasz Napieralacase `uname` in
92009ea47eSEdward Tomasz Napierala	FreeBSD)
93009ea47eSEdward Tomasz Napierala		LUN0=/dev/da0
94009ea47eSEdward Tomasz Napierala		LUN1=/dev/da1
95009ea47eSEdward Tomasz Napierala		LUN2=/dev/da2
96009ea47eSEdward Tomasz Napierala		LUN3=/dev/da3
97009ea47eSEdward Tomasz Napierala		ZFSPOOL=iscsipool
98009ea47eSEdward Tomasz Napierala		;;
99009ea47eSEdward Tomasz Napierala	Linux)
100009ea47eSEdward Tomasz Napierala		LUN0=/dev/sdb
101009ea47eSEdward Tomasz Napierala		LUN1=/dev/sdc
102009ea47eSEdward Tomasz Napierala		LUN2=/dev/sdd
103009ea47eSEdward Tomasz Napierala		LUN3=/dev/sde
104009ea47eSEdward Tomasz Napierala		;;
105009ea47eSEdward Tomasz Napierala	SunOS)
106009ea47eSEdward Tomasz Napierala		# LUN names are being set later, during attach.
107009ea47eSEdward Tomasz Napierala		ZFSPOOL=iscsipool
108009ea47eSEdward Tomasz Napierala		;;
109009ea47eSEdward Tomasz Napierala	*)
110009ea47eSEdward Tomasz Napierala		die "unsupported system"
111009ea47eSEdward Tomasz Napierala		;;
112009ea47eSEdward Tomasz Napieralaesac
113009ea47eSEdward Tomasz Napierala
114009ea47eSEdward Tomasz Napieralacheck() {
115009ea47eSEdward Tomasz Napierala	echo "# $@" > /dev/stderr
116009ea47eSEdward Tomasz Napierala	$@ || die "$@ failed"
117009ea47eSEdward Tomasz Napierala}
118009ea47eSEdward Tomasz Napierala
119009ea47eSEdward Tomasz Napieralabanner() {
120009ea47eSEdward Tomasz Napierala	echo "Will try to attach to $TARGET1 and $TARGET2 on $TARGETIP,"
121009ea47eSEdward Tomasz Napierala	echo "user $USER, secret $SECRET.  Will use mountpoint $MNTDIR, temporary dir $TMPDIR,"
122009ea47eSEdward Tomasz Napierala	if [ -n "$LUN0" ]; then
123009ea47eSEdward Tomasz Napierala		echo "scratch disks $LUN0, $LUN1, $LUN2, $LUN3."
124009ea47eSEdward Tomasz Napierala	else
125009ea47eSEdward Tomasz Napierala		echo "scratch disks unknown at this stage."
126009ea47eSEdward Tomasz Napierala	fi
127009ea47eSEdward Tomasz Napierala	echo
128009ea47eSEdward Tomasz Napierala	echo "This script is NOT safe to run on multiuser system."
129009ea47eSEdward Tomasz Napierala	echo
130009ea47eSEdward Tomasz Napierala	echo "Press ^C to interrupt; will proceed in 5 seconds."
131009ea47eSEdward Tomasz Napierala	sleep 5
132009ea47eSEdward Tomasz Napierala}
133009ea47eSEdward Tomasz Napierala
134009ea47eSEdward Tomasz Napieralatest_discovery_freebsd_9() {
135009ea47eSEdward Tomasz Napierala	kldload iscsi_initiator
136009ea47eSEdward Tomasz Napierala	check iscontrol -dt $TARGETIP > $TMPDIR/discovered
137009ea47eSEdward Tomasz Napierala	cat $TMPDIR/discovered
138009ea47eSEdward Tomasz Napierala	echo "TargetName=$TARGET1" > $TMPDIR/expected
139009ea47eSEdward Tomasz Napierala	echo "TargetName=$TARGET2" >> $TMPDIR/expected
140009ea47eSEdward Tomasz Napierala	check cmp $TMPDIR/expected $TMPDIR/discovered
141009ea47eSEdward Tomasz Napierala	rm -f $TMPDIR/expected $TMPDIR/discovered
142009ea47eSEdward Tomasz Napierala}
143009ea47eSEdward Tomasz Napierala
144009ea47eSEdward Tomasz Napieralatest_discovery_freebsd() {
145009ea47eSEdward Tomasz Napierala	/etc/rc.d/iscsid onestart
146009ea47eSEdward Tomasz Napierala	check iscsictl -Ad $TARGETIP
147009ea47eSEdward Tomasz Napierala	sleep 1
148009ea47eSEdward Tomasz Napierala	iscsictl | awk '{ print $1 }' | sort > $TMPDIR/discovered
149009ea47eSEdward Tomasz Napierala	printf "Target\n$TARGET1\n$TARGET2\n" | sort > $TMPDIR/expected
150009ea47eSEdward Tomasz Napierala	check cmp $TMPDIR/expected $TMPDIR/discovered
151009ea47eSEdward Tomasz Napierala	rm -f $TMPDIR/expected $TMPDIR/discovered
152009ea47eSEdward Tomasz Napierala	check iscsictl -Ra
153009ea47eSEdward Tomasz Napierala	sleep 1
154009ea47eSEdward Tomasz Napierala}
155009ea47eSEdward Tomasz Napierala
156009ea47eSEdward Tomasz Napieralatest_discovery_linux() {
157009ea47eSEdward Tomasz Napierala	cat > /etc/iscsi/iscsid.conf << END
158009ea47eSEdward Tomasz Napierala
159009ea47eSEdward Tomasz Napieraladiscovery.sendtargets.auth.authmethod = None
160009ea47eSEdward Tomasz Napieralanode.startup = manual
161009ea47eSEdward Tomasz Napierala
162009ea47eSEdward Tomasz NapieralaEND
163009ea47eSEdward Tomasz Napierala
164009ea47eSEdward Tomasz Napierala	check iscsiadm  -m discovery -t sendtargets -p $TARGETIP > $TMPDIR/discovered
165009ea47eSEdward Tomasz Napierala	cat $TMPDIR/discovered
166009ea47eSEdward Tomasz Napierala	echo "$TARGETIP:3260,-1 $TARGET1" > $TMPDIR/expected
167009ea47eSEdward Tomasz Napierala	echo "$TARGETIP:3260,-1 $TARGET2" >> $TMPDIR/expected
168009ea47eSEdward Tomasz Napierala	check cmp $TMPDIR/expected $TMPDIR/discovered
169009ea47eSEdward Tomasz Napierala	rm -f $TMPDIR/expected $TMPDIR/discovered
170009ea47eSEdward Tomasz Napierala
171009ea47eSEdward Tomasz Napierala}
172009ea47eSEdward Tomasz Napierala
173009ea47eSEdward Tomasz Napieralatest_discovery_solaris() {
174009ea47eSEdward Tomasz Napierala	check iscsiadm add discovery-address $TARGETIP
175009ea47eSEdward Tomasz Napierala	check iscsiadm modify discovery --sendtargets enable
176009ea47eSEdward Tomasz Napierala	check iscsiadm modify discovery --static enable
177009ea47eSEdward Tomasz Napierala	check iscsiadm list target | awk '/^Target/ { print $2 }' | sort > $TMPDIR/discovered
178009ea47eSEdward Tomasz Napierala	check iscsiadm remove discovery-address $TARGETIP
179009ea47eSEdward Tomasz Napierala	cat $TMPDIR/discovered
180009ea47eSEdward Tomasz Napierala	echo "$TARGET1" > $TMPDIR/expected
181009ea47eSEdward Tomasz Napierala	echo "$TARGET2" >> $TMPDIR/expected
182009ea47eSEdward Tomasz Napierala	check cmp $TMPDIR/expected $TMPDIR/discovered
183009ea47eSEdward Tomasz Napierala	rm -f $TMPDIR/expected $TMPDIR/discovered
184009ea47eSEdward Tomasz Napierala}
185009ea47eSEdward Tomasz Napierala
186009ea47eSEdward Tomasz Napieralatest_discovery() {
187009ea47eSEdward Tomasz Napierala	echo "*** discovery test ***"
188009ea47eSEdward Tomasz Napierala	case `uname` in
189009ea47eSEdward Tomasz Napierala		FreeBSD)
190009ea47eSEdward Tomasz Napierala			case `uname -r` in
191009ea47eSEdward Tomasz Napierala				9*)
192009ea47eSEdward Tomasz Napierala					test_discovery_freebsd_9
193009ea47eSEdward Tomasz Napierala					;;
194009ea47eSEdward Tomasz Napierala				*)
195009ea47eSEdward Tomasz Napierala					test_discovery_freebsd
196009ea47eSEdward Tomasz Napierala					;;
197009ea47eSEdward Tomasz Napierala			esac
198009ea47eSEdward Tomasz Napierala			;;
199009ea47eSEdward Tomasz Napierala		Linux)
200009ea47eSEdward Tomasz Napierala			test_discovery_linux
201009ea47eSEdward Tomasz Napierala			;;
202009ea47eSEdward Tomasz Napierala		SunOS)
203009ea47eSEdward Tomasz Napierala			test_discovery_solaris
204009ea47eSEdward Tomasz Napierala			;;
205009ea47eSEdward Tomasz Napierala		*)
206009ea47eSEdward Tomasz Napierala			die "unsupported system"
207009ea47eSEdward Tomasz Napierala			;;
208009ea47eSEdward Tomasz Napierala	esac
209009ea47eSEdward Tomasz Napierala}
210009ea47eSEdward Tomasz Napierala
211009ea47eSEdward Tomasz Napieralatest_attach_freebsd_9() {
212009ea47eSEdward Tomasz Napierala	[ ! -e LUN0 ] || die "$LUN0 already exists"
213009ea47eSEdward Tomasz Napierala	[ ! -e LUN1 ] || die "$LUN1 already exists"
214009ea47eSEdward Tomasz Napierala	[ ! -e LUN2 ] || die "$LUN2 already exists"
215009ea47eSEdward Tomasz Napierala	[ ! -e LUN3 ] || die "$LUN3 already exists"
216009ea47eSEdward Tomasz Napierala
217009ea47eSEdward Tomasz Napierala	cat > $TMPDIR/iscsi.conf << END
218009ea47eSEdward Tomasz Napierala
219009ea47eSEdward Tomasz Napieralatarget1 {
220009ea47eSEdward Tomasz Napierala	TargetName = $TARGET1
221009ea47eSEdward Tomasz Napierala	TargetAddress = $TARGETIP
222009ea47eSEdward Tomasz Napierala}
223009ea47eSEdward Tomasz Napierala
224009ea47eSEdward Tomasz Napieralatarget2 {
225009ea47eSEdward Tomasz Napierala	TargetName = $TARGET2
226009ea47eSEdward Tomasz Napierala	TargetAddress = $TARGETIP
227009ea47eSEdward Tomasz Napierala	AuthMethod = CHAP
228009ea47eSEdward Tomasz Napierala	chapIName = $USER
229009ea47eSEdward Tomasz Napierala	chapSecret = $SECRET
230009ea47eSEdward Tomasz Napierala}
231009ea47eSEdward Tomasz Napierala
232009ea47eSEdward Tomasz NapieralaEND
233009ea47eSEdward Tomasz Napierala	check iscontrol -c $TMPDIR/iscsi.conf -n target1
234009ea47eSEdward Tomasz Napierala	check iscontrol -c $TMPDIR/iscsi.conf -n target2
235009ea47eSEdward Tomasz Napierala
236009ea47eSEdward Tomasz Napierala	echo "Waiting 10 seconds for attach to complete."
237009ea47eSEdward Tomasz Napierala	sleep 10
238009ea47eSEdward Tomasz Napierala
239009ea47eSEdward Tomasz Napierala	[ -e $LUN0 ] || die "$LUN0 doesn't exist"
240009ea47eSEdward Tomasz Napierala	[ -e $LUN1 ] || die "$LUN1 doesn't exist"
241009ea47eSEdward Tomasz Napierala	[ -e $LUN2 ] || die "$LUN2 doesn't exist"
242009ea47eSEdward Tomasz Napierala	[ -e $LUN3 ] || die "$LUN3 doesn't exist"
243009ea47eSEdward Tomasz Napierala
244009ea47eSEdward Tomasz Napierala	rm $TMPDIR/iscsi.conf
245009ea47eSEdward Tomasz Napierala}
246009ea47eSEdward Tomasz Napierala
247009ea47eSEdward Tomasz Napieralatest_attach_freebsd() {
248009ea47eSEdward Tomasz Napierala	[ ! -e LUN0 ] || die "$LUN0 already exists"
249009ea47eSEdward Tomasz Napierala	[ ! -e LUN1 ] || die "$LUN1 already exists"
250009ea47eSEdward Tomasz Napierala	[ ! -e LUN2 ] || die "$LUN2 already exists"
251009ea47eSEdward Tomasz Napierala	[ ! -e LUN3 ] || die "$LUN3 already exists"
252009ea47eSEdward Tomasz Napierala
253009ea47eSEdward Tomasz Napierala	cat > $TMPDIR/iscsi.conf << END
254009ea47eSEdward Tomasz Napierala
255009ea47eSEdward Tomasz Napieralatarget1 {
256009ea47eSEdward Tomasz Napierala	TargetName = $TARGET1
257009ea47eSEdward Tomasz Napierala	TargetAddress = $TARGETIP
258009ea47eSEdward Tomasz Napierala}
259009ea47eSEdward Tomasz Napierala
260009ea47eSEdward Tomasz Napieralatarget2 {
261009ea47eSEdward Tomasz Napierala	TargetName = $TARGET2
262009ea47eSEdward Tomasz Napierala	TargetAddress = $TARGETIP
263009ea47eSEdward Tomasz Napierala	AuthMethod = CHAP
264009ea47eSEdward Tomasz Napierala	chapIName = $USER
265009ea47eSEdward Tomasz Napierala	chapSecret = $SECRET
266009ea47eSEdward Tomasz Napierala}
267009ea47eSEdward Tomasz Napierala
268009ea47eSEdward Tomasz NapieralaEND
269009ea47eSEdward Tomasz Napierala	check iscsictl -Ac $TMPDIR/iscsi.conf -n target1
270009ea47eSEdward Tomasz Napierala	check iscsictl -Ac $TMPDIR/iscsi.conf -n target2
271009ea47eSEdward Tomasz Napierala
272009ea47eSEdward Tomasz Napierala	echo "Waiting 10 seconds for attach to complete."
273009ea47eSEdward Tomasz Napierala	sleep 10
274009ea47eSEdward Tomasz Napierala
275009ea47eSEdward Tomasz Napierala	[ -e $LUN0 ] || die "$LUN0 doesn't exist"
276009ea47eSEdward Tomasz Napierala	[ -e $LUN1 ] || die "$LUN1 doesn't exist"
277009ea47eSEdward Tomasz Napierala	[ -e $LUN2 ] || die "$LUN2 doesn't exist"
278009ea47eSEdward Tomasz Napierala	[ -e $LUN3 ] || die "$LUN3 doesn't exist"
279009ea47eSEdward Tomasz Napierala
280009ea47eSEdward Tomasz Napierala	rm $TMPDIR/iscsi.conf
281009ea47eSEdward Tomasz Napierala}
282009ea47eSEdward Tomasz Napierala
283009ea47eSEdward Tomasz Napieralatest_attach_linux() {
284009ea47eSEdward Tomasz Napierala	check iscsiadm --mode node --targetname "$TARGET1"  -p "$TARGETIP:3260" --op=update --name node.session.auth.authmethod --value=None
285009ea47eSEdward Tomasz Napierala	check iscsiadm --mode node --targetname "$TARGET1"  -p "$TARGETIP:3260" --login
286009ea47eSEdward Tomasz Napierala	check iscsiadm --mode node --targetname "$TARGET2"  -p "$TARGETIP:3260" --op=update --name node.session.auth.authmethod --value=CHAP
287009ea47eSEdward Tomasz Napierala	check iscsiadm --mode node --targetname "$TARGET2"  -p "$TARGETIP:3260" --op=update --name node.session.auth.username --value="$USER"
288009ea47eSEdward Tomasz Napierala	check iscsiadm --mode node --targetname "$TARGET2"  -p "$TARGETIP:3260" --op=update --name node.session.auth.password --value="$SECRET"
289009ea47eSEdward Tomasz Napierala	check iscsiadm --mode node --targetname "$TARGET2"  -p "$TARGETIP:3260" --login
290009ea47eSEdward Tomasz Napierala}
291009ea47eSEdward Tomasz Napierala
292009ea47eSEdward Tomasz Napieralatest_attach_solaris() {
293009ea47eSEdward Tomasz Napierala	# XXX: How to enter the CHAP secret from the script?  For now,
294009ea47eSEdward Tomasz Napierala	# just use the first target, and thus first two LUNs.
295009ea47eSEdward Tomasz Napierala	#check iscsiadm modify initiator-node --authentication CHAP
296009ea47eSEdward Tomasz Napierala	#check iscsiadm modify initiator-node --CHAP-name $USER
297009ea47eSEdward Tomasz Napierala	#check iscsiadm modify initiator-node --CHAP-secret $SECRET
298009ea47eSEdward Tomasz Napierala	iscsiadm add static-config $TARGET1,$TARGETIP
299009ea47eSEdward Tomasz Napierala	LUN0=`iscsiadm list target -S | awk '/OS Device Name/ { print $4 }' | sed -n 1p`
300009ea47eSEdward Tomasz Napierala	LUN1=`iscsiadm list target -S | awk '/OS Device Name/ { print $4 }' | sed -n 2p`
301009ea47eSEdward Tomasz Napierala	LUN0=`echo ${LUN0}2 | sed 's/rdsk/dsk/'`
302009ea47eSEdward Tomasz Napierala	LUN1=`echo ${LUN1}2 | sed 's/rdsk/dsk/'`
303009ea47eSEdward Tomasz Napierala	[ -n "$LUN0" -a -n "LUN1" ] || die "attach failed"
304009ea47eSEdward Tomasz Napierala	echo "Scratch disks: $LUN0, $LUN1"
305009ea47eSEdward Tomasz Napierala}
306009ea47eSEdward Tomasz Napierala
307009ea47eSEdward Tomasz Napieralatest_attach() {
308009ea47eSEdward Tomasz Napierala	echo "*** attach test ***"
309009ea47eSEdward Tomasz Napierala	case `uname` in
310009ea47eSEdward Tomasz Napierala		FreeBSD)
311009ea47eSEdward Tomasz Napierala			case `uname -r` in
312009ea47eSEdward Tomasz Napierala				9*)
313009ea47eSEdward Tomasz Napierala					test_attach_freebsd_9
314009ea47eSEdward Tomasz Napierala					;;
315009ea47eSEdward Tomasz Napierala				*)
316009ea47eSEdward Tomasz Napierala					test_attach_freebsd
317009ea47eSEdward Tomasz Napierala					;;
318009ea47eSEdward Tomasz Napierala			esac
319009ea47eSEdward Tomasz Napierala			;;
320009ea47eSEdward Tomasz Napierala		Linux)
321009ea47eSEdward Tomasz Napierala			test_attach_linux
322009ea47eSEdward Tomasz Napierala			;;
323009ea47eSEdward Tomasz Napierala		SunOS)
324009ea47eSEdward Tomasz Napierala			test_attach_solaris
325009ea47eSEdward Tomasz Napierala			;;
326009ea47eSEdward Tomasz Napierala		*)
327009ea47eSEdward Tomasz Napierala			die "unsupported system"
328009ea47eSEdward Tomasz Napierala			;;
329009ea47eSEdward Tomasz Napierala	esac
330009ea47eSEdward Tomasz Napierala}
331009ea47eSEdward Tomasz Napierala
332009ea47eSEdward Tomasz Napieralatest_newfs_freebsd_ufs() {
333009ea47eSEdward Tomasz Napierala	echo "*** UFS filesystem smoke test ***"
334009ea47eSEdward Tomasz Napierala	check newfs $LUN0
335009ea47eSEdward Tomasz Napierala	check newfs $LUN1
336009ea47eSEdward Tomasz Napierala	check newfs $LUN2
337009ea47eSEdward Tomasz Napierala	check newfs $LUN3
338009ea47eSEdward Tomasz Napierala	check fsck -t ufs $LUN0
339009ea47eSEdward Tomasz Napierala	check fsck -t ufs $LUN1
340009ea47eSEdward Tomasz Napierala	check fsck -t ufs $LUN2
341009ea47eSEdward Tomasz Napierala	check fsck -t ufs $LUN3
342009ea47eSEdward Tomasz Napierala}
343009ea47eSEdward Tomasz Napierala
344009ea47eSEdward Tomasz Napieralatest_newfs_freebsd_zfs() {
345009ea47eSEdward Tomasz Napierala	echo "*** ZFS filesystem smoke test ***"
346009ea47eSEdward Tomasz Napierala	check zpool create -f $ZFSPOOL $LUN0 $LUN1 $LUN2 $LUN3
347009ea47eSEdward Tomasz Napierala	check zpool destroy -f $ZFSPOOL
348009ea47eSEdward Tomasz Napierala}
349009ea47eSEdward Tomasz Napierala
350009ea47eSEdward Tomasz Napieralatest_newfs_linux_ext4() {
351009ea47eSEdward Tomasz Napierala	echo "*** ext4 filesystem smoke test ***"
352009ea47eSEdward Tomasz Napierala	yes | check mkfs $LUN0
353009ea47eSEdward Tomasz Napierala	yes | check mkfs $LUN1
354009ea47eSEdward Tomasz Napierala	yes | check mkfs $LUN2
355009ea47eSEdward Tomasz Napierala	yes | check mkfs $LUN3
356009ea47eSEdward Tomasz Napierala	check fsck -f $LUN0
357009ea47eSEdward Tomasz Napierala	check fsck -f $LUN1
358009ea47eSEdward Tomasz Napierala	check fsck -f $LUN2
359009ea47eSEdward Tomasz Napierala	check fsck -f $LUN3
360009ea47eSEdward Tomasz Napierala}
361009ea47eSEdward Tomasz Napierala
362009ea47eSEdward Tomasz Napieralatest_newfs_linux_btrfs() {
363009ea47eSEdward Tomasz Napierala	echo "*** btrfs filesystem smoke test ***"
364009ea47eSEdward Tomasz Napierala	check mkfs.btrfs $LUN0 $LUN1 $LUN2 $LUN3
365009ea47eSEdward Tomasz Napierala}
366009ea47eSEdward Tomasz Napierala
367009ea47eSEdward Tomasz Napierala
368009ea47eSEdward Tomasz Napieralatest_newfs_solaris_ufs() {
369009ea47eSEdward Tomasz Napierala	echo "*** UFS filesystem smoke test ***"
370009ea47eSEdward Tomasz Napierala	yes | check newfs $LUN0
371009ea47eSEdward Tomasz Napierala	yes | check newfs $LUN1
372009ea47eSEdward Tomasz Napierala	check fsck -F ufs $LUN0
373009ea47eSEdward Tomasz Napierala	check fsck -F ufs $LUN1
374009ea47eSEdward Tomasz Napierala}
375009ea47eSEdward Tomasz Napierala
376009ea47eSEdward Tomasz Napieralatest_newfs_solaris_zfs() {
377009ea47eSEdward Tomasz Napierala	echo "*** ZFS filesystem smoke test ***"
378009ea47eSEdward Tomasz Napierala	check zpool create -f $ZFSPOOL $LUN0 $LUN1
379009ea47eSEdward Tomasz Napierala	check zpool destroy -f $ZFSPOOL
380009ea47eSEdward Tomasz Napierala}
381009ea47eSEdward Tomasz Napierala
382009ea47eSEdward Tomasz Napieralatest_newfs() {
383009ea47eSEdward Tomasz Napierala	case `uname` in
384009ea47eSEdward Tomasz Napierala		FreeBSD)
385009ea47eSEdward Tomasz Napierala			test_newfs_freebsd_ufs
386009ea47eSEdward Tomasz Napierala			test_newfs_freebsd_zfs
387009ea47eSEdward Tomasz Napierala			;;
388009ea47eSEdward Tomasz Napierala		Linux)
389009ea47eSEdward Tomasz Napierala			test_newfs_linux_ext4
390009ea47eSEdward Tomasz Napierala			test_newfs_linux_btrfs
391009ea47eSEdward Tomasz Napierala			;;
392009ea47eSEdward Tomasz Napierala		SunOS)
393009ea47eSEdward Tomasz Napierala			test_newfs_solaris_ufs
394009ea47eSEdward Tomasz Napierala			test_newfs_solaris_zfs
395009ea47eSEdward Tomasz Napierala			;;
396009ea47eSEdward Tomasz Napierala		*)
397009ea47eSEdward Tomasz Napierala			die "unsupported system"
398009ea47eSEdward Tomasz Napierala			;;
399009ea47eSEdward Tomasz Napierala	esac
400009ea47eSEdward Tomasz Napierala}
401009ea47eSEdward Tomasz Napierala
402009ea47eSEdward Tomasz Napieralatest_cp() {
403009ea47eSEdward Tomasz Napierala	echo "*** basic filesystem test ***"
404009ea47eSEdward Tomasz Napierala	case `uname` in
405009ea47eSEdward Tomasz Napierala		FreeBSD)
406009ea47eSEdward Tomasz Napierala			check newfs $LUN0
407009ea47eSEdward Tomasz Napierala			check mount -t ufs $LUN0 $MNTDIR
408009ea47eSEdward Tomasz Napierala			check dd if=/dev/urandom of=$MNTDIR/1 bs=1m count=500
409009ea47eSEdward Tomasz Napierala			check cp $MNTDIR/1 $MNTDIR/2
410009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
411009ea47eSEdward Tomasz Napierala			check fsck -t ufs $LUN0
412009ea47eSEdward Tomasz Napierala			check mount -t ufs $LUN0 $MNTDIR
413009ea47eSEdward Tomasz Napierala			check cmp $MNTDIR/1 $MNTDIR/2
414009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
415009ea47eSEdward Tomasz Napierala
416009ea47eSEdward Tomasz Napierala			check zpool create -f $ZFSPOOL $LUN0 $LUN1 $LUN2 $LUN3
417009ea47eSEdward Tomasz Napierala			check dd if=/dev/urandom of=/$ZFSPOOL/1 bs=1m count=500
418009ea47eSEdward Tomasz Napierala			check zpool scrub $ZFSPOOL
419009ea47eSEdward Tomasz Napierala			check cp /$ZFSPOOL/1 /$ZFSPOOL/2
420009ea47eSEdward Tomasz Napierala			check cmp /$ZFSPOOL/1 /$ZFSPOOL/2
421009ea47eSEdward Tomasz Napierala			check zpool destroy -f $ZFSPOOL
422009ea47eSEdward Tomasz Napierala			;;
423009ea47eSEdward Tomasz Napierala		Linux)
424009ea47eSEdward Tomasz Napierala			yes | check mkfs $LUN0
425009ea47eSEdward Tomasz Napierala			check mount $LUN0 $MNTDIR
426009ea47eSEdward Tomasz Napierala			check dd if=/dev/urandom of=$MNTDIR/1 bs=1M count=500
427009ea47eSEdward Tomasz Napierala			check cp $MNTDIR/1 $MNTDIR/2
428009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
429009ea47eSEdward Tomasz Napierala			check fsck -f $LUN0
430009ea47eSEdward Tomasz Napierala			check mount $LUN0 $MNTDIR
431009ea47eSEdward Tomasz Napierala			check cmp $MNTDIR/1 $MNTDIR/2
432009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
433009ea47eSEdward Tomasz Napierala
434009ea47eSEdward Tomasz Napierala			check mkfs.btrfs $LUN0 $LUN1 $LUN2 $LUN3
435009ea47eSEdward Tomasz Napierala			check mount $LUN0 $MNTDIR
436009ea47eSEdward Tomasz Napierala			check dd if=/dev/urandom of=$MNTDIR/1 bs=1M count=500
437009ea47eSEdward Tomasz Napierala			check cp $MNTDIR/1 $MNTDIR/2
438009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
439009ea47eSEdward Tomasz Napierala			check mount $LUN0 $MNTDIR
440009ea47eSEdward Tomasz Napierala			check cmp $MNTDIR/1 $MNTDIR/2
441009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
442009ea47eSEdward Tomasz Napierala			;;
443009ea47eSEdward Tomasz Napierala		SunOS)
444009ea47eSEdward Tomasz Napierala			yes | check newfs $LUN0
445009ea47eSEdward Tomasz Napierala			check mount -F ufs $LUN0 $MNTDIR
446009ea47eSEdward Tomasz Napierala			check dd if=/dev/urandom of=$MNTDIR/1 bs=1024k count=500
447009ea47eSEdward Tomasz Napierala			check cp $MNTDIR/1 $MNTDIR/2
448009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
449009ea47eSEdward Tomasz Napierala			check fsck -yF ufs $LUN0
450009ea47eSEdward Tomasz Napierala			check mount -F ufs $LUN0 $MNTDIR
451009ea47eSEdward Tomasz Napierala			check cmp $MNTDIR/1 $MNTDIR/2
452009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
453009ea47eSEdward Tomasz Napierala
454009ea47eSEdward Tomasz Napierala			check zpool create -f $ZFSPOOL $LUN0 $LUN1
455009ea47eSEdward Tomasz Napierala			check dd if=/dev/urandom of=/$ZFSPOOL/1 bs=1024k count=500
456009ea47eSEdward Tomasz Napierala			check zpool scrub $ZFSPOOL
457009ea47eSEdward Tomasz Napierala			check cp /$ZFSPOOL/1 /$ZFSPOOL/2
458009ea47eSEdward Tomasz Napierala			check cmp /$ZFSPOOL/1 /$ZFSPOOL/2
459009ea47eSEdward Tomasz Napierala			check zpool destroy -f $ZFSPOOL
460009ea47eSEdward Tomasz Napierala			;;
461009ea47eSEdward Tomasz Napierala		*)
462009ea47eSEdward Tomasz Napierala			die "unsupported system"
463009ea47eSEdward Tomasz Napierala			;;
464009ea47eSEdward Tomasz Napierala	esac
465009ea47eSEdward Tomasz Napierala}
466009ea47eSEdward Tomasz Napierala
467009ea47eSEdward Tomasz Napieralatest_bonnie() {
468009ea47eSEdward Tomasz Napierala	echo "*** bonnie++ ***"
469009ea47eSEdward Tomasz Napierala	case `uname` in
470009ea47eSEdward Tomasz Napierala		FreeBSD)
471009ea47eSEdward Tomasz Napierala			check newfs $LUN0
472009ea47eSEdward Tomasz Napierala			check mount -t ufs $LUN0 $MNTDIR
473009ea47eSEdward Tomasz Napierala			check cd $MNTDIR
474009ea47eSEdward Tomasz Napierala			check bonnie++ -u root -s 2g -r 1g -n0
475009ea47eSEdward Tomasz Napierala			check bonnie++ -u root -s 0
476009ea47eSEdward Tomasz Napierala			check cd -
477009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
478009ea47eSEdward Tomasz Napierala			check fsck -t ufs $LUN0
479009ea47eSEdward Tomasz Napierala
480009ea47eSEdward Tomasz Napierala			check zpool create -f $ZFSPOOL $LUN0 $LUN1 $LUN2 $LUN3
481009ea47eSEdward Tomasz Napierala			check cd /$ZFSPOOL
482009ea47eSEdward Tomasz Napierala			check bonnie++ -u root -s 2g -r 1g -n0
483009ea47eSEdward Tomasz Napierala			check bonnie++ -u root -s 0
484009ea47eSEdward Tomasz Napierala			check cd -
485009ea47eSEdward Tomasz Napierala			check zpool destroy -f $ZFSPOOL
486009ea47eSEdward Tomasz Napierala			;;
487009ea47eSEdward Tomasz Napierala		Linux)
488009ea47eSEdward Tomasz Napierala			yes | check mkfs $LUN0
489009ea47eSEdward Tomasz Napierala			check mount $LUN0 $MNTDIR
490009ea47eSEdward Tomasz Napierala			check cd $MNTDIR
491009ea47eSEdward Tomasz Napierala			check bonnie++ -u root -s 2g -r 1g -n0
492009ea47eSEdward Tomasz Napierala			check bonnie++ -u root -s 0
493009ea47eSEdward Tomasz Napierala			check cd -
494009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
495009ea47eSEdward Tomasz Napierala			check fsck -f $LUN0
496009ea47eSEdward Tomasz Napierala
497009ea47eSEdward Tomasz Napierala			check mkfs.btrfs $LUN0 $LUN1 $LUN2 $LUN3
498009ea47eSEdward Tomasz Napierala			check mount $LUN0 $MNTDIR
499009ea47eSEdward Tomasz Napierala			check cd $MNTDIR
500009ea47eSEdward Tomasz Napierala			check bonnie++ -u root -s 2g -r 1g -n0
501009ea47eSEdward Tomasz Napierala			check bonnie++ -u root -s 0
502009ea47eSEdward Tomasz Napierala			check cd -
503009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
504009ea47eSEdward Tomasz Napierala			;;
505009ea47eSEdward Tomasz Napierala		SunOS)
506009ea47eSEdward Tomasz Napierala			yes | check newfs $LUN0
507009ea47eSEdward Tomasz Napierala			check mount -F ufs $LUN0 $MNTDIR
508009ea47eSEdward Tomasz Napierala			check cd $MNTDIR
509009ea47eSEdward Tomasz Napierala			check bonnie++ -u root -s 2g -r 1g -n0
510009ea47eSEdward Tomasz Napierala			check bonnie++ -u root -s 0
511009ea47eSEdward Tomasz Napierala			check cd -
512009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
513009ea47eSEdward Tomasz Napierala			check fsck -yF ufs $LUN0
514009ea47eSEdward Tomasz Napierala
515009ea47eSEdward Tomasz Napierala			check zpool create -f $ZFSPOOL $LUN0 $LUN1
516009ea47eSEdward Tomasz Napierala			check cd /$ZFSPOOL
517009ea47eSEdward Tomasz Napierala			check bonnie++ -u root -s 2g -r 1g -n0
518009ea47eSEdward Tomasz Napierala			check bonnie++ -u root -s 0
519009ea47eSEdward Tomasz Napierala			check cd -
520009ea47eSEdward Tomasz Napierala			check zpool destroy -f $ZFSPOOL
521009ea47eSEdward Tomasz Napierala			;;
522009ea47eSEdward Tomasz Napierala		*)
523009ea47eSEdward Tomasz Napierala			die "unsupported system"
524009ea47eSEdward Tomasz Napierala			;;
525009ea47eSEdward Tomasz Napierala	esac
526009ea47eSEdward Tomasz Napierala}
527009ea47eSEdward Tomasz Napierala
528009ea47eSEdward Tomasz Napieralatest_iozone() {
529009ea47eSEdward Tomasz Napierala	echo "*** iozone ***"
530009ea47eSEdward Tomasz Napierala	case `uname` in
531009ea47eSEdward Tomasz Napierala		FreeBSD)
532009ea47eSEdward Tomasz Napierala			check newfs $LUN0
533009ea47eSEdward Tomasz Napierala			check mount -t ufs $LUN0 $MNTDIR
534009ea47eSEdward Tomasz Napierala			check cd $MNTDIR
535009ea47eSEdward Tomasz Napierala			check iozone -a
536009ea47eSEdward Tomasz Napierala			check cd -
537009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
538009ea47eSEdward Tomasz Napierala			check fsck -t ufs $LUN0
539009ea47eSEdward Tomasz Napierala
540009ea47eSEdward Tomasz Napierala			check zpool create -f $ZFSPOOL $LUN0 $LUN1 $LUN2 $LUN3
541009ea47eSEdward Tomasz Napierala			check cd /$ZFSPOOL
542009ea47eSEdward Tomasz Napierala			check iozone -a
543009ea47eSEdward Tomasz Napierala			check cd -
544009ea47eSEdward Tomasz Napierala			check zpool destroy -f $ZFSPOOL
545009ea47eSEdward Tomasz Napierala			;;
546009ea47eSEdward Tomasz Napierala		Linux)
547009ea47eSEdward Tomasz Napierala			yes | check mkfs $LUN0
548009ea47eSEdward Tomasz Napierala			check mount $LUN0 $MNTDIR
549009ea47eSEdward Tomasz Napierala			check cd $MNTDIR
550009ea47eSEdward Tomasz Napierala			check iozone -a
551009ea47eSEdward Tomasz Napierala			check cd -
552009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
553009ea47eSEdward Tomasz Napierala			check fsck -f $LUN0
554009ea47eSEdward Tomasz Napierala
555009ea47eSEdward Tomasz Napierala			check mkfs.btrfs $LUN0 $LUN1 $LUN2 $LUN3
556009ea47eSEdward Tomasz Napierala			check mount $LUN0 $MNTDIR
557009ea47eSEdward Tomasz Napierala			check cd $MNTDIR
558009ea47eSEdward Tomasz Napierala			check iozone -a
559009ea47eSEdward Tomasz Napierala			check cd -
560009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
561009ea47eSEdward Tomasz Napierala			;;
562009ea47eSEdward Tomasz Napierala		SunOS)
563009ea47eSEdward Tomasz Napierala			yes | check newfs $LUN0
564009ea47eSEdward Tomasz Napierala			check mount -F ufs $LUN0 $MNTDIR
565009ea47eSEdward Tomasz Napierala			check cd $MNTDIR
566009ea47eSEdward Tomasz Napierala			check iozone -a
567009ea47eSEdward Tomasz Napierala			check cd -
568009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
569009ea47eSEdward Tomasz Napierala			check fsck -yF ufs $LUN0
570009ea47eSEdward Tomasz Napierala
571009ea47eSEdward Tomasz Napierala			check zpool create -f $ZFSPOOL $LUN0 $LUN1
572009ea47eSEdward Tomasz Napierala			check cd /$ZFSPOOL
573009ea47eSEdward Tomasz Napierala			check iozone -a
574009ea47eSEdward Tomasz Napierala			check cd -
575009ea47eSEdward Tomasz Napierala			check zpool destroy -f $ZFSPOOL
576009ea47eSEdward Tomasz Napierala			;;
577009ea47eSEdward Tomasz Napierala		*)
578009ea47eSEdward Tomasz Napierala			die "unsupported system"
579009ea47eSEdward Tomasz Napierala			;;
580009ea47eSEdward Tomasz Napierala	esac
581009ea47eSEdward Tomasz Napierala
582009ea47eSEdward Tomasz Napierala}
583009ea47eSEdward Tomasz Napierala
584009ea47eSEdward Tomasz Napieralatest_postmark() {
585009ea47eSEdward Tomasz Napierala	echo "*** postmark ***"
586009ea47eSEdward Tomasz Napierala	case `uname` in
587009ea47eSEdward Tomasz Napierala		FreeBSD)
588009ea47eSEdward Tomasz Napierala			check newfs $LUN0
589009ea47eSEdward Tomasz Napierala			check mount -t ufs $LUN0 $MNTDIR
590009ea47eSEdward Tomasz Napierala			check cd $MNTDIR
591009ea47eSEdward Tomasz Napierala			printf "set number 10000\nrun\n" | check postmark
592009ea47eSEdward Tomasz Napierala			check cd -
593009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
594009ea47eSEdward Tomasz Napierala			check fsck -t ufs $LUN0
595009ea47eSEdward Tomasz Napierala
596009ea47eSEdward Tomasz Napierala			check zpool create -f $ZFSPOOL $LUN0 $LUN1 $LUN2 $LUN3
597009ea47eSEdward Tomasz Napierala			check cd /$ZFSPOOL
598009ea47eSEdward Tomasz Napierala			printf "set number 10000\nrun\n" | check postmark
599009ea47eSEdward Tomasz Napierala			check cd -
600009ea47eSEdward Tomasz Napierala			check zpool destroy -f $ZFSPOOL
601009ea47eSEdward Tomasz Napierala			;;
602009ea47eSEdward Tomasz Napierala		Linux)
603009ea47eSEdward Tomasz Napierala			yes | check mkfs $LUN0
604009ea47eSEdward Tomasz Napierala			check mount $LUN0 $MNTDIR
605009ea47eSEdward Tomasz Napierala			check cd $MNTDIR
606009ea47eSEdward Tomasz Napierala			printf "set number 10000\nrun\n" | check postmark
607009ea47eSEdward Tomasz Napierala			check cd -
608009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
609009ea47eSEdward Tomasz Napierala			check fsck -f $LUN0
610009ea47eSEdward Tomasz Napierala
611009ea47eSEdward Tomasz Napierala			check mkfs.btrfs $LUN0 $LUN1 $LUN2 $LUN3
612009ea47eSEdward Tomasz Napierala			check mount $LUN0 $MNTDIR
613009ea47eSEdward Tomasz Napierala			check cd $MNTDIR
614009ea47eSEdward Tomasz Napierala			printf "set number 10000\nrun\n" | check postmark
615009ea47eSEdward Tomasz Napierala			check cd -
616009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
617009ea47eSEdward Tomasz Napierala			;;
618009ea47eSEdward Tomasz Napierala		SunOS)
619009ea47eSEdward Tomasz Napierala			yes | check newfs $LUN0
620009ea47eSEdward Tomasz Napierala			check mount -F ufs $LUN0 $MNTDIR
621009ea47eSEdward Tomasz Napierala			check cd $MNTDIR
622009ea47eSEdward Tomasz Napierala			printf "set number 10000\nrun\n" | check postmark
623009ea47eSEdward Tomasz Napierala			check cd -
624009ea47eSEdward Tomasz Napierala			check umount $MNTDIR
625009ea47eSEdward Tomasz Napierala			check fsck -yF ufs $LUN0
626009ea47eSEdward Tomasz Napierala
627009ea47eSEdward Tomasz Napierala			check zpool create -f $ZFSPOOL $LUN0 $LUN1
628009ea47eSEdward Tomasz Napierala			check cd /$ZFSPOOL
629009ea47eSEdward Tomasz Napierala			printf "set number 10000\nrun\n" | check postmark
630009ea47eSEdward Tomasz Napierala			check cd -
631009ea47eSEdward Tomasz Napierala			check zpool destroy -f $ZFSPOOL
632009ea47eSEdward Tomasz Napierala			;;
633009ea47eSEdward Tomasz Napierala		*)
634009ea47eSEdward Tomasz Napierala			die "unsupported system"
635009ea47eSEdward Tomasz Napierala			;;
636009ea47eSEdward Tomasz Napierala	esac
637009ea47eSEdward Tomasz Napierala}
638009ea47eSEdward Tomasz Napierala
639009ea47eSEdward Tomasz Napieralatest_postgresql_freebsd() {
640009ea47eSEdward Tomasz Napierala	check newfs $LUN0
641009ea47eSEdward Tomasz Napierala	check mount -t ufs $LUN0 $MNTDIR
642009ea47eSEdward Tomasz Napierala	check chown pgsql $MNTDIR
643009ea47eSEdward Tomasz Napierala	check chmod 755 $MNTDIR
644009ea47eSEdward Tomasz Napierala	check cd /
645009ea47eSEdward Tomasz Napierala	# XXX: How to make 'check' work here?
646009ea47eSEdward Tomasz Napierala	su -m pgsql -c "initdb -D $MNTDIR/db"
647009ea47eSEdward Tomasz Napierala	su -m pgsql -c "pg_ctl -D $MNTDIR/db -l /tmp/log start"
648009ea47eSEdward Tomasz Napierala	check sleep 10
649009ea47eSEdward Tomasz Napierala	su -m pgsql -c "pgbench -i postgres"
650009ea47eSEdward Tomasz Napierala	su -m pgsql -c "pgbench -t 10000 postgres"
651009ea47eSEdward Tomasz Napierala	su -m pgsql -c "pg_ctl -D $MNTDIR/db stop"
652009ea47eSEdward Tomasz Napierala	check cd -
653009ea47eSEdward Tomasz Napierala	check umount $MNTDIR
654009ea47eSEdward Tomasz Napierala	check fsck -t ufs $LUN0
655009ea47eSEdward Tomasz Napierala
656009ea47eSEdward Tomasz Napierala	check zpool create -f $ZFSPOOL $LUN0 $LUN1 $LUN2 $LUN3
657009ea47eSEdward Tomasz Napierala	check chown pgsql /$ZFSPOOL
658009ea47eSEdward Tomasz Napierala	check chmod 755 /$ZFSPOOL
659009ea47eSEdward Tomasz Napierala	check cd /
660009ea47eSEdward Tomasz Napierala	# XXX: How to make 'check' work here?
661009ea47eSEdward Tomasz Napierala	su -m pgsql -c "initdb -D /$ZFSPOOL/db"
662009ea47eSEdward Tomasz Napierala	su -m pgsql -c "pg_ctl -D /$ZFSPOOL/db -l /tmp/log start"
663009ea47eSEdward Tomasz Napierala	check sleep 10
664009ea47eSEdward Tomasz Napierala	su -m pgsql -c "pgbench -i postgres"
665009ea47eSEdward Tomasz Napierala	su -m pgsql -c "pgbench -t 10000 postgres"
666009ea47eSEdward Tomasz Napierala	su -m pgsql -c "pg_ctl -D /$ZFSPOOL/db stop"
667009ea47eSEdward Tomasz Napierala	check cd -
668009ea47eSEdward Tomasz Napierala	check zpool destroy -f $ZFSPOOL
669009ea47eSEdward Tomasz Napierala}
670009ea47eSEdward Tomasz Napierala
671009ea47eSEdward Tomasz Napieralatest_postgresql_linux() {
672009ea47eSEdward Tomasz Napierala	yes | check mkfs $LUN0
673009ea47eSEdward Tomasz Napierala	check mount $LUN0 $MNTDIR
674009ea47eSEdward Tomasz Napierala	check chown postgres $MNTDIR
675009ea47eSEdward Tomasz Napierala	check chmod 755 $MNTDIR
676009ea47eSEdward Tomasz Napierala	check cd /
677009ea47eSEdward Tomasz Napierala	# XXX: How to make 'check' work here?
678009ea47eSEdward Tomasz Napierala	su -m postgres -c "initdb -D $MNTDIR/db"
679009ea47eSEdward Tomasz Napierala	su -m postgres -c "pg_ctl -D $MNTDIR/db -l /tmp/log start"
680009ea47eSEdward Tomasz Napierala	check sleep 5
681009ea47eSEdward Tomasz Napierala	su -m postgres -c "pgbench -i"
682009ea47eSEdward Tomasz Napierala	su -m postgres -c "pgbench -t 10000"
683009ea47eSEdward Tomasz Napierala	su -m postgres -c "pg_ctl -D $MNTDIR/db stop"
684009ea47eSEdward Tomasz Napierala	check cd -
685009ea47eSEdward Tomasz Napierala	check umount $MNTDIR
686009ea47eSEdward Tomasz Napierala	check fsck -f $LUN0
687009ea47eSEdward Tomasz Napierala
688009ea47eSEdward Tomasz Napierala	check mkfs.btrfs $LUN0 $LUN1 $LUN2 $LUN3
689009ea47eSEdward Tomasz Napierala	check mount $LUN0 $MNTDIR
690009ea47eSEdward Tomasz Napierala	check chown postgres $MNTDIR
691009ea47eSEdward Tomasz Napierala	check chmod 755 $MNTDIR
692009ea47eSEdward Tomasz Napierala	check cd /
693009ea47eSEdward Tomasz Napierala	su -m postgres -c "initdb -D $MNTDIR/db"
694009ea47eSEdward Tomasz Napierala	su -m postgres -c "pg_ctl -D $MNTDIR/db -l /tmp/log start"
695009ea47eSEdward Tomasz Napierala	check sleep 5
696009ea47eSEdward Tomasz Napierala	su -m postgres -c "pgbench -i"
697009ea47eSEdward Tomasz Napierala	su -m postgres -c "pgbench -t 10000"
698009ea47eSEdward Tomasz Napierala	su -m postgres -c "pg_ctl -D $MNTDIR/db stop"
699009ea47eSEdward Tomasz Napierala	check cd -
700009ea47eSEdward Tomasz Napierala	check umount $MNTDIR
701009ea47eSEdward Tomasz Napierala}
702009ea47eSEdward Tomasz Napierala
703009ea47eSEdward Tomasz Napieralatest_postgresql_solaris() {
704009ea47eSEdward Tomasz Napierala	PATH="$PATH:/usr/postgres/9.2-pgdg/bin" export PATH
705009ea47eSEdward Tomasz Napierala	yes | check newfs $LUN0
706009ea47eSEdward Tomasz Napierala	check mount -F ufs $LUN0 $MNTDIR
707009ea47eSEdward Tomasz Napierala	check chown postgres $MNTDIR
708009ea47eSEdward Tomasz Napierala	check chmod 755 $MNTDIR
709009ea47eSEdward Tomasz Napierala	check cd /
710009ea47eSEdward Tomasz Napierala	# XXX: How to make 'check' work here?
711009ea47eSEdward Tomasz Napierala	su postgres -c "initdb -D $MNTDIR/db"
712009ea47eSEdward Tomasz Napierala	su postgres -c "pg_ctl -D $MNTDIR/db -l /tmp/log start"
713009ea47eSEdward Tomasz Napierala	check sleep 10
714009ea47eSEdward Tomasz Napierala	su postgres -c "pgbench -i postgres"
715009ea47eSEdward Tomasz Napierala	su postgres -c "pgbench -t 10000 postgres"
716009ea47eSEdward Tomasz Napierala	su postgres -c "pg_ctl -D $MNTDIR/db stop"
717009ea47eSEdward Tomasz Napierala	check cd -
718009ea47eSEdward Tomasz Napierala	check umount $MNTDIR
719009ea47eSEdward Tomasz Napierala	check fsck -yF ufs $LUN0
720009ea47eSEdward Tomasz Napierala
721009ea47eSEdward Tomasz Napierala	check zpool create -f $ZFSPOOL $LUN0 $LUN1 $LUN2 $LUN3
722009ea47eSEdward Tomasz Napierala	check chown postgres /$ZFSPOOL
723009ea47eSEdward Tomasz Napierala	check chmod 755 /$ZFSPOOL
724009ea47eSEdward Tomasz Napierala	check cd /
725009ea47eSEdward Tomasz Napierala	# XXX: How to make 'check' work here?
726009ea47eSEdward Tomasz Napierala	su postgres -c "initdb -D /$ZFSPOOL/db"
727009ea47eSEdward Tomasz Napierala	su postgres -c "pg_ctl -D /$ZFSPOOL/db -l /tmp/log start"
728009ea47eSEdward Tomasz Napierala	check sleep 10
729009ea47eSEdward Tomasz Napierala	su postgres -c "pgbench -i postgres"
730009ea47eSEdward Tomasz Napierala	su postgres -c "pgbench -t 10000 postgres"
731009ea47eSEdward Tomasz Napierala	su postgres -c "pg_ctl -D /$ZFSPOOL/db stop"
732009ea47eSEdward Tomasz Napierala	check cd -
733009ea47eSEdward Tomasz Napierala	check zpool destroy -f $ZFSPOOL
734009ea47eSEdward Tomasz Napierala}
735009ea47eSEdward Tomasz Napierala
736009ea47eSEdward Tomasz Napieralatest_postgresql() {
737009ea47eSEdward Tomasz Napierala	echo "*** postgresql ***"
738009ea47eSEdward Tomasz Napierala	case `uname` in
739009ea47eSEdward Tomasz Napierala		FreeBSD)
740009ea47eSEdward Tomasz Napierala			test_postgresql_freebsd
741009ea47eSEdward Tomasz Napierala			;;
742009ea47eSEdward Tomasz Napierala		Linux)
743009ea47eSEdward Tomasz Napierala			test_postgresql_linux
744009ea47eSEdward Tomasz Napierala			;;
745009ea47eSEdward Tomasz Napierala		SunOS)
746009ea47eSEdward Tomasz Napierala			test_postgresql_solaris
747009ea47eSEdward Tomasz Napierala			;;
748009ea47eSEdward Tomasz Napierala		*)
749009ea47eSEdward Tomasz Napierala			die "unsupported system"
750009ea47eSEdward Tomasz Napierala			;;
751009ea47eSEdward Tomasz Napierala	esac
752009ea47eSEdward Tomasz Napierala}
753009ea47eSEdward Tomasz Napierala
754009ea47eSEdward Tomasz Napieralatest_detach() {
755009ea47eSEdward Tomasz Napierala	echo "*** detach ***"
756009ea47eSEdward Tomasz Napierala	case `uname` in
757009ea47eSEdward Tomasz Napierala		FreeBSD)
758009ea47eSEdward Tomasz Napierala			case `uname -r` in
759009ea47eSEdward Tomasz Napierala				9*)
760009ea47eSEdward Tomasz Napierala					echo "*** detaching not supported on FreeBSD 9 ***"
761009ea47eSEdward Tomasz Napierala					echo "*** please reboot the initiator VM before trying to run this script again ***"
762009ea47eSEdward Tomasz Napierala					;;
763009ea47eSEdward Tomasz Napierala				*)
764009ea47eSEdward Tomasz Napierala					check iscsictl -Ra
765009ea47eSEdward Tomasz Napierala					;;
766009ea47eSEdward Tomasz Napierala			esac
767009ea47eSEdward Tomasz Napierala			;;
768009ea47eSEdward Tomasz Napierala		Linux)
769009ea47eSEdward Tomasz Napierala			check iscsiadm -m node --logout
770009ea47eSEdward Tomasz Napierala			;;
771009ea47eSEdward Tomasz Napierala		SunOS)
772009ea47eSEdward Tomasz Napierala			check iscsiadm remove static-config $TARGET1,$TARGETIP
773009ea47eSEdward Tomasz Napierala			;;
774009ea47eSEdward Tomasz Napierala		*)
775009ea47eSEdward Tomasz Napierala			die "unsupported system"
776009ea47eSEdward Tomasz Napierala			;;
777009ea47eSEdward Tomasz Napierala	esac
778009ea47eSEdward Tomasz Napierala}
779009ea47eSEdward Tomasz Napierala
780009ea47eSEdward Tomasz Napieralabanner
781009ea47eSEdward Tomasz Napieralatest_discovery
782009ea47eSEdward Tomasz Napieralatest_attach
783009ea47eSEdward Tomasz Napieralatest_newfs
784009ea47eSEdward Tomasz Napieralatest_cp
785009ea47eSEdward Tomasz Napieralatest_bonnie
786009ea47eSEdward Tomasz Napieralatest_iozone
787009ea47eSEdward Tomasz Napieralatest_postmark
788009ea47eSEdward Tomasz Napieralatest_postgresql
789009ea47eSEdward Tomasz Napieralatest_detach
790009ea47eSEdward Tomasz Napierala
791009ea47eSEdward Tomasz Napieralaecho "*** done ***"
792009ea47eSEdward Tomasz Napierala
793