diff options
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/bugs/bug-853258.t | 4 | ||||
-rw-r--r-- | tests/bugs/bug-913051.t | 65 | ||||
-rw-r--r-- | tests/bugs/bug-953887.t | 23 | ||||
-rw-r--r-- | tests/volume.rc | 2 |
4 files changed, 91 insertions, 3 deletions
diff --git a/tests/bugs/bug-853258.t b/tests/bugs/bug-853258.t index c702e6f30ea..79cb88099f2 100755 --- a/tests/bugs/bug-853258.t +++ b/tests/bugs/bug-853258.t @@ -20,7 +20,7 @@ EXPECT_WITHIN 15 'Started' volinfo_field $V0 'Status'; # Force assignment of initial ranges. TEST $CLI volume rebalance $V0 fix-layout start -EXPECT_WITHIN 15 "success:" rebalance_status_field $V0 +EXPECT_WITHIN 15 "completed" rebalance_status_field $V0 # Get the original values. xattrs="" @@ -32,7 +32,7 @@ done TEST $CLI volume add-brick $V0 $H0:$B0/${V0}3 # Force assignment of initial ranges. TEST $CLI volume rebalance $V0 fix-layout start -EXPECT_WITHIN 15 "success:" rebalance_status_field $V0 +EXPECT_WITHIN 15 "completed" rebalance_status_field $V0 for i in $(seq 0 3); do xattrs="$xattrs $(dht_get_layout $B0/${V0}$i)" diff --git a/tests/bugs/bug-913051.t b/tests/bugs/bug-913051.t new file mode 100644 index 00000000000..69e90cf66c2 --- /dev/null +++ b/tests/bugs/bug-913051.t @@ -0,0 +1,65 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc +. $(dirname $0)/../fileio.rc + +cleanup; + +#Test that afr opens the file on the bricks that were offline at the time of +# open after the brick comes online. This tests for writev, readv triggering +# open-fd-fix in afr. +TEST glusterd +TEST pidof glusterd +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}0 $H0:$B0/${V0}1 +TEST $CLI volume set $V0 cluster.self-heal-daemon off +TEST $CLI volume set $V0 performance.quick-read off +TEST $CLI volume set $V0 performance.open-behind off +TEST $CLI volume set $V0 performance.io-cache off +TEST $CLI volume set $V0 performance.write-behind off +TEST $CLI volume set $V0 performance.stat-prefetch off +TEST $CLI volume set $V0 performance.read-ahead off +TEST $CLI volume set $V0 cluster.background-self-heal-count 0 +TEST $CLI volume start $V0 +TEST glusterfs --entry-timeout=0 --attribute-timeout=0 -s $H0 --volfile-id=$V0 $M0 --direct-io-mode=enable +TEST kill_brick $V0 $H0 $B0/${V0}0 + +TEST mkdir $M0/dir +TEST touch $M0/dir/a +TEST touch $M0/dir/b +echo abc > $M0/dir/b + +TEST wfd=`fd_available` +TEST fd_open $wfd "w" $M0/dir/a +TEST rfd=`fd_available` +TEST fd_open $rfd "r" $M0/dir/b + +TEST $CLI volume start $V0 force +EXPECT_WITHIN 20 "1" afr_child_up_status $V0 0 + +#check that the files are not opned on brick-0 +realpatha=$(gf_get_gfid_backend_file_path $B0/${V0}0 "dir/a") +EXPECT "N" gf_check_file_opened_in_brick $V0 $H0 $B0/${V0}0 "$realpatha" +EXPECT "N" gf_check_file_opened_in_brick $V0 $H0 $B0/${V0}0 $B0/${V0}0/dir/a + +realpathb=$(gf_get_gfid_backend_file_path $B0/${V0}0 "dir/b") +EXPECT "N" gf_check_file_opened_in_brick $V0 $H0 $B0/${V0}0 "$realpathb" +EXPECT "N" gf_check_file_opened_in_brick $V0 $H0 $B0/${V0}0 $B0/${V0}0/dir/b + +#attempt self-heal so that the files are created on brick-0 + +TEST ls -l $M0/dir/a +TEST ls -l $M0/dir/b + +#trigger writev for attempting open-fd-fix in afr +TEST fd_write $wfd "open sesame" + +#trigger readv for attempting open-fd-fix in afr +TEST fd_cat $rfd + +EXPECT_WITHIN 20 "Y" gf_check_file_opened_in_brick $V0 $H0 $B0/${V0}0 $B0/${V0}0/dir/a +EXPECT_WITHIN 20 "Y" gf_check_file_opened_in_brick $V0 $H0 $B0/${V0}0 $B0/${V0}0/dir/b + +TEST fd_close $wfd +TEST fd_close $rfd +cleanup; diff --git a/tests/bugs/bug-953887.t b/tests/bugs/bug-953887.t new file mode 100644 index 00000000000..d926473efc4 --- /dev/null +++ b/tests/bugs/bug-953887.t @@ -0,0 +1,23 @@ +#!/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 replica 2 $H0:$B0/${V0}{0,1} +TEST $CLI volume start $V0 +TEST glusterfs --volfile-id=/$V0 --volfile-server=$H0 $M0 +TEST touch $M0/10 +TEST fd=`fd_available` +TEST fd_open $fd 'w' $M0/10 +TEST gluster volume add-brick $V0 $H0:$B0/${V0}{2,3} +TEST gluster volume rebalance $V0 start +EXPECT_WITHIN 15 "completed" rebalance_status_field $V0 +TEST cat $M0/10 +TEST fd_write $fd "abc" +EXPECT "abc" echo "$(cat $M0/10)" +cleanup diff --git a/tests/volume.rc b/tests/volume.rc index 9debe2b997f..044333a83b4 100644 --- a/tests/volume.rc +++ b/tests/volume.rc @@ -27,7 +27,7 @@ function volume_option() } function rebalance_status_field { - $CLI volume rebalance $1 status | sed -n '$p' | cut -d' ' -f4 + $CLI volume rebalance $1 status | awk '{print $6}' | sed -n 3p } function remove_brick_status_completed_field { |