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  }