本文整理汇总了Golang中github.com/zyxar/doozerd/store.New函数的典型用法代码示例。如果您正苦于以下问题:Golang New函数的具体用法?Golang New怎么用?Golang New使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了New函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: TestDoozerGetWithRev
func TestDoozerGetWithRev(t *testing.T) {
var (
l = mustListen()
u = mustListenUDP(l.Addr().String())
st = store.New(store.DefaultInitialRev)
)
defer l.Close()
defer u.Close()
go Main("a", "X", "", "", "", nil, u, l, nil, 1e9, 2e9, 3e9, 101, st)
cl := dial(l.Addr().String())
rev1, err := cl.Set("/x", store.Missing, []byte{'a'})
assert.Equal(t, nil, err)
v, rev, err := cl.Get("/x", &rev1) // Use the snapshot.
assert.Equal(t, nil, err)
assert.Equal(t, rev1, rev)
assert.Equal(t, []byte{'a'}, v)
rev2, err := cl.Set("/x", rev, []byte{'b'})
assert.Equal(t, nil, err)
v, rev, err = cl.Get("/x", nil) // Read the new value.
assert.Equal(t, nil, err)
assert.Equal(t, rev2, rev)
assert.Equal(t, []byte{'b'}, v)
v, rev, err = cl.Get("/x", &rev1) // Read the saved value again.
assert.Equal(t, nil, err)
assert.Equal(t, rev1, rev)
assert.Equal(t, []byte{'a'}, v)
}
开发者ID:zyxar,项目名称:doozerd,代码行数:34,代码来源:peer_test.go
示例2: TestDoozerGet
func TestDoozerGet(t *testing.T) {
var (
l = mustListen()
u = mustListenUDP(l.Addr().String())
st = store.New(store.DefaultInitialRev)
)
defer l.Close()
defer u.Close()
go Main("a", "X", "", "", "", nil, u, l, nil, 1e9, 2e9, 3e9, 101, st)
cl := dial(l.Addr().String())
_, err := cl.Set("/x", store.Missing, []byte{'a'})
assert.Equal(t, nil, err)
ents, rev, err := cl.Get("/x", nil)
assert.Equal(t, nil, err)
assert.NotEqual(t, store.Dir, rev)
assert.Equal(t, []byte{'a'}, ents)
//cl.Set("/test/a", store.Missing, []byte{'1'})
//cl.Set("/test/b", store.Missing, []byte{'2'})
//cl.Set("/test/c", store.Missing, []byte{'3'})
//ents, rev, err = cl.Get("/test", 0)
//sort.SortStrings(ents)
//assert.Equal(t, store.Dir, rev)
//assert.Equal(t, nil, err)
//assert.Equal(t, []string{"a", "b", "c"}, ents)
}
开发者ID:zyxar,项目名称:doozerd,代码行数:32,代码来源:peer_test.go
示例3: TestDoozerGetdirOffsetLimit
func TestDoozerGetdirOffsetLimit(t *testing.T) {
var (
l = mustListen()
u = mustListenUDP(l.Addr().String())
st = store.New(store.DefaultInitialRev)
)
defer l.Close()
defer u.Close()
go Main("a", "X", "", "", "", nil, u, l, nil, 1e9, 2e9, 3e9, 101, st)
cl := dial(l.Addr().String())
cl.Set("/test/a", store.Clobber, []byte("1"))
cl.Set("/test/b", store.Clobber, []byte("2"))
cl.Set("/test/c", store.Clobber, []byte("3"))
cl.Set("/test/d", store.Clobber, []byte("4"))
rev, err := cl.Rev()
if err != nil {
panic(err)
}
names, err := cl.Getdir("/test", rev, 1, 2)
assert.Equal(t, nil, err)
assert.Equal(t, []string{"b", "c"}, names)
}
开发者ID:zyxar,项目名称:doozerd,代码行数:26,代码来源:peer_test.go
示例4: TestDoozerWaitWithRev
func TestDoozerWaitWithRev(t *testing.T) {
var (
l = mustListen()
u = mustListenUDP(l.Addr().String())
st = store.New(store.DefaultInitialRev)
)
defer l.Close()
defer u.Close()
go Main("a", "X", "", "", "", nil, u, l, nil, 1e9, 2e9, 3e9, 101, st)
cl := dial(l.Addr().String())
// Create some history
cl.Set("/test/foo", store.Clobber, []byte("bar"))
cl.Set("/test/fun", store.Clobber, []byte("house"))
ev, err := cl.Wait("/test/**", 1)
assert.Equal(t, nil, err)
assert.Equal(t, "/test/foo", ev.Path)
assert.Equal(t, []byte("bar"), ev.Body)
assert.T(t, ev.IsSet())
rev := ev.Rev + 1
ev, err = cl.Wait("/test/**", rev)
assert.Equal(t, nil, err)
assert.Equal(t, "/test/fun", ev.Path)
assert.Equal(t, []byte("house"), ev.Body)
assert.T(t, ev.IsSet())
}
开发者ID:zyxar,项目名称:doozerd,代码行数:30,代码来源:peer_test.go
示例5: TestDoozerStat
func TestDoozerStat(t *testing.T) {
var (
l = mustListen()
u = mustListenUDP(l.Addr().String())
st = store.New(store.DefaultInitialRev)
)
defer l.Close()
defer u.Close()
go Main("a", "X", "", "", "", nil, u, l, nil, 1e9, 2e9, 3e9, 101, st)
cl := dial(l.Addr().String())
cl.Set("/test/foo", store.Clobber, []byte("bar"))
setRev, _ := cl.Set("/test/fun", store.Clobber, []byte("house"))
ln, rev, err := cl.Stat("/test", nil)
assert.Equal(t, nil, err)
assert.Equal(t, store.Dir, rev)
assert.Equal(t, int(2), ln)
ln, rev, err = cl.Stat("/test/fun", nil)
assert.Equal(t, nil, err)
assert.Equal(t, setRev, rev)
assert.Equal(t, int(5), ln)
}
开发者ID:zyxar,项目名称:doozerd,代码行数:26,代码来源:peer_test.go
示例6: TestManagerPacketProcessing
func TestManagerPacketProcessing(t *testing.T) {
st := store.New(store.DefaultInitialRev)
defer close(st.Ops)
in := make(chan Packet)
out := make(chan Packet, 100)
var m Manager
m.run = make(map[int64]*run)
m.Alpha = 1
m.Store = st
m.In = in
m.Out = out
m.Ops = st.Ops
st.Ops <- store.Op{1, store.MustEncodeSet(node+"/a/addr", "1.2.3.4:5", 0)}
st.Ops <- store.Op{2, store.MustEncodeSet("/ctl/cal/0", "a", 0)}
m.event(<-mustWait(st, 2))
addr, _ := net.ResolveUDPAddr("udp", "127.0.0.1:9999")
recvPacket(&m.packet, Packet{
Addr: addr,
Msg: Msg{Seqn: proto.Int64(2), Cmd: learn, Value: []byte("foo")},
})
m.pump()
assert.Equal(t, 0, m.packet.Len())
}
开发者ID:zyxar,项目名称:doozerd,代码行数:25,代码来源:manager_test.go
示例7: TestDoozerWaitSimple
func TestDoozerWaitSimple(t *testing.T) {
var (
l = mustListen()
st = store.New(store.DefaultInitialRev)
)
defer l.Close()
go Main("a", "X", nil, l, nil, st, 1e6)
cl := dial(l.Addr().String())
var rev int64 = 1
cl.Set("/test/foo", store.Clobber, []byte("bar"))
ev, err := cl.Wait("/test/**", rev)
assert.Equal(t, nil, err)
assert.Equal(t, "/test/foo", ev.Path)
assert.Equal(t, []byte("bar"), ev.Body)
assert.T(t, ev.IsSet())
rev = ev.Rev + 1
cl.Set("/test/fun", store.Clobber, []byte("house"))
ev, err = cl.Wait("/test/**", rev)
assert.Equal(t, nil, err)
assert.Equal(t, "/test/fun", ev.Path)
assert.Equal(t, []byte("house"), ev.Body)
assert.T(t, ev.IsSet())
rev = ev.Rev + 1
cl.Del("/test/foo", store.Clobber)
ev, err = cl.Wait("/test/**", rev)
assert.Equal(t, nil, err)
assert.Equal(t, "/test/foo", ev.Path)
assert.T(t, ev.IsDel())
}
开发者ID:zyxar,项目名称:doozerd,代码行数:34,代码来源:solo_test.go
示例8: TestManagerFilterPropSeqn
func TestManagerFilterPropSeqn(t *testing.T) {
ps := make(chan int64, 100)
st := store.New(store.DefaultInitialRev)
defer close(st.Ops)
m := &Manager{
DefRev: 2,
Alpha: 1,
Self: "b",
PSeqn: ps,
Store: st,
}
go m.Run()
st.Ops <- store.Op{1, store.MustEncodeSet("/ctl/cal/0", "a", 0)}
st.Ops <- store.Op{2, store.MustEncodeSet("/ctl/cal/1", "b", 0)}
st.Ops <- store.Op{3, store.Nop}
st.Ops <- store.Op{4, store.Nop}
assert.Equal(t, int64(3), <-ps)
assert.Equal(t, int64(5), <-ps)
st.Ops <- store.Op{5, store.Nop}
st.Ops <- store.Op{6, store.Nop}
assert.Equal(t, int64(7), <-ps)
}
开发者ID:zyxar,项目名称:doozerd,代码行数:25,代码来源:manager_test.go
示例9: TestManagerEvent
func TestManagerEvent(t *testing.T) {
const alpha = 2
runs := make(map[int64]*run)
st := store.New(store.DefaultInitialRev)
defer close(st.Ops)
st.Ops <- store.Op{
Seqn: 1,
Mut: store.MustEncodeSet(node+"/a/addr", "1.2.3.4:5", 0),
}
st.Ops <- store.Op{
Seqn: 2,
Mut: store.MustEncodeSet(cal+"/1", "a", 0),
}
ch, err := st.Wait(store.Any, 2)
if err != nil {
panic(err)
}
x, _ := net.ResolveUDPAddr("udp", "1.2.3.4:5")
pseqn := make(chan int64, 1)
m := &Manager{
Alpha: alpha,
Self: "a",
PSeqn: pseqn,
Ops: st.Ops,
Out: make(chan Packet),
run: runs,
}
m.event(<-ch)
exp := &run{
self: "a",
seqn: 2 + alpha,
cals: []string{"a"},
addr: []*net.UDPAddr{x},
ops: st.Ops,
out: m.Out,
bound: initialWaitBound,
}
exp.c = coordinator{
crnd: 1,
size: 1,
quor: exp.quorum(),
}
exp.l = learner{
round: 1,
size: 1,
quorum: int64(exp.quorum()),
votes: map[string]int64{},
voted: []bool{false},
}
assert.Equal(t, 1, len(runs))
assert.Equal(t, exp, runs[exp.seqn])
assert.Equal(t, exp.seqn, <-pseqn)
assert.Equal(t, exp.seqn+1, m.next)
}
开发者ID:zyxar,项目名称:doozerd,代码行数:60,代码来源:manager_test.go
示例10: TestConsensusOne
func TestConsensusOne(t *testing.T) {
self := "test"
const alpha = 1
st := store.New(store.DefaultInitialRev)
st.Ops <- store.Op{1, store.MustEncodeSet("/ctl/node/"+self+"/addr", "1.2.3.4:5", 0)}
st.Ops <- store.Op{2, store.MustEncodeSet("/ctl/cal/1", self, 0)}
<-st.Seqns
in := make(chan Packet)
out := make(chan Packet)
seqns := make(chan int64, alpha)
props := make(chan *Prop)
m := &Manager{
Self: self,
DefRev: 2,
Alpha: alpha,
In: in,
Out: out,
Ops: st.Ops,
PSeqn: seqns,
Props: props,
TFill: 10e9,
Store: st,
Ticker: time.Tick(10e6),
}
go m.Run()
go func() {
for o := range out {
in <- o
}
}()
n := <-seqns
w, err := st.Wait(store.Any, n)
if err != nil {
panic(err)
}
props <- &Prop{n, []byte("foo")}
e := <-w
exp := store.Event{
Seqn: 3,
Path: "/ctl/err",
Body: "bad mutation",
Rev: 3,
Mut: "foo",
Err: errors.New("bad mutation"),
}
e.Getter = nil
assert.Equal(t, exp, e)
}
开发者ID:zyxar,项目名称:doozerd,代码行数:55,代码来源:consensus_test.go
示例11: TestGetCalsPartial
func TestGetCalsPartial(t *testing.T) {
st := store.New(store.DefaultInitialRev)
defer close(st.Ops)
st.Ops <- store.Op{Seqn: 1, Mut: store.MustEncodeSet(cal+"/1", "a", 0)}
st.Ops <- store.Op{Seqn: 2, Mut: store.MustEncodeSet(cal+"/2", "", 0)}
st.Ops <- store.Op{Seqn: 3, Mut: store.MustEncodeSet(cal+"/3", "", 0)}
<-st.Seqns
assert.Equal(t, []string{"a"}, getCals(st))
}
开发者ID:zyxar,项目名称:doozerd,代码行数:11,代码来源:manager_test.go
示例12: TestDoozerNop
func TestDoozerNop(t *testing.T) {
var (
l = mustListen()
st = store.New(store.DefaultInitialRev)
)
defer l.Close()
go Main("a", "X", nil, l, nil, st, 1e6)
cl := dial(l.Addr().String())
err := cl.Nop()
assert.Equal(t, nil, err)
}
开发者ID:zyxar,项目名称:doozerd,代码行数:13,代码来源:solo_test.go
示例13: TestGetAddrs
func TestGetAddrs(t *testing.T) {
st := store.New(store.DefaultInitialRev)
defer close(st.Ops)
st.Ops <- store.Op{1, store.MustEncodeSet(node+"/1/addr", "1.2.3.4:5", 0)}
st.Ops <- store.Op{2, store.MustEncodeSet(node+"/2/addr", "2.3.4.5:6", 0)}
st.Ops <- store.Op{3, store.MustEncodeSet(node+"/3/addr", "3.4.5.6:7", 0)}
<-st.Seqns
x, _ := net.ResolveUDPAddr("udp", "1.2.3.4:5")
y, _ := net.ResolveUDPAddr("udp", "2.3.4.5:6")
z, _ := net.ResolveUDPAddr("udp", "3.4.5.6:7")
addrs := getAddrs(st, []string{"1", "2", "3"})
assert.Equal(t, []*net.UDPAddr{x, y, z}, addrs)
}
开发者ID:zyxar,项目名称:doozerd,代码行数:15,代码来源:manager_test.go
示例14: TestManagerPumpDropsOldPackets
func TestManagerPumpDropsOldPackets(t *testing.T) {
st := store.New(store.DefaultInitialRev)
defer close(st.Ops)
x, _ := net.ResolveUDPAddr("udp", "1.2.3.4:5")
st.Ops <- store.Op{1, store.MustEncodeSet(node+"/a/addr", "1.2.3.4:5", 0)}
st.Ops <- store.Op{2, store.MustEncodeSet("/ctl/cal/0", "a", 0)}
var m Manager
m.run = make(map[int64]*run)
m.event(<-mustWait(st, 2))
m.pump()
recvPacket(&m.packet, Packet{x, Msg{Seqn: proto.Int64(1)}})
m.pump()
assert.Equal(t, 0, m.Stats.WaitPackets)
}
开发者ID:zyxar,项目名称:doozerd,代码行数:15,代码来源:manager_test.go
示例15: TestMemberSimple
func TestMemberSimple(t *testing.T) {
st := store.New(store.DefaultInitialRev)
defer close(st.Ops)
fp := &test.FakeProposer{Store: st}
c := make(chan string)
go Clean(c, fp.Store, fp)
fp.Propose([]byte(store.MustEncodeSet("/ctl/node/a/x", "a", store.Missing)))
fp.Propose([]byte(store.MustEncodeSet("/ctl/node/a/y", "b", store.Missing)))
fp.Propose([]byte(store.MustEncodeSet("/ctl/node/a/addr", "1.2.3.4", store.Missing)))
fp.Propose([]byte(store.MustEncodeSet("/ctl/cal/0", "a", store.Missing)))
calCh, err := fp.Wait(store.MustCompileGlob("/ctl/cal/0"), 1+<-fp.Seqns)
if err != nil {
panic(err)
}
nodeCh, err := fp.Wait(store.MustCompileGlob("/ctl/node/a/?"), 1+<-fp.Seqns)
if err != nil {
panic(err)
}
// indicate that this peer is inactive
go func() { c <- "1.2.3.4" }()
ev := <-calCh
assert.T(t, ev.IsSet())
assert.Equal(t, "", ev.Body)
cs := []int{}
ev = <-nodeCh
assert.T(t, ev.IsDel())
cs = append(cs, int(ev.Path[len(ev.Path)-1]))
nodeCh, err = fp.Wait(store.MustCompileGlob("/ctl/node/a/?"), ev.Seqn+1)
if err != nil {
panic(err)
}
ev = <-nodeCh
assert.T(t, ev.IsDel())
cs = append(cs, int(ev.Path[len(ev.Path)-1]))
sort.Ints(cs)
assert.Equal(t, []int{'x', 'y'}, cs)
}
开发者ID:zyxar,项目名称:doozerd,代码行数:45,代码来源:member_test.go
示例16: TestDoozerGet
func TestDoozerGet(t *testing.T) {
var (
l = mustListen()
st = store.New(store.DefaultInitialRev)
)
defer l.Close()
go Main("a", "X", nil, l, nil, st, 1e6)
cl := dial(l.Addr().String())
_, err := cl.Set("/x", store.Missing, []byte{'a'})
assert.Equal(t, nil, err)
ents, rev, err := cl.Get("/x", nil)
assert.Equal(t, nil, err)
assert.NotEqual(t, store.Dir, rev)
assert.Equal(t, []byte{'a'}, ents)
}
开发者ID:zyxar,项目名称:doozerd,代码行数:19,代码来源:solo_test.go
示例17: TestDoozerSet
func TestDoozerSet(t *testing.T) {
var (
l = mustListen()
st = store.New(store.DefaultInitialRev)
)
defer l.Close()
go Main("a", "X", nil, l, nil, st, 1e6)
cl := dial(l.Addr().String())
for i := byte(0); i < 10; i++ {
_, err := cl.Set("/x", store.Clobber, []byte{'0' + i})
assert.Equal(t, nil, err)
}
_, err := cl.Set("/x", 0, []byte{'X'})
assert.Equal(t, &doozer.Error{doozer.ErrOldRev, ""}, err)
}
开发者ID:zyxar,项目名称:doozerd,代码行数:19,代码来源:solo_test.go
示例18: TestDelRun
func TestDelRun(t *testing.T) {
const alpha = 2
runs := make(map[int64]*run)
st := store.New(store.DefaultInitialRev)
defer close(st.Ops)
st.Ops <- store.Op{1, store.MustEncodeSet(node+"/a/addr", "x", 0)}
st.Ops <- store.Op{2, store.MustEncodeSet(cal+"/1", "a", 0)}
st.Ops <- store.Op{3, store.Nop}
st.Ops <- store.Op{4, store.Nop}
c2, err := st.Wait(store.Any, 2)
if err != nil {
panic(err)
}
c3, err := st.Wait(store.Any, 3)
if err != nil {
panic(err)
}
c4, err := st.Wait(store.Any, 4)
if err != nil {
panic(err)
}
pseqn := make(chan int64, 100)
m := &Manager{
Alpha: alpha,
Self: "a",
PSeqn: pseqn,
Ops: st.Ops,
Out: make(chan Packet),
run: runs,
}
m.event(<-c2)
assert.Equal(t, 1, len(m.run))
m.event(<-c3)
assert.Equal(t, 2, len(m.run))
m.event(<-c4)
assert.Equal(t, 2, len(m.run))
}
开发者ID:zyxar,项目名称:doozerd,代码行数:42,代码来源:manager_test.go
示例19: TestDoozerGetdirMissing
func TestDoozerGetdirMissing(t *testing.T) {
var (
l = mustListen()
st = store.New(store.DefaultInitialRev)
)
defer l.Close()
go Main("a", "X", nil, l, nil, st, 1e6)
cl := dial(l.Addr().String())
rev, err := cl.Rev()
if err != nil {
panic(err)
}
names, err := cl.Getdir("/not/here", rev, 0, -1)
assert.Equal(t, &doozer.Error{doozer.ErrNoEnt, ""}, err)
assert.Equal(t, []string(nil), names)
}
开发者ID:zyxar,项目名称:doozerd,代码行数:20,代码来源:solo_test.go
示例20: TestManagerTickQueue
func TestManagerTickQueue(t *testing.T) {
st := store.New(store.DefaultInitialRev)
defer close(st.Ops)
st.Ops <- store.Op{1, store.MustEncodeSet(node+"/a/addr", "1.2.3.4:5", 0)}
st.Ops <- store.Op{2, store.MustEncodeSet("/ctl/cal/0", "a", 0)}
var m Manager
m.run = make(map[int64]*run)
m.Alpha = 1
m.Store = st
m.Out = make(chan Packet, 100)
m.event(<-mustWait(st, 2))
// get it to tick for seqn 3
recvPacket(&m.packet, Packet{Msg: Msg{Seqn: proto.Int64(3), Cmd: propose}})
m.pump()
assert.Equal(t, 1, m.tick.Len())
m.doTick(time.Now().UnixNano() + initialWaitBound*2)
assert.Equal(t, int64(1), m.Stats.TotalTicks)
}
开发者ID:zyxar,项目名称:doozerd,代码行数:21,代码来源:manager_test.go
注:本文中的github.com/zyxar/doozerd/store.New函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论