Regression test portability: batch of bugs (volume 1)

Fix various regression test portability in tests/bugs.

bug-1004744.t:
- Slower systems really requires an increased REBALANCE_TIMEOUT in include.rc

bug-1023974.t:
- use the -p option to mkdir before the path for portability sake.

bug-1051896.t and bug-847622.t:
- skip ACL test for NetBSD as it has no POSIX 1e ACL support.

bugs-1053579.t:
- Override the amount of secondary groups depending of the maximum
  the system supports.
- Specify seq(1) format to avoid having trailing .00
- Use more portable su -m USER -c COMMAND (also in bug-884597.t)
- NetBSD does not fail high GID with NFS

bug-1058663.c:
- Depending on architecture, NetBSD can have SIGSEGV instead of SIGBUS

bug-762989.t and bug-867253.t:
- For non Linux systems, skip tests on features that are Linux-specific

bug-765473.t;
- Fix a {1} that bash is supposed to expand in 1 but does not, replace by 1.
- Sync volume to make sure it imediatly knows a fd got bad

BUG: 1129939
Change-Id: I5405f94ccb8f20d35b3095096b0602c43719a1ae
Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org>
Reviewed-on: http://review.gluster.org/9009
Reviewed-by: Xavier Hernandez <xhernandez@datalab.es>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
This commit is contained in:
Emmanuel Dreyfus 2014-11-06 14:32:57 +01:00 committed by Vijay Bellur
parent 0d7fd69b01
commit 5f0f2282d6
10 changed files with 94 additions and 12 deletions

View File

@ -26,7 +26,7 @@ TEST $CLI volume quota $V0 soft-timeout 0
#The corresponding write(3) should fail with EDQUOT ("Disk quota exceeded")
TEST ! dd if=/dev/urandom of=$M0/1/2/file bs=1024k count=102;
TEST mkdir $M0/1/3 -p;
TEST mkdir -p $M0/1/3;
TEST dd if=/dev/urandom of=$M0/1/3/file bs=1024k count=102;
#The corresponding rename(3) should fail with EDQUOT ("Disk quota exceeded")

View File

@ -3,6 +3,16 @@
. $(dirname $0)/../include.rc
. $(dirname $0)/../volume.rc
case $OSTYPE in
NetBSD)
echo "Skip test on ACL which are not available on NetBSD" >&2
SKIP_TESTS
exit 0
;;
*)
;;
esac
cleanup;
## Start and create a volume

View File

@ -13,8 +13,24 @@ NEW_GID=1053579
LAST_GID=1053779
NEW_GIDS=${NEW_GID}
# OS-specific overrides
case $OSTYPE in
NetBSD|Darwin)
# only NGROUPS_MAX=16 secondary groups are supported
LAST_GID=1053593
;;
FreeBSD)
# NGROUPS_MAX=1023 (FreeBSD>=8.0), we can afford 200 groups
;;
Linux)
# NGROUPS_MAX=65536, we can afford 200 groups
;;
*)
;;
esac
# create a user that belongs to many groups
for GID in $(seq ${NEW_GID} ${LAST_GID})
for GID in $(seq -f '%6.0f' ${NEW_GID} ${LAST_GID})
do
groupadd -o -g ${GID} ${NEW_USER}-${GID}
NEW_GIDS="${NEW_GIDS},${NEW_USER}-${GID}"
@ -36,7 +52,7 @@ TEST mount_nfs $H0:/$V0 $N0 nolock
TEST glusterfs --volfile-id=/$V0 --volfile-server=$H0 $M0
# the actual test, this used to crash
su -c "stat $N0/. > /dev/null" ${NEW_USER}
su -m ${NEW_USER} -c "stat $N0/. > /dev/null"
TEST [ $? -eq 0 ]
# create a file that only a user in a high-group can access
@ -44,23 +60,43 @@ echo 'Hello World!' > $N0/README
chgrp ${LAST_GID} $N0/README
chmod 0640 $N0/README
su -c "cat $N0/README 2>&1 > /dev/null" ${NEW_USER}
TEST [ $? -ne 0 ]
#su -m ${NEW_USER} -c "cat $N0/README 2>&1 > /dev/null"
su -m ${NEW_USER} -c "cat $N0/README"
ret=$?
case $OSTYPE in
Linux) # Linux NFS fails with big GID
if [ $ret -ne 0 ] ; then
res="Y"
else
res="N"
fi
;;
*) # Other systems should cope better
if [ $ret -eq 0 ] ; then
res="Y"
else
res="N"
fi
;;
esac
TEST [ "x$res" = "xY" ]
# This passes only on build.gluster.org, not reproducible on other machines?!
#su -c "cat $M0/README 2>&1 > /dev/null" ${NEW_USER}
#su -m ${NEW_USER} -c "cat $M0/README 2>&1 > /dev/null"
#TEST [ $? -ne 0 ]
# enable server.manage-gids and things should work
TEST $CLI volume set $V0 server.manage-gids on
su -c "cat $N0/README 2>&1 > /dev/null" ${NEW_USER}
su -m ${NEW_USER} -c "cat $N0/README 2>&1 > /dev/null"
TEST [ $? -eq 0 ]
su -c "cat $M0/README 2>&1 > /dev/null" ${NEW_USER}
su -m ${NEW_USER} -c "cat $M0/README 2>&1 > /dev/null"
TEST [ $? -eq 0 ]
# cleanup
userdel --force ${NEW_USER}
for GID in $(seq ${NEW_GID} ${LAST_GID})
for GID in $(seq -f '%6.0f' ${NEW_GID} ${LAST_GID})
do
groupdel ${NEW_USER}-${GID}
done

