From 202d615d38f61c3d71d361e04110e61f6b77d274 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 23 Oct 2019 10:54:33 -0500 Subject: [PATCH] qa/standalone/test_ceph_daemon.sh: add new functional tests - sudo as needed - clean up afterward There is still a bit of missing coverage, but this captures most of it. Signed-off-by: Sage Weil --- qa/standalone/test_ceph_daemon.sh | 135 ++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100755 qa/standalone/test_ceph_daemon.sh diff --git a/qa/standalone/test_ceph_daemon.sh b/qa/standalone/test_ceph_daemon.sh new file mode 100755 index 00000000000..1eb4611258d --- /dev/null +++ b/qa/standalone/test_ceph_daemon.sh @@ -0,0 +1,135 @@ +#!/bin/bash -ex + +[ -z "$SUDO" ] && SUDO=sudo +[ -x ../src/ceph-daemon ] && CEPH_DAEMON=../src/ceph-daemon +[ -x ./ceph-daemon ] && CEPH_DAEMON=.ceph-daemon +which ceph-daemon && CEPH_DAEMON=$(which ceph-daemon) + +FSID='00000000-0000-0000-0000-0000deadbeef' +IMAGE='ceph/daemon-base:latest-master' + +# clean up previous run(s)? +$SUDO $CEPH_DAEMON rm-cluster --fsid $FSID --force + +TMPDIR=`mktemp -d -p .` +trap "rm -rf $TMPDIR" TERM HUP INT + +function expect_false() +{ + set -x + if "$@"; then return 1; else return 0; fi +} + +## version + --image +$SUDO $CEPH_DAEMON --image ceph/daemon-base:latest-nautilus version \ + | grep 'ceph version 14' +$SUDO $CEPH_DAEMON --image ceph/daemon-base:latest-mimic version \ + | grep 'ceph version 13' +$SUDO $CEPH_DAEMON --image $IMAGE version | grep 'ceph version' + +# try force docker; this won't work if docker isn't installed +which docker && ( $SUDO $CEPH_DAEMON --docker version | grep 'ceph version' ) + +## bootstrap +ORIG_CONFIG=`mktemp -p $TMPDIR` +CONFIG=`mktemp -p $TMPDIR` +KEYRING=`mktemp -p $TMPDIR` +IP=127.0.0.1 +cat < $ORIG_CONFIG +[global] +log to file = true +EOF +$SUDO $CEPH_DAEMON --image $IMAGE bootstrap \ + --mon-id a \ + --mgr-id x \ + --mon-ip $IP \ + --fsid $FSID \ + --config $ORIG_CONFIG \ + --output-config $CONFIG \ + --output-keyring $KEYRING \ + --skip-ssh +test -e $CONFIG +test -e $KEYRING +rm -f $ORIG_CONFIG + +$SUDO test -e /var/log/ceph/$FSID/ceph-mon.a.log +$SUDO test -e /var/log/ceph/$FSID/ceph-mgr.x.log + +for u in ceph.target \ + ceph-$FSID.target \ + ceph-$FSID@mon.a \ + ceph-$FSID@mgr.x; do + systemctl is-enabled $u + systemctl is-active $u +done +systemctl | grep system-ceph | grep -q .slice # naming is escaped and annoying + +## ls +$SUDO $CEPH_DAEMON ls | jq '.[]' | jq 'select(.name == "mon.a").fsid' \ + | grep $FSID +$SUDO $CEPH_DAEMON ls | jq '.[]' | jq 'select(.name == "mgr.x").fsid' \ + | grep $FSID + +## exec (and ceph -s works) +$SUDO $CEPH_DAEMON exec --fsid $FSID -n mon.a -- \ + ceph -k /var/lib/ceph/mon/ceph-a/keyring -n mon. -s | grep $FSID + +## deploy +# add mon.b +$SUDO $CEPH_DAEMON --image $IMAGE deploy --name mon.b \ + --fsid $FSID \ + --mon-ip $IP:3301 \ + --keyring /var/lib/ceph/$FSID/mon.a/keyring \ + --config $CONFIG +for u in ceph-$FSID@mon.b; do + systemctl is-enabled $u + systemctl is-active $u +done + +# add mgr.y +$SUDO $CEPH_DAEMON exec --fsid $FSID -n mon.a -- \ + ceph -k /var/lib/ceph/mon/ceph-a/keyring -n mon. \ + auth get-or-create mgr.y \ + mon 'allow profile mgr' \ + osd 'allow *' \ + mds 'allow *' > $TMPDIR/keyring.mgr.y +$SUDO $CEPH_DAEMON --image $IMAGE deploy --name mgr.y \ + --fsid $FSID \ + --keyring $TMPDIR/keyring.mgr.y \ + --config $CONFIG +for u in ceph-$FSID@mgr.y; do + systemctl is-enabled $u + systemctl is-active $u +done +for f in `seq 1 30`; do + if $SUDO $CEPH_DAEMON exec --fsid $FSID -n mon.a -- \ + ceph -k /var/lib/ceph/mon/ceph-a/keyring -n mon. -s -f json-pretty \ + | jq '.mgrmap.num_standbys' | grep -q 1 ; then break; fi + sleep 1 +done +$SUDO $CEPH_DAEMON exec --fsid $FSID -n mon.a -- \ + ceph -k /var/lib/ceph/mon/ceph-a/keyring -n mon. -s -f json-pretty \ + | jq '.mgrmap.num_standbys' | grep -q 1 + +## run +## shell +## enter +## unit +## adopt + +## ceph-volume +$SUDO $CEPH_DAEMON --image $IMAGE ceph-volume --fsid $FSID -- inventory --format=json \ + | jq '.[]' + +## rm-daemon +# mon and osd require --force +expect_false $SUDO $CEPH_DAEMON rm-daemon --fsid $FSID --name mon.a +# mgr does not +$SUDO $CEPH_DAEMON rm-daemon --fsid $FSID --name mgr.x + +## rm-cluster +expect_false $SUDO $CEPH_DAEMON rm-cluster --fsid $FSID +$SUDO $CEPH_DAEMON rm-cluster --fsid $FSID --force + +rm -rf $TMPDIR +echo PASS -- 2.39.5