Files
wwtools/mbproxy/tests/sim
Joseph Doherty 0308490aef mbproxy: close out the dashboard code-review minor findings
Resolves the remaining Minor items from the 2026-05-15 review so the
web-UI dashboard work has no open follow-ups: a real-HubConnection
end-to-end test for the SignalR feed, stable mbproxy.admin.broadcast.*
log-event names, keyboard/aria accessibility on the fleet table,
frontend JS hardening (URL-decode guard, NaN guards, shared util.js),
reconciler<->capture-registry coverage, throwing-sink and embedded-asset
tests, broadcaster polish, and a soft upper bound on AdminPushIntervalMs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 16:36:39 -04:00
..

DL205 Modbus Simulator

Wraps the dl205.json pymodbus profile as a standalone launcher and as an xUnit managed lifecycle.

Manual launch

pwsh tests/sim/run-dl205-sim.ps1 -Port 5020

On first run the script creates a Python venv at tests/sim/.venv and installs:

pymodbus==3.13.0
aiohttp

(pymodbus 3.13.0 does not provide a [server] extra; the simulator is included in the base package. aiohttp is required by the simulator's HTTP console.)

Re-runs detect the existing venv and skip provisioning (fast path, < 2 s to first packet).

Ctrl-C exits cleanly. The venv directory is gitignored.

Requirements

  • Python 3.10+ on PATH (tested with 3.13). The script also tries the Windows py launcher.
  • Network access for first-run venv provisioning. Subsequent runs are fully offline.

Parameters

Parameter Default Description
-Profile dl205.json pymodbus JSON device profile
-Port 5020 TCP port the Modbus server binds

xUnit integration

Test classes that need a live simulator declare:

[Collection(nameof(DL205SimulatorCollection))]

The DL205SimulatorFixture (in tests/Mbproxy.Tests/Sim/) spawns run-dl205-sim.ps1 via pwsh -NoProfile -File, polls for a TCP connection within 10 s, and exposes Host, Port, and LogTail. If Python is unavailable, SkipReason is populated and every test in the collection skips cleanly rather than failing.

Version pin

pymodbus[server]==3.13.0 — update this README and run-dl205-sim.ps1 together when re-pinning.