github.com/AbhinandanKurakure/podman/v3@v3.4.10/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  	tests := []struct {
    11  		name   string
    12  		isIPv6 bool
    13  		want   IPAMRoute
    14  	}{
    15  		{
    16  			name:   "IPv4 default route",
    17  			isIPv6: false,
    18  			want:   IPAMRoute{defaultIPv4Route},
    19  		},
    20  		{
    21  			name:   "IPv6 default route",
    22  			isIPv6: true,
    23  			want:   IPAMRoute{defaultIPv6Route},
    24  		},
    25  	}
    26  	for _, tt := range tests {
    27  		tt := tt
    28  		t.Run(tt.name, func(t *testing.T) {
    29  			got, err := NewIPAMDefaultRoute(tt.isIPv6)
    30  			if err != nil {
    31  				t.Errorf("no error expected: %v", err)
    32  			}
    33  			if !reflect.DeepEqual(got, tt.want) {
    34  				t.Errorf("NewIPAMDefaultRoute() = %v, want %v", got, tt.want)
    35  			}
    36  		})
    37  	}
    38  }
    39  
    40  func TestNewIPAMLocalHostRange(t *testing.T) {
    41  	tests := []struct {
    42  		name    string
    43  		subnet  *net.IPNet
    44  		ipRange *net.IPNet
    45  		gw      net.IP
    46  		want    []IPAMLocalHostRangeConf
    47  	}{
    48  		{
    49  			name:   "IPv4 subnet",
    50  			subnet: &net.IPNet{IP: net.IPv4(192, 168, 0, 0), Mask: net.IPv4Mask(255, 255, 255, 0)},
    51  			want: []IPAMLocalHostRangeConf{
    52  				{
    53  					Subnet:  "192.168.0.0/24",
    54  					Gateway: "192.168.0.1",
    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  					Gateway: "2001:db8::1",
    79  				},
    80  			},
    81  		},
    82  		{
    83  			name:    "IPv6 subnet, range and gateway",
    84  			subnet:  &net.IPNet{IP: net.ParseIP("2001:DB8::"), Mask: net.IPMask(net.ParseIP("ffff:ffff:ffff::"))},
    85  			ipRange: &net.IPNet{IP: net.ParseIP("2001:DB8:1:1::"), Mask: net.IPMask(net.ParseIP("ffff:ffff:ffff:ffff::"))},
    86  			gw:      net.ParseIP("2001:DB8::2"),
    87  			want: []IPAMLocalHostRangeConf{
    88  				{
    89  					Subnet:     "2001:db8::/48",
    90  					RangeStart: "2001:db8:1:1::1",
    91  					RangeEnd:   "2001:db8:1:1:ffff:ffff:ffff:ffff",
    92  					Gateway:    "2001:db8::2",
    93  				},
    94  			},
    95  		},
    96  	}
    97  	for _, tt := range tests {
    98  		tt := tt
    99  		t.Run(tt.name, func(t *testing.T) {
   100  			got, err := NewIPAMLocalHostRange(tt.subnet, tt.ipRange, tt.gw)
   101  			if err != nil {
   102  				t.Errorf("no error expected: %v", err)
   103  			}
   104  			if !reflect.DeepEqual(got, tt.want) {
   105  				t.Errorf("NewIPAMLocalHostRange() = %v, want %v", got, tt.want)
   106  			}
   107  		})
   108  	}
   109  }