mirror of
https://github.com/apidoorman/doorman.git
synced 2026-02-08 01:58:59 -06:00
111 lines
4.0 KiB
Makefile
111 lines
4.0 KiB
Makefile
SHELL := /bin/bash
|
|
|
|
# Read configuration from .env files
|
|
PORT ?= $(shell grep '^PORT=' backend-services/.env 2>/dev/null | cut -d'=' -f2 || grep '^PORT=' .env 2>/dev/null | cut -d'=' -f2 || echo 3001)
|
|
HTTPS_ONLY ?= $(shell grep '^HTTPS_ONLY=' backend-services/.env 2>/dev/null | cut -d'=' -f2 || grep '^HTTPS_ONLY=' .env 2>/dev/null | cut -d'=' -f2 || echo false)
|
|
ADMIN_EMAIL ?= $(shell grep '^DOORMAN_ADMIN_EMAIL=' backend-services/.env 2>/dev/null | cut -d'=' -f2 || grep '^DOORMAN_ADMIN_EMAIL=' .env 2>/dev/null | cut -d'=' -f2)
|
|
ADMIN_PASSWORD ?= $(shell grep '^DOORMAN_ADMIN_PASSWORD=' backend-services/.env 2>/dev/null | cut -d'=' -f2 || grep '^DOORMAN_ADMIN_PASSWORD=' .env 2>/dev/null | cut -d'=' -f2)
|
|
|
|
# Construct BASE_URL from PORT and HTTPS_ONLY (can still override on CLI)
|
|
PROTOCOL := $(shell [ "$(HTTPS_ONLY)" = "true" ] && echo "https" || echo "http")
|
|
BASE_URL ?= $(PROTOCOL)://localhost:$(PORT)
|
|
|
|
# Set to 1 when running tests against Doorman in Docker (affects test server host references)
|
|
DOORMAN_IN_DOCKER ?= 0
|
|
|
|
.PHONY: unit unitq live liveq live-docker liveq-docker smoke soak preflight
|
|
|
|
unit:
|
|
cd backend-services && pytest
|
|
|
|
unitq:
|
|
cd backend-services && pytest -q
|
|
|
|
live:
|
|
cd backend-services/live-tests && \
|
|
DOORMAN_BASE_URL=$(BASE_URL) \
|
|
DOORMAN_ADMIN_EMAIL=$(ADMIN_EMAIL) \
|
|
DOORMAN_ADMIN_PASSWORD=$(ADMIN_PASSWORD) \
|
|
DOORMAN_IN_DOCKER=$(DOORMAN_IN_DOCKER) \
|
|
pytest
|
|
|
|
liveq:
|
|
cd backend-services/live-tests && \
|
|
DOORMAN_BASE_URL=$(BASE_URL) \
|
|
DOORMAN_ADMIN_EMAIL=$(ADMIN_EMAIL) \
|
|
DOORMAN_ADMIN_PASSWORD=$(ADMIN_PASSWORD) \
|
|
DOORMAN_IN_DOCKER=$(DOORMAN_IN_DOCKER) \
|
|
pytest -q
|
|
|
|
# Run live tests against Doorman running in Docker
|
|
live-docker:
|
|
cd backend-services/live-tests && \
|
|
DOORMAN_BASE_URL=$(BASE_URL) \
|
|
DOORMAN_ADMIN_EMAIL=$(ADMIN_EMAIL) \
|
|
DOORMAN_ADMIN_PASSWORD=$(ADMIN_PASSWORD) \
|
|
DOORMAN_IN_DOCKER=1 \
|
|
pytest
|
|
|
|
liveq-docker:
|
|
cd backend-services/live-tests && \
|
|
DOORMAN_BASE_URL=$(BASE_URL) \
|
|
DOORMAN_ADMIN_EMAIL=$(ADMIN_EMAIL) \
|
|
DOORMAN_ADMIN_PASSWORD=$(ADMIN_PASSWORD) \
|
|
DOORMAN_IN_DOCKER=1 \
|
|
pytest -q
|
|
|
|
# Lightweight readiness + platform smoke (optionally gateway if SMOKE_UPSTREAM_URL provided)
|
|
smoke preflight:
|
|
BASE_URL=$(BASE_URL) \
|
|
DOORMAN_ADMIN_EMAIL=$(ADMIN_EMAIL) \
|
|
DOORMAN_ADMIN_PASSWORD=$(ADMIN_PASSWORD) \
|
|
bash scripts/preflight.sh
|
|
|
|
# Placeholder: requires k6/locust. Provide your own script path via SOAK_SCRIPT.
|
|
soak:
|
|
@echo "Define SOAK_SCRIPT and ARGS to run your soak tool, e.g.:" ; \
|
|
echo " SOAK_SCRIPT=scripts/k6-rest-smoke.js ARGS='-d 1h -u 200' make soak" ; \
|
|
if [[ -n "$(SOAK_SCRIPT)" ]]; then \
|
|
k6 run $(ARGS) $(SOAK_SCRIPT) ; \
|
|
else \
|
|
echo "No SOAK_SCRIPT provided" ; \
|
|
fi
|
|
|
|
.PHONY: coverage-unit coverage-html coverage-all
|
|
|
|
coverage-unit:
|
|
cd backend-services && \
|
|
coverage run -m pytest && \
|
|
coverage report -m
|
|
|
|
coverage-html:
|
|
cd backend-services && \
|
|
coverage run -m pytest && \
|
|
coverage html -d coverage_html && \
|
|
echo "HTML report at backend-services/coverage_html/index.html"
|
|
|
|
# Runs server under coverage (parallel mode), executes live-tests, then combines
|
|
coverage-all:
|
|
BASE_URL=$(BASE_URL) DOORMAN_ADMIN_EMAIL=$(ADMIN_EMAIL) DOORMAN_ADMIN_PASSWORD=$(ADMIN_PASSWORD) \
|
|
bash scripts/coverage_all.sh
|
|
|
|
.PHONY: clean clean-deep
|
|
|
|
# Remove common local build/test artifacts without touching dependencies
|
|
clean:
|
|
@echo "Cleaning caches and runtime artifacts..."
|
|
@find . -type d -name "__pycache__" -prune -exec rm -rf {} + || true
|
|
@find . -type d -name ".pytest_cache" -prune -exec rm -rf {} + || true
|
|
@find . -type f -name "*.py[co]" -delete || true
|
|
@find . -type f -name ".DS_Store" -delete || true
|
|
@rm -rf backend-services/platform-logs/*.log backend-services/doorman.pid doorman.pid uvicorn.pid || true
|
|
@rm -rf web-client/.next || true
|
|
@rm -f pytest_backend_verbose.log || true
|
|
@echo "Done."
|
|
|
|
# Deeper cleanup that also removes generated dev artifacts
|
|
clean-deep: clean
|
|
@echo "Removing generated dev artifacts..."
|
|
@rm -rf generated backend-services/generated || true
|
|
@echo "Done."
|