This repository has been archived on 2022-07-30. You can view files and clone it, but cannot push or open issues/pull-requests.
mdb/shipping_test.go

77 lines
1.6 KiB
Go

package mdb
/*
func TestLogShip(t *testing.T) {
type Item struct {
ID uint64
Name string
}
newDB := func(root string, primary bool) (*Database, *Collection[Item]) {
var db *Database
if primary {
db = NewPrimary(root)
} else {
db = NewSecondary(root)
}
c := NewCollection(db, "collection", func(i *Item) uint64 { return i.ID })
NewBTreeIndex(c,
func(i, j *Item) bool { return i.Name < j.Name },
func(i *Item) bool { return i.Name != "" })
return db, c
}
root1 := filepath.Join(os.TempDir(), randString())
root2 := filepath.Join(os.TempDir(), randString())
//log.Print(root1, " --> ", root2)
defer os.RemoveAll(root1)
defer os.RemoveAll(root2)
dbLeader, colLeader := newDB(root1, true)
dbLeader.Start()
defer dbLeader.Close()
dbFollower, _ := newDB(root2, false)
dbFollower.Start()
defer dbFollower.Close()
c1, c2 := net.Pipe()
go dbLeader.SyncSend(c1)
go dbFollower.SyncRecv(c2)
item1 := Item{1, "one"}
item2 := Item{2, ""}
item3 := Item{3, "three"}
item4 := Item{4, ""}
item5 := Item{5, "five"}
item1, _ = colLeader.Insert(item1)
item2, _ = colLeader.Insert(item2)
item3, _ = colLeader.Insert(item3)
item4, _ = colLeader.Insert(item4)
item5, _ = colLeader.Insert(item5)
colLeader.Delete(item2.ID)
colLeader.Update(item4.ID, func(old Item) (Item, error) {
old.Name = "UPDATED"
return old, nil
})
dbLeader.waitForWAL()
dbFollower.waitForWAL()
dbLeader, colLeader = newDB(root1, true)
dbLeader.Start()
dbFollower, colFollower := newDB(root2, false)
dbFollower.Start()
m1 := colLeader.items.m
m2 := colFollower.items.m
if len(m1) != len(m2) {
t.Fatal(m1, m2)
}
}
*/