• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Golang mock.ProtoNetSwarm类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Golang中github.com/Gaboose/go-pubsub/pnet/mock.ProtoNetSwarm的典型用法代码示例。如果您正苦于以下问题:Golang ProtoNetSwarm类的具体用法?Golang ProtoNetSwarm怎么用?Golang ProtoNetSwarm使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了ProtoNetSwarm类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。

示例1: TestNumGoroutine

func TestNumGoroutine(t *testing.T) {
	baseNum := numGoroutine()
	var num int

	sw := mock.ProtoNetSwarm{}
	p := &mock.Peer{ID: "peer0"}
	c := New(p, 20, 10, sw.DialListener(p))
	c.Start(time.Second)
	c.Stop()

	ticker := time.NewTicker(10 * time.Millisecond)
	defer ticker.Stop()
	timeout := time.After(time.Second)
	for {
		select {
		case <-ticker.C:
			num = numGoroutine()
			if num == baseNum {
				return
			}
		case <-timeout:
			t.Fatalf("%d goroutines are leaking", num-baseNum)
		}
	}
}
开发者ID:Gaboose,项目名称:go-pubsub,代码行数:25,代码来源:cyclon_test.go


示例2: TestNeighbourDiscard

func TestNeighbourDiscard(t *testing.T) {
	sw := mock.ProtoNetSwarm{}

	numNodes := 4
	b, ch := make([]*Broadcast, numNodes), make([]chan pnet.Peer, numNodes)

	for i, _ := range b {
		name := fmt.Sprintf("p%d", i)
		b[i] = New(1, time.Minute, sw.DialListener(name))
		b[i].Str = name
		ch[i] = make(chan pnet.Peer)
		b[i].Start(ch[i], 2)
		defer b[i].Stop()
	}

	ch[0] <- &mock.Peer{"p2", map[string]interface{}{bday: 2}} // keep
	ch[0] <- &mock.Peer{"p1", map[string]interface{}{bday: 0}} // discard
	ch[0] <- &mock.Peer{"p3", map[string]interface{}{bday: 1}} // keep

	b[0].In() <- "hello world"

	testReceive(t,
		map[*Broadcast]int{b[0]: 0, b[1]: 0, b[2]: 1, b[3]: 1},
		timeToWait,
	)
}
开发者ID:Gaboose,项目名称:go-pubsub,代码行数:26,代码来源:broadcast_test.go


示例3: TestDelayedResponse

func TestDelayedResponse(t *testing.T) {
	sw := mock.ProtoNetSwarm{}

	// ponger
	pn := sw.DialListener("peer0")
	ln := pn.Listen()
	defer ln.Close()

	// pinger
	ping := &Ping{ProtoNet: sw.DialListener("peer1")}
	done := make(chan error)
	go func() {
		done <- ping.Ping(&mock.Peer{ID: "peer0"}, nil)
	}()

	// accept and respond after a delay
	c, err := ln.Accept()
	if err != nil {
		t.Fatal(err)
	}
	defer c.Close()

	time.Sleep(100 * time.Millisecond)
	c.Write([]byte(msg))

	err = <-done
	if err != nil {
		t.Fatalf("expected no error, got '%v'", err)
	}
}
开发者ID:Gaboose,项目名称:go-pubsub,代码行数:30,代码来源:ping_test.go


示例4: TestMsgForward

func TestMsgForward(t *testing.T) {
	sw := mock.ProtoNetSwarm{}

	numNodes := 4
	b, ch := make([]*Broadcast, numNodes), make([]chan pnet.Peer, numNodes)

	for i, _ := range b {
		name := fmt.Sprintf("p%d", i)
		b[i] = New(1, time.Minute, sw.DialListener(name))
		b[i].Str = name
		ch[i] = make(chan pnet.Peer)
		b[i].Start(ch[i], 2)
		defer b[i].Stop()
	}

	ch[0] <- &mock.Peer{ID: "p1"}
	ch[1] <- &mock.Peer{ID: "p2"}
	ch[2] <- &mock.Peer{ID: "p0"}
	ch[3] <- &mock.Peer{ID: "p2"}

	b[0].In() <- "hello world"

	testReceive(t,
		map[*Broadcast]int{b[0]: 0, b[1]: 1, b[2]: 1, b[3]: 1},
		timeToWait,
	)
}
开发者ID:Gaboose,项目名称:go-pubsub,代码行数:27,代码来源:broadcast_test.go


