diff options
Diffstat (limited to 'tests/bugs/ec')
| -rw-r--r-- | tests/bugs/ec/bug-1161886.c | 84 | ||||
| -rw-r--r-- | tests/bugs/ec/bug-1187474.t | 2 | ||||
| -rw-r--r-- | tests/bugs/ec/bug-1236065.t | 2 | ||||
| -rw-r--r-- | tests/bugs/ec/bug-1547662.t | 41 | ||||
| -rw-r--r-- | tests/bugs/ec/bug-1699866-check-reopen-fd.t | 34 | ||||
| -rw-r--r-- | tests/bugs/ec/bug-1708156-honor-inodelk-contention-notify-on-partial-locks.t | 54 |
6 files changed, 174 insertions, 43 deletions
diff --git a/tests/bugs/ec/bug-1161886.c b/tests/bugs/ec/bug-1161886.c index e8093e48a7a..1f12650ea6d 100644 --- a/tests/bugs/ec/bug-1161886.c +++ b/tests/bugs/ec/bug-1161886.c @@ -4,50 +4,50 @@ #include <glusterfs/api/glfs-handles.h> int -main (int argc, char *argv[]) +main(int argc, char *argv[]) { - glfs_t *fs = NULL; - glfs_fd_t *fd = NULL; - int ret = 1; - - if (argc != 4) { - fprintf (stderr, "Syntax: %s <host> <volname> <file>\n", argv[0]); - return 1; - } - - fs = glfs_new (argv[2]); - if (!fs) { - fprintf (stderr, "glfs_new: returned NULL\n"); - return 1; - } - - ret = glfs_set_volfile_server (fs, "tcp", argv[1], 24007); - if (ret != 0) { - fprintf (stderr, "glfs_set_volfile_server: retuned %d\n", ret); - goto out; - } - ret = glfs_set_logging (fs, "/dev/null", 7); - if (ret != 0) { - fprintf (stderr, "glfs_set_logging: returned %d\n", ret); - goto out; - } - ret = glfs_init (fs); - if (ret != 0) { - fprintf (stderr, "glfs_init: returned %d\n", ret); - goto out; - } - - fd = glfs_open (fs, argv[3], O_RDWR | O_TRUNC); - if (fd == NULL) { - fprintf (stderr, "glfs_open: returned NULL\n"); - goto out; - } - glfs_close(fd); - - ret = 0; + glfs_t *fs = NULL; + glfs_fd_t *fd = NULL; + int ret = 1; + + if (argc != 4) { + fprintf(stderr, "Syntax: %s <host> <volname> <file>\n", argv[0]); + return 1; + } + + fs = glfs_new(argv[2]); + if (!fs) { + fprintf(stderr, "glfs_new: returned NULL\n"); + return 1; + } + + ret = glfs_set_volfile_server(fs, "tcp", argv[1], 24007); + if (ret != 0) { + fprintf(stderr, "glfs_set_volfile_server: returned %d\n", ret); + goto out; + } + ret = glfs_set_logging(fs, "/dev/null", 7); + if (ret != 0) { + fprintf(stderr, "glfs_set_logging: returned %d\n", ret); + goto out; + } + ret = glfs_init(fs); + if (ret != 0) { + fprintf(stderr, "glfs_init: returned %d\n", ret); + goto out; + } + + fd = glfs_open(fs, argv[3], O_RDWR | O_TRUNC); + if (fd == NULL) { + fprintf(stderr, "glfs_open: returned NULL\n"); + goto out; + } + glfs_close(fd); + + ret = 0; out: - glfs_fini (fs); + glfs_fini(fs); - return ret; + return ret; } diff --git a/tests/bugs/ec/bug-1187474.t b/tests/bugs/ec/bug-1187474.t index fb4b2082f8f..e6344c26e73 100644 --- a/tests/bugs/ec/bug-1187474.t +++ b/tests/bugs/ec/bug-1187474.t @@ -4,6 +4,8 @@ . $(dirname $0)/../../volume.rc . $(dirname $0)/../../nfs.rc +#G_TESTDEF_TEST_STATUS_CENTOS6=NFS_TEST + function check_dir() { local count diff --git a/tests/bugs/ec/bug-1236065.t b/tests/bugs/ec/bug-1236065.t index 9395aa33e8c..9181e73ec19 100644 --- a/tests/bugs/ec/bug-1236065.t +++ b/tests/bugs/ec/bug-1236065.t @@ -2,6 +2,7 @@ . $(dirname $0)/../../include.rc . $(dirname $0)/../../volume.rc +SCRIPT_TIMEOUT=400 cleanup @@ -84,7 +85,6 @@ TEST pidof glusterd EXPECT "$V0" volinfo_field $V0 'Volume Name' EXPECT 'Started' volinfo_field $V0 'Status' EXPECT '7' online_brick_count - ## cleanup cd EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0 diff --git a/tests/bugs/ec/bug-1547662.t b/tests/bugs/ec/bug-1547662.t new file mode 100644 index 00000000000..5748218587e --- /dev/null +++ b/tests/bugs/ec/bug-1547662.t @@ -0,0 +1,41 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc + +# Immediately after replace-brick, trusted.ec.version will be absent, so if it +# is present we can assume that heal was started on root +function root_heal_attempted { + if [ -z $(get_hex_xattr trusted.ec.version $1) ]; then + echo "N" + else + echo "Y" + fi +} + +cleanup + +TEST glusterd +TEST pidof glusterd +TEST ${CLI} volume create ${V0} disperse 6 redundancy 2 ${H0}:${B0}/${V0}{0..5} +TEST ${CLI} volume start ${V0} +TEST ${GFS} --volfile-server ${H0} --volfile-id ${V0} ${M0} +EXPECT_WITHIN ${CHILD_UP_TIMEOUT} "6" ec_child_up_count ${V0} 0 + +TEST mkdir ${M0}/base +TEST mkdir ${M0}/base/dir.{1,2} +TEST mkdir ${M0}/base/dir.{1,2}/dir.{1,2} +TEST mkdir ${M0}/base/dir.{1,2}/dir.{1,2}/dir.{1,2} +TEST mkdir ${M0}/base/dir.{1,2}/dir.{1,2}/dir.{1,2}/dir.{1,2} +TEST mkdir ${M0}/base/dir.{1,2}/dir.{1,2}/dir.{1,2}/dir.{1,2}/dir.{1,2} +TEST mkdir ${M0}/base/dir.{1,2}/dir.{1,2}/dir.{1,2}/dir.{1,2}/dir.{1,2}/dir.{1,2} + +TEST ${CLI} volume replace-brick ${V0} ${H0}:${B0}/${V0}5 ${H0}:${B0}/${V0}6 commit force +EXPECT_WITHIN ${CHILD_UP_TIMEOUT} "6" ec_child_up_count ${V0} 0 +EXPECT_WITHIN ${PROCESS_UP_TIMEOUT} "Y" glustershd_up_status +EXPECT_WITHIN ${CHILD_UP_TIMEOUT} "6" ec_child_up_count_shd ${V0} 0 +EXPECT_WITHIN ${HEAL_TIMEOUT} "Y" root_heal_attempted ${B0}/${V0}6 +EXPECT_WITHIN ${HEAL_TIMEOUT} "^0$" get_pending_heal_count ${V0} +EXPECT "^127$" echo $(find ${B0}/${V0}6/base -type d | wc -l) + +cleanup; diff --git a/tests/bugs/ec/bug-1699866-check-reopen-fd.t b/tests/bugs/ec/bug-1699866-check-reopen-fd.t new file mode 100644 index 00000000000..4386d010318 --- /dev/null +++ b/tests/bugs/ec/bug-1699866-check-reopen-fd.t @@ -0,0 +1,34 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc +. $(dirname $0)/../../fileio.rc + +cleanup + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume create $V0 disperse 6 redundancy 2 $H0:$B0/${V0}{0..5} +TEST $CLI volume heal $V0 disable +TEST $CLI volume set $V0 disperse.background-heals 0 +TEST $CLI volume set $V0 write-behind off +TEST $CLI volume set $V0 open-behind off +TEST $CLI volume start $V0 +TEST glusterfs --entry-timeout=0 --attribute-timeout=0 -s $H0 --volfile-id $V0 $M0 +EXPECT_WITHIN $CHILD_UP_TIMEOUT "6" ec_child_up_count $V0 0 + +TEST mkdir -p $M0/dir + +fd="$(fd_available)" + +TEST kill_brick $V0 $H0 $B0/${V0}0 +EXPECT_WITHIN $CHILD_UP_TIMEOUT "5" ec_child_up_count $V0 0 + +TEST fd_open ${fd} rw $M0/dir/test +TEST fd_write ${fd} "test1" +TEST $CLI volume replace-brick ${V0} $H0:$B0/${V0}0 $H0:$B0/${V0}0_1 commit force +EXPECT_WITHIN $CHILD_UP_TIMEOUT "6" ec_child_up_count $V0 0 +TEST fd_write ${fd} "test2" +TEST fd_close ${fd} + +cleanup diff --git a/tests/bugs/ec/bug-1708156-honor-inodelk-contention-notify-on-partial-locks.t b/tests/bugs/ec/bug-1708156-honor-inodelk-contention-notify-on-partial-locks.t new file mode 100644 index 00000000000..67fdb184b46 --- /dev/null +++ b/tests/bugs/ec/bug-1708156-honor-inodelk-contention-notify-on-partial-locks.t @@ -0,0 +1,54 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc + +function do_ls() { + local dir="${1}" + local i + + for i in {1..50}; do + ls -l $M0/${dir} >/dev/null & + ls -l $M1/${dir} >/dev/null & + ls -l $M2/${dir} >/dev/null & + ls -l $M3/${dir} >/dev/null & + done + wait +} + +function measure_time() { + { + LC_ALL=C + time -p "${@}" + } 2>&1 | awk '/^real/ { print $2 * 1000 }' +} + +cleanup + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume create $V0 disperse 6 redundancy 2 $H0:$B0/${V0}{0..5} + +TEST $CLI volume set $V0 disperse.eager-lock on +TEST $CLI volume set $V0 disperse.other-eager-lock on +TEST $CLI volume set $V0 features.locks-notify-contention on +TEST $CLI volume set $V0 disperse.eager-lock-timeout 10 +TEST $CLI volume set $V0 disperse.other-eager-lock-timeout 10 + +TEST $CLI volume start $V0 +TEST $GFS --volfile-id=/$V0 --volfile-server=$H0 $M0 +TEST $GFS --volfile-id=/$V0 --volfile-server=$H0 $M1 +TEST $GFS --volfile-id=/$V0 --volfile-server=$H0 $M2 +TEST $GFS --volfile-id=/$V0 --volfile-server=$H0 $M3 +EXPECT_WITHIN $CHILD_UP_TIMEOUT "6" ec_child_up_count $V0 0 $M0 +EXPECT_WITHIN $CHILD_UP_TIMEOUT "6" ec_child_up_count $V0 0 $M1 +EXPECT_WITHIN $CHILD_UP_TIMEOUT "6" ec_child_up_count $V0 0 $M2 +EXPECT_WITHIN $CHILD_UP_TIMEOUT "6" ec_child_up_count $V0 0 $M3 +TEST mkdir $M0/dir +TEST touch $M0/dir/file.{1..10} + +# Run multiple 'ls' concurrently from multiple clients so that they collide and +# cause partial locks. +TEST [[ $(measure_time do_ls dir) -lt 10000 ]] + +cleanup |
