From 5d042c7ec7c19da0431bf5e1d4421376a741c2fa Mon Sep 17 00:00:00 2001 From: Johan Brandhorst-Satzkorn Date: Mon, 25 Apr 2022 16:06:06 -0400 Subject: [PATCH] feat(dbtest): Mount DB dumps and create templates Mount the benchmark dump directory when running the test database and create a new script for creating templates from the dumps. This makes it easy to create pre-populated databases for benchmark tests. Fixes https://hashicorp.atlassian.net/browse/ICU-4040 --- testing/dbtest/docker/Dockerfile.11-alpine | 1 + testing/dbtest/docker/Dockerfile.12-alpine | 1 + testing/dbtest/docker/Dockerfile.13-alpine | 1 + testing/dbtest/docker/Dockerfile.alpine | 1 + testing/dbtest/docker/Makefile | 1 + testing/dbtest/docker/restore-benchmark-dumps.sh | 16 ++++++++++++++++ 6 files changed, 21 insertions(+) create mode 100644 testing/dbtest/docker/restore-benchmark-dumps.sh diff --git a/testing/dbtest/docker/Dockerfile.11-alpine b/testing/dbtest/docker/Dockerfile.11-alpine index f569cac04a..bb1098f7a8 100644 --- a/testing/dbtest/docker/Dockerfile.11-alpine +++ b/testing/dbtest/docker/Dockerfile.11-alpine @@ -1,6 +1,7 @@ FROM postgres:11-alpine ADD init-db.sh /docker-entrypoint-initdb.d/00-init-db.sh +ADD restore-benchmark-dumps.sh /docker-entrypoint-initdb.d/01-restore-benchmark-dumps.sh ADD postgresql.conf /etc/postgresql/postgresql.conf CMD ["postgres", "-c", "config_file=/etc/postgresql/postgresql.conf"] diff --git a/testing/dbtest/docker/Dockerfile.12-alpine b/testing/dbtest/docker/Dockerfile.12-alpine index 3ffdb3d35e..37fc19200c 100644 --- a/testing/dbtest/docker/Dockerfile.12-alpine +++ b/testing/dbtest/docker/Dockerfile.12-alpine @@ -1,6 +1,7 @@ FROM postgres:12-alpine ADD init-db.sh /docker-entrypoint-initdb.d/00-init-db.sh +ADD restore-benchmark-dumps.sh /docker-entrypoint-initdb.d/01-restore-benchmark-dumps.sh ADD postgresql.conf /etc/postgresql/postgresql.conf CMD ["postgres", "-c", "config_file=/etc/postgresql/postgresql.conf"] diff --git a/testing/dbtest/docker/Dockerfile.13-alpine b/testing/dbtest/docker/Dockerfile.13-alpine index ddab38a164..8279fe13e6 100644 --- a/testing/dbtest/docker/Dockerfile.13-alpine +++ b/testing/dbtest/docker/Dockerfile.13-alpine @@ -1,6 +1,7 @@ FROM postgres:13-alpine ADD init-db.sh /docker-entrypoint-initdb.d/00-init-db.sh +ADD restore-benchmark-dumps.sh /docker-entrypoint-initdb.d/01-restore-benchmark-dumps.sh ADD postgresql.conf /etc/postgresql/postgresql.conf CMD ["postgres", "-c", "config_file=/etc/postgresql/postgresql.conf"] diff --git a/testing/dbtest/docker/Dockerfile.alpine b/testing/dbtest/docker/Dockerfile.alpine index 1655beab97..d8041ece0b 100644 --- a/testing/dbtest/docker/Dockerfile.alpine +++ b/testing/dbtest/docker/Dockerfile.alpine @@ -1,6 +1,7 @@ FROM postgres:alpine ADD init-db.sh /docker-entrypoint-initdb.d/00-init-db.sh +ADD restore-benchmark-dumps.sh /docker-entrypoint-initdb.d/01-restore-benchmark-dumps.sh ADD postgresql.conf /etc/postgresql/postgresql.conf CMD ["postgres", "-c", "config_file=/etc/postgresql/postgresql.conf"] diff --git a/testing/dbtest/docker/Makefile b/testing/dbtest/docker/Makefile index 8818bbb5e1..31f0ad10b6 100644 --- a/testing/dbtest/docker/Makefile +++ b/testing/dbtest/docker/Makefile @@ -47,6 +47,7 @@ database-up: -e PGDATA=/pgdata \ --mount type=tmpfs,destination=/pgdata \ -v "$(CWD)/../../../internal/db/schema/migrations":/migrations \ + -v "$(CWD)/benchmark_dumps":/benchmark_dumps \ $(TEST_IMAGE_TAG) \ -c 'config_file=/etc/postgresql/postgresql.conf' \ $(PG_OPTS) 1> /dev/null diff --git a/testing/dbtest/docker/restore-benchmark-dumps.sh b/testing/dbtest/docker/restore-benchmark-dumps.sh new file mode 100644 index 0000000000..324e077cd0 --- /dev/null +++ b/testing/dbtest/docker/restore-benchmark-dumps.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -e +shopt -s globstar + +for file in $(ls -v /benchmark_dumps/*.dump); do + echo "Creating template database based on: ${file}" + db_name="boundary_$(basename ${file} .dump)_template" + psql -v "ON_ERROR_STOP=1" --username "$POSTGRES_USER" --dbname "${POSTGRES_DB}" -q <