Testing traversal from head

This commit is contained in:
2026-02-13 08:19:27 +00:00
parent 2c2ce5fd01
commit 4e830bf5d0

View File

@@ -84,7 +84,7 @@ func main() {
return return
} }
for i := range 500 { for i := range 1000000 {
data := fmt.Sprintf("test%d", i) data := fmt.Sprintf("test%d", i)
err = ledger.Append(ctx, []byte(data)) err = ledger.Append(ctx, []byte(data))
@@ -107,34 +107,37 @@ func main() {
return entries[i].Timestamp.Before(entries[j].Timestamp) return entries[i].Timestamp.Before(entries[j].Timestamp)
}) })
fmt.Println("Entries:") headID, ok, err := referenceStore.Get(ctx, "HEAD")
if len(entries) == 0 { if err != nil {
fmt.Println(" (none)") fmt.Println("get HEAD:", err)
} else { return
for _, e := range entries {
fmt.Printf(" ts=%d id=%s prev=%s payload=%q\n",
e.Timestamp.UnixNano(),
hex.EncodeToString(e.EntryID[:]),
hex.EncodeToString(e.Previous[:]),
e.Payload,
)
} }
if !ok {
fmt.Println("HEAD reference not set")
return
} }
// ---- Print references (name -> EntryID hex) ---- isZero32 := func(b [32]byte) bool {
names := make([]string, 0, len(referenceStore.references)) for _, v := range b {
for name := range referenceStore.references { if v != 0 {
names = append(names, name) return false
}
}
return true
} }
sort.Strings(names)
fmt.Println("References:") curID := headID
if len(names) == 0 { for {
fmt.Println(" (none)") ent, err := entryStore.Load(ctx, curID)
} else { if err != nil {
for _, name := range names { return
id := referenceStore.references[name] }
fmt.Printf(" %s -> %s\n", name, hex.EncodeToString(id[:]))
} if isZero32(ent.Previous) {
break
}
// Follow the linked list backwards
curID = core.EntryID(ent.Previous)
} }
} }