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") } }