diff options
| -rwxr-xr-x | run-tests.sh | 20 | ||||
| -rw-r--r-- | tests/bugs/bug-1099890.t | 19 | ||||
| -rw-r--r-- | tests/bugs/bug-858488-min-free-disk.t | 15 | ||||
| -rw-r--r-- | tests/bugs/bug-948729/bug-948729-force.t | 55 | ||||
| -rw-r--r-- | tests/bugs/bug-948729/bug-948729-mode-script.t | 29 | ||||
| -rw-r--r-- | tests/bugs/bug-948729/bug-948729.t | 30 | ||||
| -rwxr-xr-x | tests/features/weighted-rebalance.t | 14 | ||||
| -rw-r--r-- | tests/include.rc | 150 | 
8 files changed, 267 insertions, 65 deletions
diff --git a/run-tests.sh b/run-tests.sh index 823814db85f..f95c8f978cb 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -31,10 +31,12 @@ function check_dependencies()          MISSING="$MISSING rpmbuild"      fi -    # Check for nfs-utils -    env mount.nfs -V > /dev/null 2>&1 -    if [ $? -ne 0 ]; then -        MISSING="$MISSING nfs-utils" +    # Check for nfs-utils (Linux-only: built-in NetBSD with different name) +    if [ "x`uname -s`" = "xLinux" ] ; then +      env mount.nfs -V > /dev/null 2>&1 +      if [ $? -ne 0 ]; then +          MISSING="$MISSING nfs-utils" +      fi      fi      # Check for the Perl Test Harness @@ -48,10 +50,12 @@ function check_dependencies()          MISSING="$MISSING json_verify"      fi -    # Check for XFS programs -    env mkfs.xfs -V > /dev/null 2>&1 -    if [ $? -ne 0 ]; then -        MISSING="$MISSING xfsprogs" +    # Check for XFS programs (Linux Only: NetBSD does without) +    if [ "x`uname -s`" = "xLinux" ] ; then +      env mkfs.xfs -V > /dev/null 2>&1 +      if [ $? -ne 0 ]; then +          MISSING="$MISSING xfsprogs" +      fi      fi      # Check for attr diff --git a/tests/bugs/bug-1099890.t b/tests/bugs/bug-1099890.t index a27d4e74fbf..c4be2cf56ba 100644 --- a/tests/bugs/bug-1099890.t +++ b/tests/bugs/bug-1099890.t @@ -17,16 +17,16 @@ TEST   pidof glusterd;  TEST   truncate -s 100M $B0/brick1  TEST   truncate -s 100M $B0/brick2 -TEST   L1=`losetup --find --show $B0/brick1` -TEST   mkfs.xfs $L1 +TEST   L1=`SETUP_LOOP $B0/brick1` +TEST   MKFS_LOOP $L1 -TEST   L2=`losetup --find --show $B0/brick2` -TEST   mkfs.xfs $L2 +TEST   L2=`SETUP_LOOP $B0/brick2` +TEST   MKFS_LOOP $L2  TEST   mkdir -p $B0/${V0}{1,2} -TEST   mount -t xfs $L1 $B0/${V0}1 -TEST   mount -t xfs $L2 $B0/${V0}2 +TEST   MOUNT_LOOP $L1 $B0/${V0}1 +TEST   MOUNT_LOOP $L2 $B0/${V0}2  # Create a plain distribute volume with 2 subvols.  TEST   $CLI volume create $V0 $H0:$B0/${V0}{1,2}; @@ -117,4 +117,9 @@ EXPECT "$V0-client-1" dht_get_linkto_target "$B0/${V0}1/zz"  EXPECT "1" is_dht_linkfile "$B0/${V0}1/zz" -cleanup; +force_umount $M0 +$CLI volume stop $V0 +UMOUNT_LOOP ${B0}/${V0}{1,2} +rm -f ${B0}/brick{1,2} + +cleanup diff --git a/tests/bugs/bug-858488-min-free-disk.t b/tests/bugs/bug-858488-min-free-disk.t index babb27c4e25..1933f707e9c 100644 --- a/tests/bugs/bug-858488-min-free-disk.t +++ b/tests/bugs/bug-858488-min-free-disk.t @@ -13,13 +13,13 @@ TEST $CLI volume info;  ## Lets create partitions for bricks  TEST truncate -s 100M $B0/brick1  TEST truncate -s 200M $B0/brick2 -TEST LO1=`losetup --find --show $B0/brick1` -TEST mkfs.xfs $LO1 -TEST LO2=`losetup --find --show $B0/brick2` -TEST mkfs.xfs $LO2 +TEST LO1=`SETUP_LOOP $B0/brick1` +TEST MKFS_LOOP $LO1 +TEST LO2=`SETUP_LOOP $B0/brick2` +TEST MKFS_LOOP $LO2  TEST mkdir -p $B0/${V0}1 $B0/${V0}2 -TEST mount -t xfs $LO1 $B0/${V0}1 -TEST mount -t xfs $LO2 $B0/${V0}2 +TEST MOUNT_LOOP $LO1 $B0/${V0}1 +TEST MOUNT_LOOP $LO2 $B0/${V0}2  ## Lets create volume  TEST $CLI volume create $V0 $H0:$B0/${V0}{1,2}; @@ -102,4 +102,7 @@ TEST $CLI volume stop $V0;  EXPECT 'Stopped' volinfo_field $V0 'Status';  $CLI volume delete $V0; +UMOUNT_LOOP ${B0}/${V0}{1,2} +rm -f ${B0}/brick{1,2} +  cleanup; diff --git a/tests/bugs/bug-948729/bug-948729-force.t b/tests/bugs/bug-948729/bug-948729-force.t index b68b8b88bdd..b4106a58736 100644 --- a/tests/bugs/bug-948729/bug-948729-force.t +++ b/tests/bugs/bug-948729/bug-948729-force.t @@ -1,6 +1,7 @@  #!/bin/bash  . $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc  . $(dirname $0)/../../cluster.rc  function check_peers { @@ -35,27 +36,27 @@ TEST truncate -s 16M $B4/brick4  TEST truncate -s 16M $B5/brick5  TEST truncate -s 16M $B6/brick6 -TEST LD1=`losetup --find --show $B1/brick1` -TEST mkfs.xfs $LD1 -TEST LD2=`losetup --find --show $B2/brick2` -TEST mkfs.xfs $LD2 -TEST LD3=`losetup --find --show $B3/brick3` -TEST mkfs.xfs $LD3 -TEST LD4=`losetup --find --show $B4/brick4` -TEST mkfs.xfs $LD4 -TEST LD5=`losetup --find --show $B5/brick5` -TEST mkfs.xfs $LD5 -TEST LD6=`losetup --find --show $B6/brick6` -TEST mkfs.xfs $LD6 +TEST LD1=`SETUP_LOOP $B1/brick1` +TEST MKFS_LOOP $LD1 +TEST LD2=`SETUP_LOOP $B2/brick2` +TEST MKFS_LOOP $LD2 +TEST LD3=`SETUP_LOOP $B3/brick3` +TEST MKFS_LOOP $LD3 +TEST LD4=`SETUP_LOOP $B4/brick4` +TEST MKFS_LOOP $LD4 +TEST LD5=`SETUP_LOOP $B5/brick5` +TEST MKFS_LOOP $LD5 +TEST LD6=`SETUP_LOOP $B6/brick6` +TEST MKFS_LOOP $LD6  mkdir -p $B1/$V0 $B2/$V0 $B3/$V0 $B4/$V0 $B5/$V0 $B6/$V0 -TEST mount -t xfs $LD1 $B1/$V0 -TEST mount -t xfs $LD2 $B2/$V0 -TEST mount -t xfs $LD3 $B3/$V0 -TEST mount -t xfs $LD4 $B4/$V0 -TEST mount -t xfs $LD5 $B5/$V0 -TEST mount -t xfs $LD6 $B6/$V0 +TEST MOUNT_LOOP $LD1 $B1/$V0 +TEST MOUNT_LOOP $LD2 $B2/$V0 +TEST MOUNT_LOOP $LD3 $B3/$V0 +TEST MOUNT_LOOP $LD4 $B4/$V0 +TEST MOUNT_LOOP $LD5 $B5/$V0 +TEST MOUNT_LOOP $LD6 $B6/$V0  #Case 0: Parent directory of the brick is absent  TEST ! $CLI1 volume create $V0 $H1:$B1/$V0/nonexistent/b1 $H2:$B2/$V0/nonexistent/b2 force @@ -81,4 +82,22 @@ TEST   $CLI1 volume add-brick $V2 $H1:$B4/$V0/brick3 force  rmdir /$uuid1 /$uuid2 /$uuid3; +$CLI volume stop $V0 +$CLI volume stop $V1 +$CLI volume stop $V2 + +UMOUNT_LOOP $B1/$V0 +UMOUNT_LOOP $B2/$V0 +UMOUNT_LOOP $B3/$V0 +UMOUNT_LOOP $B4/$V0 +UMOUNT_LOOP $B5/$V0 +UMOUNT_LOOP $B6/$V0 + +rm -f $B1/brick1 +rm -f $B2/brick2 +rm -f $B3/brick3 +rm -f $B4/brick4 +rm -f $B5/brick5 +rm -f $B6/brick6 +  cleanup; diff --git a/tests/bugs/bug-948729/bug-948729-mode-script.t b/tests/bugs/bug-948729/bug-948729-mode-script.t index 5ac133a5bfe..6264e18f1bd 100644 --- a/tests/bugs/bug-948729/bug-948729-mode-script.t +++ b/tests/bugs/bug-948729/bug-948729-mode-script.t @@ -1,6 +1,7 @@  #!/bin/bash  . $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc  . $(dirname $0)/../../cluster.rc  function check_peers { @@ -26,18 +27,18 @@ TEST truncate -s 16M $B1/brick1  TEST truncate -s 16M $B2/brick2  TEST truncate -s 16M $B3/brick3 -TEST LD1=`losetup --find --show $B1/brick1` -TEST mkfs.xfs $LD1 -TEST LD2=`losetup --find --show $B2/brick2` -TEST mkfs.xfs $LD2 -TEST LD3=`losetup --find --show $B3/brick3` -TEST mkfs.xfs $LD3 +TEST LD1=`SETUP_LOOP $B1/brick1` +TEST MKFS_LOOP $LD1 +TEST LD2=`SETUP_LOOP $B2/brick2` +TEST MKFS_LOOP $LD2 +TEST LD3=`SETUP_LOOP $B3/brick3` +TEST MKFS_LOOP $LD3  mkdir -p $B1/$V0 $B2/$V0 $B3/$V0 -TEST mount -t xfs $LD1 $B1/$V0 -TEST mount -t xfs $LD2 $B2/$V0 -TEST mount -t xfs $LD3 $B3/$V0 +TEST MOUNT_LOOP $LD1 $B1/$V0 +TEST MOUNT_LOOP $LD2 $B2/$V0 +TEST MOUNT_LOOP $LD3 $B3/$V0  cli1=$(echo $CLI1 | sed 's/ --wignore//') @@ -63,4 +64,14 @@ TEST   $cli1 volume add-brick $V0 $H1:$B3/$V0/brick3  #FIX-ME : replace-brick does not currently work in the newly introduced  #####cluster test framework +$CLI1 volume stop $V0 + +UMOUNT_LOOP $B1/$V0 +UMOUNT_LOOP $B2/$V0 +UMOUNT_LOOP $B3/$V0 + +rm -f  $B1/brick1 +rm -f  $B2/brick2 +rm -f  $B3/brick3 +  cleanup; diff --git a/tests/bugs/bug-948729/bug-948729.t b/tests/bugs/bug-948729/bug-948729.t index 8a0620a7d60..46cdb3d8e8c 100644 --- a/tests/bugs/bug-948729/bug-948729.t +++ b/tests/bugs/bug-948729/bug-948729.t @@ -1,6 +1,7 @@  #!/bin/bash  . $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc  . $(dirname $0)/../../cluster.rc  function check_peers { @@ -27,18 +28,18 @@ TEST truncate -s 16M $B1/brick1  TEST truncate -s 16M $B2/brick2  TEST truncate -s 16M $B3/brick3 -TEST LD1=`losetup --find --show $B1/brick1` -TEST mkfs.xfs $LD1 -TEST LD2=`losetup --find --show $B2/brick2` -TEST mkfs.xfs $LD2 -TEST LD3=`losetup --find --show $B3/brick3` -TEST mkfs.xfs $LD3 +TEST LD1=`SETUP_LOOP $B1/brick1` +TEST MKFS_LOOP $LD1 +TEST LD2=`SETUP_LOOP $B2/brick2` +TEST MKFS_LOOP $LD2 +TEST LD3=`SETUP_LOOP $B3/brick3` +TEST MKFS_LOOP $LD3  mkdir -p $B1/$V0 $B2/$V0 $B3/$V0 -TEST mount -t xfs $LD1 $B1/$V0 -TEST mount -t xfs $LD2 $B2/$V0 -TEST mount -t xfs $LD3 $B3/$V0 +TEST MOUNT_LOOP $LD1 $B1/$V0 +TEST MOUNT_LOOP $LD2 $B2/$V0 +TEST MOUNT_LOOP $LD3 $B3/$V0  #Tests without options 'mode=script' and 'wignore'  cli1=$(echo $CLI1 | sed 's/ --mode=script//') @@ -65,4 +66,15 @@ TEST   $cli1 volume add-brick $V0 $H1:$B3/$V0/brick3  #FIX-ME: Replace-brick does not work currently in the newly introduced cluster  #####test framework. +$CLI1 volume stop $V0 + +UMOUNT_LOOP $B1/$V0 +UMOUNT_LOOP $B2/$V0 +UMOUNT_LOOP $B3/$V0 + +rm -f  $B1/brick1 +rm -f  $B2/brick2 +rm -f  $B3/brick3 + +  cleanup; diff --git a/tests/features/weighted-rebalance.t b/tests/features/weighted-rebalance.t index 3964fb22290..fbda32e50a2 100755 --- a/tests/features/weighted-rebalance.t +++ b/tests/features/weighted-rebalance.t @@ -47,12 +47,12 @@ TEST $CLI volume info  TEST mkdir ${B0}/${V0}{1,2}  TEST truncate -s $((40*1024*1024)) ${B0}/disk1 -TEST mkfs.xfs -f -i size=512 ${B0}/disk1 -TEST mount -o loop ${B0}/disk1 ${B0}/${V0}1 +TEST MKFS_LOOP -i 512 ${B0}/disk1 +TEST MOUNT_LOOP ${B0}/disk1 ${B0}/${V0}1  TEST truncate -s $((80*1024*1024)) ${B0}/disk2 -TEST mkfs.xfs -f -i size=512 ${B0}/disk2 -TEST mount -o loop ${B0}/disk2 ${B0}/${V0}2 +TEST MKFS_LOOP -i 512 ${B0}/disk2 +TEST MOUNT_LOOP ${B0}/disk2 ${B0}/${V0}2  TEST $CLI volume create $V0 $H0:$B0/${V0}{1,2}  EXPECT "$V0" volinfo_field $V0 'Volume Name' @@ -65,7 +65,7 @@ EXPECT 'Started' volinfo_field $V0 'Status'  TEST $GFS -s $H0 --volfile-id $V0 $M0  TEST mkdir $M0/dir  TEST touch_files -TEST umount $M0 +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0  # Check that the larger brick got more of the files.  nfiles=$(count_files ${B0}/${V0}2) @@ -82,10 +82,8 @@ nfiles=$(count_files ${B0}/${V0}2)  #echo $nfiles $(get_xattr ${B0}/${V0}1) $(get_xattr ${B0}/${V0}2) 3>&2 2>&1 1>&3 3>&-  TEST [ $nfiles -le 580 ] -exit 0 -  $CLI volume stop $V0 -umount ${B0}/${V0}{1,2} +UMOUNT_LOOP ${B0}/${V0}{1,2}  rm -f ${B0}/disk{1,2}  cleanup diff --git a/tests/include.rc b/tests/include.rc index 3af4764b1e4..1a0fb06002f 100644 --- a/tests/include.rc +++ b/tests/include.rc @@ -652,3 +652,153 @@ fi  # probably the safest option there and on anything we don't recognize, but  # if you want to reduce the noise level and know the correct option for  # your favorite platform please feel free to add it here. + +function SETUP_LOOP () +{ +  if [ $# != 1 ] ; then +    echo "SETUP_LOOP usage" >&2 +    exit 1; +  fi + +  backend=$1 + +  case ${OSTYPE} in +  Linux) +    losetup --find --show ${backend} +    ;; +  NetBSD) +    vnd=`vnconfig -l|awk -F: '/not in use/{print $1; exit}'` +    if [ "x${vnd}" = "x" ] ; then +      echo "no more vnd" >&2 +      exit 1; +    fi +    vnconfig ${vnd} ${backend} +    echo ${vnd} +    ;; +  *) +    echo "Please define SETUP_LOOP for ${OSTYPE} in include.rc" >&2 +    exit 1; +    ;; +  esac +} + +function MKFS_LOOP () +{ +  args=`getopt i: $*` +  if [ $? -ne 0 ] ; then +    echo "MKFS_LOOP usage" >&2 +    exit 1; +  fi +  set -- ${args} + +  isize="" +  while test $# -gt 0; do +    case "$1" in +    -i)         isize=$2; shift ;; +    --)         shift; break ;; +    esac +    shift +  done + +  dev=$1 + +  case ${OSTYPE} in +  Linux) +    test "x${isize}" != "x" && isize="-i size=${isize}" +    mkfs.xfs  -f ${isize} ${dev} +    ;; +  NetBSD) +    test "x${isize}" != "x" && isize="-i ${isize}" + +    echo ${dev} | grep -q '^vnd' +    if [ $? -ne 0 ] ; then +      vnd=`vnconfig -l|awk -F: '/not in use/{print $1; exit}'` +      if [ "x${vnd}" = "x" ] ; then +        echo "no more vnd" >&2 +        exit 1; +      fi +      vnconfig ${vnd} ${dev} +    else +      vnd=${dev} +    fi +    newfs ${isize} /dev/r${vnd}a +    ;; +  *) +    echo "Please define MKFS_LOOP for ${OSTYPE} in include.rc" >&2 +    exit 1; +    ;; +  esac +} + +function MOUNT_LOOP () +{ +  if [ $# != 2 ] ; then +    echo "MOUNT_LOOP usage" >&2 +    exit 1; +  fi + +  dev=$1 +  target=$2 + +  case ${OSTYPE} in +  Linux) +    echo ${dev} | grep -q '^/dev/loop' +    if [ $? -eq 0 ] ; then +      mount -t xfs  ${dev} ${target} +    else +      mount -o loop  ${dev} ${target} +    fi +    ;; +  NetBSD) +    echo ${dev} | grep -q '^vnd' +    if [ $? -ne 0 ] ; then +      ino=`/usr/bin/stat -f %i ${dev}` +      dev=`vnconfig -l | awk -v ino=${ino} -F'[: ]*' '($5 == ino) {print $1}'` +    fi + +    mount /dev/${dev}a ${target} >&2 +    if [ $? -ne 0 ] ; then +      echo "failed to mount  /dev/${dev}a on  ${target}" >&2 +      exit 1 +    fi + +    mkdir -p ${target}/.attribute/system  ${target}/.attribute/user +    mount -u -o extattr ${target} >&2 + +    ;; +  *) +    echo "Please define MOUNT_LOOP for ${OSTYPE} in include.rc" >&2 +    exit 1; +    ;; +  esac +} + +function UMOUNT_LOOP () +{ +  case ${OSTYPE} in +  Linux) +    force_umount $* +    ;; +  NetBSD) +    for target in $* ; do +      dev=`mount | awk -v target=${target} '($3 == target) {print $1}'` +      force_umount ${target} +      echo ${dev} | grep -q '^/dev/vnd' +      if [ $? -eq 0 ] ; then +        dev=`echo ${dev} | sed 's|^/dev/||; s|a$||'` +        vnconfig -u ${dev} +      else +        ino=`/usr/bin/stat -f %i ${dev}` +        dev=`vnconfig -l | awk -v ino=${ino} -F'[: ]*' '($5 == ino) {print $1}'` +        if [ "x${dev}" != "x" ] ; then +          vnconfig -u ${dev} +        fi +      fi +    done +    ;; +  *) +    echo "Please define UMOUNT_LOOP for ${OSTYPE} in include.rc" >&2 +    exit 1; +    ;; +  esac +}  | 
