72 lines
2.1 KiB
Go
72 lines
2.1 KiB
Go
package db
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestSetFIPAssociatedStampsTimestamp(t *testing.T) {
|
|
d, ctx := newTestDB(t)
|
|
|
|
if err := d.SeedQueue(ctx, []string{"1.2.3.4"}); err != nil {
|
|
t.Fatalf("seed queue: %v", err)
|
|
}
|
|
if err := d.AdminCreateValidator(ctx, "validator-1", "port-1"); err != nil {
|
|
t.Fatalf("create validator: %v", err)
|
|
}
|
|
claimed, err := d.ClaimNextQueued(ctx, "validator-1", time.Minute)
|
|
if err != nil || claimed == nil {
|
|
t.Fatalf("claim: item=%+v err=%v", claimed, err)
|
|
}
|
|
if claimed.FIPAssociatedAt != nil {
|
|
t.Fatalf("expected FIPAssociatedAt nil before association, got %v", claimed.FIPAssociatedAt)
|
|
}
|
|
|
|
before := Now()
|
|
if err := d.SetFIPAssociated(ctx, claimed.ID, "fip-1", time.Minute); err != nil {
|
|
t.Fatalf("set fip associated: %v", err)
|
|
}
|
|
item, err := d.GetIP(ctx, claimed.ID)
|
|
if err != nil {
|
|
t.Fatalf("get ip: %v", err)
|
|
}
|
|
if item.FIPAssociatedAt == nil {
|
|
t.Fatalf("expected FIPAssociatedAt to be set")
|
|
}
|
|
if item.FIPAssociatedAt.Before(before) {
|
|
t.Fatalf("expected FIPAssociatedAt >= %v, got %v", before, *item.FIPAssociatedAt)
|
|
}
|
|
}
|
|
|
|
func TestRequeueClearsFIPAssociatedAt(t *testing.T) {
|
|
d, ctx := newTestDB(t)
|
|
|
|
if err := d.SeedQueue(ctx, []string{"1.2.3.4"}); err != nil {
|
|
t.Fatalf("seed queue: %v", err)
|
|
}
|
|
if err := d.AdminCreateValidator(ctx, "validator-1", "port-1"); err != nil {
|
|
t.Fatalf("create validator: %v", err)
|
|
}
|
|
claimed, err := d.ClaimNextQueued(ctx, "validator-1", time.Minute)
|
|
if err != nil || claimed == nil {
|
|
t.Fatalf("claim: item=%+v err=%v", claimed, err)
|
|
}
|
|
if err := d.SetFIPAssociated(ctx, claimed.ID, "fip-1", time.Minute); err != nil {
|
|
t.Fatalf("set fip associated: %v", err)
|
|
}
|
|
|
|
if err := d.RequeueOrFail(ctx, claimed.ID, "validator-1", 3); err != nil {
|
|
t.Fatalf("requeue or fail: %v", err)
|
|
}
|
|
item, err := d.GetIP(ctx, claimed.ID)
|
|
if err != nil {
|
|
t.Fatalf("get ip after requeue: %v", err)
|
|
}
|
|
if item.State != IPQueued {
|
|
t.Fatalf("expected requeued, got state=%s", item.State)
|
|
}
|
|
if item.FIPAssociatedAt != nil {
|
|
t.Fatalf("expected FIPAssociatedAt cleared on requeue, got %v", item.FIPAssociatedAt)
|
|
}
|
|
}
|