pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/docker-playground/+/37471?usp=email )
Change subject: asterisk: Wait for Asterisk ready before starting testsuite ......................................................................
asterisk: Wait for Asterisk ready before starting testsuite
A recent commit made Asterisk wait for dnsmasq to be ready before starting it. This means Asterisk takes more time now to be ready itself, hence we need to delay launching the testsuite until it is ready. Otherwise, the entire set of tests may be run even before Asterisk gets to answer on the AMI socket.
Change-Id: I337d57f3eb3e6688dbf3c61d55978da10d84b2cb --- M ttcn3-asterisk-ims-ue-test/jenkins.sh M ttcn3-asterisk-ims-ue-test/ttcn3/ttcn3.sh 2 files changed, 28 insertions(+), 3 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/71/37471/1
diff --git a/ttcn3-asterisk-ims-ue-test/jenkins.sh b/ttcn3-asterisk-ims-ue-test/jenkins.sh index cad25bd..0707cb9 100755 --- a/ttcn3-asterisk-ims-ue-test/jenkins.sh +++ b/ttcn3-asterisk-ims-ue-test/jenkins.sh @@ -74,6 +74,7 @@ --ulimit core=-1 \ -e "TTCN3_PCAP_PATH=/data" \ -e "EXTRA_IPADDR=${EXTRA_IPADDR}" \ + -e "ASTERISK_IPADDR=${ASTERISK_IPADDR}" \ -v "$VOL_BASE_DIR/asterisk-ims-ue-tester-${test_config}:/data" \ --name "${BUILD_TAG}-ttcn3-asterisk-ims-ue-test" \ $DOCKER_ARGS \ @@ -109,17 +110,19 @@ if [ "$i" = "ipv4" ]; then NETMASK_PREFIX="24" SUBNET_IP_PREFIX="$SUB4_PREFIX.$SUBNET" + ASTERISK_IPADDR="${SUBNET_IP_PREFIX}.${ASTERISK_IP_SUFFIX}" DNS_IPADDR="${SUBNET_IP_PREFIX}.${DNS_IP_SUFFIX}" EXTRA_IPADDR="${SUBNET_IP_PREFIX}.${IMSCORE_IP_SUFFIX}/${NETMASK_PREFIX}" elif [ "$i" = "ipv6" ]; then NETMASK_PREFIX="64" SUBNET_IP_PREFIX="$SUB6_PREFIX:$SUBNET" + ASTERISK_IPADDR="${SUBNET_IP_PREFIX}::${ASTERISK_IP_SUFFIX}" DNS_IPADDR="${SUBNET_IP_PREFIX}::${DNS_IP_SUFFIX}" EXTRA_IPADDR="${SUBNET_IP_PREFIX}::${IMSCORE_IP_SUFFIX}/${NETMASK_PREFIX}"
# Replace IPv4 addresses with IPv6 ones: REPLACE_V4_TO_V6_EXPR="s,${SUB4_PREFIX}.${SUBNET}.,${SUB6_PREFIX}:${SUBNET}::,g" - REPLACE_V4_TO_V6_PORT_EXPR="s,${SUB4_PREFIX}.${SUBNET}.${ASTERISK_IP_SUFFIX}:,[${SUB6_PREFIX}:${SUBNET}::${ASTERISK_IP_SUFFIX}]:,g" + REPLACE_V4_TO_V6_PORT_EXPR="s,${SUB4_PREFIX}.${SUBNET}.${ASTERISK_IP_SUFFIX}:,[${ASTERISK_IPADDR}]:,g" sed -i -E -e "${REPLACE_V4_TO_V6_EXPR}" "${VOL_BASE_DIR}/dnsmasq-${i}"/*.conf sed -i -E -e "s,${SUB4_PREFIX}.${SUBNET}.${TTCN3_IP_SUFFIX}/24,${SUB6_PREFIX}:${SUBNET}::${TTCN3_IP_SUFFIX}/${NETMASK_PREFIX},g" "${VOL_BASE_DIR}/asterisk-${i}"/manager.conf sed -i -E -e "s,${SUB4},${SUB6},g" "${VOL_BASE_DIR}/asterisk-${i}"/*.conf @@ -130,8 +133,6 @@
start_dnsmasq "$i" start_asterisk "$i" - # Leave some time for asterisk to start: - sleep 5 start_testsuite "$i"
docker_kill_wait "$BUILD_TAG"-asterisk || true diff --git a/ttcn3-asterisk-ims-ue-test/ttcn3/ttcn3.sh b/ttcn3-asterisk-ims-ue-test/ttcn3/ttcn3.sh index e1d4fac..a18d93f 100755 --- a/ttcn3-asterisk-ims-ue-test/ttcn3/ttcn3.sh +++ b/ttcn3-asterisk-ims-ue-test/ttcn3/ttcn3.sh @@ -13,4 +13,13 @@ # IPv6 addresses may take an extra while to be available ('tentative' state): while [ -n "$(ip -6 addr show tentative)" ]; do sleep 1; done
+# Wait for Asterisk to be ready, which in turn may be waiting for dnsmasq to be ready... +for i in $(seq 30); do + set -e + netcat -z -v "${ASTERISK_IPADDR}" 5038 && break + set +e + echo "[$i] Asterisk AMI ${ASTERISK_IPADDR} (port 5038) not ready, waiting..." + sleep 1 +done + ttcn3-docker-run asterisk Asterisk_Tests