test: add deferred phase 8 adversarial matrix

This commit is contained in:
2026-07-23 10:49:48 +00:00
parent 3d09e32ccd
commit 69709c778b
11 changed files with 820 additions and 2 deletions
+26
View File
@@ -52,6 +52,32 @@ restores the target root's original mode even on an aborted run.
The scheduler pause/resume endpoints exist only on the loopback test adapter;
normal control and Telegram orchestration always use the automatic scheduler.
Set `E2E_RUN_ADVERSARIAL=1` to run the deferred Phase 8 v2/fault tranche in
one pass. The scenario performs archive → eviction → unarchive round trips for
a pure-v2 torrent and a hybrid torrent, checking that hybrid placements retain
both identities. It then:
- leaves a Syncthing command durable while archive-2 is offline, waits beyond
the five-second E2E stall threshold, verifies the job retains overall
progress while `STALLED`, and reconnects the client to finish it;
- recreates archive-2 with `client-exhausted.toml`, whose impossible free-space
reserve exercises the real capacity guard without consuming disk, and
verifies a precise precommit failure with the source intact; and
- runs a separate `protocol-probe` container in the control network namespace.
The probe sends job event 2 before event 1, requires a snapshot request and
stale-state error, sends event 1 twice, and replays event 2 to prove
reordered convergence and duplicate idempotency over the real WebSocket.
The adversarial script restores the normal archive-2 client configuration and
automatic scheduler through an exit trap. This tranche is intentionally
checked in before its first execution; run it later with:
```bash
E2E_RUN_ADVERSARIAL=1 \
ARCHIVE_CONTROL_SOURCE=/path/to/mogic-bot \
./e2e/scripts/up.sh
```
The Syncthing 2.1.2 and LinuxServer qBittorrent multi-platform image indexes are
digest-pinned. Runtime secrets are generated with mode 0600 and ignored by
Git. The qBittorrent test config limits its authentication bypass to the