package checkpoint import ( "path/filepath" "testing" ) func TestFileStorePersistsAcrossInstances(t *testing.T) { path := filepath.Join(t.TempDir(), "cp.json") s, err := NewFileStore(path) if err != nil { t.Fatalf("NewFileStore: %v", err) } if err := s.SetLogOffset("/var/log/app.log", 2048); err != nil { t.Fatalf("SetLogOffset: %v", err) } if err := s.SetAckedSeq("h-001", 42); err != nil { t.Fatalf("SetAckedSeq: %v", err) } _ = s.Close() s2, err := NewFileStore(path) if err != nil { t.Fatalf("reopen: %v", err) } defer s2.Close() if got, _ := s2.GetLogOffset("/var/log/app.log"); got != 2048 { t.Fatalf("log offset = %d, want 2048", got) } if got, _ := s2.GetAckedSeq("h-001"); got != 42 { t.Fatalf("acked seq = %d, want 42", got) } } func TestFileStoreMissingReturnsZero(t *testing.T) { path := filepath.Join(t.TempDir(), "cp.json") s, err := NewFileStore(path) if err != nil { t.Fatalf("NewFileStore: %v", err) } defer s.Close() if got, err := s.GetLogOffset("nope"); err != nil || got != 0 { t.Fatalf("got=%d err=%v, want 0 nil", got, err) } if got, err := s.GetAckedSeq("nope"); err != nil || got != 0 { t.Fatalf("got=%d err=%v, want 0 nil", got, err) } } func TestMemoryStoreThreadSafe(t *testing.T) { s := NewMemoryStore() for i := int64(0); i < 100; i++ { if err := s.SetAckedSeq("h", i); err != nil { t.Fatalf("SetAckedSeq: %v", err) } } if got, _ := s.GetAckedSeq("h"); got != 99 { t.Fatalf("acked seq = %d, want 99", got) } } func TestNewUnknownDriver(t *testing.T) { if _, err := New("bogus", "", ""); err == nil { t.Fatalf("expected error for unknown driver") } }