#!/bin/bash
# pgbench rerun: the first run's server never became ready on a host bind mount
# (pg_isready timed out after 60 s, client could not resolve 'postgrestest' because the
# container had exited). This run keeps the data directory in a named Docker volume.
set -u
# Results land next to this script, wherever the folder lives.
OUT="$(cd "$(dirname "$0")" && pwd)"
IMG=postgres:alpine; NET=postgresnet; PGNAME=postgrestest; VOL=postgrestest-data
for i in 1 2 3; do
  {
    echo "## attempt $i (named volume)  $(date -u +%T)"
    docker rm -f $PGNAME >/dev/null 2>&1; docker network rm $NET >/dev/null 2>&1; docker volume rm $VOL >/dev/null 2>&1
    docker network create $NET
    docker run --name=$PGNAME -e POSTGRES_PASSWORD=postgrespass --network $NET -v $VOL:/var/lib/postgresql/data -d $IMG
    for t in $(seq 1 60); do docker exec $PGNAME pg_isready -U postgres >/dev/null 2>&1 && break; sleep 1; done
    docker exec $PGNAME pg_isready -U postgres
    docker run --rm --network $NET -e PGPASSWORD=postgrespass $IMG sh -c 'pgbench --host=postgrestest -U postgres -i -s 10 postgres ; pgbench --host=postgrestest -U postgres -c 10 -t 10 postgres' 2>&1
    echo "--- server log tail:"; docker logs --tail 5 $PGNAME 2>&1
    docker stop $PGNAME >/dev/null; docker rm $PGNAME >/dev/null; docker network rm $NET >/dev/null; docker volume rm $VOL >/dev/null
    echo
  } >> "$OUT/pgbench.txt"
done
echo "- pgbench rerun: data directory in a named volume instead of a host bind mount, and no -p 5432 publish (the first attempt's server container never reached pg_isready on the bind mount; see pgbench.txt attempts 1-3)." >> "$OUT/adaptations.txt"
echo "pgbench rerun done"
