supervisor-go: add ledger package with Append/Read APIs, tests; refactor CLI to use package; update README
This commit is contained in:
56
kernel/supervisor-go/ledger/ledger_test.go
Normal file
56
kernel/supervisor-go/ledger/ledger_test.go
Normal file
@@ -0,0 +1,56 @@
|
||||
package ledger
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestAppendAndRead(t *testing.T) {
|
||||
f, err := os.CreateTemp("", "ledger-test-*.jsonl")
|
||||
if err != nil {
|
||||
t.Fatalf("tempfile: %v", err)
|
||||
}
|
||||
path := f.Name()
|
||||
f.Close()
|
||||
defer os.Remove(path)
|
||||
|
||||
l := New(path, "stream-1")
|
||||
// ensure empty read
|
||||
evs, err := l.ReadAll()
|
||||
if err != nil {
|
||||
t.Fatalf("read empty: %v", err)
|
||||
}
|
||||
if len(evs) != 0 {
|
||||
t.Fatalf("expected 0 events, got %d", len(evs))
|
||||
}
|
||||
|
||||
e1, err := l.Append("route_decision", map[string]any{"tier": "fast"})
|
||||
if err != nil {
|
||||
t.Fatalf("append1: %v", err)
|
||||
}
|
||||
if l.LastHash == nil || *l.LastHash != e1.Hash {
|
||||
t.Fatalf("lasthash not set after append1")
|
||||
}
|
||||
|
||||
e2, err := l.Append("final_output_emitted", map[string]any{"result": "ok"})
|
||||
if err != nil {
|
||||
t.Fatalf("append2: %v", err)
|
||||
}
|
||||
if l.LastHash == nil || *l.LastHash != e2.Hash {
|
||||
t.Fatalf("lasthash not set after append2")
|
||||
}
|
||||
if e2.PrevHash == nil || *e2.PrevHash != e1.Hash {
|
||||
t.Fatalf("prevhash chain broken")
|
||||
}
|
||||
|
||||
evs, err = l.ReadAll()
|
||||
if err != nil {
|
||||
t.Fatalf("read: %v", err)
|
||||
}
|
||||
if len(evs) != 2 {
|
||||
t.Fatalf("expected 2 events, got %d", len(evs))
|
||||
}
|
||||
if evs[0].Hash != e1.Hash || evs[1].Hash != e2.Hash {
|
||||
t.Fatalf("readback hashes mismatch")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user