Generate <op>-<stack>[-<registry>] compose shortcuts and test/coverage
targets in the Makefile, remove the install-hooks target and the
.githooks commit-msg linter, and document the design.
Remove the test/coverage, app/dev, and compose-* alias targets along
with their check-* guards, and drop the matching .PHONY and MVN_SUB
entries. Reorder deploy and install-hooks under the trimmed target set.
- Add docs/development/api-documentation.md describing the Swagger UI layout,
per-center grouping, auth headers, and production exposure.
- Add a `make openapi` target + dc3/bin/export_openapi.sh to snapshot each
center's OpenAPI JSON from a running stack.
- Update AGENTS.md: OpenAPI/Swagger conventions, and correct the enum-suffix
examples (multi-valued sets use *TypeEnum, not *FlagEnum).
Makefile now defaults MVN_SETTINGS to .mvn/settings.xml (Aliyun mirror) so
`make package` works without manual settings override. Also fix pre-existing
test compilation errors where service method signatures gained tenantId
parameters but the corresponding test mocks were not updated.
- Makefile: MVN_SETTINGS ?= .mvn/settings.xml
- pom.xml: re-apply dependency version bumps (surefire 3.5.6, jacoco 0.8.15,
tools.jackson 3.1.4, jaxb 4.0.9, jna 5.19.0, graalvm 1.1.1,
maven-dependency-plugin 3.11.0)
- Fix 7 test files with missing tenantId parameters in service mock calls
Parametrize JDK/JRE base images via build args in Dockerfile, replace
hardcoded GC/dump env vars with per-service path variables, fix APM
port. Simplify Makefile registry options to global|cn, add SERVICES
and GROUP selectors for targeted compose operations.
Add the first batch of unit tests under dc3-common-public covering the
core "stateless function" surface used everywhere else in the platform:
- ArithmeticUtilTest: precise add/subtract/multiply/divide/round across
BigDecimal/float/double overloads, plus scale-bound rejections and
division by zero.
- DecodeUtilTest: UTF-8 round-trips, MD5 stability and salting,
Base64 byte/string round-trips and hex en/decoding.
- HmacAuthSignerTest: enabled/disabled state derivation from the secret,
hex digest stability, mismatched-payload + mismatched-secret behavior,
null-payload guards and constant-time verification on length mismatch.
- JsonUtilTest: parseObject/parseArray from String/byte[]/InputStream/
TypeReference, isJson validation, toJsonString/Bytes round-trip and
unknown-property tolerance.
- KeyUtilTest: AES and RSA encrypt/decrypt round-trips, JWT signing
followed by salt/subject/tenant rejection paths.
The Makefile test/test-it/test-e2e/coverage targets get an explicit
-Dmaven.test.skip=false override because .mvn/maven.config sets the
flag globally so `mvn package` does not run tests; without the override
the new targets would silently produce empty reports.
dc3-common-public/pom.xml declares spring-boot-starter-test test-scope.
Verified locally: 77 new test cases run via `make test`, all green.
Wire the test toolchain into developer-facing entry points and CI:
- Makefile gains test, test-it, test-e2e and coverage targets; the help
banner advertises them alongside the existing build commands so
contributors do not need to memorise the underlying mvn invocations.
- A new Test workflow runs three sequenced jobs: unit (mvn test, skipping
the integration phase), integration (mvn verify, skipping unit phase,
running with TESTCONTAINERS_REUSE_ENABLE=true), and a final coverage
job that downloads both jacoco .exec artifacts and rebuilds the
aggregate report from dc3-coverage.
- A new E2E workflow runs make test-e2e on develop/release/main pushes
and on manual dispatch, with a 90 minute timeout that accommodates
cold compose start-up plus the full critical path battery.
- The existing CI workflow keeps its fast-fail compile job unchanged so
PR feedback latency stays low; tests are now owned exclusively by
the new Test workflow.