From 6fa29c6c9ae06245dafe9d110bbedf479325bcdd Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Wed, 3 Jun 2026 15:59:14 -0400 Subject: [PATCH] =?UTF-8?q?docs(audit):=20drivers/FOCAS-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 STRUCTURAL - docs/drivers/FOCAS-Test-Fixture.md line 140: replaced stale `Series/FixedTreePopulatesTests.cs` reference (file deleted) with `Series/WireBackendTests.cs` — the current home of all fixed-tree end-to-end integration tests (verified: ls Series/ shows only WireBackendTests.cs + WireBackendCoverageTests.cs). STALE-STATUS - Removed `**Status:** as of 2026-04-24` header (date-anchored, stale). The architecture description that followed was accurate; the date anchor served no purpose once the shim era is closed. CODE-REALITY - Line 55: TCP-probe skip gate now mentions `OTOPCUA_FOCAS_SIM_ENDPOINT` override (verified in FocasSimFixture.cs line 22 / 49). FOCAS.md: no changes — all claims verified accurate against source. - IAlarmSource implemented: FocasDriver.cs:21 - IWritable returns BadNotWritable: FocasDriver.cs (IWritable body) - All capability interfaces listed in capability table confirmed in FocasDriver.cs:21 class declaration - All linked files exist and resolve correctly --- docs/drivers/FOCAS-Test-Fixture.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/drivers/FOCAS-Test-Fixture.md b/docs/drivers/FOCAS-Test-Fixture.md index 252d0b07..b5e1a690 100644 --- a/docs/drivers/FOCAS-Test-Fixture.md +++ b/docs/drivers/FOCAS-Test-Fixture.md @@ -2,8 +2,8 @@ Coverage map + gap inventory for the FANUC FOCAS2 CNC driver. -**Status:** as of 2026-04-24, OtOpcUa speaks FOCAS2 directly over TCP -via the pure-managed [`Focas.Wire`](https://github.com/Ladder99/focas-mock/tree/main/dotnet/Focas.Wire) +OtOpcUa speaks FOCAS2 directly over TCP via the pure-managed +[`Focas.Wire`](https://github.com/Ladder99/focas-mock/tree/main/dotnet/Focas.Wire) client. Integration tests run the managed driver end-to-end against the vendored `focas-mock` Python server (at [`tests/.../Docker/focas-mock/`](../../tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.FOCAS.IntegrationTests/Docker/focas-mock/VENDORED.md)) @@ -51,8 +51,9 @@ message naming the CNC series + documented limit. `tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.FOCAS.IntegrationTests/` drives the managed `FocasDriver` end-to-end. A single gate: -**Docker compose up** — tests skip when the TCP probe to -`localhost:8193` fails with a pointer to the compose command. +**Docker compose up** — tests skip when the TCP probe fails, with a +pointer to the compose command. The endpoint defaults to `localhost:8193` +and is overridable via `OTOPCUA_FOCAS_SIM_ENDPOINT`. When the mock is up, `WireFocasClient` dials it over TCP exactly like a real CNC, and the mock's native FOCAS Ethernet responder replies with @@ -137,8 +138,8 @@ Or use `scripts/integration/run-focas.ps1` which wraps compose up / test — per-series compose profiles - `tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.FOCAS.IntegrationTests/FocasSimFixture.cs` — collection fixture + mock admin API client -- `tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.FOCAS.IntegrationTests/Series/FixedTreePopulatesTests.cs` - — fixed-tree end-to-end tests +- `tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.FOCAS.IntegrationTests/Series/WireBackendTests.cs` + — fixed-tree end-to-end tests (identity / axes / spindle / program / timers) - `tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.FOCAS.IntegrationTests/Series/WireBackendTests.cs` — pure-wire-backend end-to-end tests - `tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.FOCAS.Tests/FakeFocasClient.cs` —