Skip to main content

Module runner

Module runner 

Source
Expand description

The AT scenario model and runner.

Structs§

ExpectMsg
A message the scenario expects the server to send: a MsgType plus required field matches. Volatile fields (SendingTime, BodyLength, CheckSum) are intentionally not matched.
Scenario
A scripted acceptance-test scenario.
ScenarioResult
The result of running one scenario against one version.
SessionTweaks
Optional acceptor session-feature toggles a scenario needs (special-category suites).

Enums§

ReadMessageOutcome
Result of reading one message in the acceptance-test harness.
Step
A single scenario step.

Constants§

ALWAYS_ALLOWED_TAGS
Header/trailer bookkeeping and session-identity fields present on essentially every FIX message, which ExpectMsg::exact never flags as “extra” even when unlisted — matches the doc comment above ExpectMsg calling out SendingTime/BodyLength/CheckSum as always unmatched, plus the other framing/identity fields every message legitimately carries.
FLAT_DICTIONARY_VERSIONS
The bundled dictionary matching a SUITE_VERSIONS entry, for the acceptor’s field validator (T128/T129, feature 009) — previously only FIX.4.2/FIX.4.4 had one, so a field-validation scenario against any other pre-FIXT version silently ran with no dictionary checks at all.

Functions§

client_message
Helper to build a client-side message with the standard header.
dictionary_for_version
per_scenario_report
A one-line-per-run PASS/FAIL report (T139/T140, feature 009, NEW-52) — distinct from a single all-or-nothing boolean: a caller (or a human reading test output) can see every scenario’s own result, not just whether something in the whole suite failed, without re-running anything.
read_message
Read one framed message from stream, retaining incomplete bytes in buf.
run_report
Run the full matrix (each scenario against each of its target versions), starting a fresh acceptor per version. Returns one ScenarioResult per (scenario, version).
run_scenario
Run one scenario against an already-started acceptor at addr.
start_acceptor
Start a black-box acceptor that serves any session via a dynamic template for version. Returns the bound address and the accept-loop join handle.
start_fixed_identity_acceptor
Start a black-box acceptor with a fixed session identity (T133/T134, feature 009, NEW-83) — additive alongside start_acceptor’s dynamic-template mode, which adopts whatever identity the first Logon claims and so has nothing to “mismatch” against (see the note above logon_response_carries_reset_flag on why 1c_InvalidSenderCompID/1c_InvalidTargetCompID/a wrong-BeginString Logon couldn’t be represented until now). A Logon whose SenderCompID/ TargetCompID/BeginString doesn’t match sender/target/version never resolves to a registered session (route_and_run’s registry.sessions.get(&sid) lookup, no template fallback here) — the connection is simply dropped, not answered with a Reject/Logout.
wire_begin_string
SUITE_VERSIONS"FIX.Latest" entry is a version-agnostic-testing label, not a real wire BeginString (feature 007, BUG-79/FR-048’s stricter frame_length format check would otherwise reject it outright, unlike every real value in SUITE_VERSIONS) — this maps it to a real, well-formed BeginString for anywhere actual wire bytes get constructed, leaving every other version untouched. The bundled FIXLATEST dictionary’s own .version field is a separate, unrelated label (only ever compared via version_meta, which no bundled dictionary populates) — not affected by this translation.