示例5: TestTimeout

func TestTimeout(t *testing.T) {
	sw := mock.ProtoNetSwarm{}

	// ponger
	pn := sw.DialListener("peer0")
	ln := pn.Listen()
	defer ln.Close()

	// pinger
	ping := &Ping{ProtoNet: sw.DialListener("peer1")}
	done := make(chan error)
	stop := make(chan bool)
	go func() {
		done <- ping.Ping(&mock.Peer{ID: "peer0"}, stop)
	}()

	// accept, but don't respond
	c, err := ln.Accept()
	if err != nil {
		t.Fatal(err)
	}
	defer c.Close()

	close(stop)

	err = <-done
	if err == nil {
		t.Fatal("expected an error, got nil")
	}
}
开发者ID:Gaboose,项目名称:go-pubsub,代码行数:30,代码来源:ping_test.go


示例6: TestFail

func TestFail(t *testing.T) {
	sw := mock.ProtoNetSwarm{}
	ping0 := &Ping{ProtoNet: sw.DialListener("peer0")}

	err := ping0.Ping(&mock.Peer{ID: "peer1"}, nil)
	if err == nil {
		t.Fatal("expected an error, got nil")
	}
}
开发者ID:Gaboose,项目名称:go-pubsub,代码行数:9,代码来源:ping_test.go


示例7: TestNoAnswer

func TestNoAnswer(t *testing.T) {
	sw := mock.ProtoNetSwarm{}
	p := &mock.Peer{ID: "peer0"}
	c := New(p, 20, 10, sw.DialListener(p))

	gob.Register(&mock.Peer{})
	c.Add(&mock.Peer{ID: "peer1"})
	c.Shuffle()

	if len(c.neighbs) > 0 {
		t.Fatalf("expected no neighbours, got %v", c.neighbs)
	}
}
开发者ID:Gaboose,项目名称:go-pubsub,代码行数:13,代码来源:cyclon_test.go


示例8: TestSucceed

func TestSucceed(t *testing.T) {
	sw := mock.ProtoNetSwarm{}

	ping0 := &Ping{ProtoNet: sw.DialListener("peer0")} // pinger
	ping1 := &Ping{ProtoNet: sw.DialListener("peer1")} // ponger
	ping1.Serve()
	defer ping1.Stop()

	err := ping0.Ping(&mock.Peer{ID: "peer1"}, nil)
	if err != nil {
		t.Fatalf("expected no error, got '%v'", err)
	}
}
开发者ID:Gaboose,项目名称:go-pubsub,代码行数:13,代码来源:ping_test.go


示例9: TestConservation

