diff options
author | Varsha Rao <varao@redhat.com> | 2018-02-12 10:37:15 +0530 |
---|---|---|
committer | Varsha Rao <varshar16@review.gluster.org> | 2018-02-21 09:52:17 +0000 |
commit | d0e7177416be3005b3f092addf0bba4dd9dc7a2d (patch) | |
tree | 34158ebb910b6de730f47dc2d903da7040809d47 /tests | |
parent | 49e57efa515f12013da9f5293846aff17ac48f7d (diff) |
xlators/features/namespace: Add namespace xlator and link into brick graph
The following release-3.8-fb branch patch is upstreamed:
> features/namespace: Add namespace xlator and link into brick graph
> Commit ID: dbd30776f26e
> https://review.gluster.org/#/c/18041/
> By Michael Goulet <mgoulet@fb.com>
Changes in this patch:
Removes extra config.h and namespace.h file in namespace.c
Adds default_getspec_cbk to libglusterfs.sym
Rename dict_for_each to dict_foreach_inline
Remove fd.h header file stack.h
Add test case for truncate, open and symlink
This patch is required to forward port io-threads namespace patch.
Updates: #401
Change-Id: Ib88c95b89eecee9b8957df8a4c8712c899c761d1
Signed-off-by: Varsha Rao <varao@redhat.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/basic/namespace.t | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/tests/basic/namespace.t b/tests/basic/namespace.t new file mode 100644 index 00000000000..ea473abbc1c --- /dev/null +++ b/tests/basic/namespace.t @@ -0,0 +1,104 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc +. $(dirname $0)/../nfs.rc + +# These hashes are a result of calling SuperFastHash +# on the corresponding folder names. +NAMESPACE_HASH=28153613 +NAMESPACE2_HASH=3926991974 +NAMESPACE3_HASH=3493960770 + +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)" + + 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; |