diff options
Diffstat (limited to 'src/ceph/qa/workunits/rados/test_rados_tool.sh')
-rwxr-xr-x | src/ceph/qa/workunits/rados/test_rados_tool.sh | 575 |
1 files changed, 0 insertions, 575 deletions
diff --git a/src/ceph/qa/workunits/rados/test_rados_tool.sh b/src/ceph/qa/workunits/rados/test_rados_tool.sh deleted file mode 100755 index 87c86ee..0000000 --- a/src/ceph/qa/workunits/rados/test_rados_tool.sh +++ /dev/null @@ -1,575 +0,0 @@ -#!/bin/bash - -die() { - echo "$@" - exit 1 -} - -usage() { - cat <<EOF -test_rados_tool.sh: tests rados_tool --c: RADOS configuration file to use [optional] --k: keep temp files --h: this help message --p: set temporary pool to use [optional] -EOF -} - -do_run() { - if [ "$1" == "--tee" ]; then - shift - tee_out="$1" - shift - "$@" | tee $tee_out - else - "$@" - fi -} - -run_expect_fail() { - echo "RUN_EXPECT_FAIL: " "$@" - do_run "$@" - [ $? -eq 0 ] && die "expected failure, but got success! cmd: $@" -} - -run_expect_succ() { - echo "RUN_EXPECT_SUCC: " "$@" - do_run "$@" - [ $? -ne 0 ] && die "expected success, but got failure! cmd: $@" -} - -run_expect_nosignal() { - echo "RUN_EXPECT_NOSIGNAL: " "$@" - do_run "$@" - [ $? -ge 128 ] && die "expected succes or fail, but got signal! cmd: $@" -} - -run() { - echo "RUN: " $@ - do_run "$@" -} - -if [ -n "$CEPH_BIN" ] ; then - # CMake env - RADOS_TOOL="$CEPH_BIN/rados" - CEPH_TOOL="$CEPH_BIN/ceph" -else - # executables should be installed by the QA env - RADOS_TOOL=$(which rados) - CEPH_TOOL=$(which ceph) -fi - -KEEP_TEMP_FILES=0 -POOL=trs_pool -POOL_CP_TARGET=trs_pool.2 -POOL_EC=trs_pool_ec - -[ -x "$RADOS_TOOL" ] || die "couldn't find $RADOS_TOOL binary to test" -[ -x "$CEPH_TOOL" ] || die "couldn't find $CEPH_TOOL binary to test" - -while getopts "c:hkp:" flag; do - case $flag in - c) RADOS_TOOL="$RADOS_TOOL -c $OPTARG";; - k) KEEP_TEMP_FILES=1;; - h) usage; exit 0;; - p) POOL=$OPTARG;; - *) echo; usage; exit 1;; - esac -done - -TDIR=`mktemp -d -t test_rados_tool.XXXXXXXXXX` || die "mktemp failed" -[ $KEEP_TEMP_FILES -eq 0 ] && trap "rm -rf ${TDIR}; exit" INT TERM EXIT - -# ensure rados doesn't segfault without --pool -run_expect_nosignal "$RADOS_TOOL" --snap "asdf" ls -run_expect_nosignal "$RADOS_TOOL" --snapid "0" ls -run_expect_nosignal "$RADOS_TOOL" --object_locator "asdf" ls -run_expect_nosignal "$RADOS_TOOL" --namespace "asdf" ls - -run_expect_succ "$RADOS_TOOL" mkpool "$POOL" -run_expect_succ "$CEPH_TOOL" osd erasure-code-profile set myprofile k=2 m=1 stripe_unit=2K crush-failure-domain=osd --force -run_expect_succ "$CEPH_TOOL" osd pool create "$POOL_EC" 100 100 erasure myprofile - - -# expb happens to be the empty export for legacy reasons -run_expect_succ "$RADOS_TOOL" -p "$POOL" export "$TDIR/expb" - -# expa has objects foo, foo2 and bar -run_expect_succ "$RADOS_TOOL" -p "$POOL" put foo /etc/fstab -run_expect_succ "$RADOS_TOOL" -p "$POOL" put foo2 /etc/fstab -run_expect_succ "$RADOS_TOOL" -p "$POOL" put bar /etc/fstab -run_expect_succ "$RADOS_TOOL" -p "$POOL" export "$TDIR/expa" - -# expc has foo and foo2 with some attributes and omaps set -run_expect_succ "$RADOS_TOOL" -p "$POOL" rm bar -run_expect_succ "$RADOS_TOOL" -p "$POOL" setxattr foo "rados.toothbrush" "toothbrush" -run_expect_succ "$RADOS_TOOL" -p "$POOL" setxattr foo "rados.toothpaste" "crest" -run_expect_succ "$RADOS_TOOL" -p "$POOL" setomapval foo "rados.floss" "myfloss" -run_expect_succ "$RADOS_TOOL" -p "$POOL" setxattr foo2 "rados.toothbrush" "green" -run_expect_succ "$RADOS_TOOL" -p "$POOL" setomapheader foo2 "foo2.header" -run_expect_succ "$RADOS_TOOL" -p "$POOL" export "$TDIR/expc" - -# make sure that --create works -run "$RADOS_TOOL" rmpool "$POOL" "$POOL" --yes-i-really-really-mean-it -run_expect_succ "$RADOS_TOOL" -p "$POOL" --create import "$TDIR/expa" - -# make sure that lack of --create fails -run_expect_succ "$RADOS_TOOL" rmpool "$POOL" "$POOL" --yes-i-really-really-mean-it -run_expect_fail "$RADOS_TOOL" -p "$POOL" import "$TDIR/expa" - -run_expect_succ "$RADOS_TOOL" -p "$POOL" --create import "$TDIR/expa" - -# inaccessible import src should fail -run_expect_fail "$RADOS_TOOL" -p "$POOL" import "$TDIR/dir_nonexistent" - -# export an empty pool to test purge -run_expect_succ "$RADOS_TOOL" purge "$POOL" --yes-i-really-really-mean-it -run_expect_succ "$RADOS_TOOL" -p "$POOL" export "$TDIR/empty" -cmp -s "$TDIR/expb" "$TDIR/empty" \ - || die "failed to export the same stuff we imported!" -rm -f "$TDIR/empty" - -# import some stuff with extended attributes on it -run_expect_succ "$RADOS_TOOL" -p "$POOL" import "$TDIR/expc" -VAL=`"$RADOS_TOOL" -p "$POOL" getxattr foo "rados.toothbrush"` -[ ${VAL} = "toothbrush" ] || die "Invalid attribute after import" - -# the second time, the xattrs should match, so there should be nothing to do. -run_expect_succ "$RADOS_TOOL" -p "$POOL" import "$TDIR/expc" -VAL=`"$RADOS_TOOL" -p "$POOL" getxattr foo "rados.toothbrush"` -[ "${VAL}" = "toothbrush" ] || die "Invalid attribute after second import" - -# Now try with --no-overwrite option after changing an attribute -run_expect_succ "$RADOS_TOOL" -p "$POOL" setxattr foo "rados.toothbrush" "dentist" -run_expect_succ "$RADOS_TOOL" -p "$POOL" import --no-overwrite "$TDIR/expc" -VAL=`"$RADOS_TOOL" -p "$POOL" getxattr foo "rados.toothbrush"` -[ "${VAL}" = "dentist" ] || die "Invalid attribute after second import" - -# now force it to copy everything -run_expect_succ "$RADOS_TOOL" -p "$POOL" import "$TDIR/expc" -VAL=`"$RADOS_TOOL" -p "$POOL" getxattr foo "rados.toothbrush"` -[ "${VAL}" = "toothbrush" ] || die "Invalid attribute after second import" - -# test copy pool -run "$RADOS_TOOL" rmpool "$POOL" "$POOL" --yes-i-really-really-mean-it -run "$RADOS_TOOL" rmpool "$POOL_CP_TARGET" "$POOL_CP_TARGET" --yes-i-really-really-mean-it -run_expect_succ "$RADOS_TOOL" mkpool "$POOL" -run_expect_succ "$RADOS_TOOL" mkpool "$POOL_CP_TARGET" - -# create src files -mkdir -p "$TDIR/dir_cp_src" -for i in `seq 1 5`; do - fname="$TDIR/dir_cp_src/f.$i" - objname="f.$i" - dd if=/dev/urandom of="$fname" bs=$((1024*1024)) count=$i - run_expect_succ "$RADOS_TOOL" -p "$POOL" put $objname "$fname" - -# a few random attrs - for j in `seq 1 4`; do - rand_str=`dd if=/dev/urandom bs=4 count=1 | hexdump -x` - run_expect_succ "$RADOS_TOOL" -p "$POOL" setxattr $objname attr.$j "$rand_str" - run_expect_succ --tee "$fname.attr.$j" "$RADOS_TOOL" -p "$POOL" getxattr $objname attr.$j - done - - rand_str=`dd if=/dev/urandom bs=4 count=1 | hexdump -x` - run_expect_succ "$RADOS_TOOL" -p "$POOL" setomapheader $objname "$rand_str" - run_expect_succ --tee "$fname.omap.header" "$RADOS_TOOL" -p "$POOL" getomapheader $objname - -# a few random omap keys - for j in `seq 1 4`; do - rand_str=`dd if=/dev/urandom bs=4 count=1 | hexdump -x` - run_expect_succ "$RADOS_TOOL" -p "$POOL" setomapval $objname key.$j "$rand_str" - done - run_expect_succ --tee "$fname.omap.vals" "$RADOS_TOOL" -p "$POOL" listomapvals $objname -done - -run_expect_succ "$RADOS_TOOL" cppool "$POOL" "$POOL_CP_TARGET" - -mkdir -p "$TDIR/dir_cp_dst" -for i in `seq 1 5`; do - fname="$TDIR/dir_cp_dst/f.$i" - objname="f.$i" - run_expect_succ "$RADOS_TOOL" -p "$POOL_CP_TARGET" get $objname "$fname" - -# a few random attrs - for j in `seq 1 4`; do - run_expect_succ --tee "$fname.attr.$j" "$RADOS_TOOL" -p "$POOL_CP_TARGET" getxattr $objname attr.$j - done - - run_expect_succ --tee "$fname.omap.header" "$RADOS_TOOL" -p "$POOL_CP_TARGET" getomapheader $objname - run_expect_succ --tee "$fname.omap.vals" "$RADOS_TOOL" -p "$POOL_CP_TARGET" listomapvals $objname -done - -diff -q -r "$TDIR/dir_cp_src" "$TDIR/dir_cp_dst" \ - || die "copy pool validation failed!" - -for opt in \ - block-size \ - concurrent-ios \ - min-object-size \ - max-object-size \ - min-op-len \ - max-op-len \ - max-ops \ - max-backlog \ - target-throughput \ - read-percent \ - num-objects \ - run-length \ - ; do - run_expect_succ "$RADOS_TOOL" --$opt 4 df - run_expect_fail "$RADOS_TOOL" --$opt 4k df -done - -run_expect_succ "$RADOS_TOOL" lock list f.1 --lock-duration 4 --pool "$POOL" -echo # previous command doesn't output an end of line: issue #9735 -run_expect_fail "$RADOS_TOOL" lock list f.1 --lock-duration 4k --pool "$POOL" - -run_expect_succ "$RADOS_TOOL" mksnap snap1 --pool "$POOL" -snapid=$("$RADOS_TOOL" lssnap --pool "$POOL" | grep snap1 | cut -f1) -[ $? -ne 0 ] && die "expected success, but got failure! cmd: \"$RADOS_TOOL\" lssnap --pool \"$POOL\" | grep snap1 | cut -f1" -run_expect_succ "$RADOS_TOOL" ls --pool "$POOL" --snapid="$snapid" -run_expect_fail "$RADOS_TOOL" ls --pool "$POOL" --snapid="$snapid"k - -run_expect_succ "$RADOS_TOOL" chown 1 --pool "$POOL" -run_expect_fail "$RADOS_TOOL" chown 1k --pool "$POOL" - -run_expect_succ "$RADOS_TOOL" truncate f.1 0 --pool "$POOL" -run_expect_fail "$RADOS_TOOL" truncate f.1 0k --pool "$POOL" - -run "$RADOS_TOOL" rmpool delete_me_mkpool_test delete_me_mkpool_test --yes-i-really-really-mean-it -run_expect_succ "$RADOS_TOOL" mkpool delete_me_mkpool_test 0 0 -run_expect_fail "$RADOS_TOOL" mkpool delete_me_mkpool_test2 0k 0 -run_expect_fail "$RADOS_TOOL" mkpool delete_me_mkpool_test3 0 0k - -run_expect_succ "$RADOS_TOOL" --pool "$POOL" bench 1 write -run_expect_fail "$RADOS_TOOL" --pool "$POOL" bench 1k write -run_expect_succ "$RADOS_TOOL" --pool "$POOL" bench 1 write --format json --output "$TDIR/bench.json" -run_expect_fail "$RADOS_TOOL" --pool "$POOL" bench 1 write --output "$TDIR/bench.json" -run_expect_succ "$RADOS_TOOL" --pool "$POOL" bench 5 write --format json --no-cleanup -run_expect_succ "$RADOS_TOOL" --pool "$POOL" bench 1 rand --format json -run_expect_succ "$RADOS_TOOL" --pool "$POOL" bench 1 seq --format json -run_expect_succ "$RADOS_TOOL" --pool "$POOL" bench 5 write --write-omap -run_expect_succ "$RADOS_TOOL" --pool "$POOL" bench 5 write --write-object -run_expect_succ "$RADOS_TOOL" --pool "$POOL" bench 5 write --write-xattr -run_expect_succ "$RADOS_TOOL" --pool "$POOL" bench 5 write --write-xattr --write-object -run_expect_succ "$RADOS_TOOL" --pool "$POOL" bench 5 write --write-xattr --write-omap -run_expect_succ "$RADOS_TOOL" --pool "$POOL" bench 5 write --write-omap --write-object -run_expect_succ "$RADOS_TOOL" --pool "$POOL" bench 5 write --write-xattr --write-omap --write-object -run_expect_fail "$RADOS_TOOL" --pool "$POOL" bench 5 read --write-omap -run_expect_fail "$RADOS_TOOL" --pool "$POOL" bench 5 read --write-object -run_expect_fail "$RADOS_TOOL" --pool "$POOL" bench 5 read --write-xattr -run_expect_fail "$RADOS_TOOL" --pool "$POOL" bench 5 read --write-xattr --write-object -run_expect_fail "$RADOS_TOOL" --pool "$POOL" bench 5 read --write-xattr --write-omap -run_expect_fail "$RADOS_TOOL" --pool "$POOL" bench 5 read --write-omap --write-object -run_expect_fail "$RADOS_TOOL" --pool "$POOL" bench 5 read --write-xattr --write-omap --write-object - -for i in $("$RADOS_TOOL" --pool "$POOL" ls | grep "benchmark_data"); do - "$RADOS_TOOL" --pool "$POOL" truncate $i 0 -done - -run_expect_nosignal "$RADOS_TOOL" --pool "$POOL" bench 1 rand -run_expect_nosignal "$RADOS_TOOL" --pool "$POOL" bench 1 seq - -set -e - -OBJ=test_rados_obj - -expect_false() -{ - if "$@"; then return 1; else return 0; fi -} - -cleanup() { - $RADOS_TOOL -p $POOL rm $OBJ > /dev/null 2>&1 || true - $RADOS_TOOL -p $POOL_EC rm $OBJ > /dev/null 2>&1 || true -} - -test_omap() { - cleanup - for i in $(seq 1 1 10) - do - if [ $(($i % 2)) -eq 0 ]; then - $RADOS_TOOL -p $POOL setomapval $OBJ $i $i - else - echo -n "$i" | $RADOS_TOOL -p $POOL setomapval $OBJ $i - fi - $RADOS_TOOL -p $POOL getomapval $OBJ $i | grep -q "|$i|\$" - done - $RADOS_TOOL -p $POOL listomapvals $OBJ | grep -c value | grep 10 - for i in $(seq 1 1 5) - do - $RADOS_TOOL -p $POOL rmomapkey $OBJ $i - done - $RADOS_TOOL -p $POOL listomapvals $OBJ | grep -c value | grep 5 - cleanup - - for i in $(seq 1 1 10) - do - dd if=/dev/urandom bs=128 count=1 > $TDIR/omap_key - if [ $(($i % 2)) -eq 0 ]; then - $RADOS_TOOL -p $POOL --omap-key-file $TDIR/omap_key setomapval $OBJ $i - else - echo -n "$i" | $RADOS_TOOL -p $POOL --omap-key-file $TDIR/omap_key setomapval $OBJ - fi - $RADOS_TOOL -p $POOL --omap-key-file $TDIR/omap_key getomapval $OBJ | grep -q "|$i|\$" - $RADOS_TOOL -p $POOL --omap-key-file $TDIR/omap_key rmomapkey $OBJ - $RADOS_TOOL -p $POOL listomapvals $OBJ | grep -c value | grep 0 - done - cleanup -} - -test_xattr() { - cleanup - $RADOS_TOOL -p $POOL put $OBJ /etc/passwd - V1=`mktemp fooattrXXXXXXX` - V2=`mktemp fooattrXXXXXXX` - echo -n fooval > $V1 - expect_false $RADOS_TOOL -p $POOL setxattr $OBJ 2>/dev/null - expect_false $RADOS_TOOL -p $POOL setxattr $OBJ foo fooval extraarg 2>/dev/null - $RADOS_TOOL -p $POOL setxattr $OBJ foo fooval - $RADOS_TOOL -p $POOL getxattr $OBJ foo > $V2 - cmp $V1 $V2 - cat $V1 | $RADOS_TOOL -p $POOL setxattr $OBJ bar - $RADOS_TOOL -p $POOL getxattr $OBJ bar > $V2 - cmp $V1 $V2 - $RADOS_TOOL -p $POOL listxattr $OBJ > $V1 - grep -q foo $V1 - grep -q bar $V1 - [ `cat $V1 | wc -l` -eq 2 ] - rm $V1 $V2 - cleanup -} -test_rmobj() { - p=`uuidgen` - $CEPH_TOOL osd pool create $p 1 - $CEPH_TOOL osd pool set-quota $p max_objects 1 - V1=`mktemp fooattrXXXXXXX` - $RADOS_TOOL put $OBJ $V1 -p $p - while ! $CEPH_TOOL osd dump | grep 'full_no_quota max_objects' - do - sleep 2 - done - $RADOS_TOOL -p $p rm $OBJ --force-full - $RADOS_TOOL rmpool $p $p --yes-i-really-really-mean-it - rm $V1 -} - -test_ls() { - echo "Testing rados ls command" - p=`uuidgen` - $CEPH_TOOL osd pool create $p 1 - NS=10 - OBJS=20 - # Include default namespace (0) in the total - TOTAL=$(expr $OBJS \* $(expr $NS + 1)) - - for nsnum in `seq 0 $NS` - do - for onum in `seq 1 $OBJS` - do - if [ "$nsnum" = "0" ]; - then - "$RADOS_TOOL" -p $p put obj${onum} /etc/fstab 2> /dev/null - else - "$RADOS_TOOL" -p $p -N "NS${nsnum}" put obj${onum} /etc/fstab 2> /dev/null - fi - done - done - CHECK=$("$RADOS_TOOL" -p $p ls 2> /dev/null | wc -l) - if [ "$OBJS" -ne "$CHECK" ]; - then - die "Created $OBJS objects in default namespace but saw $CHECK" - fi - TESTNS=NS${NS} - CHECK=$("$RADOS_TOOL" -p $p -N $TESTNS ls 2> /dev/null | wc -l) - if [ "$OBJS" -ne "$CHECK" ]; - then - die "Created $OBJS objects in $TESTNS namespace but saw $CHECK" - fi - CHECK=$("$RADOS_TOOL" -p $p --all ls 2> /dev/null | wc -l) - if [ "$TOTAL" -ne "$CHECK" ]; - then - die "Created $TOTAL objects but saw $CHECK" - fi - - $RADOS_TOOL rmpool $p $p --yes-i-really-really-mean-it -} - -test_cleanup() { - echo "Testing rados cleanup command" - p=`uuidgen` - $CEPH_TOOL osd pool create $p 1 - NS=5 - OBJS=4 - # Include default namespace (0) in the total - TOTAL=$(expr $OBJS \* $(expr $NS + 1)) - - for nsnum in `seq 0 $NS` - do - for onum in `seq 1 $OBJS` - do - if [ "$nsnum" = "0" ]; - then - "$RADOS_TOOL" -p $p put obj${onum} /etc/fstab 2> /dev/null - else - "$RADOS_TOOL" -p $p -N "NS${nsnum}" put obj${onum} /etc/fstab 2> /dev/null - fi - done - done - - $RADOS_TOOL -p $p --all ls > $TDIR/before.ls.out 2> /dev/null - - $RADOS_TOOL -p $p bench 3 write --no-cleanup 2> /dev/null - $RADOS_TOOL -p $p -N NS1 bench 3 write --no-cleanup 2> /dev/null - $RADOS_TOOL -p $p -N NS2 bench 3 write --no-cleanup 2> /dev/null - $RADOS_TOOL -p $p -N NS3 bench 3 write --no-cleanup 2> /dev/null - # Leave dangling objects without a benchmark_last_metadata in NS4 - expect_false timeout 3 $RADOS_TOOL -p $p -N NS4 bench 30 write --no-cleanup 2> /dev/null - $RADOS_TOOL -p $p -N NS5 bench 3 write --no-cleanup 2> /dev/null - - $RADOS_TOOL -p $p -N NS3 cleanup 2> /dev/null - #echo "Check NS3 after specific cleanup" - CHECK=$($RADOS_TOOL -p $p -N NS3 ls | wc -l) - if [ "$OBJS" -ne "$CHECK" ] ; - then - die "Expected $OBJS objects in NS3 but saw $CHECK" - fi - - #echo "Try to cleanup all" - $RADOS_TOOL -p $p --all cleanup - #echo "Check all namespaces" - $RADOS_TOOL -p $p --all ls > $TDIR/after.ls.out 2> /dev/null - CHECK=$(cat $TDIR/after.ls.out | wc -l) - if [ "$TOTAL" -ne "$CHECK" ]; - then - die "Expected $TOTAL objects but saw $CHECK" - fi - if ! diff $TDIR/before.ls.out $TDIR/after.ls.out - then - die "Different objects found after cleanup" - fi - - set +e - run_expect_fail $RADOS_TOOL -p $p cleanup --prefix illegal_prefix - run_expect_succ $RADOS_TOOL -p $p cleanup --prefix benchmark_data_otherhost - set -e - - $RADOS_TOOL rmpool $p $p --yes-i-really-really-mean-it -} - -function test_append() -{ - cleanup - - # create object - touch ./rados_append_null - $RADOS_TOOL -p $POOL append $OBJ ./rados_append_null - $RADOS_TOOL -p $POOL get $OBJ ./rados_append_0_out - cmp ./rados_append_null ./rados_append_0_out - - # append 4k, total size 4k - dd if=/dev/zero of=./rados_append_4k bs=4k count=1 - $RADOS_TOOL -p $POOL append $OBJ ./rados_append_4k - $RADOS_TOOL -p $POOL get $OBJ ./rados_append_4k_out - cmp ./rados_append_4k ./rados_append_4k_out - - # append 4k, total size 8k - $RADOS_TOOL -p $POOL append $OBJ ./rados_append_4k - $RADOS_TOOL -p $POOL get $OBJ ./rados_append_4k_out - read_size=`ls -l ./rados_append_4k_out | awk -F ' ' '{print $5}'` - if [ 8192 -ne $read_size ]; - then - die "Append failed expecting 8192 read $read_size" - fi - - # append 10M, total size 10493952 - dd if=/dev/zero of=./rados_append_10m bs=10M count=1 - $RADOS_TOOL -p $POOL append $OBJ ./rados_append_10m - $RADOS_TOOL -p $POOL get $OBJ ./rados_append_10m_out - read_size=`ls -l ./rados_append_10m_out | awk -F ' ' '{print $5}'` - if [ 10493952 -ne $read_size ]; - then - die "Append failed expecting 10493952 read $read_size" - fi - - # cleanup - cleanup - - # create object - $RADOS_TOOL -p $POOL_EC append $OBJ ./rados_append_null - $RADOS_TOOL -p $POOL_EC get $OBJ ./rados_append_0_out - cmp rados_append_null rados_append_0_out - - # append 4k, total size 4k - $RADOS_TOOL -p $POOL_EC append $OBJ ./rados_append_4k - $RADOS_TOOL -p $POOL_EC get $OBJ ./rados_append_4k_out - cmp rados_append_4k rados_append_4k_out - - # append 4k, total size 8k - $RADOS_TOOL -p $POOL_EC append $OBJ ./rados_append_4k - $RADOS_TOOL -p $POOL_EC get $OBJ ./rados_append_4k_out - read_size=`ls -l ./rados_append_4k_out | awk -F ' ' '{print $5}'` - if [ 8192 -ne $read_size ]; - then - die "Append failed expecting 8192 read $read_size" - fi - - # append 10M, total size 10493952 - $RADOS_TOOL -p $POOL_EC append $OBJ ./rados_append_10m - $RADOS_TOOL -p $POOL_EC get $OBJ ./rados_append_10m_out - read_size=`ls -l ./rados_append_10m_out | awk -F ' ' '{print $5}'` - if [ 10493952 -ne $read_size ]; - then - die "Append failed expecting 10493952 read $read_size" - fi - - cleanup - rm -rf ./rados_append_null ./rados_append_0_out - rm -rf ./rados_append_4k ./rados_append_4k_out ./rados_append_10m ./rados_append_10m_out -} - -function test_put() -{ - # rados put test: - cleanup - - # create file in local fs - dd if=/dev/urandom of=rados_object_10k bs=1K count=10 - - # test put command - $RADOS_TOOL -p $POOL put $OBJ ./rados_object_10k - $RADOS_TOOL -p $POOL get $OBJ ./rados_object_10k_out - cmp ./rados_object_10k ./rados_object_10k_out - cleanup - - # test put command with offset 0 - $RADOS_TOOL -p $POOL put $OBJ ./rados_object_10k --offset 0 - $RADOS_TOOL -p $POOL get $OBJ ./rados_object_offset_0_out - cmp ./rados_object_10k ./rados_object_offset_0_out - cleanup - - # test put command with offset 1000 - $RADOS_TOOL -p $POOL put $OBJ ./rados_object_10k --offset 1000 - $RADOS_TOOL -p $POOL get $OBJ ./rados_object_offset_1000_out - cmp ./rados_object_10k ./rados_object_offset_1000_out 0 1000 - cleanup - - rm -rf ./rados_object_10k ./rados_object_10k_out ./rados_object_offset_0_out ./rados_object_offset_1000_out -} - -test_xattr -test_omap -test_rmobj -test_ls -test_cleanup -test_append -test_put - -# clean up environment, delete pool -$CEPH_TOOL osd pool delete $POOL $POOL --yes-i-really-really-mean-it -$CEPH_TOOL osd pool delete $POOL_EC $POOL_EC --yes-i-really-really-mean-it -$CEPH_TOOL osd pool delete $POOL_CP_TARGET $POOL_CP_TARGET --yes-i-really-really-mean-it - -echo "SUCCESS!" -exit 0 |