func TestConservation(t *testing.T) {
	sw := mock.ProtoNetSwarm{}
	p0 := &mock.Peer{ID: "p0"}
	p1 := &mock.Peer{ID: "p1"}
	c0 := New(p0, 5, 3, sw.DialListener(p0.Id()))
	c1 := New(p1, 5, 3, sw.DialListener(p1.Id()))

	c0.neighbs = PeerSet{
		"p2": &mock.Peer{"p2", map[string]interface{}{age: 2}},
		"p3": &mock.Peer{"p3", map[string]interface{}{age: 2}},
		"p4": &mock.Peer{"p4", map[string]interface{}{age: 2}},
		"p5": &mock.Peer{"p5", map[string]interface{}{age: 2}},
		"p6": &mock.Peer{"p6", map[string]interface{}{age: 2}},
	}
	c1.neighbs = PeerSet{
		"p0":  &mock.Peer{"p0", map[string]interface{}{age: 3}},
		"p7":  &mock.Peer{"p7", map[string]interface{}{age: 2}},
		"p8":  &mock.Peer{"p8", map[string]interface{}{age: 2}},
		"p9":  &mock.Peer{"p9", map[string]interface{}{age: 2}},
		"p10": &mock.Peer{"p10", map[string]interface{}{age: 2}},
	}

	c0.Start(0)
	defer c0.Stop()
	c1.Shuffle()

	// We expect p0 to be selected for shuffling, thus removed from the pool.
	// p1 should be added to p0's cache, because p1 is initiating the shuffle.
	// All other peer profiles should be conserved.
	expected := []interface{}{"p1", "p2", "p3", "p4",
		"p5", "p6", "p7", "p8", "p9", "p10"}

	got := make([]interface{}, 0, 10)
	for p, _ := range c0.neighbs {
		got = append(got, p)
	}
	for p, _ := range c1.neighbs {
		got = append(got, p)
	}
	if !equalSets(expected, got) {
		t.Fatalf("expected %v, got %v", expected, got)
	}
}
开发者ID:Gaboose,项目名称:go-pubsub,代码行数:43,代码来源:cyclon_test.go


示例10: TestMsg

func TestMsg(t *testing.T) {
	sw := mock.ProtoNetSwarm{}
	b0 := New(2, time.Minute, sw.DialListener("p0"))
	b1 := New(2, time.Minute, sw.DialListener("p1"))

	ps0, ps1 := make(chan pnet.Peer), make(chan pnet.Peer)
	b0.Start(ps0, 0)
	b1.Start(ps1, 0)
	ps0 <- &mock.Peer{ID: "p1"}
	b0.In() <- "hello world"

	select {
	case msg := <-b1.Out():
		if msg != "hello world" {
			t.Fatalf("expected \"hello world\", got %s", msg)
		}
	case <-time.After(timeToWait):
		t.Fatal("timeout")
	}
}
开发者ID:Gaboose,项目名称:go-pubsub,代码行数:20,代码来源:broadcast_test.go


示例11: TestReverseEdge

func TestReverseEdge(t *testing.T) {
	sw := mock.ProtoNetSwarm{}
	p0 := &mock.Peer{ID: "peer0"}
	p1 := &mock.Peer{ID: "peer1"}
	c0 := New(p0, 20, 10, sw.DialListener(p0.Id()))
	c1 := New(p1, 20, 10, sw.DialListener(p1.Id()))

	c0.Add(p1)

	c1.Start(0)
	defer c1.Stop()
	c0.Shuffle()

	select {
	case p := <-c1.Out():
		if p.Id() != p0.Id() {
			t.Fatalf("expected %v, got %v", p0, p)
		}
	case <-time.After(time.Second):
		t.Fatal("timed out")
	}
}
开发者ID:Gaboose,项目名称:go-pubsub,代码行数:22,代码来源:cyclon_test.go


示例12: TestAgeSelect

func TestAgeSelect(t *testing.T) {
	sw := mock.ProtoNetSwarm{}
	p := &mock.Peer{ID: "peer0"}
	c := New(p, 20, 10, sw.DialListener(p))

	c.neighbs = PeerSet{
		"peer1": &mock.Peer{"peer1", map[string]interface{}{age: 2}},
		"peer2": &mock.Peer{"peer2", map[string]interface{}{age: 4}},
		"peer3": &mock.Peer{"peer3", map[string]interface{}{age: 3}},
	}

	c.Shuffle()

	expected := []interface{}{"peer1", "peer3"}
	got := make([]interface{}, 0, 3)
	for p, _ := range c.neighbs {
		got = append(got, p)
	}
	if !equalSets(expected, got) {
		t.Fatalf("expected %v, got %v", expected, got)
	}
}
开发者ID:Gaboose,项目名称:go-pubsub,代码行数:22,代码来源:cyclon_test.go


示例13: TestBday

