#!/bin/bash . ./scripts/test-setup-sonobuoy # --- cluster-pre-hook() { # gen-certs mkdir -p $TEST_DIR/db/$LABEL_SUFFIX/metadata local testID=$(basename $TEST_DIR) local name=$(echo $LABEL_SUFFIX-$testID | tee $TEST_DIR/db/$LABEL_SUFFIX/metadata/name) local port=$(timeout --foreground 5s bash -c get-port | tee $TEST_DIR/db/$LABEL_SUFFIX/metadata/port) local secret=$(echo "${RANDOM}${RANDOM}${RANDOM}" | tee $TEST_DIR/db/$LABEL_SUFFIX/metadata/secret) docker run --name $name \ --privileged \ -p 0.0.0.0:$port:5432 \ -v $TEST_DIR/db-ca/:/db-ca \ -e POSTGRES_USER=root \ -e POSTGRES_PASSWORD=$secret \ -d postgres:latest \ >/dev/null # -c ssl=on \ # -c ssl_ca_file=/db-ca/certs/ca.crt \ # -c ssl_cert_file=/db-ca/certs/db.crt \ # -c ssl_key_file=/db-ca/private/db.key \ local ip=$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' $name | tee $TEST_DIR/db/$LABEL_SUFFIX/metadata/ip) # local host=host.docker.internal local host=172.17.0.1 DB_CONNECTION_TEST=" docker run -v $TEST_DIR/db-ca/:/db-ca -e PGPASSWORD=$secret --rm postgres psql -h $host -p $port -U root -c \conninfo" \ timeout --foreground 1m bash -c "wait-for-db-connection" # --set sslrootcert=/db-ca/certs/ca.crt # --set sslcert=/db-ca/certs/client.crt # --set sslkey=/db-ca/private/client.key echo "Started $LABEL_SUFFIX db @ $host" export SERVER_ARGS="${SERVER_ARGS} --datastore-endpoint=postgres://root:$secret@$host:$port/testdb?sslmode=disable " # --datastore-cafile /db-ca/certs/ca.crt # --datastore-certfile /db-ca/certs/client.crt # --datastore-keyfile /db-ca/private/client.key } export -f cluster-pre-hook test-post-hook() { if [[ $1 -eq 0 ]]; then return fi local failures=$(awk '/^Summarizing .* Failures?:$/,0' "$TEST_DIR"/sonobuoy/plugins/e2e/results/global/e2e.log) # Ignore sonobuoy failures if only these flaky tests have failed flakyFails=$( grep -scF -f ./scripts/flaky-tests <<< "$failures" ) totalFails=$( grep -scF -e "[Fail]" <<< "$failures" ) [ "$totalFails" -le "$flakyFails" ] } export -f test-post-hook