From 33d40901d23615e45cb7986b3d69d7a653f0207d Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Wed, 3 Jun 2026 16:00:57 -0400 Subject: [PATCH] =?UTF-8?q?docs(audit):=20Modbus-Test-Fixture.md=20?= =?UTF-8?q?=E2=80=94=20accuracy=20pass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit STALE-STATUS: TL;DR + Lifecycle section referred to "localhost" as the simulator address (Modbus-Test-Fixture.md:7,19). Fixture default is 10.100.0.35:5020 (shared Docker host, migrated 2026-04-28) confirmed by ModbusSimulatorFixture.cs:36. Updated both prose occurrences. INLINE COMPLETENESS: Follow-up item 1 claimed MODBUS_SIM_ENDPOINT lacked documentation; the env var is already documented in this page + CLAUDE.md. Reworded to reflect actual gap (cross-reference to test-data-sources.md only). Verified: python3 .docs-audit/check_links.py — zero rows for this doc. --- docs/drivers/Modbus-Test-Fixture.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/drivers/Modbus-Test-Fixture.md b/docs/drivers/Modbus-Test-Fixture.md index 025d41b2..3b2fe776 100644 --- a/docs/drivers/Modbus-Test-Fixture.md +++ b/docs/drivers/Modbus-Test-Fixture.md @@ -3,11 +3,11 @@ Coverage map + gap inventory for the Modbus TCP driver's integration-test harness backed by `pymodbus` simulator profiles per PLC family. -**TL;DR:** Modbus is the best-covered driver — a real `pymodbus` server on -localhost with per-family seed-register profiles, plus a skip-gate when the -simulator port isn't reachable. Covers DL205 / Mitsubishi MELSEC / Siemens -S7-1500 family quirks end-to-end. Gaps are mostly error-path + alarm/history -shaped (neither is a Modbus-side concept). +**TL;DR:** Modbus is the best-covered driver — a real `pymodbus` server on the +shared Docker host (`10.100.0.35:5020`) with per-family seed-register profiles, +plus a skip-gate when the simulator port isn't reachable. Covers DL205 / +Mitsubishi MELSEC / Siemens S7-1500 family quirks end-to-end. Gaps are mostly +error-path + alarm/history shaped (neither is a Modbus-side concept). ## What the fixture is @@ -16,8 +16,9 @@ shaped (neither is a Modbus-side concept). `tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Modbus.IntegrationTests/Docker/`. Docker is the only supported launch path. - **Lifecycle**: `ModbusSimulatorFixture` (collection-scoped) TCP-probes - `localhost:5020` on first use. `MODBUS_SIM_ENDPOINT` env var overrides the - endpoint so the same suite can target a real PLC. + `10.100.0.35:5020` (the shared Docker host) on first use. + `MODBUS_SIM_ENDPOINT` env var overrides the endpoint so the same suite can + target a real PLC or a locally-running container. - **Profiles**: `DL205Profile`, `MitsubishiProfile`, `S7_1500Profile` — each composes device-specific register-format + quirk-seed JSON for pymodbus. Profile JSONs live under `Docker/profiles/` and are baked into the image. @@ -102,8 +103,9 @@ Not a Modbus concept. Driver doesn't implement `IAlarmSource` or ## Follow-up candidates -1. Add `MODBUS_SIM_ENDPOINT` override documentation to - `docs/v2/test-data-sources.md` so operators can point the suite at a lab rig. +1. Add `MODBUS_SIM_ENDPOINT` cross-reference to + `docs/v2/test-data-sources.md` (already documented in this page + CLAUDE.md; + the v2 page could link here for the complete env-var table). 2. ~~Extend `pymodbus` profiles to inject exception responses~~ — **shipped** via the `exception_injection` compose profile + standalone `exception_injector.py` server. Rules in