3.0 KiB
SDK1.5 Browser different-port NAT parity
Read-only application validation using existing Release Browser integration DLLs in /Users/dohertj2/.codex/worktrees/historiangw-client-040/OtOpcUa (current HEAD 52d1373e8129b7f4f0ea2e35f86a8a5d0ed1de36). No repository edits, build, or restore. DLL dependency graph confirms all five OPCFoundation packages 1.5.378.182; exact DLL hashes/package versions are in metadata.json.
One task-owned fixture was started from cached mcr.microsoft.com/iotedge/opc-plc:2.14.10 with --pn=50000 --ut --aa --alm, hostname otopcua-sdk1-browser-nat-parity, and localhost ephemeral mapping 127.0.0.1:32773 -> 50000. Image ID/digest and Docker configuration are recorded in container-metadata.txt and image-digest.txt. No shared fixture, volume, or port was changed.
All five original SDK1.5 Browser integration cases failed: 0 passed, 5 failed, 0 skipped; test exit1, execution guard exit0. Each failed with System.Net.Sockets.SocketException: nodename nor servname provided, or not known in the SDK1.5 DefaultSessionFactory.CreateChannelAsync/CreateAsync path. browser-sdk1-nat.trx and test.log contain the actual failures.
A standalone scratch discovery probe referencing those exact baseline Opc.Ua.* DLLs called public DiscoveryClient.CreateAsync and GetEndpointsAsync against localhost:32773. It succeeded (exit0) and captured all seven advertised endpoints at opc.tcp://otopcua-sdk1-browser-nat-parity:50000/, including SecurityPolicy.None/MessageSecurityMode.None. See get-endpoints.log and discovery-probe/{Program.cs,probe.csproj}. The advertised hostname/port are therefore the actual discovery response, not inferred from configuration alone.
This establishes the same browser failure on SDK1.5 when discovery advertises an unreachable Docker hostname/internal port. It supports classification as a preexisting NAT/advertisement limitation exposed by the test fixture mapping, rather than an SDK2-only regression. Root's matching-port SDK2 fixture pass is separate evidence.
Command:
OPCUA_SIM_ENDPOINT=opc.tcp://127.0.0.1:32773 dotnet test tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Browser.IntegrationTests/ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Browser.IntegrationTests.csproj -c Release --no-build --no-restore --logger 'trx;LogFileName=browser-sdk1-nat.trx' --results-directory /tmp/opcua-browser-sdk1-nat-parity
MIN_EXECUTED=1 bash scripts/ci/assert-not-all-skipped.sh /tmp/opcua-browser-sdk1-nat-parity/browser-sdk1-nat.trx
Cleanup removed only otopcua-sdk1-browser-nat-parity; cleanup exit0 and exact-name absence recorded in cleanup.log. No source/issue changes or commits.
The baseline browser limitation remains open in #806. This migration retains its behavior; the fixture is configured as a directly reachable endpoint with identical host/internal/advertised ports. Focused SDK2 browser5/5 and driver5/5 passed after that correction, with no source changes.