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  }