From c279a2de0b677f547b2eba750cef12d41726205b Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 28 Mar 2017 22:19:11 -0400 Subject: [PATCH] test/osd/osd-dup.sh: filestore -> bluestore conversion test Pretty basic; just verifies the osd restarts and scrub doesn't immediately turn up problems. Signed-off-by: Sage Weil --- src/test/osd/CMakeLists.txt | 1 + src/test/osd/osd-dup.sh | 72 +++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100755 src/test/osd/osd-dup.sh diff --git a/src/test/osd/CMakeLists.txt b/src/test/osd/CMakeLists.txt index 35e07ad3e7178..f5985dc542830 100644 --- a/src/test/osd/CMakeLists.txt +++ b/src/test/osd/CMakeLists.txt @@ -27,6 +27,7 @@ add_ceph_test(osd-scrub-repair.sh ${CMAKE_CURRENT_SOURCE_DIR}/osd-scrub-repair.s add_ceph_test(osd-scrub-snaps.sh ${CMAKE_CURRENT_SOURCE_DIR}/osd-scrub-snaps.sh) add_ceph_test(osd-copy-from.sh ${CMAKE_CURRENT_SOURCE_DIR}/osd-copy-from.sh) add_ceph_test(osd-fast-mark-down.sh ${CMAKE_CURRENT_SOURCE_DIR}/osd-fast-mark-down.sh) +add_ceph_test(osd-dup.sh ${CMAKE_CURRENT_SOURCE_DIR}/osd-dup.sh) # unittest_osdmap add_executable(unittest_osdmap diff --git a/src/test/osd/osd-dup.sh b/src/test/osd/osd-dup.sh new file mode 100755 index 0000000000000..d0961143941d9 --- /dev/null +++ b/src/test/osd/osd-dup.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +source $(dirname $0)/../detect-build-env-vars.sh +source $CEPH_ROOT/qa/workunits/ceph-helpers.sh + +function run() { + local dir=$1 + shift + + export CEPH_MON="127.0.0.1:7146" # git grep '\<7146\>' : there must be only one + export CEPH_ARGS + CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none " + CEPH_ARGS+="--mon-host=$CEPH_MON " + CEPH_ARGS+="--enable-experimental-unrecoverable-data-corrupting-features bluestore " + local funcs=${@:-$(set | sed -n -e 's/^\(TEST_[0-9a-z_]*\) .*/\1/p')} + for func in $funcs ; do + setup $dir || return 1 + $func $dir || return 1 + teardown $dir || return 1 + done +} + +function TEST_filestore_to_bluestore() { + local dir=$1 + + run_mon $dir a || return 1 + run_osd $dir 0 || return 1 + osd_pid=$(cat $dir/osd.0.pid) + run_osd $dir 1 || return 1 + run_osd $dir 2 || return 1 + + sleep 5 + + ceph osd pool create foo 16 + + # write some objects + rados bench -p foo 10 write -b 4096 --no-cleanup || return 1 + + # kill + while kill $osd_pid; do sleep 1 ; done + ceph osd down 0 + + mv $dir/0 $dir/0.old || return 1 + mkdir $dir/0 || return 1 + ofsid=$(cat $dir/0.old/fsid) + echo "osd fsid $ofsid" + O=$CEPH_ARGS + CEPH_ARGS+="--log-file $dir/cot.log --log-max-recent 0 " + ceph-objectstore-tool --type bluestore --data-path $dir/0 --fsid $ofsid \ + --op mkfs || return 1 + ceph-objectstore-tool --data-path $dir/0.old --target-data-path $dir/0 \ + --op dup || return 1 + CEPH_ARGS=$O + + run_osd $dir 0 || return 1 + + while ! ceph osd stat | grep '3 up' ; do sleep 1 ; done + ceph osd metadata 0 | grep bluestore || return 1 + + ceph osd scrub 0 + + # give it some time + sleep 15 + + ceph -s | grep '20 active+clean' || return 1 +} + +main osd-dup "$@" + +# Local Variables: +# compile-command: "cd ../.. ; make -j4 && test/osd/osd-dup.sh" +# End: -- 2.39.5