X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fqa%2Fworkunits%2Frbd%2Fjournal.sh;fp=src%2Fceph%2Fqa%2Fworkunits%2Frbd%2Fjournal.sh;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=60b5a41038f15c87973ae3a77cb22cc902eecc4c;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/qa/workunits/rbd/journal.sh b/src/ceph/qa/workunits/rbd/journal.sh deleted file mode 100755 index 60b5a41..0000000 --- a/src/ceph/qa/workunits/rbd/journal.sh +++ /dev/null @@ -1,310 +0,0 @@ -#!/bin/bash -e - -. $(dirname $0)/../../standalone/ceph-helpers.sh - -function list_tests() -{ - echo "AVAILABLE TESTS" - for i in $TESTS; do - echo " $i" - done -} - -function usage() -{ - echo "usage: $0 [-h|-l|-t [-t ...] [--no-sanity-check] [--no-cleanup]]" -} - -function expect_false() -{ - set -x - if "$@"; then return 1; else return 0; fi -} - -function save_commit_position() -{ - local journal=$1 - - rados -p rbd getomapval journal.${journal} client_ \ - $TMPDIR/${journal}.client_.omap -} - -function restore_commit_position() -{ - local journal=$1 - - rados -p rbd setomapval journal.${journal} client_ \ - < $TMPDIR/${journal}.client_.omap -} - -test_rbd_journal() -{ - local image=testrbdjournal$$ - - rbd create --image-feature exclusive-lock --image-feature journaling \ - --size 128 ${image} - local journal=$(rbd info ${image} --format=xml 2>/dev/null | - $XMLSTARLET sel -t -v "//image/journal") - test -n "${journal}" - rbd journal info ${journal} - rbd journal info --journal ${journal} - rbd journal info --image ${image} - - rbd feature disable ${image} journaling - - rbd info ${image} --format=xml 2>/dev/null | - expect_false $XMLSTARLET sel -t -v "//image/journal" - expect_false rbd journal info ${journal} - expect_false rbd journal info --image ${image} - - rbd feature enable ${image} journaling - - local journal1=$(rbd info ${image} --format=xml 2>/dev/null | - $XMLSTARLET sel -t -v "//image/journal") - test "${journal}" = "${journal1}" - - rbd journal info ${journal} - - rbd journal status ${journal} - - local count=10 - save_commit_position ${journal} - rbd bench-write ${image} --io-size 4096 --io-threads 1 \ - --io-total $((4096 * count)) --io-pattern seq - rbd journal status --image ${image} | fgrep "tid=$((count - 1))" - restore_commit_position ${journal} - rbd journal status --image ${image} | fgrep "positions=[]" - local count1=$(rbd journal inspect --verbose ${journal} | - grep -c 'event_type.*AioWrite') - test "${count}" -eq "${count1}" - - rbd journal export ${journal} $TMPDIR/journal.export - local size=$(stat -c "%s" $TMPDIR/journal.export) - test "${size}" -gt 0 - - rbd export ${image} $TMPDIR/${image}.export - - local image1=${image}1 - rbd create --image-feature exclusive-lock --image-feature journaling \ - --size 128 ${image1} - journal1=$(rbd info ${image1} --format=xml 2>/dev/null | - $XMLSTARLET sel -t -v "//image/journal") - - save_commit_position ${journal1} - rbd journal import --dest ${image1} $TMPDIR/journal.export - rbd snap create ${image1}@test - restore_commit_position ${journal1} - # check that commit position is properly updated: the journal should contain - # 12 entries (10 AioWrite + 1 SnapCreate + 1 OpFinish) and commit - # position set to tid=11 - rbd journal inspect --image ${image1} --verbose | awk ' - /AioWrite/ {w++} # match: "event_type": "AioWrite", - /SnapCreate/ {s++} # match: "event_type": "SnapCreate", - /OpFinish/ {f++} # match: "event_type": "OpFinish", - /entries inspected/ {t=$1; e=$4} # match: 12 entries inspected, 0 errors - {print} # for diagnostic - END { - if (w != 10 || s != 1 || f != 1 || t != 12 || e != 0) exit(1) - } - ' - - rbd export ${image1}@test $TMPDIR/${image1}.export - cmp $TMPDIR/${image}.export $TMPDIR/${image1}.export - - rbd journal reset ${journal} - - rbd journal inspect --verbose ${journal} | expect_false grep 'event_type' - - rbd snap purge ${image1} - rbd remove ${image1} - rbd remove ${image} -} - - -rbd_assert_eq() { - local image=$1 - local cmd=$2 - local param=$3 - local expected_val=$4 - - local val=$(rbd --format xml ${cmd} --image ${image} | - $XMLSTARLET sel -t -v "${param}") - test "${val}" = "${expected_val}" -} - -test_rbd_create() -{ - local image=testrbdcreate$$ - - rbd create --image-feature exclusive-lock --image-feature journaling \ - --journal-pool rbd \ - --journal-object-size 20M \ - --journal-splay-width 6 \ - --size 256 ${image} - - rbd_assert_eq ${image} 'journal info' '//journal/order' 25 - rbd_assert_eq ${image} 'journal info' '//journal/splay_width' 6 - rbd_assert_eq ${image} 'journal info' '//journal/object_pool' rbd - - rbd remove ${image} -} - -test_rbd_copy() -{ - local src=testrbdcopys$$ - rbd create --size 256 ${src} - - local image=testrbdcopy$$ - rbd copy --image-feature exclusive-lock --image-feature journaling \ - --journal-pool rbd \ - --journal-object-size 20M \ - --journal-splay-width 6 \ - ${src} ${image} - - rbd remove ${src} - - rbd_assert_eq ${image} 'journal info' '//journal/order' 25 - rbd_assert_eq ${image} 'journal info' '//journal/splay_width' 6 - rbd_assert_eq ${image} 'journal info' '//journal/object_pool' rbd - - rbd remove ${image} -} - -test_rbd_clone() -{ - local parent=testrbdclonep$$ - rbd create --image-feature layering --size 256 ${parent} - rbd snap create ${parent}@snap - rbd snap protect ${parent}@snap - - local image=testrbdclone$$ - rbd clone --image-feature layering --image-feature exclusive-lock --image-feature journaling \ - --journal-pool rbd \ - --journal-object-size 20M \ - --journal-splay-width 6 \ - ${parent}@snap ${image} - - rbd_assert_eq ${image} 'journal info' '//journal/order' 25 - rbd_assert_eq ${image} 'journal info' '//journal/splay_width' 6 - rbd_assert_eq ${image} 'journal info' '//journal/object_pool' rbd - - rbd remove ${image} - rbd snap unprotect ${parent}@snap - rbd snap purge ${parent} - rbd remove ${parent} -} - -test_rbd_import() -{ - local src=testrbdimports$$ - rbd create --size 256 ${src} - - rbd export ${src} $TMPDIR/${src}.export - rbd remove ${src} - - local image=testrbdimport$$ - rbd import --image-feature exclusive-lock --image-feature journaling \ - --journal-pool rbd \ - --journal-object-size 20M \ - --journal-splay-width 6 \ - $TMPDIR/${src}.export ${image} - - rbd_assert_eq ${image} 'journal info' '//journal/order' 25 - rbd_assert_eq ${image} 'journal info' '//journal/splay_width' 6 - rbd_assert_eq ${image} 'journal info' '//journal/object_pool' rbd - - rbd remove ${image} -} - -test_rbd_feature() -{ - local image=testrbdfeature$$ - - rbd create --image-feature exclusive-lock --size 256 ${image} - - rbd feature enable ${image} journaling \ - --journal-pool rbd \ - --journal-object-size 20M \ - --journal-splay-width 6 - - rbd_assert_eq ${image} 'journal info' '//journal/order' 25 - rbd_assert_eq ${image} 'journal info' '//journal/splay_width' 6 - rbd_assert_eq ${image} 'journal info' '//journal/object_pool' rbd - - rbd remove ${image} -} - -TESTS+=" rbd_journal" -TESTS+=" rbd_create" -TESTS+=" rbd_copy" -TESTS+=" rbd_clone" -TESTS+=" rbd_import" -TESTS+=" rbd_feature" - -# -# "main" follows -# - -tests_to_run=() - -sanity_check=true -cleanup=true - -while [[ $# -gt 0 ]]; do - opt=$1 - - case "$opt" in - "-l" ) - do_list=1 - ;; - "--no-sanity-check" ) - sanity_check=false - ;; - "--no-cleanup" ) - cleanup=false - ;; - "-t" ) - shift - if [[ -z "$1" ]]; then - echo "missing argument to '-t'" - usage ; - exit 1 - fi - tests_to_run+=" $1" - ;; - "-h" ) - usage ; - exit 0 - ;; - esac - shift -done - -if [[ $do_list -eq 1 ]]; then - list_tests ; - exit 0 -fi - -TMPDIR=/tmp/rbd_journal$$ -mkdir $TMPDIR -if $cleanup; then - trap "rm -fr $TMPDIR" 0 -fi - -if test -z "$tests_to_run" ; then - tests_to_run="$TESTS" -fi - -for i in $tests_to_run; do - if $sanity_check ; then - wait_for_clean - fi - set -x - test_${i} - set +x -done -if $sanity_check ; then - wait_for_clean -fi - -echo OK