-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathfactory_test.go
More file actions
121 lines (109 loc) · 3.21 KB
/
Copy pathfactory_test.go
File metadata and controls
121 lines (109 loc) · 3.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package storage
import (
"os"
"strings"
"testing"
"plasmod/src/internal/schemas"
)
func TestBuildRuntime_defaultIsDisk(t *testing.T) {
t.Setenv(EnvStorage, "")
t.Setenv(EnvDataDir, t.TempDir())
t.Setenv(EnvBadgerInMemory, "true") // keep test fast: Badger RAM mode
bundle, err := buildRuntime(os.Getenv)
if err != nil {
t.Fatal(err)
}
defer func() { _ = bundle.Close() }()
if !bundle.Config.BadgerEnabled {
t.Fatalf("expected badger enabled for default disk mode")
}
}
func TestBuildRuntime_diskAllBadger(t *testing.T) {
t.Setenv(EnvStorage, "disk")
t.Setenv(EnvDataDir, t.TempDir())
t.Setenv(EnvBadgerInMemory, "true")
bundle, err := buildRuntime(os.Getenv)
if err != nil {
t.Fatal(err)
}
defer func() { _ = bundle.Close() }()
if !bundle.Config.BadgerEnabled {
t.Fatal("expected BadgerEnabled")
}
for k, v := range bundle.Config.Stores {
if v != backendDisk {
t.Fatalf("store %s = %s want disk", k, v)
}
}
obj := bundle.RuntimeStorage.Objects()
obj.PutAgent(schemasAgentFixture())
if len(obj.ListAgents()) != 1 {
t.Fatalf("agents: %d", len(obj.ListAgents()))
}
}
func TestBadgerSnapshotVersionStore_PutVersionIsIdempotent(t *testing.T) {
t.Setenv(EnvStorage, "disk")
t.Setenv(EnvDataDir, t.TempDir())
t.Setenv(EnvBadgerInMemory, "true")
bundle, err := buildRuntime(os.Getenv)
if err != nil {
t.Fatal(err)
}
defer func() { _ = bundle.Close() }()
store := bundle.RuntimeStorage.Versions()
version := schemas.ObjectVersion{
ObjectID: "mem-1", Version: 2, MutationEventID: "evt-1", ValidFrom: "first",
}
store.PutVersion(version)
store.PutVersion(version)
got := store.GetVersions(version.ObjectID)
if len(got) != 1 {
t.Fatalf("versions after retry = %d, want 1: %+v", len(got), got)
}
}
func TestBuildRuntime_rejectsMixedCanonicalStores(t *testing.T) {
t.Setenv(EnvStorage, "hybrid")
t.Setenv(EnvDataDir, t.TempDir())
t.Setenv(EnvBadgerInMemory, "true")
t.Setenv(EnvStoreObjects, "disk")
t.Setenv(EnvStoreEdges, "memory")
_, err := buildRuntime(os.Getenv)
if err == nil || !strings.Contains(err.Error(), "objects, edges, and versions") {
t.Fatalf("buildRuntime error = %v, want canonical store boundary error", err)
}
}
func TestBuildRuntime_explicitDiskOverridesMemoryMode(t *testing.T) {
t.Setenv(EnvStorage, "memory")
t.Setenv(EnvDataDir, t.TempDir())
t.Setenv(EnvBadgerInMemory, "true")
t.Setenv(EnvStoreSegments, "disk")
bundle, err := buildRuntime(os.Getenv)
if err != nil {
t.Fatal(err)
}
defer func() { _ = bundle.Close() }()
if !bundle.Config.BadgerEnabled {
t.Fatal("expected badger when one store is disk")
}
if bundle.Config.Stores["segments"] != backendDisk {
t.Fatalf("segments: %s", bundle.Config.Stores["segments"])
}
if bundle.Config.Stores["objects"] != backendMemory {
t.Fatalf("objects should stay memory: %s", bundle.Config.Stores["objects"])
}
}
func schemasAgentFixture() schemas.Agent {
return schemas.Agent{
AgentID: "a1", TenantID: "t", WorkspaceID: "w", Status: "active",
}
}
func schemasMemoryFixture() schemas.Memory {
return schemas.Memory{
MemoryID: "m1", AgentID: "a1", SessionID: "s1", Content: "x",
}
}
func schemasEdgeFixture() schemas.Edge {
return schemas.Edge{
EdgeID: "e1", SrcObjectID: "a", DstObjectID: "b", EdgeType: "rel",
}
}