Files
iot-dc3/dc3-coverage
pnoker 28efa5c8fc refactor(mq): migrate business modules onto the messaging port
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.
2026-08-19 18:47:50 +08:00
..

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.