diff options
Diffstat (limited to 'src/test/osd/safe-to-destroy.sh')
-rwxr-xr-x | src/test/osd/safe-to-destroy.sh | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/src/test/osd/safe-to-destroy.sh b/src/test/osd/safe-to-destroy.sh new file mode 100755 index 000000000..08afc8e8d --- /dev/null +++ b/src/test/osd/safe-to-destroy.sh @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + +source $CEPH_ROOT/qa/standalone/ceph-helpers.sh + +set -e + +function run() { + local dir=$1 + shift + + export CEPH_MON="127.0.0.1:$(get_unused_port)" + export CEPH_ARGS + CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none " + CEPH_ARGS+="--mon-host=$CEPH_MON " + set -e + + 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_safe_to_destroy() { + local dir=$1 + + run_mon $dir a + run_mgr $dir x + run_osd $dir 0 + run_osd $dir 1 + run_osd $dir 2 + run_osd $dir 3 + + flush_pg_stats + + ceph osd safe-to-destroy 0 + ceph osd safe-to-destroy 1 + ceph osd safe-to-destroy 2 + ceph osd safe-to-destroy 3 + + ceph osd pool create foo 128 + sleep 2 + flush_pg_stats + wait_for_clean + + expect_failure $dir 'pgs currently' ceph osd safe-to-destroy 0 + expect_failure $dir 'pgs currently' ceph osd safe-to-destroy 1 + expect_failure $dir 'pgs currently' ceph osd safe-to-destroy 2 + expect_failure $dir 'pgs currently' ceph osd safe-to-destroy 3 + + ceph osd out 0 + sleep 2 + flush_pg_stats + wait_for_clean + + ceph osd safe-to-destroy 0 + + # even osds without osd_stat are ok if all pgs are active+clean + id=`ceph osd create` + ceph osd safe-to-destroy $id +} + +function TEST_ok_to_stop() { + local dir=$1 + + run_mon $dir a + run_mgr $dir x + run_osd $dir 0 + run_osd $dir 1 + run_osd $dir 2 + run_osd $dir 3 + + ceph osd pool create foo 128 + ceph osd pool set foo size 3 + ceph osd pool set foo min_size 2 + sleep 1 + flush_pg_stats + wait_for_clean + + ceph osd ok-to-stop 0 + ceph osd ok-to-stop 1 + ceph osd ok-to-stop 2 + ceph osd ok-to-stop 3 + expect_failure $dir bad_become_inactive ceph osd ok-to-stop 0 1 + + ceph osd pool set foo min_size 1 + sleep 1 + flush_pg_stats + wait_for_clean + ceph osd ok-to-stop 0 1 + ceph osd ok-to-stop 1 2 + ceph osd ok-to-stop 2 3 + ceph osd ok-to-stop 3 4 + expect_failure $dir bad_become_inactive ceph osd ok-to-stop 0 1 2 + expect_failure $dir bad_become_inactive ceph osd ok-to-stop 0 1 2 3 +} + +main safe-to-destroy "$@" |