Files
podman/libpod/network/netconflist_test.go
Paul Holzinger edf0e918e3 Always add the default gateway to the cni config file
`podman network create` should always add a gateway to the cni config.
If no gateway is given use the first ip in the subnet. CNI does not require
the gateway field but we need it because of network inspect.

This worked with previous version but was dropped in Commit(e7a72d72fd59).

Fixes #8748

Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
2020-12-16 20:59:45 +01:00

111 lines
2.6 KiB
Go

package network
import (
"net"
"reflect"
"testing"
)
func TestNewIPAMDefaultRoute(t *testing.T) {
tests := []struct {
name string
isIPv6 bool
want IPAMRoute
}{
{
name: "IPv4 default route",
isIPv6: false,
want: IPAMRoute{defaultIPv4Route},
},
{
name: "IPv6 default route",
isIPv6: true,
want: IPAMRoute{defaultIPv6Route},
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
got, err := NewIPAMDefaultRoute(tt.isIPv6)
if err != nil {
t.Errorf("no error expected: %v", err)
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("NewIPAMDefaultRoute() = %v, want %v", got, tt.want)
}
})
}
}
func TestNewIPAMLocalHostRange(t *testing.T) {
tests := []struct {
name string
subnet *net.IPNet
ipRange *net.IPNet
gw net.IP
want []IPAMLocalHostRangeConf
}{
{
name: "IPv4 subnet",
subnet: &net.IPNet{IP: net.IPv4(192, 168, 0, 0), Mask: net.IPv4Mask(255, 255, 255, 0)},
want: []IPAMLocalHostRangeConf{
{
Subnet: "192.168.0.0/24",
Gateway: "192.168.0.1",
},
},
},
{
name: "IPv4 subnet, range and gateway",
subnet: &net.IPNet{IP: net.IPv4(192, 168, 0, 0), Mask: net.IPv4Mask(255, 255, 255, 0)},
ipRange: &net.IPNet{IP: net.IPv4(192, 168, 0, 128), Mask: net.IPv4Mask(255, 255, 255, 128)},
gw: net.ParseIP("192.168.0.10"),
want: []IPAMLocalHostRangeConf{
{
Subnet: "192.168.0.0/24",
RangeStart: "192.168.0.129",
RangeEnd: "192.168.0.255",
Gateway: "192.168.0.10",
},
},
},
{
name: "IPv6 subnet",
subnet: &net.IPNet{IP: net.ParseIP("2001:DB8::"), Mask: net.IPMask(net.ParseIP("ffff:ffff:ffff::"))},
want: []IPAMLocalHostRangeConf{
{
Subnet: "2001:db8::/48",
Gateway: "2001:db8::1",
},
},
},
{
name: "IPv6 subnet, range and gateway",
subnet: &net.IPNet{IP: net.ParseIP("2001:DB8::"), Mask: net.IPMask(net.ParseIP("ffff:ffff:ffff::"))},
ipRange: &net.IPNet{IP: net.ParseIP("2001:DB8:1:1::"), Mask: net.IPMask(net.ParseIP("ffff:ffff:ffff:ffff::"))},
gw: net.ParseIP("2001:DB8::2"),
want: []IPAMLocalHostRangeConf{
{
Subnet: "2001:db8::/48",
RangeStart: "2001:db8:1:1::1",
RangeEnd: "2001:db8:1:1:ffff:ffff:ffff:ffff",
Gateway: "2001:db8::2",
},
},
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
got, err := NewIPAMLocalHostRange(tt.subnet, tt.ipRange, tt.gw)
if err != nil {
t.Errorf("no error expected: %v", err)
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("NewIPAMLocalHostRange() = %v, want %v", got, tt.want)
}
})
}
}