1#!/bin/sh 2# 3# Copyright (c) 2012 The FreeBSD Foundation 4# 5# This software was developed by Edward Tomasz Napierala under sponsorship 6# from the FreeBSD Foundation. 7# 8# Redistribution and use in source and binary forms, with or without 9# modification, are permitted provided that the following conditions 10# are met: 11# 1. Redistributions of source code must retain the above copyright 12# notice, this list of conditions and the following disclaimer. 13# 2. Redistributions in binary form must reproduce the above copyright 14# notice, this list of conditions and the following disclaimer in the 15# documentation and/or other materials provided with the distribution. 16# 17# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27# SUCH DAMAGE. 28# 29# $FreeBSD$ 30# 31 32# 33# This expects that the iSCSI server being tested is at $TARGETIP and exports 34# two targets: $TARGET1 and $TARGET2; the former requiring no authentication, 35# and the latter using CHAP with user $USER and secret $SECRET. Discovery 36# must be permitted without authentication. Each target must contain exactly 37# two LUNs, 4GB each. For example, ctl.conf(5) should look like this: 38# 39# auth-group meh { 40# chap user secretsecret 41# } 42# 43# portal-group meh { 44# listen 0.0.0.0 45# discovery-auth-group no-authentication 46# } 47# 48# target iqn.2012-06.com.example:1 { 49# auth-group no-authentication 50# portal-group meh 51# lun 0 { 52# path /var/tmp/example_t1l0 53# size 4G 54# } 55# lun 1 { 56# path /var/tmp/example_t1l1 57# size 4G 58# } 59# } 60# 61# target iqn.2012-06.com.example:2 { 62# auth-group meh 63# portal-group meh 64# lun 0 { 65# path /var/tmp/example_t2l0 66# size 4G 67# } 68# lun 1 { 69# path /var/tmp/example_t2l1 70# size 4G 71# } 72# } 73# 74# Remember to create the backing files (/var/tmp/example_t1l0 etcc) 75# 76# On the initiator, $MNTDIR will be used for testing. 77# 78 79TARGETIP=192.168.56.101 80TARGET1=iqn.2012-06.com.example:1 81TARGET2=iqn.2012-06.com.example:2 82USER=user 83SECRET=secretsecret 84MNTDIR=/mnt 85TMPDIR=/tmp 86 87die() { 88 echo "$*" 89 exit 1 90} 91 92case `uname` in 93 FreeBSD) 94 LUN0=/dev/da0 95 LUN1=/dev/da1 96 LUN2=/dev/da2 97 LUN3=/dev/da3 98 ZFSPOOL=iscsipool 99 ;; 100 Linux) 101 LUN0=/dev/sdb 102 LUN1=/dev/sdc 103 LUN2=/dev/sdd 104 LUN3=/dev/sde 105 ;; 106 SunOS) 107 # LUN names are being set later, during attach. 108 ZFSPOOL=iscsipool 109 ;; 110 *) 111 die "unsupported system" 112 ;; 113esac 114 115check() { 116 echo "# $@" > /dev/stderr 117 $@ || die "$@ failed" 118} 119 120banner() { 121 echo "Will try to attach to $TARGET1 and $TARGET2 on $TARGETIP," 122 echo "user $USER, secret $SECRET. Will use mountpoint $MNTDIR, temporary dir $TMPDIR," 123 if [ -n "$LUN0" ]; then 124 echo "scratch disks $LUN0, $LUN1, $LUN2, $LUN3." 125 else 126 echo "scratch disks unknown at this stage." 127 fi 128 echo 129 echo "This script is NOT safe to run on multiuser system." 130 echo 131 echo "Press ^C to interrupt; will proceed in 5 seconds." 132 sleep 5 133} 134 135test_discovery_freebsd_9() { 136 kldload iscsi_initiator 137 check iscontrol -dt $TARGETIP > $TMPDIR/discovered 138 cat $TMPDIR/discovered 139 echo "TargetName=$TARGET1" > $TMPDIR/expected 140 echo "TargetName=$TARGET2" >> $TMPDIR/expected 141 check cmp $TMPDIR/expected $TMPDIR/discovered 142 rm -f $TMPDIR/expected $TMPDIR/discovered 143} 144 145test_discovery_freebsd() { 146 /etc/rc.d/iscsid onestart 147 check iscsictl -Ad $TARGETIP 148 sleep 1 149 iscsictl | awk '{ print $1 }' | sort > $TMPDIR/discovered 150 printf "Target\n$TARGET1\n$TARGET2\n" | sort > $TMPDIR/expected 151 check cmp $TMPDIR/expected $TMPDIR/discovered 152 rm -f $TMPDIR/expected $TMPDIR/discovered 153 check iscsictl -Ra 154 sleep 1 155} 156 157test_discovery_linux() { 158 cat > /etc/iscsi/iscsid.conf << END 159 160discovery.sendtargets.auth.authmethod = None 161node.startup = manual 162 163END 164 165 check iscsiadm -m discovery -t sendtargets -p $TARGETIP > $TMPDIR/discovered 166 cat $TMPDIR/discovered 167 echo "$TARGETIP:3260,-1 $TARGET1" > $TMPDIR/expected 168 echo "$TARGETIP:3260,-1 $TARGET2" >> $TMPDIR/expected 169 check cmp $TMPDIR/expected $TMPDIR/discovered 170 rm -f $TMPDIR/expected $TMPDIR/discovered 171 172} 173 174test_discovery_solaris() { 175 check iscsiadm add discovery-address $TARGETIP 176 check iscsiadm modify discovery --sendtargets enable 177 check iscsiadm modify discovery --static enable 178 check iscsiadm list target | awk '/^Target/ { print $2 }' | sort > $TMPDIR/discovered 179 check iscsiadm remove discovery-address $TARGETIP 180 cat $TMPDIR/discovered 181 echo "$TARGET1" > $TMPDIR/expected 182 echo "$TARGET2" >> $TMPDIR/expected 183 check cmp $TMPDIR/expected $TMPDIR/discovered 184 rm -f $TMPDIR/expected $TMPDIR/discovered 185} 186 187test_discovery() { 188 echo "*** discovery test ***" 189 case `uname` in 190 FreeBSD) 191 case `uname -r` in 192 9*) 193 test_discovery_freebsd_9 194 ;; 195 *) 196 test_discovery_freebsd 197 ;; 198 esac 199 ;; 200 Linux) 201 test_discovery_linux 202 ;; 203 SunOS) 204 test_discovery_solaris 205 ;; 206 *) 207 die "unsupported system" 208 ;; 209 esac 210} 211 212test_attach_freebsd_9() { 213 [ ! -e LUN0 ] || die "$LUN0 already exists" 214 [ ! -e LUN1 ] || die "$LUN1 already exists" 215 [ ! -e LUN2 ] || die "$LUN2 already exists" 216 [ ! -e LUN3 ] || die "$LUN3 already exists" 217 218 cat > $TMPDIR/iscsi.conf << END 219 220target1 { 221 TargetName = $TARGET1 222 TargetAddress = $TARGETIP 223} 224 225target2 { 226 TargetName = $TARGET2 227 TargetAddress = $TARGETIP 228 AuthMethod = CHAP 229 chapIName = $USER 230 chapSecret = $SECRET 231} 232 233END 234 check iscontrol -c $TMPDIR/iscsi.conf -n target1 235 check iscontrol -c $TMPDIR/iscsi.conf -n target2 236 237 echo "Waiting 10 seconds for attach to complete." 238 sleep 10 239 240 [ -e $LUN0 ] || die "$LUN0 doesn't exist" 241 [ -e $LUN1 ] || die "$LUN1 doesn't exist" 242 [ -e $LUN2 ] || die "$LUN2 doesn't exist" 243 [ -e $LUN3 ] || die "$LUN3 doesn't exist" 244 245 rm $TMPDIR/iscsi.conf 246} 247 248test_attach_freebsd() { 249 [ ! -e LUN0 ] || die "$LUN0 already exists" 250 [ ! -e LUN1 ] || die "$LUN1 already exists" 251 [ ! -e LUN2 ] || die "$LUN2 already exists" 252 [ ! -e LUN3 ] || die "$LUN3 already exists" 253 254 cat > $TMPDIR/iscsi.conf << END 255 256target1 { 257 TargetName = $TARGET1 258 TargetAddress = $TARGETIP 259} 260 261target2 { 262 TargetName = $TARGET2 263 TargetAddress = $TARGETIP 264 AuthMethod = CHAP 265 chapIName = $USER 266 chapSecret = $SECRET 267} 268 269END 270 check iscsictl -Ac $TMPDIR/iscsi.conf -n target1 271 check iscsictl -Ac $TMPDIR/iscsi.conf -n target2 272 273 echo "Waiting 10 seconds for attach to complete." 274 sleep 10 275 276 [ -e $LUN0 ] || die "$LUN0 doesn't exist" 277 [ -e $LUN1 ] || die "$LUN1 doesn't exist" 278 [ -e $LUN2 ] || die "$LUN2 doesn't exist" 279 [ -e $LUN3 ] || die "$LUN3 doesn't exist" 280 281 rm $TMPDIR/iscsi.conf 282} 283 284test_attach_linux() { 285 check iscsiadm --mode node --targetname "$TARGET1" -p "$TARGETIP:3260" --op=update --name node.session.auth.authmethod --value=None 286 check iscsiadm --mode node --targetname "$TARGET1" -p "$TARGETIP:3260" --login 287 check iscsiadm --mode node --targetname "$TARGET2" -p "$TARGETIP:3260" --op=update --name node.session.auth.authmethod --value=CHAP 288 check iscsiadm --mode node --targetname "$TARGET2" -p "$TARGETIP:3260" --op=update --name node.session.auth.username --value="$USER" 289 check iscsiadm --mode node --targetname "$TARGET2" -p "$TARGETIP:3260" --op=update --name node.session.auth.password --value="$SECRET" 290 check iscsiadm --mode node --targetname "$TARGET2" -p "$TARGETIP:3260" --login 291} 292 293test_attach_solaris() { 294 # XXX: How to enter the CHAP secret from the script? For now, 295 # just use the first target, and thus first two LUNs. 296 #check iscsiadm modify initiator-node --authentication CHAP 297 #check iscsiadm modify initiator-node --CHAP-name $USER 298 #check iscsiadm modify initiator-node --CHAP-secret $SECRET 299 iscsiadm add static-config $TARGET1,$TARGETIP 300 LUN0=`iscsiadm list target -S | awk '/OS Device Name/ { print $4 }' | sed -n 1p` 301 LUN1=`iscsiadm list target -S | awk '/OS Device Name/ { print $4 }' | sed -n 2p` 302 LUN0=`echo ${LUN0}2 | sed 's/rdsk/dsk/'` 303 LUN1=`echo ${LUN1}2 | sed 's/rdsk/dsk/'` 304 [ -n "$LUN0" -a -n "LUN1" ] || die "attach failed" 305 echo "Scratch disks: $LUN0, $LUN1" 306} 307 308test_attach() { 309 echo "*** attach test ***" 310 case `uname` in 311 FreeBSD) 312 case `uname -r` in 313 9*) 314 test_attach_freebsd_9 315 ;; 316 *) 317 test_attach_freebsd 318 ;; 319 esac 320 ;; 321 Linux) 322 test_attach_linux 323 ;; 324 SunOS) 325 test_attach_solaris 326 ;; 327 *) 328 die "unsupported system" 329 ;; 330 esac 331} 332 333test_newfs_freebsd_ufs() { 334 echo "*** UFS filesystem smoke test ***" 335 check newfs $LUN0 336 check newfs $LUN1 337 check newfs $LUN2 338 check newfs $LUN3 339 check fsck -t ufs $LUN0 340 check fsck -t ufs $LUN1 341 check fsck -t ufs $LUN2 342 check fsck -t ufs $LUN3 343} 344 345test_newfs_freebsd_zfs() { 346 echo "*** ZFS filesystem smoke test ***" 347 check zpool create -f $ZFSPOOL $LUN0 $LUN1 $LUN2 $LUN3 348 check zpool destroy -f $ZFSPOOL 349} 350 351test_newfs_linux_ext4() { 352 echo "*** ext4 filesystem smoke test ***" 353 yes | check mkfs $LUN0 354 yes | check mkfs $LUN1 355 yes | check mkfs $LUN2 356 yes | check mkfs $LUN3 357 check fsck -f $LUN0 358 check fsck -f $LUN1 359 check fsck -f $LUN2 360 check fsck -f $LUN3 361} 362 363test_newfs_linux_btrfs() { 364 echo "*** btrfs filesystem smoke test ***" 365 check mkfs.btrfs $LUN0 $LUN1 $LUN2 $LUN3 366} 367 368 369test_newfs_solaris_ufs() { 370 echo "*** UFS filesystem smoke test ***" 371 yes | check newfs $LUN0 372 yes | check newfs $LUN1 373 check fsck -F ufs $LUN0 374 check fsck -F ufs $LUN1 375} 376 377test_newfs_solaris_zfs() { 378 echo "*** ZFS filesystem smoke test ***" 379 check zpool create -f $ZFSPOOL $LUN0 $LUN1 380 check zpool destroy -f $ZFSPOOL 381} 382 383test_newfs() { 384 case `uname` in 385 FreeBSD) 386 test_newfs_freebsd_ufs 387 test_newfs_freebsd_zfs 388 ;; 389 Linux) 390 test_newfs_linux_ext4 391 test_newfs_linux_btrfs 392 ;; 393 SunOS) 394 test_newfs_solaris_ufs 395 test_newfs_solaris_zfs 396 ;; 397 *) 398 die "unsupported system" 399 ;; 400 esac 401} 402 403test_cp() { 404 echo "*** basic filesystem test ***" 405 case `uname` in 406 FreeBSD) 407 check newfs $LUN0 408 check mount -t ufs $LUN0 $MNTDIR 409 check dd if=/dev/urandom of=$MNTDIR/1 bs=1m count=500 410 check cp $MNTDIR/1 $MNTDIR/2 411 check umount $MNTDIR 412 check fsck -t ufs $LUN0 413 check mount -t ufs $LUN0 $MNTDIR 414 check cmp $MNTDIR/1 $MNTDIR/2 415 check umount $MNTDIR 416 417 check zpool create -f $ZFSPOOL $LUN0 $LUN1 $LUN2 $LUN3 418 check dd if=/dev/urandom of=/$ZFSPOOL/1 bs=1m count=500 419 check zpool scrub $ZFSPOOL 420 check cp /$ZFSPOOL/1 /$ZFSPOOL/2 421 check cmp /$ZFSPOOL/1 /$ZFSPOOL/2 422 check zpool destroy -f $ZFSPOOL 423 ;; 424 Linux) 425 yes | check mkfs $LUN0 426 check mount $LUN0 $MNTDIR 427 check dd if=/dev/urandom of=$MNTDIR/1 bs=1M count=500 428 check cp $MNTDIR/1 $MNTDIR/2 429 check umount $MNTDIR 430 check fsck -f $LUN0 431 check mount $LUN0 $MNTDIR 432 check cmp $MNTDIR/1 $MNTDIR/2 433 check umount $MNTDIR 434 435 check mkfs.btrfs $LUN0 $LUN1 $LUN2 $LUN3 436 check mount $LUN0 $MNTDIR 437 check dd if=/dev/urandom of=$MNTDIR/1 bs=1M count=500 438 check cp $MNTDIR/1 $MNTDIR/2 439 check umount $MNTDIR 440 check mount $LUN0 $MNTDIR 441 check cmp $MNTDIR/1 $MNTDIR/2 442 check umount $MNTDIR 443 ;; 444 SunOS) 445 yes | check newfs $LUN0 446 check mount -F ufs $LUN0 $MNTDIR 447 check dd if=/dev/urandom of=$MNTDIR/1 bs=1024k count=500 448 check cp $MNTDIR/1 $MNTDIR/2 449 check umount $MNTDIR 450 check fsck -yF ufs $LUN0 451 check mount -F ufs $LUN0 $MNTDIR 452 check cmp $MNTDIR/1 $MNTDIR/2 453 check umount $MNTDIR 454 455 check zpool create -f $ZFSPOOL $LUN0 $LUN1 456 check dd if=/dev/urandom of=/$ZFSPOOL/1 bs=1024k count=500 457 check zpool scrub $ZFSPOOL 458 check cp /$ZFSPOOL/1 /$ZFSPOOL/2 459 check cmp /$ZFSPOOL/1 /$ZFSPOOL/2 460 check zpool destroy -f $ZFSPOOL 461 ;; 462 *) 463 die "unsupported system" 464 ;; 465 esac 466} 467 468test_bonnie() { 469 echo "*** bonnie++ ***" 470 case `uname` in 471 FreeBSD) 472 check newfs $LUN0 473 check mount -t ufs $LUN0 $MNTDIR 474 check cd $MNTDIR 475 check bonnie++ -u root -s 2g -r 1g -n0 476 check bonnie++ -u root -s 0 477 check cd - 478 check umount $MNTDIR 479 check fsck -t ufs $LUN0 480 481 check zpool create -f $ZFSPOOL $LUN0 $LUN1 $LUN2 $LUN3 482 check cd /$ZFSPOOL 483 check bonnie++ -u root -s 2g -r 1g -n0 484 check bonnie++ -u root -s 0 485 check cd - 486 check zpool destroy -f $ZFSPOOL 487 ;; 488 Linux) 489 yes | check mkfs $LUN0 490 check mount $LUN0 $MNTDIR 491 check cd $MNTDIR 492 check bonnie++ -u root -s 2g -r 1g -n0 493 check bonnie++ -u root -s 0 494 check cd - 495 check umount $MNTDIR 496 check fsck -f $LUN0 497 498 check mkfs.btrfs $LUN0 $LUN1 $LUN2 $LUN3 499 check mount $LUN0 $MNTDIR 500 check cd $MNTDIR 501 check bonnie++ -u root -s 2g -r 1g -n0 502 check bonnie++ -u root -s 0 503 check cd - 504 check umount $MNTDIR 505 ;; 506 SunOS) 507 yes | check newfs $LUN0 508 check mount -F ufs $LUN0 $MNTDIR 509 check cd $MNTDIR 510 check bonnie++ -u root -s 2g -r 1g -n0 511 check bonnie++ -u root -s 0 512 check cd - 513 check umount $MNTDIR 514 check fsck -yF ufs $LUN0 515 516 check zpool create -f $ZFSPOOL $LUN0 $LUN1 517 check cd /$ZFSPOOL 518 check bonnie++ -u root -s 2g -r 1g -n0 519 check bonnie++ -u root -s 0 520 check cd - 521 check zpool destroy -f $ZFSPOOL 522 ;; 523 *) 524 die "unsupported system" 525 ;; 526 esac 527} 528 529test_iozone() { 530 echo "*** iozone ***" 531 case `uname` in 532 FreeBSD) 533 check newfs $LUN0 534 check mount -t ufs $LUN0 $MNTDIR 535 check cd $MNTDIR 536 check iozone -a 537 check cd - 538 check umount $MNTDIR 539 check fsck -t ufs $LUN0 540 541 check zpool create -f $ZFSPOOL $LUN0 $LUN1 $LUN2 $LUN3 542 check cd /$ZFSPOOL 543 check iozone -a 544 check cd - 545 check zpool destroy -f $ZFSPOOL 546 ;; 547 Linux) 548 yes | check mkfs $LUN0 549 check mount $LUN0 $MNTDIR 550 check cd $MNTDIR 551 check iozone -a 552 check cd - 553 check umount $MNTDIR 554 check fsck -f $LUN0 555 556 check mkfs.btrfs $LUN0 $LUN1 $LUN2 $LUN3 557 check mount $LUN0 $MNTDIR 558 check cd $MNTDIR 559 check iozone -a 560 check cd - 561 check umount $MNTDIR 562 ;; 563 SunOS) 564 yes | check newfs $LUN0 565 check mount -F ufs $LUN0 $MNTDIR 566 check cd $MNTDIR 567 check iozone -a 568 check cd - 569 check umount $MNTDIR 570 check fsck -yF ufs $LUN0 571 572 check zpool create -f $ZFSPOOL $LUN0 $LUN1 573 check cd /$ZFSPOOL 574 check iozone -a 575 check cd - 576 check zpool destroy -f $ZFSPOOL 577 ;; 578 *) 579 die "unsupported system" 580 ;; 581 esac 582 583} 584 585test_postmark() { 586 echo "*** postmark ***" 587 case `uname` in 588 FreeBSD) 589 check newfs $LUN0 590 check mount -t ufs $LUN0 $MNTDIR 591 check cd $MNTDIR 592 printf "set number 10000\nrun\n" | check postmark 593 check cd - 594 check umount $MNTDIR 595 check fsck -t ufs $LUN0 596 597 check zpool create -f $ZFSPOOL $LUN0 $LUN1 $LUN2 $LUN3 598 check cd /$ZFSPOOL 599 printf "set number 10000\nrun\n" | check postmark 600 check cd - 601 check zpool destroy -f $ZFSPOOL 602 ;; 603 Linux) 604 yes | check mkfs $LUN0 605 check mount $LUN0 $MNTDIR 606 check cd $MNTDIR 607 printf "set number 10000\nrun\n" | check postmark 608 check cd - 609 check umount $MNTDIR 610 check fsck -f $LUN0 611 612 check mkfs.btrfs $LUN0 $LUN1 $LUN2 $LUN3 613 check mount $LUN0 $MNTDIR 614 check cd $MNTDIR 615 printf "set number 10000\nrun\n" | check postmark 616 check cd - 617 check umount $MNTDIR 618 ;; 619 SunOS) 620 yes | check newfs $LUN0 621 check mount -F ufs $LUN0 $MNTDIR 622 check cd $MNTDIR 623 printf "set number 10000\nrun\n" | check postmark 624 check cd - 625 check umount $MNTDIR 626 check fsck -yF ufs $LUN0 627 628 check zpool create -f $ZFSPOOL $LUN0 $LUN1 629 check cd /$ZFSPOOL 630 printf "set number 10000\nrun\n" | check postmark 631 check cd - 632 check zpool destroy -f $ZFSPOOL 633 ;; 634 *) 635 die "unsupported system" 636 ;; 637 esac 638} 639 640test_postgresql_freebsd() { 641 check newfs $LUN0 642 check mount -t ufs $LUN0 $MNTDIR 643 check chown pgsql $MNTDIR 644 check chmod 755 $MNTDIR 645 check cd / 646 # XXX: How to make 'check' work here? 647 su -m pgsql -c "initdb -D $MNTDIR/db" 648 su -m pgsql -c "pg_ctl -D $MNTDIR/db -l /tmp/log start" 649 check sleep 10 650 su -m pgsql -c "pgbench -i postgres" 651 su -m pgsql -c "pgbench -t 10000 postgres" 652 su -m pgsql -c "pg_ctl -D $MNTDIR/db stop" 653 check cd - 654 check umount $MNTDIR 655 check fsck -t ufs $LUN0 656 657 check zpool create -f $ZFSPOOL $LUN0 $LUN1 $LUN2 $LUN3 658 check chown pgsql /$ZFSPOOL 659 check chmod 755 /$ZFSPOOL 660 check cd / 661 # XXX: How to make 'check' work here? 662 su -m pgsql -c "initdb -D /$ZFSPOOL/db" 663 su -m pgsql -c "pg_ctl -D /$ZFSPOOL/db -l /tmp/log start" 664 check sleep 10 665 su -m pgsql -c "pgbench -i postgres" 666 su -m pgsql -c "pgbench -t 10000 postgres" 667 su -m pgsql -c "pg_ctl -D /$ZFSPOOL/db stop" 668 check cd - 669 check zpool destroy -f $ZFSPOOL 670} 671 672test_postgresql_linux() { 673 yes | check mkfs $LUN0 674 check mount $LUN0 $MNTDIR 675 check chown postgres $MNTDIR 676 check chmod 755 $MNTDIR 677 check cd / 678 # XXX: How to make 'check' work here? 679 su -m postgres -c "initdb -D $MNTDIR/db" 680 su -m postgres -c "pg_ctl -D $MNTDIR/db -l /tmp/log start" 681 check sleep 5 682 su -m postgres -c "pgbench -i" 683 su -m postgres -c "pgbench -t 10000" 684 su -m postgres -c "pg_ctl -D $MNTDIR/db stop" 685 check cd - 686 check umount $MNTDIR 687 check fsck -f $LUN0 688 689 check mkfs.btrfs $LUN0 $LUN1 $LUN2 $LUN3 690 check mount $LUN0 $MNTDIR 691 check chown postgres $MNTDIR 692 check chmod 755 $MNTDIR 693 check cd / 694 su -m postgres -c "initdb -D $MNTDIR/db" 695 su -m postgres -c "pg_ctl -D $MNTDIR/db -l /tmp/log start" 696 check sleep 5 697 su -m postgres -c "pgbench -i" 698 su -m postgres -c "pgbench -t 10000" 699 su -m postgres -c "pg_ctl -D $MNTDIR/db stop" 700 check cd - 701 check umount $MNTDIR 702} 703 704test_postgresql_solaris() { 705 PATH="$PATH:/usr/postgres/9.2-pgdg/bin" export PATH 706 yes | check newfs $LUN0 707 check mount -F ufs $LUN0 $MNTDIR 708 check chown postgres $MNTDIR 709 check chmod 755 $MNTDIR 710 check cd / 711 # XXX: How to make 'check' work here? 712 su postgres -c "initdb -D $MNTDIR/db" 713 su postgres -c "pg_ctl -D $MNTDIR/db -l /tmp/log start" 714 check sleep 10 715 su postgres -c "pgbench -i postgres" 716 su postgres -c "pgbench -t 10000 postgres" 717 su postgres -c "pg_ctl -D $MNTDIR/db stop" 718 check cd - 719 check umount $MNTDIR 720 check fsck -yF ufs $LUN0 721 722 check zpool create -f $ZFSPOOL $LUN0 $LUN1 $LUN2 $LUN3 723 check chown postgres /$ZFSPOOL 724 check chmod 755 /$ZFSPOOL 725 check cd / 726 # XXX: How to make 'check' work here? 727 su postgres -c "initdb -D /$ZFSPOOL/db" 728 su postgres -c "pg_ctl -D /$ZFSPOOL/db -l /tmp/log start" 729 check sleep 10 730 su postgres -c "pgbench -i postgres" 731 su postgres -c "pgbench -t 10000 postgres" 732 su postgres -c "pg_ctl -D /$ZFSPOOL/db stop" 733 check cd - 734 check zpool destroy -f $ZFSPOOL 735} 736 737test_postgresql() { 738 echo "*** postgresql ***" 739 case `uname` in 740 FreeBSD) 741 test_postgresql_freebsd 742 ;; 743 Linux) 744 test_postgresql_linux 745 ;; 746 SunOS) 747 test_postgresql_solaris 748 ;; 749 *) 750 die "unsupported system" 751 ;; 752 esac 753} 754 755test_detach() { 756 echo "*** detach ***" 757 case `uname` in 758 FreeBSD) 759 case `uname -r` in 760 9*) 761 echo "*** detaching not supported on FreeBSD 9 ***" 762 echo "*** please reboot the initiator VM before trying to run this script again ***" 763 ;; 764 *) 765 check iscsictl -Ra 766 ;; 767 esac 768 ;; 769 Linux) 770 check iscsiadm -m node --logout 771 ;; 772 SunOS) 773 check iscsiadm remove static-config $TARGET1,$TARGETIP 774 ;; 775 *) 776 die "unsupported system" 777 ;; 778 esac 779} 780 781banner 782test_discovery 783test_attach 784test_newfs 785test_cp 786test_bonnie 787test_iozone 788test_postmark 789test_postgresql 790test_detach 791 792echo "*** done ***" 793 794