func TestBday(t *testing.T) {
	sw := mock.ProtoNetSwarm{}
	c0 := New(&mock.Peer{ID: "p0"}, 3, 2, sw.DialListener("p0"))
	c1 := New(&mock.Peer{ID: "p1"}, 3, 2, sw.DialListener("p1"))

	c0.Start(0)
	defer c0.Stop()
	c1.Start(0)
	defer c1.Stop()
	c0.neighbs = PeerSet{
		"p1": &mock.Peer{"p1", map[string]interface{}{age: 10}},
		"p2": &mock.Peer{"p2", map[string]interface{}{age: 0}},
	}
	c1.neighbs = PeerSet{
		"p0": &mock.Peer{"p0", map[string]interface{}{age: 10}},
	}
	c0.Shuffle()
	c1.Shuffle()

	c0.neighbs = PeerSet{
		"p1": &mock.Peer{"p1", map[string]interface{}{age: 10}},
		"p3": &mock.Peer{"p3", map[string]interface{}{age: 0}},
	}
	c0.Shuffle()

	set := make(map[interface{}]int64)
	for i := 0; i < 3; i++ {
		p := <-c1.Out()
		set[p.Id()] = p.Get(bday).(int64)
	}

	diff := set["p3"] - set["p2"]
	if diff != 1 {
		t.Fatalf("expected birth to be 1 apart, got %v", diff)
	}
}
开发者ID:Gaboose,项目名称:go-pubsub,代码行数:36,代码来源:cyclon_test.go


示例14: TestIncreaseAge

func TestIncreaseAge(t *testing.T) {
	sw := mock.ProtoNetSwarm{}
	p0 := &mock.Peer{ID: "p0"}
	p1 := &mock.Peer{ID: "p1"}
	c0 := New(p0, 3, 2, sw.DialListener(p0.Id()))
	c1 := New(p1, 3, 2, sw.DialListener(p0.Id()))

	c0.neighbs = PeerSet{
		"p2": &mock.Peer{"p2", map[string]interface{}{age: 2}},
		"p3": &mock.Peer{"p3", map[string]interface{}{age: 2}},
		"p4": &mock.Peer{"p4", map[string]interface{}{age: 2}},
	}
	c1.neighbs = PeerSet{
		"p0": &mock.Peer{"p0", map[string]interface{}{age: 3}},
		"p5": &mock.Peer{"p5", map[string]interface{}{age: 2}},
		"p6": &mock.Peer{"p6", map[string]interface{}{age: 2}},
	}

	c0.Start(0)
	defer c0.Stop()
	c1.Shuffle()

	union := make(map[interface{}]pnet.Peer)
	for s, p := range c0.neighbs {
		union[s] = p
	}
	for s, p := range c1.neighbs {
		union[s] = p
	}
	expected := map[string]int{"p1": 0, "p2": 2, "p3": 2, "p4": 2, "p5": 3, "p6": 3}
	for s, a := range expected {
		if union[s].Get(age) != a {
			t.Fatalf("expected %s.age %d, got %d", s, a, union[s].Get(age))
		}
	}
}
开发者ID:Gaboose,项目名称:go-pubsub,代码行数:36,代码来源:cyclon_test.go


示例15: TestNumGoroutine

func TestNumGoroutine(t *testing.T) {
	baseNum := numGoroutine()
	var num int

	sw := mock.ProtoNetSwarm{}
	b := New(2, time.Minute, sw.DialListener("p0"))
	b.Start(nil, 0)
	b.Stop()

	ticker := time.NewTicker(timeToWait / 100)
	defer ticker.Stop()
	timeout := time.After(timeToWait)
	for {
		select {
		case <-ticker.C:
			num = numGoroutine()
			if num == baseNum {
				return
			}
		case <-timeout:
			t.Fatalf("%d goroutines are leaking", num-baseNum)
		}
	}
}
开发者ID:Gaboose,项目名称:go-pubsub,代码行数:24,代码来源:broadcast_test.go



注:本文中的github.com/Gaboose/go-pubsub/pnet/mock.ProtoNetSwarm类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Golang context.NewContext函数代码示例发布时间:2022-05-23
下一篇:
Golang match.Context类代码示例发布时间:2022-05-23
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap