Files
EscapistsReintroduced/tests/native/telemetry_restart/README.md
T
2026-11-07 01:05:43 +01:00

2.4 KiB

Native telemetry restart test

Run from the repository root with a disposable existing Proton test prefix and the installed authorized dependency tree:

python3 tests/native/telemetry_restart/run.py \
  --work .local/restart-failure/verified \
  --compat .local/rhs-19-work/compat \
  --external-addons '/home/jakub/.local/share/Steam/steamapps/compatdata/1874880/pfx/drive_c/users/steamuser/Documents/My Games/ArmaReforger/addons'

The work directory must be new. The runner copies the current addon and adds the fixture only to that copy. It reuses the native preparation-stage shutdown probe so extraction placement is not a prerequisite. It then explicitly stops and relaunches its owned Workbench process with the same private profile. Workbench hosting does not automatically reload this fixture. Two rounds use the actual native PlayerManager connection count and EndGameMode callback. Production reload behavior is not changed.

The fixture checks native JSON/profile round-trips, an occupied checkpoint not being submitted while the round is live, constructor recovery from unfinished state, a single persisted defeat on shutdown, and completed-state reopening without another defeat. Forced-stop recovery is simulated by constructing a new service from the saved unfinished checkpoint; this is not an AMP process-kill or multiplayer dedicated-server test. Empty occupancy and completion variants also have production-method tests in tests/test_telemetry.py.

The copied test class replaces only the telemetry dispatch tick, preventing network submissions. A reserved .invalid endpoint is an additional safeguard. The fixture restores the original service's state after each recovery probe. No test code or test results are included in the published addon.

Native evidence is retained under the work directory's profile/logs, including source hashes and cleanup verification. Queued payloads are in profile/profile/EscapistsTelemetryState.json and can be checked with the receiver's validateEvent function.

The general native report also grades optional asset and backend errors. This fixture retains that complete report as telemetry-check.json, while its result requires completed telemetry assertions, no script/runtime failures, unchanged inputs, confirmed process cleanup and valid queued results. It does not certify Rally/RHS/WCS assets, DLC ownership or the rest of the mission.