Unverified Commit 398992c7 authored by Erik Wilson's avatar Erik Wilson Committed by GitHub

Merge pull request #603 from erikwilson/e2e-update

Clean up sonobuoy scripts
parents 75dbce57 7a1fad75
...@@ -28,6 +28,7 @@ export -f get-port ...@@ -28,6 +28,7 @@ export -f get-port
K3S_PORT=$(timeout --foreground 5s bash -c get-port) K3S_PORT=$(timeout --foreground 5s bash -c get-port)
OUTPUT=$(pwd)/sonobuoy-output/${K3S_PORT} OUTPUT=$(pwd)/sonobuoy-output/${K3S_PORT}
mkdir -p ${OUTPUT} mkdir -p ${OUTPUT}
RESULTS="${OUTPUT}/plugins/e2e/results/e2e.log"
SECRET=random-$((100000 + RANDOM % 999999)) SECRET=random-$((100000 + RANDOM % 999999))
export K3S_AGENT=sonobuoy-k3s-agent-${K3S_PORT} export K3S_AGENT=sonobuoy-k3s-agent-${K3S_PORT}
...@@ -49,17 +50,6 @@ trap cleanup EXIT ...@@ -49,17 +50,6 @@ trap cleanup EXIT
# --- # ---
dump-logs() {
for container in ${CONTAINERS}; do
docker cp ${container}:/var/lib/rancher/k3s/agent/containerd/containerd.log ${OUTPUT}/${container}-containerd.log
docker logs ${container} >${OUTPUT}/${container}.log 2>&1
cat ${OUTPUT}/${container}-containerd.log
cat ${OUTPUT}/${container}.log
done
}
# ---
docker run -d --name ${K3S_SERVER} --privileged \ docker run -d --name ${K3S_SERVER} --privileged \
-p 127.0.0.1:${K3S_PORT}:${K3S_PORT} \ -p 127.0.0.1:${K3S_PORT}:${K3S_PORT} \
-e K3S_CLUSTER_SECRET=${SECRET} \ -e K3S_CLUSTER_SECRET=${SECRET} \
...@@ -137,32 +127,76 @@ timeout --foreground 1m bash -c wait-for-services ...@@ -137,32 +127,76 @@ timeout --foreground 1m bash -c wait-for-services
# --- # ---
echo "Starting sonobuoy tests" dump-container-logs() {
for container in ${CONTAINERS}; do
docker cp ${container}:/var/lib/rancher/k3s/agent/containerd/containerd.log ${OUTPUT}/${container}-containerd.log
docker logs ${container} >${OUTPUT}/${container}.log 2>&1
cat ${OUTPUT}/${container}-containerd.log
cat ${OUTPUT}/${container}.log
done
}
export -f dump-container-logs
# ---
timeout --foreground 30m sonobuoy run \ sonobuoy-destruct() {
--config scripts/sonobuoy-config.json \ sonobuoy logs
--wait \ sonobuoy delete --wait
${@} }
sonobuoy status export -f sonobuoy-destruct
sonobuoy retrieve ${OUTPUT}
# ---
(
cd ${OUTPUT} sonobuoy-test() {
tar xzf *_sonobuoy_*.tar.gz timeout --foreground 30m sonobuoy run \
results="./plugins/e2e/results/e2e.log" --config scripts/sonobuoy-config.json \
[ -s ${results} ] || { --wait \
dump-logs "${@}"
exit 1 if sonobuoy status | grep "failed"; then
} sonobuoy-destruct
tail -20 ${results} return 1
fi
exit_code=0 sonobuoy retrieve ${OUTPUT}
status=$(tail -5 ${results} | grep '^SUCCESS!.*| 0 Failed |' >/dev/null && echo passed || echo failed)
[ "${status}" = "failed" ] && exit_code=1 tar x -z -f ${OUTPUT}/*_sonobuoy_*.tar.gz -C ${OUTPUT}
if [ ! -s ${RESULTS} ]; then
if [ -n "${E2E_LOG_OUTPUT}" ]; then sonobuoy-destruct
cp ${results} $(echo ${E2E_LOG_OUTPUT} | sed -e "s/-STATUS-/-${status}-/g") return 1
fi fi
exit ${exit_code} tail -20 ${RESULTS}
) }
export -f sonobuoy-test
# ---
sonobuoy-retry-test() {
SECONDS=0
LIMIT=300
for i in seq 1 3; do
sonobuoy-test "${@}" && return
echo "Failed sonobuoy try #${i}"
if [[ "$SECONDS" > "$LIMIT" ]]; then
echo "Stopping sonobuoy re-try after ${SECONDS} seconds (limit ${LIMIT}s)"
break
fi
done
dump-container-logs
return 1
}
export -f sonobuoy-retry-test
# ---
echo "Starting sonobuoy tests"
sonobuoy-retry-test "${@}"
exit_code=0
status=$(tail -5 ${RESULTS} | grep '^SUCCESS!.*| 0 Failed |' >/dev/null && echo passed || echo failed)
[ "${status}" = "failed" ] && exit_code=1
if [ -n "${E2E_LOG_OUTPUT}" ]; then
cp ${RESULTS} $(echo ${E2E_LOG_OUTPUT} | sed -e "s/-STATUS-/-${status}-/g")
fi
exit ${exit_code}
...@@ -6,8 +6,8 @@ cd $(dirname $0)/.. ...@@ -6,8 +6,8 @@ cd $(dirname $0)/..
cleanup() { cleanup() {
exit_code=$? exit_code=$?
set +e set +e
echo "Waiting on the tests!"
wait wait
echo "Finished the tests!"
exit ${exit_code} exit ${exit_code}
} }
trap cleanup EXIT trap cleanup EXIT
...@@ -40,9 +40,6 @@ log_output=${OUTPUT}/e2e-STATUS-${ARCH}-parallel.log \ ...@@ -40,9 +40,6 @@ log_output=${OUTPUT}/e2e-STATUS-${ARCH}-parallel.log \
run-sonobuoy --e2e-focus='\[Conformance\]' --e2e-skip='\[Serial\]' --e2e-parallel=y run-sonobuoy --e2e-focus='\[Conformance\]' --e2e-skip='\[Serial\]' --e2e-parallel=y
exit_code=0
for pid in "${pids[@]}"; do for pid in "${pids[@]}"; do
wait $pid || exit_code=$? wait $pid || exit $?
done done
trap - EXIT
exit ${exit_code}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment