Skip to content

Commit 8c766af

Browse files
committed
docs(plan): record stand-side e2e cycle — 4 PASS + 11 fixed bugs
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
1 parent fac60a9 commit 8c766af

1 file changed

Lines changed: 5 additions & 9 deletions

File tree

PLAN.md

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -465,15 +465,11 @@ The dev stand has been Talos+QEMU loopfile-backed. Production parity needs:
465465

466466
`tests/burnin-blockstor.sh` covers the 2-replica failover happy path. The remaining scenarios above each need a deterministic, automatable test in `tests/e2e/`:
467467

468-
- [x] **e2e harness scaffolded** (2026-05-09): all 12 scenarios committed under `tests/e2e/`, plus a shared `lib.sh` (on_node, wait_uptodate, write_random, read_md5, delete_rd, require_workers, rd_apply, rest_post, rest_put). `make e2e NAME=<cluster> SCENARIO=<name>` invokes one; `make e2e-list` enumerates them. Stand-side run on 2026-05-09 (after fresh stand bring-up + multi-volume minor allocator fix):
469-
- `tests/e2e/smoke-blockstor.sh`**PASS** (1 MiB urandom write + byte-perfect md5 on failover read)
470-
- `tests/e2e/tiebreaker.sh`**PASS** (witness lands on N3 with TIE_BREAKER flag, drops correctly when parity flips)
471-
- `tests/e2e/evacuate.sh`**PASS** (3-node migration to N3, source replica retained per EVICTED semantic)
472-
- `tests/e2e/resize-plain.sh`**PASS** (PUT /v1/.../volume-definitions/0 size_kib=131072 → satellite resizes loop, drbdadm resize, /dev/drbdN reports new size minus DRBD metadata overhead)
473-
- `tests/e2e/auto-diskful.sh`, `two-volume-rd.sh`, `two-primaries-live-migration.sh` — flake on the busy stand under back-to-back runs (initial DRBD sync occasionally takes >180s when 3 RDs are coming up close together). Functional path is correct; the test harness needs better cross-test isolation (longer stabilisation pause between scenarios, or one stand per scenario via `make up NAME=tN`).
474-
- `tests/e2e/backing-device-fail.sh` — sysfs autoclear on a loop file doesn't propagate to DRBD as disk:Failed (DRBD holds the fd open). Real path needs LVM-thin or ZFS pool with sysfs `device/delete` (deferred to 8.6 real-disk).
475-
- `tests/e2e/snapshot-restore-cross-node.sh`, `clone.sh`, `resize-luks.sh` — REST plumbing verified via the new `rest_post`/`rest_put` helpers (port-forward + host curl, since the controller image is distroless). LUKS / snapshot-shipping execution paths need encrypted-RD and ZFS-pool stand profiles, tracked in 8.6/8.7.
476-
- `tests/e2e/network-partition.sh`, `rwx-ganesha.sh` — stand setup gaps (iptables-controllable networking, Ganesha+drbd-reactor); deferred per 8.6/8.7.
468+
- [x] **e2e harness scaffolded** (2026-05-09): all 12 scenarios committed under `tests/e2e/`, plus a shared `lib.sh` (on_node, wait_uptodate, write_random, read_md5, delete_rd, require_workers, rd_apply, rest_post, rest_put). `make e2e NAME=<cluster> SCENARIO=<name>` invokes one; `make e2e-list` enumerates them. Stand-side runs on 2026-05-09 surfaced (and fixed) several real bugs in the controller / stand setup along the way:
469+
- **PASS**: `tests/smoke-blockstor.sh` (1 MiB urandom + byte-perfect failover read), `tests/e2e/tiebreaker.sh` (witness lands+drops per parity rule), `tests/e2e/evacuate.sh` (NodeReconciler triggers placer migration to N3), `tests/e2e/resize-plain.sh` (REST size-bump → satellite resize chain → drbdadm resize, /dev/drbdN grows modulo DRBD metadata overhead).
470+
- **Bugs surfaced + fixed**: minor allocator didn't expand multi-volume range (commit `bf23552`); RD reconciler raced itself on Update under fan-out (commit `fac60a9`); RD changes didn't re-enqueue Resources (commit `aab68a1`); ListByDefinition filtered by labels not by Spec (commit `436669e`); satellite gRPC port collided with DRBD's default range (commit `8c041cf`); satellite advertised port hardcoded to 7000 (commit `1481d4a`); satellite leaked LINSTOR-only `DrbdOptions/<key>` into `.res` (commit `939318e`); .res not wiped on satellite startup (commit `71bf4d3`); namespace lacked privileged PSA label (commit `1cf7e16`); blockstor-system installer (`make blockstor`) auto-applies CRDs+controller+satellites (commit `5f098dc`); pool capacity reporting via statfs (commit `54923ad`).
471+
- **Flake**: `tests/e2e/auto-diskful.sh`, `two-volume-rd.sh`, `two-primaries-live-migration.sh`. Functional path is correct in isolation; under back-to-back runs the busy QEMU stand's first-sync occasionally takes >180s. Mitigation: parallel stands (`make up NAME=t1` etc.) instead of serialising on one. Tracked under 8.8 follow-up.
472+
- **Deferred**: `tests/e2e/backing-device-fail.sh` (sysfs autoclear on a loop file doesn't propagate as disk:Failed; needs real LVM-thin/ZFS — 8.6); `tests/e2e/snapshot-restore-cross-node.sh`, `clone.sh`, `resize-luks.sh` (REST plumbing verified, end-to-end execution needs LUKS + ZFS-pool stand profiles — 8.6/8.7); `tests/e2e/network-partition.sh`, `rwx-ganesha.sh` (need iptables-controllable networking + Ganesha+drbd-reactor; 8.6/8.7).
477473

478474
**Exit criteria for Phase 8**: every checkbox above either lands or is moved to a separately-tracked "explicit out-of-scope" with rationale. Until then "production-ready" is overstating it; what we have is a CSI-compatible REST front-end with a verified happy path.
479475

0 commit comments

Comments
 (0)