github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/libpod/network/netconflist_test.go (about) 1 package network 2 3 import ( 4 "net" 5 "reflect" 6 "testing" 7 ) 8 9 func TestNewIPAMDefaultRoute(t *testing.T) { 10 11 tests := []struct { 12 name string 13 isIPv6 bool 14 want IPAMRoute 15 }{ 16 { 17 name: "IPv4 default route", 18 isIPv6: false, 19 want: IPAMRoute{defaultIPv4Route}, 20 }, 21 { 22 name: "IPv6 default route", 23 isIPv6: true, 24 want: IPAMRoute{defaultIPv6Route}, 25 }, 26 } 27 for _, tt := range tests { 28 tt := tt 29 t.Run(tt.name, func(t *testing.T) { 30 got, err := NewIPAMDefaultRoute(tt.isIPv6) 31 if err != nil { 32 t.Errorf("no error expected: %v", err) 33 } 34 if !reflect.DeepEqual(got, tt.want) { 35 t.Errorf("NewIPAMDefaultRoute() = %v, want %v", got, tt.want) 36 } 37 }) 38 } 39 } 40 41 func TestNewIPAMLocalHostRange(t *testing.T) { 42 tests := []struct { 43 name string 44 subnet *net.IPNet 45 ipRange *net.IPNet 46 gw net.IP 47 want []IPAMLocalHostRangeConf 48 }{ 49 { 50 name: "IPv4 subnet", 51 subnet: &net.IPNet{IP: net.IPv4(192, 168, 0, 0), Mask: net.IPv4Mask(255, 255, 255, 0)}, 52 want: []IPAMLocalHostRangeConf{ 53 { 54 Subnet: "192.168.0.0/24", 55 }, 56 }, 57 }, 58 { 59 name: "IPv4 subnet, range and gateway", 60 subnet: &net.IPNet{IP: net.IPv4(192, 168, 0, 0), Mask: net.IPv4Mask(255, 255, 255, 0)}, 61 ipRange: &net.IPNet{IP: net.IPv4(192, 168, 0, 128), Mask: net.IPv4Mask(255, 255, 255, 128)}, 62 gw: net.ParseIP("192.168.0.10"), 63 want: []IPAMLocalHostRangeConf{ 64 { 65 Subnet: "192.168.0.0/24", 66 RangeStart: "192.168.0.129", 67 RangeEnd: "192.168.0.255", 68 Gateway: "192.168.0.10", 69 }, 70 }, 71 }, 72 { 73 name: "IPv6 subnet", 74 subnet: &net.IPNet{IP: net.ParseIP("2001:DB8::"), Mask: net.IPMask(net.ParseIP("ffff:ffff:ffff::"))}, 75 want: []IPAMLocalHostRangeConf{ 76 { 77 Subnet: "2001:db8::/48", 78 }, 79 }, 80 }, 81 { 82 name: "IPv6 subnet, range and gateway", 83 subnet: &net.IPNet{IP: net.ParseIP("2001:DB8::"), Mask: net.IPMask(net.ParseIP("ffff:ffff:ffff::"))}, 84 ipRange: &net.IPNet{IP: net.ParseIP("2001:DB8:1:1::"), Mask: net.IPMask(net.ParseIP("ffff:ffff:ffff:ffff::"))}, 85 gw: net.ParseIP("2001:DB8::2"), 86 want: []IPAMLocalHostRangeConf{ 87 { 88 Subnet: "2001:db8::/48", 89 RangeStart: "2001:db8:1:1::1", 90 RangeEnd: "2001:db8:1:1:ffff:ffff:ffff:ffff", 91 Gateway: "2001:db8::2", 92 }, 93 }, 94 }, 95 } 96 for _, tt := range tests { 97 tt := tt 98 t.Run(tt.name, func(t *testing.T) { 99 got, err := NewIPAMLocalHostRange(tt.subnet, tt.ipRange, tt.gw) 100 if err != nil { 101 t.Errorf("no error expected: %v", err) 102 } 103 if !reflect.DeepEqual(got, tt.want) { 104 t.Errorf("NewIPAMLocalHostRange() = %v, want %v", got, tt.want) 105 } 106 }) 107 } 108 }