Complete phase 1 of the mq abstraction design: business code compiles against the broker-neutral port with zero amqp classes, and the legacy dc3-common-rabbitmq module is deleted. - dc3-common-driver: 8 sender methods plus the sqlite outbox now publish through MessageSender (outbox keeps durability; legacy physical routing keys in pending rows are normalized on republish); metadata/command/ point-command receivers become @Dc3Listener subscriptions with placeholder-driven per-instance queues; DriverTopicConfig dissolved into adapter subscribe-time declarations - dc3-common-data: command and point-command dispatch use sendConfirmed with the correlation-id header; state timeout, device scan tick, notify tasks and metadata events send through logical topics; all 13 receivers including the batch point-value consumer migrate to @Dc3Listener; DataTopicConfig, PointValueRabbitConfig and the duplicated batch properties class move into the port/adapter (same config keys) - dc3-common-manager / facade-local-manager: metadata fan-out via the port - dead-letter consumers read the correlation id from the standardized header the adapter mirrors onto the amqp property - 14 test classes adapted to the new listener/sender shapes; module poms swap dc3-common-rabbitmq for dc3-common-mq + dc3-common-mq-rabbitmq Verified: unit suites green for constant (291 incl. boundary guard), data (165), driver (144), manager (255); full-repo main and test compile green. Container-backed E2E (RabbitDeliveryIT) intentionally not run here.
DC3 Coverage
dc3-coverage is a report-only Maven module. It aggregates JaCoCo execution data from the covered handwritten-code
modules and applies the repository's absolute coverage gate.
Generate and Verify the Report
From the repository root:
make coverage
Equivalent Maven command:
mvn -s .mvn/settings.xml -B -Dmaven.test.skip=false -pl dc3-coverage -am verify
Outputs:
- HTML:
dc3-coverage/target/site/jacoco-aggregate/index.html - XML:
dc3-coverage/target/site/jacoco-aggregate/jacoco.xml
Gate
The minimum line and branch ratios are configured in this module's pom.xml. The verify phase passes the aggregate XML
to scripts/check_coverage.py, which checks those absolute thresholds.
There is currently no baseline-relative regression calculation. Do not describe the build as enforcing a percentage drop against a previous commit unless such a comparison is implemented.
Use -Dcoverage.check.skip=true only for local diagnosis; do not disable the gate in normal CI or release validation.
Adding covered modules
Add a dependency in pom.xml only for a module whose handwritten classes should contribute to the aggregate. Generated
API artifacts and deployment-only wrappers should remain excluded unless the coverage policy changes deliberately.