Testing traversal from head
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user