pespin has submitted this change. ( 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(-)
Approvals: osmith: Looks good to me, but someone else must approve Jenkins Builder: Verified pespin: Looks good to me, approved
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..5787d1f 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 100); 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