]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test: listen on random port in tests which start ceph-mon
authorKefu Chai <kchai@redhat.com>
Sun, 27 Jan 2019 06:27:57 +0000 (14:27 +0800)
committerKefu Chai <kchai@redhat.com>
Tue, 29 Jan 2019 12:16:18 +0000 (20:16 +0800)
See-also: http://tracker.ceph.com/issues/36737
Signed-off-by: Kefu Chai <kchai@redhat.com>
(cherry picked from commit 94a84b6f5adad75b3cbf956447ee5d9caf1018d2)

qa/standalone/ceph-helpers.sh
src/test/smoke.sh

index 3883a6f58d48bec49e9303c15561fb36b6c4cff0..5e1ce6cb97428d03a0226ee929f3ee5980eaff20 100755 (executable)
@@ -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()"
+}
+
 #######################################################################
 
 ##
index 297bbc7d676616bfe90c6f387cb6ea79b608f886..e0c25b534aad06a812f72017e33cafbb04737691 100755 (executable)
@@ -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