Files
AetherForge/server/internal/db/subnet_spread_pause_test.go
AetherForge 7b2d41cda8
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Expand P2 test coverage: mining chain, spread lanes, path forge, WS/beacon, E2E onion, file handling
2026-06-07 04:58:55 -07:00

65 lines
1.3 KiB
Go

package db
import "testing"
func TestRecordSubnetSpreadFailurePausesAtFive(t *testing.T) {
d, err := New(t.TempDir())
if err != nil {
t.Fatal(err)
}
defer d.Close()
prefix := "10.0.0"
for i := 0; i < 4; i++ {
paused, err := d.RecordSubnetSpreadFailure(prefix)
if err != nil {
t.Fatal(err)
}
if paused {
t.Fatalf("unexpected pause at failure %d", i+1)
}
}
paused, err := d.RecordSubnetSpreadFailure(prefix)
if err != nil {
t.Fatal(err)
}
if !paused {
t.Fatal("expected pause on 5th failure")
}
ok, err := d.IsSubnetSpreadPaused(prefix)
if err != nil || !ok {
t.Fatalf("paused=%v err=%v", ok, err)
}
row, err := d.GetSubnetSpreadPause(prefix)
if err != nil || row == nil || row.FailCount != 5 || row.PausedUntil == nil {
t.Fatalf("row=%+v err=%v", row, err)
}
}
func TestSubnetSpreadPauseExpires(t *testing.T) {
d, err := New(t.TempDir())
if err != nil {
t.Fatal(err)
}
defer d.Close()
prefix := "192.168.1"
for i := 0; i < 5; i++ {
_, _ = d.RecordSubnetSpreadFailure(prefix)
}
_, err = d.Exec(
`UPDATE subnet_spread_pause SET paused_until = datetime('now', '-1 hour') WHERE prefix = ?`,
prefix,
)
if err != nil {
t.Fatal(err)
}
ok, err := d.IsSubnetSpreadPaused(prefix)
if err != nil {
t.Fatal(err)
}
if ok {
t.Fatal("expected expired pause to clear")
}
}