本文整理汇总了Golang中doozer/store.New函数的典型用法代码示例。如果您正苦于以下问题:Golang New函数的具体用法?Golang New怎么用?Golang New使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了New函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: TestSession
func TestSession(t *testing.T) {
st := store.New()
defer close(st.Ops)
fp := &test.FakeProposer{Store: st}
go Clean(st, fp)
ch := make(chan store.Event, 100)
go func(c <-chan store.Event) {
for e := range c {
ch <- e
}
close(ch)
}(st.Watch("/session/*"))
// check-in with less than a nanosecond to live
body := strconv.Itoa64(time.Nanoseconds() + 1)
fp.Propose(store.MustEncodeSet("/session/a", body, store.Clobber))
// Throw away the set
assert.T(t, (<-ch).IsSet())
ev := <-ch
assert.T(t, ev.IsDel())
assert.Equal(t, "/session/a", ev.Path)
}
开发者ID:andradeandrey,项目名称:doozer,代码行数:25,代码来源:session_test.go
示例2: TestManagerEvent
func TestManagerEvent(t *testing.T) {
const alpha = 2
runs := make(map[int64]*run)
st := store.New()
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:piston,项目名称:doozerd,代码行数:60,代码来源:manager_test.go
示例3: TestManagerProposeFill
func TestManagerProposeFill(t *testing.T) {
props := make(chan *Prop)
q := new(vector.Vector)
st := store.New()
out := make(chan Packet, 100)
cfg := &Config{
Self: "a",
Store: st,
Out: out,
DefRev: 2,
Alpha: 1,
Props: props,
}
m := NewManager(cfg)
m.run = map[int64]*run{
6: &run{seqn: 6, cals: []string{"a", "b", "c"}},
7: &run{seqn: 7, cals: []string{"a", "b", "c"}},
8: &run{seqn: 8, cals: []string{"a", "b", "c"}},
}
exp := vector.Vector{
trigger{123, 7},
trigger{123, 8},
}
m.propose(q, &Prop{Seqn: 9, Mut: []byte("foo")}, 123)
assert.Equal(t, exp, m.fill)
}
开发者ID:thaingo,项目名称:doozerd,代码行数:27,代码来源:manager_test.go
示例4: TestMemberSimple
func TestMemberSimple(t *testing.T) {
st := store.New()
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 := fp.Watch(store.MustCompileGlob("/ctl/cal/0"))
nodeCh := fp.Watch(store.MustCompileGlob("/ctl/node/a/?"))
// 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]))
ev = <-nodeCh
assert.T(t, ev.IsDel())
cs = append(cs, int(ev.Path[len(ev.Path)-1]))
sort.SortInts(cs)
assert.Equal(t, []int{'x', 'y'}, cs)
}
开发者ID:kr,项目名称:doozerd,代码行数:35,代码来源:member_test.go
示例5: TestManagerTickQueue
func TestManagerTickQueue(t *testing.T) {
ticker := make(chan int64)
st := store.New()
defer close(st.Ops)
in := make(chan Packet)
cfg := &Config{
Alpha: 1,
Store: st,
In: in,
Ticker: ticker,
Out: make(chan Packet, 100),
}
m := NewManager(cfg)
st.Ops <- store.Op{
Seqn: 1,
Mut: store.MustEncodeSet(node+"/a/addr", "x", 0),
}
for (<-m.Stats).Runs < 1 {
}
// get it to tick for seqn 2
in <- Packet{Data: mustMarshal(&msg{Seqn: proto.Int64(2), Cmd: propose})}
assert.Equal(t, 1, (<-m.Stats).WaitTicks)
ticker <- time.Nanoseconds() + initialWaitBound*2
assert.Equal(t, int64(1), (<-m.Stats).TotalTicks)
}
开发者ID:thaingo,项目名称:doozerd,代码行数:27,代码来源:manager_test.go
示例6: TestManagerDeletesSuccessfulRun
func TestManagerDeletesSuccessfulRun(t *testing.T) {
st := store.New()
defer close(st.Ops)
in := make(chan Packet)
out := make(chan Packet, 100)
cfg := &Config{
Alpha: 1,
Store: st,
In: in,
Out: out,
Ops: st.Ops,
}
m := NewManager(cfg)
st.Ops <- store.Op{
Seqn: 1,
Mut: store.MustEncodeSet(node+"/a/addr", "x", 0),
}
for (<-m.Stats).TotalRuns < 1 {
}
in <- Packet{
Data: mustMarshal(&msg{Seqn: proto.Int64(2), Cmd: learn, Value: []byte("foo")}),
Addr: "127.0.0.1:9999",
}
for (<-m.Stats).TotalRuns < 2 {
}
assert.Equal(t, 1, (<-m.Stats).Runs)
}
开发者ID:thaingo,项目名称:doozerd,代码行数:29,代码来源:manager_test.go
示例7: TestManagerFilterPropSeqn
func TestManagerFilterPropSeqn(t *testing.T) {
ps := make(chan int64, 100)
st := store.New()
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:piston,项目名称:doozerd,代码行数:25,代码来源:manager_test.go
示例8: TestRegistrarEmptySlot
func TestRegistrarEmptySlot(t *testing.T) {
st := store.New()
rg := NewRegistrar(st, 0, 2)
go func() {
(st.Ops <- store.Op{3, mustEncodeSet(slotDir+"0", "c")})
(st.Ops <- store.Op{2, mustEncodeSet(slotDir+"1", "")})
(st.Ops <- store.Op{1, mustEncodeSet(slotDir+"2", "a")})
}()
开发者ID:andradeandrey,项目名称:doozer,代码行数:8,代码来源:registrar_test.go
示例9: TestRegistrarMembers
func TestRegistrarMembers(t *testing.T) {
st := store.New()
rg := NewRegistrar(st, 0, 2)
go func() {
(st.Ops <- store.Op{3, mustEncodeSet(membersKey+"/c", "1")})
(st.Ops <- store.Op{2, mustEncodeSet(membersKey+"/b", "1")})
(st.Ops <- store.Op{1, mustEncodeSet(membersKey+"/a", "1")})
}()
开发者ID:andradeandrey,项目名称:doozer,代码行数:8,代码来源:registrar_test.go
示例10: TestAddRun
func TestAddRun(t *testing.T) {
const alpha = 2
runs := make(map[int64]*run)
st := store.New()
defer close(st.Ops)
st.Ops <- store.Op{
Seqn: 1,
Mut: store.MustEncodeSet(node+"/a/addr", "x", 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)
}
pseqn := make(chan int64, 1)
c := &Config{
Alpha: alpha,
Self: "a",
PSeqn: pseqn,
Ops: st.Ops,
Out: make(chan Packet),
}
m := &Manager{cfg: *c, run: runs}
got := m.addRun(<-ch)
exp := &run{
self: "a",
seqn: 2 + alpha,
cals: []string{"a"},
addr: []string{"x"},
ops: st.Ops,
out: c.Out,
bound: initialWaitBound,
}
exp.c = coordinator{
crnd: 1,
size: 1,
quor: exp.quorum(),
}
exp.l = learner{
round: 1,
quorum: int64(exp.quorum()),
votes: map[string]int64{},
voted: map[string]bool{},
}
assert.Equal(t, exp, got)
assert.Equal(t, exp, runs[got.seqn])
assert.Equal(t, 1, len(runs))
assert.Equal(t, exp.seqn, <-pseqn)
}
开发者ID:thaingo,项目名称:doozerd,代码行数:58,代码来源:manager_test.go
示例11: selfRefNewManager
func selfRefNewManager(self string, alpha int) (*Manager, *store.Store) {
p := make(FakePutterFrom, 1)
st := store.New()
st.Ops <- store.Op{1, mustEncodeSet(membersDir+"a", "x")}
st.Ops <- store.Op{2, mustEncodeSet(slotDir+"0", "a")}
m := NewManager(self, alpha, st, putFromWrapperTo{p, "x"})
p[0] = m
return m, st
}
开发者ID:andradeandrey,项目名称:doozer,代码行数:9,代码来源:manager_test.go
示例12: TestManagerProposalQueue
func TestManagerProposalQueue(t *testing.T) {
props := make(chan *Prop)
st := store.New()
out := make(chan Packet, 100)
m := newManager("", 0, nil, nil, nil, props, nil, 0, st, out)
props <- &Prop{Seqn: 1, Mut: []byte("foo")}
assert.Equal(t, 1, (<-m).WaitPackets)
}
开发者ID:kr,项目名称:doozerd,代码行数:10,代码来源:manager_test.go
示例13: TestManagerFill
func TestManagerFill(t *testing.T) {
st := store.New()
p := make(ChanPutCloserTo)
st.Ops <- store.Op{1, mustEncodeSet(membersDir+"a", "x")}
st.Ops <- store.Op{2, mustEncodeSet(slotDir+"0", "a")}
mg := NewManager("a", 1, st, p)
mg.fillUntil <- 4
assert.Equal(t, uint64(3), (<-p).Msg.Seqn())
}
开发者ID:andradeandrey,项目名称:doozer,代码行数:10,代码来源:manager_test.go
示例14: TestRegistrarSlotInitFirst
func TestRegistrarSlotInitFirst(t *testing.T) {
st := store.New()
(st.Ops <- store.Op{1, mustEncodeSet(slotDir+"0", "a")})
st.Sync(1)
rg := NewRegistrar(st, 1, 0)
members, active := rg.setsForVersion(1)
assert.Equal(t, 0, len(members))
assert.Equal(t, []string{"a"}, active)
}
开发者ID:andradeandrey,项目名称:doozer,代码行数:10,代码来源:registrar_test.go
示例15: TestRegistrarInitFirst
func TestRegistrarInitFirst(t *testing.T) {
st := store.New()
(st.Ops <- store.Op{1, mustEncodeSet(membersKey+"/a", "1")})
st.Sync(1)
rg := NewRegistrar(st, 1, 0)
members, active := rg.setsForVersion(1)
assert.Equal(t, 1, len(members))
assert.Equal(t, 0, len(active))
}
开发者ID:andradeandrey,项目名称:doozer,代码行数:10,代码来源:registrar_test.go
示例16: TestRegistrarSlotInitTwo
func TestRegistrarSlotInitTwo(t *testing.T) {
st := store.New()
(st.Ops <- store.Op{1, mustEncodeSet(slotDir+"0", "b")})
(st.Ops <- store.Op{2, mustEncodeSet(slotDir+"1", "a")})
rg := NewRegistrar(st, 2, 0)
members, active := rg.setsForVersion(2)
assert.Equal(t, 0, len(members))
assert.Equal(t, []string{"a", "b"}, active)
}
开发者ID:andradeandrey,项目名称:doozer,代码行数:10,代码来源:registrar_test.go
示例17: TestConsensusOne
func TestConsensusOne(t *testing.T) {
self := "test"
const alpha = 1
st := store.New()
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:sclasen,项目名称:doozerd,代码行数:55,代码来源:consensus_test.go
示例18: TestConsensusOne
func TestConsensusOne(t *testing.T) {
self := "test"
const alpha = 1
st := store.New()
st.Ops <- store.Op{1, store.MustEncodeSet("/ctl/node/"+self+"/addr", "x", 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)
cfg := &Config{
self,
2,
alpha,
in,
out,
st.Ops,
seqns,
props,
10e9,
st,
time.Tick(10e6),
}
NewManager(cfg)
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: os.NewError("bad mutation"),
}
e.Getter = nil
assert.Equal(t, exp, e)
}
开发者ID:thaingo,项目名称:doozerd,代码行数:55,代码来源:consensus_test.go
示例19: TestManagerAppliedNeverStarted
func TestManagerAppliedNeverStarted(t *testing.T) {
st := store.New()
st.Ops <- store.Op{1, mustEncodeSet(membersDir+"a", "x")}
st.Ops <- store.Op{2, mustEncodeSet(slotDir+"0", "a")}
mg := NewManager("a", 1, st, nil)
st.Ops <- store.Op{3, store.Nop}
<-st.Seqns // give mg a chance to get the store.Event for seqn 3
assert.Equal(t, instance(nil), mg.getInstance(3))
}
开发者ID:andradeandrey,项目名称:doozer,代码行数:11,代码来源:manager_test.go
示例20: TestManagerPacketQueue
func TestManagerPacketQueue(t *testing.T) {
in := make(chan Packet)
st := store.New()
out := make(chan Packet, 100)
m := newManager("", 0, nil, in, nil, nil, nil, 0, st, out)
in <- Packet{"x", mustMarshal(&msg{Seqn: proto.Int64(1)})}
assert.Equal(t, 1, (<-m).WaitPackets)
}
开发者ID:kr,项目名称:doozerd,代码行数:11,代码来源:manager_test.go
注:本文中的doozer/store.New函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论