Skip to content

Commit 84a438c

Browse files
committed
TEST/MINOR: e2e: save the logs of HAProxy and dpapi on error
1 parent 956226e commit 84a438c

File tree

3 files changed

+24
-9
lines changed

3 files changed

+24
-9
lines changed

.gitlab-ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ test:
122122
artifacts:
123123
paths:
124124
- build
125+
- e2e/logs/*
126+
when: on_failure
125127
image:
126128
name: $CI_REGISTRY_GO/docker:$DOCKER_VERSION
127129
entrypoint: [""]

e2e/libs/cleanup.bash

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,6 @@
1717

1818
function cleanup() {
1919
echo ">>> Stopping ${1} docker container"
20-
docker stop "$1" > /dev/null 2>&1
20+
docker stop "$1" > /dev/null
21+
docker rm "$1" > /dev/null
2122
}

e2e/run.bash

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ export LOCAL_IP_ADDRESS=${LOCAL_IP_ADDRESS:-127.0.0.1}
3030

3131
source "${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+
3340
if ! docker version > /dev/null 2>&1; then
3441
echo '>>> Docker is not installed: cannot proceed for e2e test suite'
3542
fi
@@ -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"
5966
else
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"
7381
fi
7482

7583
echo '>>> Waiting dataplane API to be up and running'
7684
count=1
7785
DATAPLANE_USER=$(grep insecure-password ${E2E_DIR}/fixtures/userlist.cfg | awk '{print $2}')
7886
DATAPLANE_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
8695
done
@@ -94,6 +103,9 @@ else
94103
trap 'cleanup ${DOCKER_CONTAINER_NAME}' EXIT
95104
fi
96105

106+
# Print logs after test failure.
107+
trap dump_logs ERR
108+
97109
echo '>>> Starting test suite'
98110
if [ ! -z $TESTNAME ]; then
99111
bats -t "${E2E_DIR}"/tests/${TESTNAME}

0 commit comments

Comments
 (0)