From c913d4df61b5e0e6f52e4e1c81002d72c56460ff Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sun, 27 Jan 2019 14:27:57 +0800 Subject: [PATCH] test: listen on random port in tests which start ceph-mon See-also: http://tracker.ceph.com/issues/36737 Signed-off-by: Kefu Chai (cherry picked from commit 94a84b6f5adad75b3cbf956447ee5d9caf1018d2) --- qa/standalone/ceph-helpers.sh | 11 +++++++++++ src/test/smoke.sh | 11 ++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/qa/standalone/ceph-helpers.sh b/qa/standalone/ceph-helpers.sh index 3883a6f58d48b..5e1ce6cb97428 100755 --- a/qa/standalone/ceph-helpers.sh +++ b/qa/standalone/ceph-helpers.sh @@ -389,6 +389,17 @@ function test_kill_daemons() { teardown $dir || return 1 } +# +# return a random TCP port which is not used yet +# +# please note, there could be racing if we use this function for +# a free port, and then try to bind on this port. +# +function get_unused_port() { + local ip=127.0.0.1 + python3 -c "import socket; s=socket.socket(); s.bind(('$ip', 0)); print(s.getsockname()[1]); s.close()" +} + ####################################################################### ## diff --git a/src/test/smoke.sh b/src/test/smoke.sh index 297bbc7d67661..e0c25b534aad0 100755 --- a/src/test/smoke.sh +++ b/src/test/smoke.sh @@ -2,11 +2,13 @@ source $CEPH_ROOT/qa/standalone/ceph-helpers.sh +mon_port=$(get_unused_port) + function run() { local dir=$1 shift - export CEPH_MON="127.0.0.1:7224" # git grep '\<7224\>' : there must be only one + export CEPH_MON="127.0.0.1:$mon_port" export CEPH_ARGS CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none " CEPH_ARGS+="--mon-host=$CEPH_MON " @@ -34,10 +36,9 @@ function TEST_minimal() { function TEST_multimon() { local dir=$1 - - MONA="127.0.0.1:7224" # git grep '\<7224\>' : there must be only one - MONB="127.0.0.1:7225" # git grep '\<7225\>' : there must be only one - MONC="127.0.0.1:7226" # git grep '\<7226\>' : there must be only one + MONA="127.0.0.1:$((mon_port++))" + MONB="127.0.0.1:$((mon_port++))" + MONC="127.0.0.1:$((mon_port++))" run_mon $dir a --public-addr $MONA run_mon $dir b --public-addr $MONB -- 2.39.5