gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/client/selector/strategy_test.go (about) 1 package selector 2 3 import ( 4 "testing" 5 6 "gitee.com/liuxuezhan/go-micro-v1.18.0/registry" 7 ) 8 9 func TestStrategies(t *testing.T) { 10 testData := []*registry.Service{ 11 { 12 Name: "test1", 13 Version: "latest", 14 Nodes: []*registry.Node{ 15 { 16 Id: "test1-1", 17 Address: "10.0.0.1:1001", 18 }, 19 { 20 Id: "test1-2", 21 Address: "10.0.0.2:1002", 22 }, 23 }, 24 }, 25 { 26 Name: "test1", 27 Version: "default", 28 Nodes: []*registry.Node{ 29 { 30 Id: "test1-3", 31 Address: "10.0.0.3:1003", 32 }, 33 { 34 Id: "test1-4", 35 Address: "10.0.0.4:1004", 36 }, 37 }, 38 }, 39 } 40 41 for name, strategy := range map[string]Strategy{"random": Random, "roundrobin": RoundRobin} { 42 next := strategy(testData) 43 counts := make(map[string]int) 44 45 for i := 0; i < 100; i++ { 46 node, err := next() 47 if err != nil { 48 t.Fatal(err) 49 } 50 counts[node.Id]++ 51 } 52 53 t.Logf("%s: %+v\n", name, counts) 54 } 55 }