2021-08-11 13:25:32 -04:00
|
|
|
all: test
|
|
|
|
|
|
|
|
|
|
CWD := $(shell pwd)
|
|
|
|
|
|
|
|
|
|
# Version of postgres docker image for test database
|
|
|
|
|
PG_DOCKER_TAG ?= 13-alpine
|
|
|
|
|
# Version of pg_tap docker image
|
2022-09-01 08:33:10 -07:00
|
|
|
PG_TAP_DOCKER_TAG ?= 13
|
2021-11-10 06:28:54 -05:00
|
|
|
SQL_TEST_DB_PORT ?=
|
|
|
|
|
DOCKER_ARGS ?=
|
|
|
|
|
ifneq ($(strip $(SQL_TEST_DB_PORT)),)
|
|
|
|
|
DOCKER_ARGS += -p $(SQL_TEST_DB_PORT):5432
|
|
|
|
|
endif
|
|
|
|
|
|
2021-08-11 13:25:32 -04:00
|
|
|
# Pass through options to pg_prove
|
|
|
|
|
# See: https://pgtap.org/pg_prove.html
|
|
|
|
|
PROVE_OPTS ?=
|
|
|
|
|
|
|
|
|
|
TESTS ?= tests/setup/*.sql \
|
2022-09-19 09:47:52 -04:00
|
|
|
tests/org/*.sql \
|
2021-10-11 16:16:02 -04:00
|
|
|
tests/wh/*/*.sql \
|
|
|
|
|
tests/sentinel/*.sql \
|
2021-12-17 11:25:30 -08:00
|
|
|
tests/credential/*/*.sql \
|
2022-06-22 13:20:27 -07:00
|
|
|
tests/session/*.sql \
|
2022-10-11 16:59:52 -07:00
|
|
|
tests/account/*/*.sql \
|
2022-06-10 13:45:26 -04:00
|
|
|
tests/target/*.sql \
|
2022-11-16 17:17:28 -06:00
|
|
|
tests/controller/*.sql \
|
2023-02-21 21:31:22 +00:00
|
|
|
tests/hcp/*/*.sql \
|
2023-06-01 12:44:11 -04:00
|
|
|
tests/census/*.sql \
|
2023-04-03 16:47:30 -07:00
|
|
|
tests/kms/*.sql \
|
2023-05-25 15:16:40 +00:00
|
|
|
tests/storage/*.sql \
|
2023-05-05 10:07:58 -04:00
|
|
|
tests/domain/*.sql \
|
2023-04-22 10:47:53 -04:00
|
|
|
tests/history/*.sql \
|
2023-11-21 11:30:02 -05:00
|
|
|
tests/recording/*.sql \
|
2024-01-31 09:43:24 -08:00
|
|
|
tests/alias/*.sql \
|
2023-10-25 11:50:15 -07:00
|
|
|
tests/auth/*/*.sql \
|
2023-11-24 17:22:43 -08:00
|
|
|
tests/purge/*.sql \
|
2023-12-28 10:32:10 +01:00
|
|
|
tests/pagination/*.sql \
|
2023-12-14 15:55:02 -05:00
|
|
|
tests/policy/*.sql \
|
2024-09-05 11:03:05 -04:00
|
|
|
tests/host/*.sql \
|
2024-06-06 13:03:05 -04:00
|
|
|
tests/server/*.sql
|
2021-08-11 13:25:32 -04:00
|
|
|
|
|
|
|
|
POSTGRES_DOCKER_IMAGE_BASE ?= postgres
|
|
|
|
|
|
|
|
|
|
POSTGRES_DOCKER_IMAGE := $(POSTGRES_DOCKER_IMAGE_BASE):$(PG_DOCKER_TAG)
|
|
|
|
|
|
2022-09-01 08:33:10 -07:00
|
|
|
PG_TAP_DOCKER_IMAGE_BASE ?= hashicorpboundary/pgtap
|
2021-08-11 13:25:32 -04:00
|
|
|
PG_TAP_DOCKER_IMAGE := $(PG_TAP_DOCKER_IMAGE_BASE):$(PG_TAP_DOCKER_TAG)
|
|
|
|
|
|
2021-10-21 14:35:02 -04:00
|
|
|
SQL_TEST_CONTAINER_NAME ?= boundary-sql-tests
|
|
|
|
|
|
2023-12-14 18:51:05 +00:00
|
|
|
log_cmd = true
|
|
|
|
|
DB_LOGS ?= 0
|
|
|
|
|
ifeq ($(DB_LOGS), 1)
|
|
|
|
|
log_cmd = docker logs $(SQL_TEST_CONTAINER_NAME)
|
|
|
|
|
endif
|
2021-08-11 13:25:32 -04:00
|
|
|
|
|
|
|
|
# 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 \
|
2021-10-21 14:35:02 -04:00
|
|
|
--name $(SQL_TEST_CONTAINER_NAME) \
|
2021-11-10 06:28:54 -05:00
|
|
|
$(DOCKER_ARGS) \
|
2021-08-11 13:25:32 -04:00
|
|
|
-e POSTGRES_PASSWORD=boundary \
|
|
|
|
|
-e POSTGRES_USER=boundary \
|
|
|
|
|
-e POSTGRES_DB=boundary \
|
2021-09-15 08:26:39 -04:00
|
|
|
-v "$(CWD)/../schema/migrations":/migrations \
|
2021-08-11 13:25:32 -04:00
|
|
|
-v "$(CWD)/initdb.d":/docker-entrypoint-initdb.d/ \
|
|
|
|
|
$(POSTGRES_DOCKER_IMAGE)
|
2023-02-16 14:37:48 -05:00
|
|
|
@docker run --rm \
|
2021-08-11 13:25:32 -04:00
|
|
|
--name test \
|
2021-10-21 14:35:02 -04:00
|
|
|
--link $(SQL_TEST_CONTAINER_NAME):db \
|
2021-08-11 13:25:32 -04:00
|
|
|
-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); \
|
2023-12-14 18:51:05 +00:00
|
|
|
(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)
|
2021-08-11 13:25:32 -04:00
|
|
|
|
|
|
|
|
database-up:
|
|
|
|
|
@echo Using $(POSTGRES_DOCKER_IMAGE)
|
|
|
|
|
@docker run -d \
|
2021-10-21 14:35:02 -04:00
|
|
|
--name $(SQL_TEST_CONTAINER_NAME) \
|
2021-11-10 06:28:54 -05:00
|
|
|
$(DOCKER_ARGS) \
|
2021-08-11 13:25:32 -04:00
|
|
|
-e POSTGRES_PASSWORD=boundary \
|
|
|
|
|
-e POSTGRES_USER=boundary \
|
|
|
|
|
-e POSTGRES_DB=boundary \
|
2021-09-15 08:26:39 -04:00
|
|
|
-v "$(CWD)/../schema/migrations":/migrations \
|
2021-08-11 13:25:32 -04:00
|
|
|
-v "$(CWD)/initdb.d":/docker-entrypoint-initdb.d/ \
|
|
|
|
|
$(POSTGRES_DOCKER_IMAGE)
|
2021-11-10 06:28:54 -05:00
|
|
|
ifdef SQL_TEST_DB_PORT
|
|
|
|
|
@echo "Test database available at: postgres://boundary:boundary@localhost:$(SQL_TEST_DB_PORT)/boundary?sslmode=disable"
|
|
|
|
|
endif
|
2021-08-11 13:25:32 -04:00
|
|
|
|
|
|
|
|
run-tests:
|
|
|
|
|
@echo Using $(PG_TAP_DOCKER_IMAGE)
|
|
|
|
|
@docker run -it --rm \
|
|
|
|
|
--name test \
|
2021-10-21 14:35:02 -04:00
|
|
|
--link $(SQL_TEST_CONTAINER_NAME):db \
|
2021-08-11 13:25:32 -04:00
|
|
|
-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:
|
2021-10-21 14:35:02 -04:00
|
|
|
docker stop $(SQL_TEST_CONTAINER_NAME) || true
|
|
|
|
|
docker rm -v $(SQL_TEST_CONTAINER_NAME) || true
|
2021-08-11 13:25:32 -04:00
|
|
|
|
|
|
|
|
.PHONY: all clean test database-up run-tests
|