From 8a007ae21940b747421f047ff68e3a0acb309b5c Mon Sep 17 00:00:00 2001 From: SwimmingTiger Date: Thu, 27 Jun 2019 14:40:12 +0800 Subject: [PATCH] Autotest: Fix failed to start test before port is being listened; Remove unused sleep. --- docker/btcpool/test/btc/helper/functions.sh | 26 +++++++++++++++++-- .../test/btc/testcase/0010-test-gbtmaker | 1 - .../test/btc/testcase/0011-test-jobmaker | 1 - .../testcase/0012-test-sserver-job-sending | 3 ++- .../testcase/0013-test-sserver-submit-shares | 3 ++- 5 files changed, 28 insertions(+), 6 deletions(-) diff --git a/docker/btcpool/test/btc/helper/functions.sh b/docker/btcpool/test/btc/helper/functions.sh index 18c8d431e..cc13565ea 100755 --- a/docker/btcpool/test/btc/helper/functions.sh +++ b/docker/btcpool/test/btc/helper/functions.sh @@ -2,12 +2,34 @@ # Wait for the container to run # arg1: container name +WAIT_FOR_CONTAINER() { + container_name="$1" + while ! docker inspect -f '{{.State.Running}}' "$container_name" &>/dev/null; do + sleep 1 + done +} + +# Wait for the port be listened then run a command +# arg1: container name # arg2...: args of wait-for-it.sh WAIT_FOR_IT() { container_name="$1" shift 1 - while ! docker inspect -f '{{.State.Running}}' "$container_name" &>/dev/null; do + WAIT_FOR_CONTAINER "$container_name" + docker exec "$container_name" /wait-for-it.sh "$@" +} + +# Wait for the port be listened without creating a connection +# Use this function to wait for the sserver listen port to avoid initial session id changes. +# arg1: container name +# arg2: port +WAIT_FOR_PORT() { + container_name="$1" + port="$2" + WAIT_FOR_CONTAINER "$container_name" + while [ "$(docker exec "$container_name" netstat -lntp | grep ":$port" | wc -l)" = "0" ]; do + echo "waiting for port $port..." sleep 1 done - docker exec "$container_name" /wait-for-it.sh "$@" + echo "port $port is ready" } diff --git a/docker/btcpool/test/btc/testcase/0010-test-gbtmaker b/docker/btcpool/test/btc/testcase/0010-test-gbtmaker index ca8699a27..35f29b50b 100755 --- a/docker/btcpool/test/btc/testcase/0010-test-gbtmaker +++ b/docker/btcpool/test/btc/testcase/0010-test-gbtmaker @@ -17,7 +17,6 @@ $DOCKER_COMPOSE down >>$STDOUT echo "start gbtmaker (5s)..." $DOCKER_COMPOSE up gbtmaker >>$STDOUT & -sleep 5 $WAIT_FOR_IT kafka:9092 { diff --git a/docker/btcpool/test/btc/testcase/0011-test-jobmaker b/docker/btcpool/test/btc/testcase/0011-test-jobmaker index 634c17e73..192e8ebfb 100755 --- a/docker/btcpool/test/btc/testcase/0011-test-jobmaker +++ b/docker/btcpool/test/btc/testcase/0011-test-jobmaker @@ -17,7 +17,6 @@ $DOCKER_COMPOSE down >>$STDOUT echo "start jobmaker (5s)..." $DOCKER_COMPOSE up jobmaker >>$STDOUT & -sleep 5 $WAIT_FOR_IT kafka:9092 outputTestData() { diff --git a/docker/btcpool/test/btc/testcase/0012-test-sserver-job-sending b/docker/btcpool/test/btc/testcase/0012-test-sserver-job-sending index 5d241125e..75f8924c0 100755 --- a/docker/btcpool/test/btc/testcase/0012-test-sserver-job-sending +++ b/docker/btcpool/test/btc/testcase/0012-test-sserver-job-sending @@ -7,6 +7,7 @@ MAIN_CONTAINER_NAME="btc_sserver_1" SSERVER_RESULT="/tmp/btcpool-test-sserver.$PID.log" KAFKA_PRODUCER="docker exec -i btc_kafka_1 /opt/kafka/bin/kafka-console-producer.sh --broker-list kafka:9092" WAIT_FOR_IT="WAIT_FOR_IT $MAIN_CONTAINER_NAME" +WAIT_FOR_PORT="WAIT_FOR_PORT $MAIN_CONTAINER_NAME" DOCKER_COMPOSE="docker-compose --no-ansi" cd "$BASE_DIR" @@ -16,8 +17,8 @@ $DOCKER_COMPOSE down >>$STDOUT echo "start sserver (5s)..." $DOCKER_COMPOSE up sserver >>$STDOUT & -sleep 5 $WAIT_FOR_IT kafka:9092 +$WAIT_FOR_PORT 3333 outputTestData() { cat "$BASE_DIR/testdata/stratumjobs-1.log" \ diff --git a/docker/btcpool/test/btc/testcase/0013-test-sserver-submit-shares b/docker/btcpool/test/btc/testcase/0013-test-sserver-submit-shares index 74fc24439..fe8f99f7a 100755 --- a/docker/btcpool/test/btc/testcase/0013-test-sserver-submit-shares +++ b/docker/btcpool/test/btc/testcase/0013-test-sserver-submit-shares @@ -7,6 +7,7 @@ MAIN_CONTAINER_NAME="btc_sserver_1" KAFKA_CONSUMER="docker exec btc_kafka_1 /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server kafka:9092" KAFKA_PRODUCER="docker exec -i btc_kafka_1 /opt/kafka/bin/kafka-console-producer.sh --broker-list kafka:9092" WAIT_FOR_IT="WAIT_FOR_IT $MAIN_CONTAINER_NAME" +WAIT_FOR_PORT="WAIT_FOR_PORT $MAIN_CONTAINER_NAME" DOCKER_COMPOSE="docker-compose --no-ansi" cd "$BASE_DIR" @@ -16,8 +17,8 @@ $DOCKER_COMPOSE down >>$STDOUT echo "start sserver (5s)..." $DOCKER_COMPOSE up sserver >>$STDOUT & -sleep 5 $WAIT_FOR_IT kafka:9092 +$WAIT_FOR_PORT 3333 outputTestData() { cat "$BASE_DIR/testdata/stratumjobs-1.log" \