]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
add test_rados_sync.sh
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Fri, 6 May 2011 22:55:42 +0000 (15:55 -0700)
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Fri, 6 May 2011 22:55:42 +0000 (15:55 -0700)
Signed-off-by: Colin McCabe <colin.mccabe@dreamhost.com>
src/test/test_rados_sync.sh [new file with mode: 0755]

diff --git a/src/test/test_rados_sync.sh b/src/test/test_rados_sync.sh
new file mode 100755 (executable)
index 0000000..c6f43dc
--- /dev/null
@@ -0,0 +1,82 @@
+#!/bin/bash
+
+VERBOSE=0
+
+die() {
+    echo "$@"
+    exit 1
+}
+
+usage() {
+    cat <<EOF
+test_rados_sync.sh: tests rados_sync
+-c:        RADOS configuration file to use [optional]
+-k:        keep temp files
+-h:        this help message
+-p:        set temporary pool to use [optional]
+-v:        be verbose
+EOF
+}
+
+run_expect_fail() {
+    echo "RUN_EXPECT_FAIL: " $@
+    $@
+    [ $? -eq 0 ] && die "expected failure, but got success! cmd: $@"
+}
+
+run_expect_succ() {
+    echo "RUN_EXPECT_SUCC: " $@
+    $@
+    [ $? -ne 0 ] && die "expected success, but got failure! cmd: $@"
+}
+
+run() {
+    echo "RUN: " $@
+    $@
+}
+
+DNAME="`dirname $0`"
+DNAME="`readlink -f $DNAME`"
+RADOS_SYNC="`readlink -f \"$DNAME/../rados_sync\"`"
+RADOS_TOOL="`readlink -f \"$DNAME/../rados\"`"
+KEEP_TEMP_FILES=0
+POOL=trs_pool
+[ -x "$RADOS_SYNC" ] || die "couldn't find $RADOS_SYNC binary to test"
+[ -x "$RADOS_TOOL" ] || die "couldn't find $RADOS_TOOL binary"
+which attr &>/dev/null
+[ $? -eq 0 ] || die "you must install the 'attr' tool to manipulate \
+extended attributes."
+
+while getopts  "c:hkp:" flag; do
+    case $flag in
+        c)  RADOS_SYNC="$RADOS_SYNC -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_sync.XXXXXXXXXX` || die "mktemp failed"
+[ $KEEP_TEMP_FILES -eq 0 ] && trap "rm -rf ${TDIR}; exit" INT TERM EXIT
+
+mkdir "$TDIR/dira"
+touch "$TDIR/dira/00037b0_foo"
+attr -q -s rados_full_name -V "foo" "$TDIR/dira/00037b0_foo"
+touch "$TDIR/dira/00037b0_foo2"
+attr -q -s rados_full_name -V "foo2" "$TDIR/dira/00037b0_foo2"
+touch "$TDIR/dira/00037b0_bar"
+attr -q -s rados_full_name -V "bar" "$TDIR/dira/00037b0_bar"
+mkdir "$TDIR/dirb"
+
+# make sure that --create works
+run "$RADOS_TOOL" rmpool "$POOL"
+
+run_expect_succ "$RADOS_SYNC" --create import "$TDIR/dira" "$POOL"
+
+# make sure that lack of --create fails
+run_expect_succ "$RADOS_TOOL" rmpool "$POOL"
+run_expect_fail "$RADOS_SYNC" import "$TDIR/dira" "$POOL"
+
+echo "SUCCESS!"
+exit 0