Skip to content

Commit

Permalink
test/osd/safe-to-destroy.sh: test 'osd safe-to-destroy'
Browse files Browse the repository at this point in the history
This is hard with workunits/cephtool/test.sh because we don't
control the whole cluster.

Signed-off-by: Sage Weil <sage@redhat.com>
  • Loading branch information
liewegas committed Aug 12, 2017
1 parent 1078e03 commit 08b3624
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/test/osd/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ install(TARGETS
ceph_test_rados
DESTINATION ${CMAKE_INSTALL_BINDIR})

# scripts
add_ceph_test(osd-bench.sh ${CMAKE_CURRENT_SOURCE_DIR}/safe-to-destroy.sh)

# unittest_osdmap
add_executable(unittest_osdmap
TestOSDMap.cc
Expand Down
99 changes: 99 additions & 0 deletions src/test/osd/safe-to-destroy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
#!/bin/bash

source $CEPH_ROOT/qa/standalone/ceph-helpers.sh

set -e

function run() {
local dir=$1
shift

export CEPH_MON="127.0.0.1:7227" # git grep '\<7227\>' : there must be only one
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' 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 degraded 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 degraded ceph osd ok-to-stop 0 1 2
expect_failure $dir degraded ceph osd ok-to-stop 0 1 2 3
}

main safe-to-destroy "$@"

0 comments on commit 08b3624

Please sign in to comment.