diff options
Diffstat (limited to 'tests/000-flaky/bugs_glusterd_bug-857330')
-rw-r--r-- | tests/000-flaky/bugs_glusterd_bug-857330/common.rc | 57 | ||||
-rwxr-xr-x | tests/000-flaky/bugs_glusterd_bug-857330/normal.t | 69 | ||||
-rwxr-xr-x | tests/000-flaky/bugs_glusterd_bug-857330/xml.t | 83 |
3 files changed, 209 insertions, 0 deletions
diff --git a/tests/000-flaky/bugs_glusterd_bug-857330/common.rc b/tests/000-flaky/bugs_glusterd_bug-857330/common.rc new file mode 100644 index 00000000000..bd122eff18c --- /dev/null +++ b/tests/000-flaky/bugs_glusterd_bug-857330/common.rc @@ -0,0 +1,57 @@ +. $(dirname $0)/../../include.rc + +UUID_REGEX='[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}' + +TASK_ID="" +COMMAND="" +PATTERN="" + +function check-and-store-task-id() +{ + TASK_ID="" + + local task_id=$($CLI $COMMAND | grep $PATTERN | grep -o -E "$UUID_REGEX") + + if [ -z "$task_id" ] && [ "${task_id+asdf}" = "asdf" ]; then + return 1 + fi + + TASK_ID=$task_id + return 0; +} + +function get-task-id() +{ + $CLI $COMMAND | grep $PATTERN | grep -o -E "$UUID_REGEX" | tail -n1 + +} + +function check-and-store-task-id-xml() +{ + TASK_ID="" + + local task_id=$($CLI $COMMAND --xml | xmllint --format - | grep $PATTERN | grep -o -E "$UUID_REGEX") + + if [ -z "$task_id" ] && [ "${task_id+asdf}" = "asdf" ]; then + return 1 + fi + + TASK_ID=$task_id + return 0; +} + +function get-task-id-xml() +{ + $CLI $COMMAND --xml | xmllint --format - | grep $PATTERN | grep -o -E "$UUID_REGEX" +} + +function get-task-status() +{ + pattern=$1 + val=1 + test=$(gluster $COMMAND | grep -o $pattern 2>&1) + if [ $? -eq 0 ]; then + val=0 + fi + echo $val +} diff --git a/tests/000-flaky/bugs_glusterd_bug-857330/normal.t b/tests/000-flaky/bugs_glusterd_bug-857330/normal.t new file mode 100755 index 00000000000..6c1cf54ec3c --- /dev/null +++ b/tests/000-flaky/bugs_glusterd_bug-857330/normal.t @@ -0,0 +1,69 @@ +#!/bin/bash + +. $(dirname $0)/common.rc +. $(dirname $0)/../../volume.rc +cleanup; + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume info; + +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}1 $H0:$B0/${V0}2; +TEST $CLI volume info $V0; +TEST $CLI volume start $V0; + +TEST glusterfs -s $H0 --volfile-id=$V0 $M0; + +TEST $PYTHON $(dirname $0)/../../utils/create-files.py \ + --multi -b 10 -d 10 -n 10 $M0; + +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0 + +############### +## Rebalance ## +############### +TEST $CLI volume add-brick $V0 replica 2 $H0:$B0/${V0}3 $H0:$B0/${V0}4; + +COMMAND="volume rebalance $V0 start" +PATTERN="ID:" +TEST check-and-store-task-id + +COMMAND="volume status $V0" +PATTERN="ID" +EXPECT $TASK_ID get-task-id + +COMMAND="volume rebalance $V0 status" +PATTERN="completed" +EXPECT_WITHIN $REBALANCE_TIMEOUT "0" get-task-status $PATTERN + +################### +## Replace-brick ## +################### +REP_BRICK_PAIR="$H0:$B0/${V0}2 $H0:$B0/${V0}5" + +TEST $CLI volume replace-brick $V0 $REP_BRICK_PAIR commit force; + +################## +## Remove-brick ## +################## +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status $V0 $H0 $B0/${V0}5 + +COMMAND="volume remove-brick $V0 $H0:$B0/${V0}1 $H0:$B0/${V0}5 start" +PATTERN="ID:" +TEST check-and-store-task-id + +COMMAND="volume status $V0" +PATTERN="ID" +EXPECT $TASK_ID get-task-id + +COMMAND="volume remove-brick $V0 $H0:$B0/${V0}1 $H0:$B0/${V0}5 status" +PATTERN="completed" +EXPECT_WITHIN $REBALANCE_TIMEOUT "0" get-task-status $PATTERN + +TEST $CLI volume remove-brick $V0 $H0:$B0/${V0}1 $H0:$B0/${V0}5 commit + +TEST $CLI volume stop $V0; +TEST $CLI volume delete $V0; +TEST ! $CLI volume info $V0; + +cleanup; diff --git a/tests/000-flaky/bugs_glusterd_bug-857330/xml.t b/tests/000-flaky/bugs_glusterd_bug-857330/xml.t new file mode 100755 index 00000000000..11785adacdb --- /dev/null +++ b/tests/000-flaky/bugs_glusterd_bug-857330/xml.t @@ -0,0 +1,83 @@ +#!/bin/bash + +. $(dirname $0)/common.rc +. $(dirname $0)/../../volume.rc + +cleanup; + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume info; + +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}1 $H0:$B0/${V0}2; +TEST $CLI volume info $V0; +TEST $CLI volume start $V0; + +TEST glusterfs -s $H0 --volfile-id=$V0 $M0; + +TEST $PYTHON $(dirname $0)/../../utils/create-files.py \ + --multi -b 10 -d 10 -n 10 $M0; + +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0 + + +############### +## Rebalance ## +############### +TEST $CLI volume add-brick $V0 replica 2 $H0:$B0/${V0}3 $H0:$B0/${V0}4; + +COMMAND="volume rebalance $V0 start" +PATTERN="task-id" +TEST check-and-store-task-id-xml + +COMMAND="volume status $V0" +PATTERN="id" +EXPECT $TASK_ID get-task-id-xml + +COMMAND="volume rebalance $V0 status" +PATTERN="task-id" +EXPECT $TASK_ID get-task-id-xml + +## TODO: Add tests for rebalance stop + +COMMAND="volume rebalance $V0 status" +PATTERN="completed" +EXPECT_WITHIN $REBALANCE_TIMEOUT "0" get-task-status $PATTERN + +################### +## Replace-brick ## +################### +TEST $CLI volume replace-brick $V0 $H0:$B0/${V0}4 $H0:$B0/${V0}5 commit force + +################## +## Remove-brick ## +################## +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status $V0 $H0 $B0/${V0}5 + +COMMAND="volume remove-brick $V0 $H0:$B0/${V0}3 $H0:$B0/${V0}5 start" +PATTERN="task-id" +TEST check-and-store-task-id-xml + +COMMAND="volume status $V0" +PATTERN="id" +EXPECT $TASK_ID get-task-id-xml + +COMMAND="volume remove-brick $V0 $H0:$B0/${V0}3 $H0:$B0/${V0}5 status" +PATTERN="task-id" +EXPECT $TASK_ID get-task-id-xml + +COMMAND="volume remove-brick $V0 $H0:$B0/${V0}3 $H0:$B0/${V0}5 status" +PATTERN="completed" +EXPECT_WITHIN $REBALANCE_TIMEOUT "0" get-task-status $PATTERN + +## TODO: Add tests for remove-brick stop + +COMMAND="volume remove-brick $V0 $H0:$B0/${V0}3 $H0:$B0/${V0}5 commit" +PATTERN="task-id" +EXPECT $TASK_ID get-task-id-xml + +TEST $CLI volume stop $V0; +TEST $CLI volume delete $V0; +TEST ! $CLI volume info $V0; + +cleanup; |