From 2c13a26cac47420326433c54509c1400732e9bc6 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Mon, 9 Oct 2023 17:41:10 +0200 Subject: [PATCH] test: add support of ipv6 in start-two-nodes-in-docker.sh --- scripts/test/start-two-nodes-in-docker.sh | 43 ++++++++++++++++++++--- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/scripts/test/start-two-nodes-in-docker.sh b/scripts/test/start-two-nodes-in-docker.sh index 53689b207..a6fe4d522 100755 --- a/scripts/test/start-two-nodes-in-docker.sh +++ b/scripts/test/start-two-nodes-in-docker.sh @@ -16,6 +16,7 @@ NET='emqx.io' NODE1="node1.$NET" NODE2="node2.$NET" COOKIE='this-is-a-secret' +IPV6=0 cleanup() { docker rm -f haproxy >/dev/null 2>&1 || true @@ -24,31 +25,61 @@ cleanup() { docker network rm "$NET" >/dev/null 2>&1 || true } -while getopts ":Pc" opt +show_help() { + echo "Usage: $0 [options] EMQX_IMAGE1 [EMQX_IAMGE2]" + echo "" + echo "Specifiy which docker image to run with EMQX_IMAGE1" + echo "EMQX_IMAGE2 is the same as EMQX_IMAGE1 if not set" + echo "" + echo "Options:" + echo " -h, --help Show this help message and exit." + echo " -P Add -p options for docker run to expose more HAProxy container ports." + echo " -6 Test with IPv6" + echo " -c Cleanup: delete docker network, force delete the containers." +} + +while getopts "hc6P:" opt do case $opt in # -P option is treated similarly to docker run -P: # publish ports to random available host ports P) HAPROXY_PORTS=(-p 18083 -p 8883 -p 8084);; c) cleanup; exit 0;; + h) show_help; exit 0;; + 6) IPV6=1;; *) ;; esac done shift $((OPTIND - 1)) -IMAGE1="${1}" +IMAGE1="${1:-}" IMAGE2="${2:-${IMAGE1}}" +if [ -z "${IMAGE1:-}" ] || [ -z "${IMAGE2:-}" ]; then + show_help + exit 1 +fi + cleanup -docker network create "$NET" +if [ ${IPV6} = 1 ]; then + docker network create --ipv6 --subnet 2001:0DB8::/112 "$NET" + RPC_ADDRESS="::" + PROTO_DIST='inet6_tls' +else + docker network create "$NET" + RPC_ADDRESS="0.0.0.0" + PROTO_DIST='inet_tls' +fi docker run -d -t --restart=always --name "$NODE1" \ --net "$NET" \ -e EMQX_LOG__CONSOLE_HANDLER__LEVEL=debug \ -e EMQX_NODE_NAME="emqx@$NODE1" \ -e EMQX_NODE_COOKIE="$COOKIE" \ - -e EMQX_CLUSTER__PROTO_DIST='inet_tls' \ + -e EMQX_CLUSTER__PROTO_DIST="${PROTO_DIST}" \ + -e EMQX_RPC__LISTEN_ADDRESS="${RPC_ADDRESS}" \ + -e EMQX_RPC__IPV6_ONLY="true" \ -e EMQX_listeners__ssl__default__enable=false \ -e EMQX_listeners__wss__default__enable=false \ -e EMQX_listeners__tcp__default__proxy_protocol=true \ @@ -60,7 +91,9 @@ docker run -d -t --restart=always --name "$NODE2" \ -e EMQX_LOG__CONSOLE_HANDLER__LEVEL=debug \ -e EMQX_NODE_NAME="emqx@$NODE2" \ -e EMQX_NODE_COOKIE="$COOKIE" \ - -e EMQX_CLUSTER__PROTO_DIST='inet_tls' \ + -e EMQX_CLUSTER__PROTO_DIST="${PROTO_DIST}" \ + -e EMQX_RPC__LISTEN_ADDRESS="${RPC_ADDRESS}" \ + -e EMQX_RPC__IPV6_ONLY="true" \ -e EMQX_listeners__ssl__default__enable=false \ -e EMQX_listeners__wss__default__enable=false \ -e EMQX_listeners__tcp__default__proxy_protocol=true \