package registry import ( "os" "path/filepath" "testing" ) func TestSnapshotToProducesOpenableCopy(t *testing.T) { dir := t.TempDir() reg, err := Open(filepath.Join(dir, "registry.db")) if err != nil { t.Fatal(err) } defer reg.Close() if err := reg.Upsert(Route{Host: "a.example.com", Kind: "service", Addr: "10.0.0.1:3000", Status: "ready"}); err != nil { t.Fatal(err) } out := filepath.Join(dir, "snap.db") if err := reg.SnapshotTo(out); err != nil { t.Fatal(err) } copyReg, err := Open(out) if err != nil { t.Fatalf("open snapshot: %v", err) } defer copyReg.Close() rt, err := copyReg.Get("a.example.com") if err != nil { t.Fatal(err) } if rt.Addr != "10.0.0.1:3000" { t.Fatalf("snapshot route addr = %q, want 10.0.0.1:3000", rt.Addr) } } func TestSnapshotToRefusesExistingTarget(t *testing.T) { dir := t.TempDir() reg, err := Open(filepath.Join(dir, "registry.db")) if err != nil { t.Fatal(err) } defer reg.Close() out := filepath.Join(dir, "snap.db") if err := os.WriteFile(out, []byte("x"), 0o644); err != nil { t.Fatal(err) } if err := reg.SnapshotTo(out); err == nil { t.Fatal("SnapshotTo over an existing file: want error, got nil") } }