70 lines
1.6 KiB
Go
70 lines
1.6 KiB
Go
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")
|
|
}
|
|
}
|