9bdb4dae8f
gates / gates (push) Successful in 13s
Space preflight before anything is created (uncompressed size from the vzdump log / PBS snapshot, x1.2 + 5 GiB, thin metadata, off the tested guest's pool when another storage is eligible, unknown refuses, reported as a non-pass result). Failed scratch teardown and the stale-lock sweep retried every 10 min (the sweep under the heavy-op gate). A thin pool crossing 90% requests an immediate host report. Six red-proofs. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
37 lines
1.5 KiB
Go
37 lines
1.5 KiB
Go
package backup
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"gitea.dooplex.hu/admin/felhom-agent/internal/reconcile"
|
|
)
|
|
|
|
// R-672 (v0.133.0): a restore-test the SPACE preflight refused is the test's RESULT — recorded for the
|
|
// hub as pass=false with the reason, never dropped (a band skip still is) and never a pass.
|
|
//
|
|
// COMPANION RED-PROOF (REPORT): the scheduler's pre-v0.133.0 `if res.Skipped { return }` → "a space
|
|
// refusal never reached the host report".
|
|
func TestR672_SpaceSkipIsReportedNotDropped(t *testing.T) {
|
|
store := NewStore()
|
|
rt := &fakeRTRunner{res: reconcile.RestoreTestResult{Archive: "vol", Skipped: true,
|
|
SkipReason: "skipped: not enough space on local-lvm: restoring 21.1 GiB (vzdump log) needs 30.3 GiB free, has 21.6 GiB"}}
|
|
s := NewScheduler(SchedulerOptions{
|
|
Runner: rt, Pick: func(context.Context) (string, error) { return "vol", nil }, Store: store,
|
|
Spec: func(context.Context, string) reconcile.RestoreTestSpec {
|
|
return reconcile.RestoreTestSpec{RestoreStorage: "local-lvm", ScratchMin: 990000, ScratchMax: 990009}
|
|
},
|
|
Cadence: time.Hour, Logger: quiet(),
|
|
})
|
|
s.tick(context.Background())
|
|
got := store.RestoreTests(context.Background())
|
|
if len(got) != 1 {
|
|
t.Fatalf("a space refusal never reached the host report: %+v", got)
|
|
}
|
|
if got[0].Pass || !got[0].Skipped || !strings.HasPrefix(got[0].Error, "skipped: not enough space") {
|
|
t.Fatalf("record = %+v — want pass=false, skipped, the reason as the error", got[0])
|
|
}
|
|
}
|