Merged in feature/testingopts (pull request #129)

Testing Options and Clean Up

* bitsandbobs

* lint

* healthchecks

* imgintests

* singlegenerate

* testclean

* network

* networkclean

* cmds
This commit is contained in:
Michael McGuinness
2025-05-03 01:16:53 +00:00
parent 15fa3b49a5
commit dd2eebf13a
73 changed files with 4657 additions and 234 deletions
+9 -38
View File
@@ -18,7 +18,7 @@ includes:
dir: "{{.CONTEXT}}"
taskfile: openapi-scripts.yml
compose:
dir: "{{.CONTEXT}}"
dir: "."
taskfile: local-deployments.yml
db:
dir: "{{.CONTEXT}}"
@@ -27,42 +27,27 @@ includes:
tasks:
fullsuite:
- task: build:deps
- task: fullsuite:build
- task: test:all
fullsuite:build:
- task: fullsuite:test
fullsuite:test:
internal: true
deps:
- task: build:cmd
- task: lint:cmd
- task: test:functional
- task: lint
precommit:
- task: lint:short
- task: lint
deps:tidy:
- go mod tidy
- go mod vendor
- go mod verify
build:
deps:
- build:deps
cmd:
task: build:cmd
task: docker:build
build:deps:
internal: true
cmds:
- task: deps:tidy
- task: generate:clean
build:cmd:
internal: true
cmds:
- task: docker:build
generate:clean:
run: once
deps:
- db:generate:clean
- openapi:generate
- test:mocks:generate
- docs:generate
cmds:
- task: go:generate
- task: generate
generate:
run: once
deps:
@@ -75,27 +60,13 @@ tasks:
go:generate: go generate ./...
lint:
deps:
- generate:clean
cmds:
- task: lint:cmd
lint:cmd:
internal: true
deps:
- task: db:lint
- task: go:lint
- task: yaml:lint
- task: json:lint
- task: docker:lint
- task: openapi:lint
- task: db:lint
- task: compose:lint
lint:short:
deps:
- go:lint
- yaml:lint
- json:lint
- docker:lint
- openapi:lint
- compose:lint:short
go:lint: golangci-lint run --fix {{.CLI_ARGS}}
yaml:lint: yamllint . -s {{.CLI_ARGS}}
json:lint: jsonlint devbox.json -q -s -i {{.CLI_ARGS}}
+9 -11
View File
@@ -6,20 +6,22 @@ version: "3"
vars:
MIGRATIONS: "internal/database/migrations"
includes:
compose:
dir: "{{.CONTEXT}}"
taskfile: local-deployments.yml
internal: true
tasks:
generate:
run: once
deps:
- mig
cmds:
- task: compose:up:generate
- migrate -path {{.MIGRATIONS}} -database {{.DB_URI_GENERATE}} up
- sqlc generate --file sqlc.yml
generate:clean:
cmds:
- task compose:clean:generate
- task: generate
lint:
cmds:
- task compose:up:generate
- task: compose:up:generate
- sqlc vet --file sqlc.yml
- |
exit 0
@@ -34,7 +36,3 @@ tasks:
read -p "Migration Name: " name
test -z "$name" && echo "Error: Name is required." && exit 1
migrate create -ext sql -dir {{.MIGRATIONS}} $name
mig:
cmds:
- task compose:up:generate
- migrate -path {{.MIGRATIONS}} -database {{.DB_URI_GENERATE}} up
+37 -40
View File
@@ -4,10 +4,10 @@
version: "3"
vars:
LOCAL_COMPOSE_FILE: "deployments/compose.local.yaml"
TEST_COMPOSE_FILE: "deployments/compose.test.yaml"
GENERATE_COMPOSE_FILE: "deployments/compose.generate.yaml"
AWS_COMPOSE_FILE: "deployments/compose.aws.yaml"
LOCAL_COMPOSE_FILE: "{{.CONTEXT}}/deployments/compose.local.yaml"
TEST_COMPOSE_FILE: "{{.CONTEXT}}/deployments/compose.test.yaml"
GENERATE_COMPOSE_FILE: "{{.CONTEXT}}/deployments/compose.generate.yaml"
AWS_COMPOSE_FILE: "{{.CONTEXT}}/deployments/compose.aws.yaml"
tasks:
build:test:
@@ -38,10 +38,9 @@ tasks:
COMPOSE_FILE: "{{.TEST_COMPOSE_FILE}}"
up:generate:
run: once
cmds:
- task: up:cmd
vars:
COMPOSE_FILE: "{{.GENERATE_COMPOSE_FILE}}"
cmd: |
docker compose -f {{.GENERATE_COMPOSE_FILE}} up \
--force-recreate --renew-anon-volumes --wait -d
up:aws:
cmds:
- task deps:tidy
@@ -67,6 +66,7 @@ tasks:
- task: up:cmd
- task: init
init:
internal: true
cmds:
- aws s3 mb s3://$BUCKET_IN
- aws sqs create-queue --queue-name $QNAME_STORE_EVENT
@@ -93,11 +93,6 @@ tasks:
- task: down
vars:
COMPOSE_FILE: "{{.TEST_COMPOSE_FILE}}"
down:generate:
cmds:
- task: down
vars:
COMPOSE_FILE: "{{.GENERATE_COMPOSE_FILE}}"
down:aws:
cmds:
- task: down
@@ -108,37 +103,39 @@ tasks:
COMPOSE_FILE: "{{.COMPOSE_FILE | default .LOCAL_COMPOSE_FILE}}"
cmds:
- docker compose -f {{.COMPOSE_FILE}} down
clean:
vars:
COMPOSE_FILE: "{{.COMPOSE_FILE | default .LOCAL_COMPOSE_FILE}}"
cmds:
- docker compose -f {{.COMPOSE_FILE}} down -v
clean:test:
cmds:
- task: down:test
- docker volume rm -f deployments_test-db-data
clean:generate:
run: once
cmds:
- task: down:generate
- docker volume rm -f deployments_generate-db-data
- task: clean
vars:
COMPOSE_FILE: "{{.TEST_COMPOSE_FILE}}"
clean:aws:
run: once
cmds:
- task: down:aws
- docker volume rm -f deployments_aws-db-data
clean:
- task: clean
vars:
COMPOSE_FILE: "{{.AWS_COMPOSE_FILE}}"
lint:cmd:
internal: true
vars:
COMPOSE_FILE: "{{.COMPOSE_FILE | default .LOCAL_COMPOSE_FILE}}"
cmds:
- task: down
- docker volume rm -f deployments_db-data
- docker compose -f {{.COMPOSE_FILE}} config -q
lint:
cmds:
- docker compose -f {{.LOCAL_COMPOSE_FILE}} config -q
- |
docker compose -f {{.TEST_COMPOSE_FILE}} config -q \
--resolve-image-digests
- |
docker compose -f {{.GENERATE_COMPOSE_FILE}} config -q \
--resolve-image-digests
- docker compose -f {{.AWS_COMPOSE_FILE}} config -q
lint:short:
cmds:
- docker compose -f {{.LOCAL_COMPOSE_FILE}} config -q
- docker compose -f {{.TEST_COMPOSE_FILE}} config -q
- docker compose -f {{.GENERATE_COMPOSE_FILE}} config -q
- docker compose -f {{.AWS_COMPOSE_FILE}} config -q
deps:
- task: lint:cmd
vars:
COMPOSE_FILE: "{{.AWS_COMPOSE_FILE}}"
- task: lint:cmd
vars:
COMPOSE_FILE: "{{.LOCAL_COMPOSE_FILE}}"
- task: lint:cmd
vars:
COMPOSE_FILE: "{{.GENERATE_COMPOSE_FILE}}"
- task: lint:cmd
vars:
COMPOSE_FILE: "{{.TEST_COMPOSE_FILE}}"
+17 -53
View File
@@ -10,62 +10,42 @@ vars:
API: "./api/..."
PKG: "./pkg/..."
CMD: "./cmd/..."
UNIT_PARALLEL: 32
E2E_PARALLEL: 1
TEST_PARALLEL: 32
# yamllint disable-line rule:line-length
EXCLUDED_FILES: ".gen.go|internal/serviceconfig/observability/prometheus/generator/main.go|internal/cognitoauth/middleware.go|internal/cognitoauth/token.go|internal/cognitoauth/auth.go|internal/cognitoauth/handler.go|internal/cognitoauth/models.go|api/queryAPI/authHandlers.go|api/queryAPI/homehandler.go"
includes:
docker:
dir: "{{.CONTEXT}}"
taskfile: docker.yml
internal: true
tasks:
mocks:generate:
run: once
cmds:
- rm -rf mocks/*
- go tool mockery
unit:cmd:
internal: true
vars:
SKIP_GENERATE: false
functional:
cmds:
- task: mocks:generate
- mkdir -p {{.OUT_DIR}}
- |
go test -parallel {{.UNIT_PARALLEL}} \
{{.INTERNAL}} {{.API}} {{.CLI_ARGS}}
unit:short:
cmds:
- task: unit:cmd
vars:
CLI_ARGS: -short
SKIP_GENERATE: true
unit:aws:
cmds:
- |
find ./internal -name "*.aws_test.go" -exec dirname {} \; | sort -u \
| xargs go test -short -tags aws
unit:
go test -count=1 -parallel {{.TEST_PARALLEL}} \
-coverpkg={{.INTERNAL}},{{.API}},{{.PKG}} \
-coverprofile={{.COVERAGE_FILE}} \
./...
- task: coverage
bench:
vars:
TMP_FILE: "{{.OUT_DIR}}/coverage.tmp"
FILTER_COVERAGE_FILE: "{{.OUT_DIR}}/filtered_coverage.out"
cmds:
- task: unit:cmd
vars:
CLI_ARGS: |
-coverpkg={{.INTERNAL}},{{.API}} \
-coverprofile={{.COVERAGE_FILE}}
- task: coverage
silent: true
endtoend:
- go test -run ^Benchmark -bench=. ./... > {{.BENCH_FILE}}
- benchstat {{.BENCH_FILE}}
unit:short:
deps:
- docker:build
- mocks:generate
cmds:
- go test -count=1 -parallel {{.E2E_PARALLEL}} ./test/...
- mkdir -p {{.OUT_DIR}}
- |
go test -parallel {{.TEST_PARALLEL}} -short \
{{.INTERNAL}} {{.API}} {{.CLI_ARGS}}
coverage:
internal: true
vars:
TMP_FILE: "{{.OUT_DIR}}/coverage.tmp"
FILTER_COVERAGE_FILE: "{{.OUT_DIR}}/filtered_coverage.out"
@@ -107,19 +87,3 @@ tasks:
fi
echo "✅ All coverage checks passed!"
all:
cmds:
- mkdir -p {{.OUT_DIR}}
- |
go test -count=1 -parallel {{.UNIT_PARALLEL}} \
-coverpkg={{.INTERNAL}},{{.API}},{{.PKG}} \
-coverprofile={{.COVERAGE_FILE}} \
./...
- task: coverage
bench:
vars:
TMP_FILE: "{{.OUT_DIR}}/coverage.tmp"
FILTER_COVERAGE_FILE: "{{.OUT_DIR}}/filtered_coverage.out"
cmds:
- go test -run ^Benchmark -bench=. ./... > {{.BENCH_FILE}}
- benchstat {{.BENCH_FILE}}