Count occupied restarts as failed missions; sync published Workshop version
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-11-07 01:05:43 +01:00
parent 161100cf08
commit e421dcfc15
14 changed files with 640 additions and 50 deletions
+43
View File
@@ -0,0 +1,43 @@
# Native telemetry restart test
Run from the repository root with a disposable existing Proton test prefix and
the installed authorized dependency tree:
```sh
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.