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