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  }