119 lines
3.1 KiB
Makefile
119 lines
3.1 KiB
Makefile
all: test
|
|
|
|
CWD := $(shell pwd)
|
|
|
|
# Version of postgres docker image for test database
|
|
PG_DOCKER_TAG ?= 13-alpine
|
|
# Version of pg_tap docker image
|
|
PG_TAP_DOCKER_TAG ?= 13
|
|
SQL_TEST_DB_PORT ?=
|
|
DOCKER_ARGS ?=
|
|
ifneq ($(strip $(SQL_TEST_DB_PORT)),)
|
|
DOCKER_ARGS += -p $(SQL_TEST_DB_PORT):5432
|
|
endif
|
|
|
|
# Pass through options to pg_prove
|
|
# See: https://pgtap.org/pg_prove.html
|
|
PROVE_OPTS ?=
|
|
|
|
TESTS ?= tests/setup/*.sql \
|
|
tests/org/*.sql \
|
|
tests/wh/*/*.sql \
|
|
tests/sentinel/*.sql \
|
|
tests/credential/*/*.sql \
|
|
tests/session/*.sql \
|
|
tests/account/*/*.sql \
|
|
tests/target/*.sql \
|
|
tests/controller/*.sql \
|
|
tests/hcp/*/*.sql \
|
|
tests/census/*.sql \
|
|
tests/kms/*.sql \
|
|
tests/storage/*.sql \
|
|
tests/domain/*.sql \
|
|
tests/history/*.sql \
|
|
tests/recording/*.sql \
|
|
tests/alias/*.sql \
|
|
tests/auth/*/*.sql \
|
|
tests/purge/*.sql \
|
|
tests/pagination/*.sql \
|
|
tests/policy/*.sql \
|
|
tests/server/*.sql
|
|
|
|
POSTGRES_DOCKER_IMAGE_BASE ?= postgres
|
|
|
|
POSTGRES_DOCKER_IMAGE := $(POSTGRES_DOCKER_IMAGE_BASE):$(PG_DOCKER_TAG)
|
|
|
|
PG_TAP_DOCKER_IMAGE_BASE ?= hashicorpboundary/pgtap
|
|
PG_TAP_DOCKER_IMAGE := $(PG_TAP_DOCKER_IMAGE_BASE):$(PG_TAP_DOCKER_TAG)
|
|
|
|
SQL_TEST_CONTAINER_NAME ?= boundary-sql-tests
|
|
|
|
log_cmd = true
|
|
DB_LOGS ?= 0
|
|
ifeq ($(DB_LOGS), 1)
|
|
log_cmd = docker logs $(SQL_TEST_CONTAINER_NAME)
|
|
endif
|
|
|
|
# re-write paths for docker
|
|
dockerized_tests = $(patsubst tests/%,/test/%,$(TESTS))
|
|
|
|
test:
|
|
@echo Using $(POSTGRES_DOCKER_IMAGE)
|
|
@echo Using $(PG_TAP_DOCKER_IMAGE)
|
|
@docker run -d \
|
|
--name $(SQL_TEST_CONTAINER_NAME) \
|
|
$(DOCKER_ARGS) \
|
|
-e POSTGRES_PASSWORD=boundary \
|
|
-e POSTGRES_USER=boundary \
|
|
-e POSTGRES_DB=boundary \
|
|
-v "$(CWD)/../schema/migrations":/migrations \
|
|
-v "$(CWD)/initdb.d":/docker-entrypoint-initdb.d/ \
|
|
$(POSTGRES_DOCKER_IMAGE)
|
|
@docker run --rm \
|
|
--name test \
|
|
--link $(SQL_TEST_CONTAINER_NAME):db \
|
|
-e DATABASE=boundary \
|
|
-e HOST=db \
|
|
-e PORT=5432 \
|
|
-e USER=boundary \
|
|
-e PASSWORD=boundary \
|
|
-e TESTS="$(PROVE_OPTS) $(dockerized_tests)" \
|
|
-v "$(CWD)/tests":/test \
|
|
$(PG_TAP_DOCKER_IMAGE); \
|
|
(ret=$$?; docker stop $(SQL_TEST_CONTAINER_NAME) > /dev/null 2>&1 && $(log_cmd) && docker rm -f -v $(SQL_TEST_CONTAINER_NAME) > /dev/null 2>&1 && exit $$ret)
|
|
|
|
database-up:
|
|
@echo Using $(POSTGRES_DOCKER_IMAGE)
|
|
@docker run -d \
|
|
--name $(SQL_TEST_CONTAINER_NAME) \
|
|
$(DOCKER_ARGS) \
|
|
-e POSTGRES_PASSWORD=boundary \
|
|
-e POSTGRES_USER=boundary \
|
|
-e POSTGRES_DB=boundary \
|
|
-v "$(CWD)/../schema/migrations":/migrations \
|
|
-v "$(CWD)/initdb.d":/docker-entrypoint-initdb.d/ \
|
|
$(POSTGRES_DOCKER_IMAGE)
|
|
ifdef SQL_TEST_DB_PORT
|
|
@echo "Test database available at: postgres://boundary:boundary@localhost:$(SQL_TEST_DB_PORT)/boundary?sslmode=disable"
|
|
endif
|
|
|
|
run-tests:
|
|
@echo Using $(PG_TAP_DOCKER_IMAGE)
|
|
@docker run -it --rm \
|
|
--name test \
|
|
--link $(SQL_TEST_CONTAINER_NAME):db \
|
|
-e DATABASE=boundary \
|
|
-e HOST=db \
|
|
-e PORT=5432 \
|
|
-e USER=boundary \
|
|
-e PASSWORD=boundary \
|
|
-e TESTS="$(PROVE_OPTS) $(dockerized_tests)" \
|
|
-v "$(CWD)/tests":/test \
|
|
$(PG_TAP_DOCKER_IMAGE)
|
|
|
|
clean:
|
|
docker stop $(SQL_TEST_CONTAINER_NAME) || true
|
|
docker rm -v $(SQL_TEST_CONTAINER_NAME) || true
|
|
|
|
.PHONY: all clean test database-up run-tests
|