diff --git a/sw-block/design/test/v3-phase-15-g15b-k8s-qa-test-instruction.md b/sw-block/design/test/v3-phase-15-g15b-k8s-qa-test-instruction.md index 5afabf3ac..f3df8596f 100644 --- a/sw-block/design/test/v3-phase-15-g15b-k8s-qa-test-instruction.md +++ b/sw-block/design/test/v3-phase-15-g15b-k8s-qa-test-instruction.md @@ -1,7 +1,7 @@ # V3 Phase 15 G15b Kubernetes Static PV QA Test Instruction **Date**: 2026-05-03 -**Status**: K8s lab instruction for `p15-g15b/k8s-static-pv@95b7217`; M02 re-run pending +**Status**: VERIFIED PASS on M02 at `p15-g15b/k8s-static-pv@95b7217`; TestOps registration landed at `7050654` **Scope**: single-node Kubernetes static PV/PVC/pod smoke through real V3 daemons and CSI. --- @@ -100,6 +100,14 @@ Expected result: - artifact dir contains pod logs and product daemon logs; - cleanup deletes the test PV/PVC/pod and product/CSI manifests. +Verified result: + +- Tree: `p15-g15b/k8s-static-pv@95b7217` +- Lab: M02 (`192.168.1.184`) k3s `v1.34.4+k3s1` +- Run ID: `20260503T172122Z-95b7217` +- Artifacts: `V:\share\g15b-k8s\runs\20260503T172122Z-95b7217\` +- Result: PASS; pod completed after writing 4096 bytes through the PVC and `sha256sum -c` returned `OK`. + --- ## Scenario Map diff --git a/sw-block/design/test/v3-phase-15-testops-plan.md b/sw-block/design/test/v3-phase-15-testops-plan.md index 3ea660f99..f8b407216 100644 --- a/sw-block/design/test/v3-phase-15-testops-plan.md +++ b/sw-block/design/test/v3-phase-15-testops-plan.md @@ -1,7 +1,7 @@ # V3 Phase 15 TestOps Plan **Date**: 2026-05-03 -**Status**: DRAFT v0.3; V3 `internal/testops` contract skeleton implemented; first registered `go-test` scenario executable at `f51b79b` +**Status**: DRAFT v0.4; V3 `internal/testops` contract skeleton implemented; `g15b-manifest` executable at `f51b79b`; first K8s shell scenario registered at `7050654` **Scope**: end-to-end V3 test operations covering dev loop, gate close, regression, debug, hardware, K8s, chaos **Code repo**: `seaweed_block` (V3 binaries / per-package go test) **Docs repo**: `seaweedfs/sw-block/design/test/` @@ -109,6 +109,9 @@ Implementation note: loads into the registry, executes the G15b manifest/harness `go test`, and writes standard `run-request.json`, `result.json`, and `test-stdout.log` artifacts. +- Slice 2 landed at `seaweed_block@7050654`: `testops/registry/g15b-k8s-static.json` + records the M02 K8s static PV scenario as a shell-driver registration pinned + to the green `95b7217` lab run. ### 3.1 Layout @@ -392,7 +395,7 @@ Each scenario has: a driver in `bridge/scenarios/`, a test instruction in | `g15a-privileged` | `g15a-privileged.sh` | `v3-phase-15-g15a-privileged-qa-test-instruction.md` | `ac49adb` | L3 | | `g15a-non-privileged` | `g15a-non-privileged.sh` | `v3-phase-15-g15a-qa-test-instruction.md` | `ac49adb` | L2 | | `g15b-manifest` | `go-test` via `testops/registry/g15b-manifest.json` | `v3-phase-15-g15b-k8s-qa-test-instruction.md` | `f51b79b` | L1/L2 | -| `g15b-k8s-static` | `g15b-k8s-static.sh` | `v3-phase-15-g15b-k8s-qa-test-instruction.md` | `5375add` | L5 | +| `g15b-k8s-static` | `shell` via `testops/registry/g15b-k8s-static.json` | `v3-phase-15-g15b-k8s-qa-test-instruction.md` | `7050654` | L5 | | `g9g-l2` | `g9g-l2.sh` | `v3-phase-15-g9g-qa-test-instruction.md` | `7ed9ab2` | L2 | | `g8-failover-l2` | `g8-failover-l2.sh` | (forward-carry: derive from G8 mini-plan §12) | `b320336` | L2 | | `g7-recovery-3scenarios` | `g7-recovery.sh` | (existing: V:\share\g5-test\scenarios-g7.sh) | `d09fcc6` | L4 | diff --git a/sw-block/design/test/v3-phase-15-testops-pluggable-registration.md b/sw-block/design/test/v3-phase-15-testops-pluggable-registration.md index 7409c3ea2..cfb0f57a2 100644 --- a/sw-block/design/test/v3-phase-15-testops-pluggable-registration.md +++ b/sw-block/design/test/v3-phase-15-testops-pluggable-registration.md @@ -221,7 +221,7 @@ The last rule is strict: | Scenario | Driver | Layer | Known green | Status | |---|---|---|---|---| | `g15b-manifest` | `go-test` | L1/L2 | `eb13105` | registered and executable at `f51b79b` | -| `g15b-k8s-static` | `shell` | L5 | `5375add` preflight only; K8s run pending | ready to register as pending-lab | +| `g15b-k8s-static` | `shell` | L5 | `95b7217` | registered at `7050654`; M02 K8s static PV PASS | | `g15a-privileged` | `shell` | L3 | `ac49adb` | ready to register | | `g15a-non-privileged` | `go-test` | L2 | `ac49adb` | ready to register | | `g9g-l2` | `go-test` | L2 | `7ed9ab2` | ready to register | @@ -249,7 +249,9 @@ go test ./internal/testops ./cmd/blockcsi -count=1 The `internal/testops` suite includes the smoke that loads `g15b-manifest.json`, runs the registered scenario through `GoTestDriver`, and emits a valid `result.json` in a temp artifact dir. -Next slice: register `g15b-k8s-static` as a shell-driver scenario once the M02 rerun is green on the `eb13105+` manifest/harness fix. +Slice 2 result: `testops/registry/g15b-k8s-static.json` landed at `seaweed_block@7050654` after the M02 K8s lab passed on `95b7217`. + +Next slice: register `g15a-privileged` as a shell-driver scenario, or pause TestOps registration and merge G15b if the branch needs to close first. --- diff --git a/sw-block/design/v3-phase-15-g15b-k8s-static-pv-mini-plan.md b/sw-block/design/v3-phase-15-g15b-k8s-static-pv-mini-plan.md index 508e6a9fc..c3e3efe1a 100644 --- a/sw-block/design/v3-phase-15-g15b-k8s-static-pv-mini-plan.md +++ b/sw-block/design/v3-phase-15-g15b-k8s-static-pv-mini-plan.md @@ -1,7 +1,7 @@ # V3 Phase 15 — G15b Kubernetes Static PV Mini-Plan **Date**: 2026-05-03 -**Status**: G15b-1 manifests implemented at `62325c9`; G15b-2 lab harness staged at `32b3a13`; image build inputs added at `5375add`; M02 first run found DNS/harness blockers fixed at `eb13105`; M02 second run found `iscsi_tcp` + primary/listener alignment blockers fixed at `95b7217`; Kubernetes re-run pending +**Status**: G15b K8s static PV verified PASS on M02 at `95b7217`; TestOps shell registration landed at `7050654` **Branch**: `p15-g15b/k8s-static-pv` from `ac49adb` **Goal**: prove a Kubernetes pod can consume a pre-provisioned V3 block volume through `cmd/blockcsi`, using real Kubernetes CSI control flow and real Linux iSCSI staging. @@ -162,7 +162,7 @@ Result: PASS on `62325c9`. ### G15b-2 — K8s Lab Harness -Status: **harness staged** at `seaweed_block@32b3a13`; image build inputs added at `seaweed_block@5375add`; DNS/logging fixes at `seaweed_block@eb13105`; iSCSI TCP module loading + deterministic attachable-primary bridge fix at `seaweed_block@95b7217`; real Kubernetes re-run pending. +Status: **verified PASS** on M02 at `seaweed_block@95b7217`; TestOps shell registration landed at `seaweed_block@7050654`. Artifacts: @@ -240,6 +240,14 @@ go test ./internal/testops ./core/host/master ./cmd/blockcsi -count=1 go test ./core/csi ./cmd/blockcsi ./core/host/volume ./core/host/master ./core/authority ./cmd/blockmaster ./cmd/blockvolume -count=1 ``` +Kubernetes lab evidence: + +- Tree: `p15-g15b/k8s-static-pv@95b7217` +- Lab: M02 (`192.168.1.184`) k3s `v1.34.4+k3s1` +- Run ID: `20260503T172122Z-95b7217` +- Artifacts: `V:\share\g15b-k8s\runs\20260503T172122Z-95b7217\` +- Result: PASS; pod `sw-block-static-smoke` completed; pod wrote 4096 bytes and `sha256sum -c` returned `OK`; r1 log shows SCSI WRITE + SYNCHRONIZE_CACHE backend success; cleanup left no dangling test iSCSI session. + Image build verification added at `5375add`: ```bash @@ -248,7 +256,7 @@ bash scripts/build-g15b-images.sh . Result: PASS; built `sw-block:local` and `sw-block-csi:local`. -Not yet proven: +Proven by the M02 run: - Kubernetes API server availability; - image load path into the target cluster after rebuilding at `95b7217`;