]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
qa/workunits/objectstore/test_fuse.sh: simple workunit test
authorSage Weil <sage@redhat.com>
Thu, 14 Jan 2016 13:45:38 +0000 (08:45 -0500)
committerSage Weil <sage@redhat.com>
Wed, 27 Jan 2016 19:06:14 +0000 (14:06 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
qa/workunits/objectstore/test_fuse.sh [new file with mode: 0755]

diff --git a/qa/workunits/objectstore/test_fuse.sh b/qa/workunits/objectstore/test_fuse.sh
new file mode 100755 (executable)
index 0000000..4fa3302
--- /dev/null
@@ -0,0 +1,117 @@
+#!/bin/sh -ex
+
+if [[ $EUID -ne 0 ]]; then
+    echo "not root, re-running self via sudo"
+    sudo PATH=$PATH $0 || echo FAIL
+    exit 0
+fi
+
+function expect_false()
+{
+        set -x
+        if "$@"; then return 1; else return 0; fi
+}
+
+COT=ceph-objectstore-tool
+DATA=store_test_fuse_dir
+TYPE=bluestore
+MNT=store_test_fuse_mnt
+
+rm -rf $DATA
+mkdir -p $DATA
+
+fusermount -u $MNT || true
+rmdir $MNT || true
+mkdir $MNT
+
+$COT --op mkfs --data-path $DATA --type $TYPE
+$COT --op fuse --data-path $DATA --mountpoint $MNT &
+
+while ! test -e $MNT/type ; do
+    echo waiting for $MNT/type to appear
+    sleep 1
+done
+
+umask 0
+
+grep $TYPE $MNT/type
+
+# create collection
+mkdir $MNT/meta
+test -e $MNT/meta/bitwise_hash_start
+test -d $MNT/meta/all
+test -d $MNT/meta/by_bitwise_hash
+
+# create object
+mkdir $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@
+test -e $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/data
+test -d $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/attr
+test -d $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/omap
+test -e $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/bitwise_hash
+test -e $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/omap_header
+
+# omap header
+echo omap header > $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/omap_header
+grep -q omap $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/omap_header
+
+# omap
+echo value a > $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/omap/keya
+echo value b > $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/omap/keyb
+ls $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/omap | grep -c key | grep -q 2
+grep 'value a' $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/omap/keya
+grep 'value b' $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/omap/keyb
+rm $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/omap/keya
+test ! -e $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/omap/keya
+rm $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/omap/keyb
+test ! -e $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/omap/keyb
+
+# attr
+echo value a > $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/attr/keya
+echo value b > $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/attr/keyb
+ls $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/attr | grep -c key | grep -q 2
+grep 'value a' $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/attr/keya
+grep 'value b' $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/attr/keyb
+rm $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/attr/keya
+test ! -e $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/attr/keya
+rm $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/attr/keyb
+test ! -e $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/attr/keyb
+
+# data
+test ! -s $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/data
+echo asdfasdfasdf > $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/data
+test -s $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/data
+grep -q asdfasdfasdf $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/data
+rm $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/data
+test ! -s $MNT/meta/all/@-1:7b3f43c4:::osd_superblock:0@/data
+
+# create pg collection
+mkdir --mode 0003 $MNT/0.0_head
+cat $MNT/0.0_head/bitwise_hash_bits
+grep -q 3 $MNT/0.0_head/bitwise_hash_bits
+grep -q 00000000 $MNT/0.0_head/bitwise_hash_start
+grep -q 1fffffff $MNT/0.0_head/bitwise_hash_end
+test -d $MNT/0.0_head/all
+
+mkdir --mode 0003 $MNT/0.1_head
+grep -q 3 $MNT/0.1_head/bitwise_hash_bits
+grep -q 80000000 $MNT/0.1_head/bitwise_hash_start
+grep -q 9fffffff $MNT/0.1_head/bitwise_hash_end
+
+# create pg object
+mkdir $MNT/0.0_head/all/@0:00000000::::head@/
+mkdir $MNT/0.0_head/all/@0:10000000:::foo:head@/
+
+# verify pg bounds check
+expect_false mkdir $MNT/0.0_head/all/@0:20000000:::bar:head@/
+
+# remove a collection
+expect_false rmdir $MNT/0.0_head
+rmdir $MNT/0.0_head/all/@0:10000000:::foo:head@/
+rmdir $MNT/0.0_head/all/@0:00000000::::head@/
+rmdir $MNT/0.0_head
+rmdir $MNT/0.1_head
+
+fusermount -u $MNT
+wait
+
+echo OK