From a0949929282529e0e866e074721c1bdfe3928c8c Mon Sep 17 00:00:00 2001 From: N Balachandran Date: Thu, 11 Apr 2019 12:12:12 +0530 Subject: [PATCH 131/141] tests/dht: Test that lookups are sent post brick up upstream: https://review.gluster.org/#/c/glusterfs/+/22545/ >Change-Id: I3556793c5e9d58cc6a08644b41dc5740fab2610b >updates: bz#1628194 BUG:1704562 Change-Id: Ie45331298902bd5268c56cb29a966d8246abfd6d Signed-off-by: N Balachandran Reviewed-on: https://code.engineering.redhat.com/gerrit/169592 Tested-by: RHGS Build Bot Reviewed-by: Atin Mukherjee --- tests/basic/distribute/brick-down.t | 83 +++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 tests/basic/distribute/brick-down.t diff --git a/tests/basic/distribute/brick-down.t b/tests/basic/distribute/brick-down.t new file mode 100644 index 0000000..522ccc0 --- /dev/null +++ b/tests/basic/distribute/brick-down.t @@ -0,0 +1,83 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc +. $(dirname $0)/../../common-utils.rc +. $(dirname $0)/../../dht.rc + +# Test 1 overview: +# ---------------- +# Test whether lookups are sent after a brick comes up again +# +# 1. Create a 3 brick pure distribute volume +# 2. Fuse mount the volume so the layout is set on the root +# 3. Kill one brick and try to create a directory which hashes to that brick. +# It should fail with EIO. +# 4. Restart the brick that was killed. +# 5. Do not remount the volume. Try to create the same directory as in step 3. + +cleanup + +TEST glusterd +TEST pidof glusterd + +TEST $CLI volume create $V0 $H0:$B0/$V0-{1..3} +TEST $CLI volume start $V0 + +# We want the lookup to reach DHT +TEST $CLI volume set $V0 performance.stat-prefetch off + +# Mount using FUSE and lookup the mount so a layout is set on the brick root +TEST glusterfs --entry-timeout=0 --attribute-timeout=0 -s $H0 --volfile-id $V0 $M0 + +ls $M0/ + +TEST mkdir $M0/level1 + +# Find a dirname that will hash to the brick we are going to kill +hashed=$V0-client-1 +TEST dht_first_filename_with_hashsubvol "$hashed" $M0 "dir-" +roottestdir=$fn_return_val + +hashed=$V0-client-1 +TEST dht_first_filename_with_hashsubvol "$hashed" $M0/level1 "dir-" +level1testdir=$fn_return_val + + +TEST kill_brick $V0 $H0 $B0/$V0-2 +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "0" brick_up_status $V0 $H0 $B0/$V0-2 + +TEST $CLI volume status $V0 + + +# Unmount and mount the volume again so dht has an incomplete in memory layout + +umount -f $M0 +TEST glusterfs --entry-timeout=0 --attribute-timeout=0 -s $H0 --volfile-id $V0 $M0 + + +mkdir $M0/$roottestdir +TEST [ $? -ne 0 ] + +mkdir $M0/level1/$level1testdir +TEST [ $? -ne 0 ] + +TEST $CLI volume start $V0 force +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status $V0 $H0 $B0/$V0-2 + +#$CLI volume status + +# It takes a while for the client to reconnect to the brick +sleep 5 + + +mkdir $M0/$roottestdir +TEST [ $? -eq 0 ] + +mkdir $M0/$level1/level1testdir +TEST [ $? -eq 0 ] + +# Cleanup +cleanup + + -- 1.8.3.1