@@ -30,6 +30,13 @@ export LOCAL_IP_ADDRESS=${LOCAL_IP_ADDRESS:-127.0.0.1}
3030
3131source " ${E2E_DIR} /libs/cleanup.bash"
3232
33+ dump_logs () {
34+ echo " >>> dumping container logs"
35+ mkdir -p " ${E2E_DIR} /logs"
36+ docker logs " ${DOCKER_CONTAINER_NAME} " & > " ${E2E_DIR} /logs/haproxy.log"
37+ docker cp -q " ${DOCKER_CONTAINER_NAME} :/var/log/dataplaneapi.log" " ${E2E_DIR} /logs/dataplaneapi.log"
38+ }
39+
3340if ! docker version > /dev/null 2>&1 ; then
3441 echo ' >>> Docker is not installed: cannot proceed for e2e test suite'
3542fi
@@ -58,29 +65,31 @@ if [ ! -z $(docker ps -q -f name=${DOCKER_CONTAINER_NAME}) ]; then
5865 echo " >>> Skipping provisioning the e2e environment, ${DOCKER_CONTAINER_NAME} already present"
5966else
6067 echo ' >>> Provisioning the e2e environment'
61- docker run \
62- --rm \
63- --detach \
68+ docker create \
6469 --name ${DOCKER_CONTAINER_NAME} \
6570 --publish " ${E2E_PORT} " :8080 \
6671 --security-opt seccomp=unconfined \
67- " ${DOCKER_BASE_IMAGE} " $HAPROXY_FLAGS > /dev/null 2>&1
68- docker cp " ${ROOT_DIR} /build/dataplaneapi" ${DOCKER_CONTAINER_NAME} :/usr/local/bin/dataplaneapi
69- docker cp " ${E2E_DIR} /fixtures/dataplaneapi${VARIANT} .yaml" ${DOCKER_CONTAINER_NAME} :/etc/haproxy/dataplaneapi.yaml
72+ --env CI_DATAPLANE_RELOAD_DELAY_OVERRIDE=1 \
73+ " ${DOCKER_BASE_IMAGE} " $HAPROXY_FLAGS > /dev/null
7074 docker cp " ${E2E_DIR} /fixtures/haproxy.cfg" ${DOCKER_CONTAINER_NAME} :/etc/haproxy/haproxy.cfg
7175 docker cp " ${E2E_DIR} /fixtures/userlist.cfg" ${DOCKER_CONTAINER_NAME} :/etc/haproxy/userlist.cfg
72- docker exec -d ${DOCKER_CONTAINER_NAME} sh -c " CI_DATAPLANE_RELOAD_DELAY_OVERRIDE=1 dataplaneapi -f /etc/haproxy/dataplaneapi.yaml"
76+ docker start ${DOCKER_CONTAINER_NAME} > /dev/null
77+ sleep 1 # sometimes 'docker start' returns too fast and the exec fails
78+ docker cp " ${ROOT_DIR} /build/dataplaneapi" ${DOCKER_CONTAINER_NAME} :/usr/local/bin/dataplaneapi
79+ docker cp " ${E2E_DIR} /fixtures/dataplaneapi${VARIANT} .yaml" ${DOCKER_CONTAINER_NAME} :/etc/haproxy/dataplaneapi.yaml
80+ docker exec -d ${DOCKER_CONTAINER_NAME} sh -c " dataplaneapi -f /etc/haproxy/dataplaneapi.yaml 2>>/var/log/dataplaneapi.log"
7381fi
7482
7583echo ' >>> Waiting dataplane API to be up and running'
7684count=1
7785DATAPLANE_USER=$( grep insecure-password ${E2E_DIR} /fixtures/userlist.cfg | awk ' {print $2}' )
7886DATAPLANE_PASS=$( grep insecure-password ${E2E_DIR} /fixtures/userlist.cfg | awk ' {print $4}' )
79- until curl -s " ${DATAPLANE_USER} :${DATAPLANE_PASS} @${LOCAL_IP_ADDRESS} " :" ${E2E_PORT}${BASE_PATH} /specification" 2>&1 1 > /dev/null; do
87+ until curl -sS " ${DATAPLANE_USER} :${DATAPLANE_PASS} @${LOCAL_IP_ADDRESS} " :" ${E2E_PORT}${BASE_PATH} /specification" > /dev/null; do
8088 sleep 1;
8189 (( count++ ))
8290 if [ $count -eq 10 ]; then
8391 echo " >>> timeout waiting for dataplaneapi to start"
92+ dump_logs
8493 exit 1
8594 fi
8695done
94103 trap ' cleanup ${DOCKER_CONTAINER_NAME}' EXIT
95104fi
96105
106+ # Print logs after test failure.
107+ trap dump_logs ERR
108+
97109echo ' >>> Starting test suite'
98110if [ ! -z $TESTNAME ]; then
99111 bats -t " ${E2E_DIR} " /tests/${TESTNAME}
0 commit comments