View File

@ -73,6 +73,10 @@ int read_after_eof(char *filename)
void catch_sigbus(int signum)
{
switch (signum) {
#ifdef __NetBSD__
/* Depending on architecture, we can get SIGSEGV */
case SIGSEGV: /* FALLTHROUGH */
#endif
case SIGBUS:
sigbus_received++;
if (!expect_sigbus)
@ -94,6 +98,10 @@ int main(int argc, char** argv)
return EXIT_FAILURE;
}
#ifdef __NetBSD__
/* Depending on architecture, we can get SIGSEGV */
signal(SIGSEGV, catch_sigbus);
#endif
signal(SIGBUS, catch_sigbus);
/* the next test should not trigger SIGBUS */

View File

@ -4,6 +4,14 @@
cleanup;
# Skip the entire test if ip_local_reserved_ports does not exist
if [ ! -f /proc/sys/net/ipv4/ip_local_reserved_ports ] ; then
echo "Skip test on /proc/sys/net/ipv4/ip_local_reserved_ports, "\
"which does not exists on this system" >&2
SKIP_TESTS
exit 0
fi
## reserve port 1023
older_ports=$(cat /proc/sys/net/ipv4/ip_local_reserved_ports);
echo "1023" > /proc/sys/net/ipv4/ip_local_reserved_ports;

View File

@ -15,7 +15,7 @@ function clients_connected()
## Start and create a volume
TEST glusterd;
TEST pidof glusterd;
TEST $CLI volume create $V0 $H0:$B0/${V0}{1}
TEST $CLI volume create $V0 $H0:$B0/${V0}1
TEST $CLI volume start $V0;
TEST glusterfs --direct-io-mode=yes --entry-timeout=0 --attribute-timeout=0 -s $H0 --volfile-id $V0 $M0;
@ -26,7 +26,9 @@ TEST fd_write $fd "content"
TEST $CLI volume stop $V0
# write some content which will result in marking fd bad
fd_write $fd "more content"
sync $V0
TEST $CLI volume start $V0
EXPECT 'Started' volinfo_field $V0 'Status';
EXPECT_WITHIN $PROCESS_UP_TIMEOUT 2 clients_connected $V0
TEST ! fd_write $fd "still more content"

View File

@ -4,6 +4,16 @@
. $(dirname $0)/../nfs.rc
. $(dirname $0)/../volume.rc
case $OSTYPE in
NetBSD)
echo "Skip test on ACL which are not available on NetBSD" >&2
SKIP_TESTS
exit 0
;;
*)
;;
esac
cleanup;
TEST glusterd

View File

@ -4,6 +4,14 @@
. $(dirname $0)/../volume.rc
. $(dirname $0)/../nfs.rc
# Skip the entire test if /proc/sys/vm/drop_caches does not exist
if [ ! -f /proc/sys/vm/drop_caches ] ; then
echo "Skip test using /proc/sys/vm/drop_caches, "\
"which does not exists on this system" >&2
SKIP_TESTS
exit 0
fi
cleanup;
function file_count()

View File

@ -143,7 +143,7 @@ TEST cd $M0
has_link=0
while [ $i -lt 100 ]
do
su -c "mv $M0/user_file$i $M0/user_file$(( $i+1 ))" ABC
su -m ABC -c "mv $M0/user_file$i $M0/user_file$(( $i+1 ))"
if [ $? -ne 0 ]
then
break

View File

@ -51,7 +51,7 @@ PROCESS_UP_TIMEOUT=20
NFS_EXPORT_TIMEOUT=20
CHILD_UP_TIMEOUT=20
PROBE_TIMEOUT=20
REBALANCE_TIMEOUT=120
REBALANCE_TIMEOUT=360
REOPEN_TIMEOUT=20
HEAL_TIMEOUT=60
MARKER_UPDATE_TIMEOUT=20