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