# Semana 15: recuperación, el WAL de PostgreSQL y un simulador de ARIES.
# Se usa dentro del contenedor del curso.
#
#   make          crea la base de datos chasqui_w15 con los datos de ejemplo
#                 e instala pg_walinspect y pageinspect
#   make test     la vuelve a crear y corre las pruebas (*.test.mjs); una de
#                 ellas corre crash.sh en un cluster de prueba
#   make crash    caída y recuperación en un cluster de prueba en /tmp, en el
#                 puerto 5415 (no el del curso); al final lo borra
#   make trace    las tres fases de ARIES sobre el ejemplo del apunte
#   make clean    borra chasqui_w15 y lo que haya quedado de crash.sh
#
# wal.sql se corre sobre chasqui_w15 con
#   psql -d chasqui_w15 -f wal.sql

DB = chasqui_w15
PSQL = psql -X -q -v ON_ERROR_STOP=1 -d $(DB)

.PHONY: all test crash trace clean

all:
	chasqui-load $(DB)
	$(PSQL) -c "CREATE EXTENSION IF NOT EXISTS pg_walinspect" \
	        -c "CREATE EXTENSION IF NOT EXISTS pageinspect"

# wal.test.mjs hace CHECKPOINT y crash.test.mjs arranca un cluster: una
# prueba después de otra.
test: all
	PGDATABASE=$(DB) node --test --test-concurrency=1 --test-reporter=spec

crash:
	bash crash.sh

trace:
	node trace.mjs 130

clean:
	dropdb --if-exists $(DB)
	rm -rf /tmp/w15-crash-*
