test: add local 2x2 route topology
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
# Local 2×2 route E2E
|
||||
|
||||
This harness runs one bot-free control stack plus four isolated data-node
|
||||
Compose projects. Every data node contains its own qBittorrent, Syncthing, and
|
||||
archive-client containers and its own bind-mounted config, secrets, state,
|
||||
backup, qB data, and sync roots. The stacks share only the explicitly named
|
||||
`archive-control-e2e` network.
|
||||
|
||||
The initial scenario starts with no route folders. With the control policy set
|
||||
to `eager_mesh`, two cache and two archive registrations must produce four
|
||||
independent, bidirectionally verified Syncthing routes. The assertion talks to
|
||||
the loopback-only test adapter through a curl sidecar sharing the control
|
||||
container's network namespace; Telegram is not initialized.
|
||||
|
||||
Run from the archive-clients checkout:
|
||||
|
||||
```bash
|
||||
./e2e/scripts/up.sh
|
||||
./e2e/scripts/logs.sh
|
||||
./e2e/scripts/down.sh
|
||||
```
|
||||
|
||||
`up.sh` defaults `ARCHIVE_CONTROL_SOURCE` to the sibling playground
|
||||
`mogic-bot/mogic-repo` checkout. Set that environment variable to test another
|
||||
control worktree. `E2E_WAIT_SECONDS` overrides the 360-second assertion
|
||||
deadline. `down.sh` removes only the five exact Compose projects and the
|
||||
labelled E2E network; it intentionally retains all bind-mounted runtime state.
|
||||
|
||||
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
|
||||
isolated E2E network and must never be reused for deployment.
|
||||
Reference in New Issue
Block a user