71 lines
1.2 KiB
Go
71 lines
1.2 KiB
Go
package client
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/micro/go-micro/registry"
|
|
"golang.org/x/net/context"
|
|
)
|
|
|
|
type mockRegistry struct{}
|
|
|
|
func (m *mockRegistry) GetService(service string) ([]*registry.Service, error) {
|
|
return []*registry.Service{
|
|
{
|
|
Name: "foo",
|
|
Version: "1.0.0",
|
|
Nodes: []*registry.Node{
|
|
{
|
|
Id: "foo-123",
|
|
Address: "localhost",
|
|
Port: 9999,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
Name: "foo",
|
|
Version: "1.0.1",
|
|
Nodes: []*registry.Node{
|
|
{
|
|
Id: "foo-321",
|
|
Address: "localhost",
|
|
Port: 6666,
|
|
},
|
|
},
|
|
},
|
|
}, nil
|
|
}
|
|
|
|
func (m *mockRegistry) ListServices() ([]*registry.Service, error) {
|
|
return []*registry.Service{}, nil
|
|
}
|
|
|
|
func (m *mockRegistry) Register(s *registry.Service) error {
|
|
return nil
|
|
}
|
|
|
|
func (m *mockRegistry) Deregister(s *registry.Service) error {
|
|
return nil
|
|
}
|
|
|
|
func (m *mockRegistry) Watch() (registry.Watcher, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
func TestNodeSelector(t *testing.T) {
|
|
counts := map[string]int{}
|
|
n := &nodeSelector{
|
|
&mockRegistry{},
|
|
}
|
|
|
|
for i := 0; i < 100; i++ {
|
|
n, err := n.Retrieve(context.Background(), newRpcRequest("foo", "Foo.Bar", nil, ""))
|
|
if err != nil {
|
|
t.Errorf("Expected node, got err: %v", err)
|
|
}
|
|
counts[n.Id]++
|
|
}
|
|
|
|
t.Logf("Counts %v", counts)
|
|
}
|