Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
65 lines
1.3 KiB
Go
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")
|
|
}
|
|
}
|