mirror of
https://github.com/ceph/ceph
synced 2024-12-28 06:23:08 +00:00
16980bd12f
The teuthology test did not like the change to remove 'mon addr' from ceph.conf. The standalone script is easier to test. Note that it avoids mon names 'a', 'b', 'c' since the MonMap::build_initial uses those. Signed-off-by: Sage Weil <sage@redhat.com>
73 lines
2.1 KiB
Bash
Executable File
73 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
source $CEPH_ROOT/qa/standalone/ceph-helpers.sh
|
|
|
|
function run() {
|
|
local dir=$1
|
|
shift
|
|
|
|
export CEPH_MON_A="127.0.0.1:7139" # git grep '\<7139\>' : there must be only one
|
|
export CEPH_MON_B="127.0.0.1:7141" # git grep '\<7141\>' : there must be only one
|
|
export CEPH_MON_C="127.0.0.1:7142" # git grep '\<7142\>' : there must be only one
|
|
export CEPH_ARGS
|
|
CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none "
|
|
|
|
export BASE_CEPH_ARGS=$CEPH_ARGS
|
|
CEPH_ARGS+="--mon-host=$CEPH_MON_A "
|
|
|
|
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_mon_seesaw() {
|
|
local dir=$1
|
|
|
|
setup $dir || return
|
|
|
|
# start with 1 mon
|
|
run_mon $dir aa --public-addr $CEPH_MON_A || return 1
|
|
run_mgr $dir x || return 1
|
|
run_osd $dir 0 || return 1
|
|
run_osd $dir 1 || return 1
|
|
run_osd $dir 2 || return 1
|
|
|
|
wait_for_quorum 300 1 || return 1
|
|
|
|
# add in a second
|
|
run_mon $dir bb --public-addr $CEPH_MON_B || return 1
|
|
CEPH_ARGS="$BASE_CEPH_ARGS --mon-host=$CEPH_MON_A,$CEPH_MON_B"
|
|
wait_for_quorum 300 2 || return 1
|
|
|
|
# remove the first one
|
|
ceph mon rm aa || return 1
|
|
CEPH_ARGS="$BASE_CEPH_ARGS --mon-host=$CEPH_MON_B"
|
|
sleep 5
|
|
wait_for_quorum 300 1 || return 1
|
|
|
|
# do some stuff that requires the osds be able to communicate with the
|
|
# mons. (see http://tracker.ceph.com/issues/17558)
|
|
ceph osd pool create foo 8
|
|
rados -p foo bench 1 write
|
|
wait_for_clean || return 1
|
|
|
|
# nuke monstore so that it will rejoin (otherwise we get
|
|
# "not in monmap and have been in a quorum before; must have been removed"
|
|
rm -rf $dir/aa
|
|
|
|
# add a back in
|
|
# (use a different addr to avoid bind issues)
|
|
run_mon $dir aa --public-addr $CEPH_MON_C || return 1
|
|
CEPH_ARGS="$BASE_CEPH_ARGS --mon-host=$CEPH_MON_C,$CEPH_MON_B"
|
|
wait_for_quorum 300 2 || return 1
|
|
}
|
|
|
|
main mon-seesaw "$@"
|
|
|
|
# Local Variables:
|
|
# compile-command: "cd ../.. ; make -j4 && test/mon/mon-ping.sh"
|
|
# End:
|