package multinet import ( "context" "net" "testing" "github.com/stretchr/testify/require" ) func TestInterfacesDown(t *testing.T) { t.Run("noop balancer", func(t *testing.T) { d, err := NewDialer(Config{ Subnets: []string{"10.11.12.0/24"}, InterfaceSource: testDownInterfaces, }) require.NoError(t, err) conn, err := d.DialContext(context.Background(), "tcp", "10.11.12.254:8080") require.ErrorIs(t, err, errNoSuitableNodeFound) require.Nil(t, conn) }) t.Run("round robin balancer", func(t *testing.T) { d, err := NewDialer(Config{ Subnets: []string{"10.11.12.0/24"}, InterfaceSource: testDownInterfaces, Balancer: BalancerTypeRoundRobin, }) require.NoError(t, err) conn, err := d.DialContext(context.Background(), "tcp", "10.11.12.254:8080") require.ErrorIs(t, err, errNoSuitableNodeFound) require.Nil(t, conn) }) } func testDownInterfaces() ([]Interface, error) { return []Interface{ &testInterface{ name: "data1", addrs: []net.Addr{ &testAddr{ network: "tcp", str: "10.11.12.101/24", }, }, down: true, }, &testInterface{ name: "data2", addrs: []net.Addr{ &testAddr{ network: "tcp", str: "10.11.12.102/24", }, }, down: true, }, }, nil }