52 lines
1.0 KiB
Go
52 lines
1.0 KiB
Go
package state
|
|
|
|
import (
|
|
"github.com/example/glpi-ai-agent/internal/model"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestStoreRoundTrip(t *testing.T) {
|
|
dir := t.TempDir()
|
|
s, err := Open(dir, 10)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
r := model.RunRecord{TicketID: 7, SourceVersion: "v1", FinishedAt: time.Now(), Outcome: "processed"}
|
|
if err := s.Append(r); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !s.Seen(7, "v1") {
|
|
t.Fatal("not seen")
|
|
}
|
|
s2, err := Open(dir, 10)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !s2.Seen(7, "v1") {
|
|
t.Fatal("not persisted")
|
|
}
|
|
}
|
|
|
|
func TestErrorRunIsRetriedAfterRestart(t *testing.T) {
|
|
dir := t.TempDir()
|
|
s, err := Open(dir, 10)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
r := model.RunRecord{TicketID: 8, SourceVersion: "v1", FinishedAt: time.Now(), Outcome: "error", Error: "temporary outage"}
|
|
if err := s.Append(r); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if s.Seen(8, "v1") {
|
|
t.Fatal("failed run must remain retryable")
|
|
}
|
|
s2, err := Open(dir, 10)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if s2.Seen(8, "v1") {
|
|
t.Fatal("failed run became seen after restart")
|
|
}
|
|
}
|