Skip to content

fix conformance manifest statement drift and add a client SUT mode #166

Description

@fabracht

Found while auditing clients against the conformance suite for #164.

1. Statement ID/text drift in conformance.toml

About 78 statements in crates/mqtt5-conformance/conformance.toml have an ID that does not match the OASIS text recorded for it (listed in known-text-drift.txt). This produced wrong IDs during the client audit. For example, the manifest files "Client without session state receiving Session Present=1 MUST close" under MQTT-3.2.2-5, but it is MQTT-3.2.2-4. The client tests in #164 took their IDs from mqtt-v5.0-statement-texts.txt to avoid this.

Fix: correct each drifted entry against the normative body (not Appendix B), and delist it from known-text-drift.txt as it is repaired. The manifest guards already fail on new drift and on stale list entries.

2. No client-side SUT mode

The suite only ever tests a broker. Client conformance is currently covered by standalone fake-broker tests:

  • crates/mqtt5/tests/conf_client_{a,b,c,d,quic,offline_queue}.rs (native)
  • crates/mqtt5-wasm/tests/conformance_client.rs (wasm)

Their coverage is invisible to the manifest (applies_to = "Client"/"Both" statements stay Untested) and they cannot be pointed at a third-party client.

Fix: add a client SUT mode. The suite plays a scripted raw-byte broker, and a small adapter per client drives connect, publish, subscribe and ack. Register the existing tests against it so the manifest tracks client coverage.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions