...

Source file src/edge-infra.dev/pkg/sds/ien/k8s/controllers/nodeagent/plugins/networking/netplan/routes_test.go

Documentation: edge-infra.dev/pkg/sds/ien/k8s/controllers/nodeagent/plugins/networking/netplan

     1  package netplan
     2  
     3  import (
     4  	"net"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  
     9  	v1ien "edge-infra.dev/pkg/sds/ien/k8s/apis/v1"
    10  )
    11  
    12  func TestStaticRoutes(t *testing.T) {
    13  	const (
    14  		gw4In    = "172.23.1.128"
    15  		gw4NotIn = "10.18.23.138"
    16  		addr4    = "172.23.1.129/16"
    17  		invalid  = "invalid"
    18  	)
    19  	var (
    20  		wrkr = &v1ien.IENode{
    21  			Spec: v1ien.IENodeSpec{
    22  				Role: v1ien.Worker,
    23  			},
    24  		}
    25  	)
    26  	testCaseList := []struct {
    27  		iface          v1ien.Network
    28  		ien            *v1ien.IENode
    29  		expected       []Route
    30  		err            error
    31  		name           string
    32  		gatewayEnabled bool
    33  	}{
    34  		{
    35  			iface: v1ien.Network{
    36  				Gateway4:  gw4In,
    37  				Addresses: []string{addr4},
    38  			},
    39  			expected: []Route{{
    40  				To:     "default",
    41  				Via:    gw4In,
    42  				OnLink: false,
    43  			}},
    44  
    45  			err:  nil,
    46  			name: "Gateway4 IP in subnet of one of the addresses",
    47  			ien:  wrkr,
    48  		},
    49  		{
    50  			iface: v1ien.Network{
    51  				Gateway4:  gw4NotIn,
    52  				Addresses: []string{addr4},
    53  			},
    54  			expected: []Route{{
    55  
    56  				To:     "default",
    57  				Via:    gw4NotIn,
    58  				OnLink: true,
    59  			}},
    60  			err:  nil,
    61  			name: "Gateway4 IP NOT in subnet of any of the addresses",
    62  			ien:  wrkr,
    63  		},
    64  		{
    65  			iface: v1ien.Network{
    66  				Gateway4:  gw4NotIn,
    67  				Addresses: []string{},
    68  			},
    69  			expected: []Route{{
    70  				To:     "default",
    71  				Via:    gw4NotIn,
    72  				OnLink: true,
    73  			}},
    74  			err:  nil,
    75  			name: "No addresses so implicitly no subnet match found for Gateway4 IP",
    76  			ien:  wrkr,
    77  		},
    78  		{
    79  			iface: v1ien.Network{
    80  				Gateway4:  gw4In,
    81  				Addresses: []string{addr4},
    82  			},
    83  			expected: []Route{{
    84  				To:     "default",
    85  				Via:    gw4In,
    86  				OnLink: false,
    87  			}},
    88  			gatewayEnabled: true,
    89  			err:            nil,
    90  			name:           "Is not gateway, but gateway is enabled",
    91  			ien:            wrkr,
    92  		},
    93  		{
    94  			iface: v1ien.Network{
    95  				Gateway4: gw4In,
    96  				Addresses: []string{
    97  					invalid,
    98  					addr4,
    99  				},
   100  			},
   101  			err:  &net.ParseError{Type: "CIDR address", Text: invalid},
   102  			name: "Invalid address",
   103  			ien:  wrkr,
   104  		},
   105  	}
   106  	for _, testCase := range testCaseList {
   107  		actual, err := staticRoutes(testCase.iface)
   108  		if testCase.err != nil {
   109  			assert.Errorf(t, err, testCase.name)
   110  			assert.Equalf(t, err.Error(), testCase.err.Error(), testCase.name)
   111  		}
   112  		assert.Equalf(t, len(testCase.expected), len(actual), testCase.name)
   113  		assert.Equalf(t, testCase.expected, actual, testCase.name)
   114  	}
   115  }
   116  

View as plain text