58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
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
|
|
}
|