1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
#!/bin/bash
. $(dirname $0)/../include.rc
. $(dirname $0)/../volume.rc
. $(dirname $0)/../nfs.rc
#G_TESTDEF_TEST_STATUS_CENTOS6=NFS_TEST
# These hashes are a result of calling SuperFastHash
# on the corresponding folder names.
NAMESPACE_HASH=28153613
NAMESPACE2_HASH=3926991974
NAMESPACE3_HASH=3493960770
function check_brick_multiplex() {
local ret=$($CLI volume info|grep "cluster.brick-multiplex"|cut -d" " -f2)
local cnt="$(ls /var/log/glusterfs/bricks|wc -l)"
local bcnt="$(brick_count)"
if [ $bcnt -ne 1 ]; then
if [ -z $ret ]; then
ret="no"
fi
if [ $ret = "on" ] || [ $cnt -eq 1 ]; then
echo "Y"
else
echo "N"
fi
else
echo "N"
fi
}
function check_samples() {
local FOP_TYPE=$1
local NS_HASH=$2
local FILE=$3
local BRICK=$4
local GFID="$(getfattr -n trusted.gfid -e text --only-values $B0/$BRICK$FILE | xxd -p)"
local val="$(check_brick_multiplex)"
if [ $val = "Y" ]; then
BRICK="${V0}0"
fi
grep -i "ns_$OP" /var/log/glusterfs/bricks/d-backends-$BRICK.log |
grep -- $NS_HASH | sed 's/\-//g' | grep -- $GFID
if [ $? -eq 0 ]; then
echo "Y"
else
echo "N"
fi
}
cleanup;
TEST mkdir -p $B0/${V0}{0,1,2,3,4,5,6,7,8,9}
TEST glusterd
TEST pidof glusterd
TEST $CLI volume create $V0 replica 3 $H0:$B0/${V0}{0,1,2,3,4,5,6,7,8}
TEST $CLI volume set $V0 nfs.disable off
TEST $CLI volume set $V0 performance.stat-prefetch off
TEST $CLI volume set $V0 performance.nfs.stat-prefetch off
TEST $CLI volume set $V0 cluster.read-subvolume-index 0
TEST $CLI volume set $V0 diagnostics.brick-log-level DEBUG
TEST $CLI volume set $V0 features.tag-namespaces on
TEST $CLI volume set $V0 storage.build-pgfid on
TEST $CLI volume start $V0
sleep 2
TEST mount_nfs $H0:/$V0 $N0 nolock;
################################
# Paths in the samples #
################################
mkdir -p $N0/namespace
# subvol_1 = bar, subvol_2 = foo, subvol_3 = hey
# Test create, write (tagged by loc, fd respectively).
touch $N0/namespace/{bar,foo,hey}
echo "garbage" > $N0/namespace/bar
echo "garbage" > $N0/namespace/foo
echo "garbage" > $N0/namespace/hey
EXPECT_WITHIN 10 "Y" check_samples CREATE $NAMESPACE_HASH /namespace/bar patchy0
EXPECT_WITHIN 10 "Y" check_samples CREATE $NAMESPACE_HASH /namespace/foo patchy3
EXPECT_WITHIN 10 "Y" check_samples CREATE $NAMESPACE_HASH /namespace/hey patchy6
EXPECT_WITHIN 10 "Y" check_samples WRITEV $NAMESPACE_HASH /namespace/bar patchy0
EXPECT_WITHIN 10 "Y" check_samples WRITEV $NAMESPACE_HASH /namespace/foo patchy3
EXPECT_WITHIN 10 "Y" check_samples WRITEV $NAMESPACE_HASH /namespace/hey patchy6
# Test stat (tagged by loc)
stat $N0/namespace/bar &> /dev/null
stat $N0/namespace/foo &> /dev/null
stat $N0/namespace/hey &> /dev/null
EXPECT_WITHIN 10 "Y" check_samples STAT $NAMESPACE_HASH /namespace/bar patchy0
EXPECT_WITHIN 10 "Y" check_samples STAT $NAMESPACE_HASH /namespace/foo patchy3
EXPECT_WITHIN 10 "Y" check_samples STAT $NAMESPACE_HASH /namespace/hey patchy6
EXPECT_WITHIN 10 "Y" umount_nfs $N0;
sleep 1
TEST mount_nfs $H0:/$V0 $N0 nolock;
cat $N0/namespace/bar &> /dev/null
EXPECT_WITHIN 10 "Y" check_samples READ $NAMESPACE_HASH /namespace/bar patchy0
dir $N0/namespace &> /dev/null
EXPECT_WITHIN 10 "Y" check_samples LOOKUP $NAMESPACE_HASH /namespace patchy0
mkdir -p $N0/namespace{2,3}
EXPECT_WITHIN 10 "Y" check_samples MKDIR $NAMESPACE2_HASH /namespace2 patchy0
EXPECT_WITHIN 10 "Y" check_samples MKDIR $NAMESPACE3_HASH /namespace3 patchy0
touch $N0/namespace2/file
touch $N0/namespace3/file
EXPECT_WITHIN 10 "Y" check_samples CREATE $NAMESPACE2_HASH /namespace2/file patchy0
EXPECT_WITHIN 10 "Y" check_samples CREATE $NAMESPACE3_HASH /namespace3/file patchy0
truncate -s 0 $N0/namespace/bar
EXPECT_WITHIN 10 "Y" check_samples TRUNCATE $NAMESPACE_HASH /namespace/bar patchy0
ln -s $N0/namespace/foo $N0/namespace/foo_link
EXPECT_WITHIN 10 "Y" check_samples SYMLINK $NAMESPACE_HASH /namespace/foo patchy3
open $N0/namespace/hey
EXPECT_WITHIN 10 "Y" check_samples OPEN $NAMESPACE_HASH /namespace/hey patchy6
cleanup;
|