mirror of https://github.com/ceph/ceph
73 lines
2.1 KiB
Bash
73 lines
2.1 KiB
Bash
|
#!/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:
|