fix(focas-tests): honour fixture endpoint + fix mock timer endianness (9F/1P -> 10/10)
Two test/fixture bugs; NO OtOpcUa driver change. 1. Topology: FocasSimFixture reads an env-overridable endpoint (OTOPCUA_FOCAS_SIM_ENDPOINT, default localhost:8193) and exposes Host/Port, but WireBackendTests + WireBackendCoverageTests hardcoded focas://127.0.0.1:8193. Against a remote fixture the skip-gate passed (remote reachable) but the driver dialed localhost -> KeyNotFound. Added a DeviceUri property to the fixture; each test now derives DeviceHost from it. Recovered 8 of 9. 2. Mock timer endianness (surfaced once #1 let the tests reach the mock): the last failure read 60397977600 for a 3600 s power-on timer (= 0x3C000000 x 60). The focas-mock's _wire_timer encoded the minute/msec fields big-endian (_u32), but cnc_rdtimer's timer fields are LITTLE-endian on real hardware — a documented, live-31i-B-validated quirk that FocasWireClient.ParseTimer decodes LE (docs/plans/2026-06-25-focas-pdu-v3-30i-b-support.md). The driver was correct; the mock was wrong. _wire_timer now emits little-endian (_u32_le). Suite 9F/1P -> 10/10 against the remote fixture at ~/otopcua-focas. Integration-sweep follow-up #3.
This commit is contained in:
+3
-1
@@ -23,7 +23,9 @@ public sealed class WireBackendCoverageTests
|
||||
/// <param name="fx">The FOCAS simulation fixture.</param>
|
||||
public WireBackendCoverageTests(FocasSimFixture fx) => _fx = fx;
|
||||
|
||||
private const string DeviceHost = "focas://127.0.0.1:8193";
|
||||
// Derived from the fixture endpoint (OTOPCUA_FOCAS_SIM_ENDPOINT) so the driver dials the SAME
|
||||
// mock the fixture probed — a remote fixture on the Docker host, not a hardcoded 127.0.0.1.
|
||||
private string DeviceHost => _fx.DeviceUri;
|
||||
|
||||
/// <summary>Verifies that user tag reads route via the wire backend.</summary>
|
||||
[Fact]
|
||||
|
||||
+3
-1
@@ -26,7 +26,9 @@ public sealed class WireBackendTests
|
||||
/// <param name="fx">The FOCAS simulator fixture.</param>
|
||||
public WireBackendTests(FocasSimFixture fx) => _fx = fx;
|
||||
|
||||
private const string DeviceHost = "focas://127.0.0.1:8193";
|
||||
// Derived from the fixture endpoint (OTOPCUA_FOCAS_SIM_ENDPOINT) so the driver dials the SAME
|
||||
// mock the fixture probed — a remote fixture on the Docker host, not a hardcoded 127.0.0.1.
|
||||
private string DeviceHost => _fx.DeviceUri;
|
||||
|
||||
/// <summary>Verifies that identity axes and dynamic data populate via the wire backend.</summary>
|
||||
[Fact]
|
||||
|
||||
Reference in New Issue
Block a user