#!/bin/bash
# Third pgbench attempt: postgres:alpine is now PostgreSQL 18, whose image refuses a volume
# mounted at /var/lib/postgresql/data (see the server log in pgbench.txt). The named volume
# is mounted at /var/lib/postgresql instead, as the image's own notes ask.
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 (volume at /var/lib/postgresql)  $(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 -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 exec $PGNAME postgres --version
    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
    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 third attempt: postgres:alpine resolves to PostgreSQL 18, whose image refuses a volume at /var/lib/postgresql/data; the named volume is mounted at /var/lib/postgresql as the image's notes require. The post's host bind mount of the data directory is therefore not reproduced." >> "$OUT/adaptations.txt"
docker rmi postgres:alpine >/dev/null 2>&1
echo "pgbench rerun2 done"
