...

Source file src/edge-infra.dev/pkg/sds/ien/network/info/info_test.go

Documentation: edge-infra.dev/pkg/sds/ien/network/info

     1  package info
     2  
     3  import (
     4  	"testing"
     5  
     6  	"gotest.tools/v3/assert"
     7  	v1 "k8s.io/api/core/v1"
     8  )
     9  
    10  var convertToConfigMapTestCases = []struct {
    11  	name    string
    12  	netInfo *Info
    13  	data    map[string]string
    14  }{
    15  	{"set defaults", New(), map[string]string{
    16  		clusterDNSKey:         ClusterDNSDefault,
    17  		podSubnetKey:          PodSubnetDefault,
    18  		serviceSubnetKey:      ServiceSubnetDefault,
    19  		egressTunnelSubnetKey: EgressTunnelSubnetDefault,
    20  	}},
    21  	{"set overrides", &Info{
    22  		ClusterDNSIP:       "10.0.0.1",
    23  		ServiceSubnet:      "10.0.0.0/16",
    24  		PodSubnet:          "172.23.0.0/16",
    25  		EgressTunnelSubnet: "192.168.0.0/16",
    26  	}, map[string]string{
    27  		clusterDNSKey:         "10.0.0.1",
    28  		serviceSubnetKey:      "10.0.0.0/16",
    29  		podSubnetKey:          "172.23.0.0/16",
    30  		egressTunnelSubnetKey: "192.168.0.0/16",
    31  	}},
    32  }
    33  
    34  var convertConfigMapToInfoTestCases = []struct {
    35  	name    string
    36  	cm      *v1.ConfigMap
    37  	netInfo *Info
    38  }{
    39  	// default network info test values
    40  	{"set defaults", overrideConfigMapData(map[string]string{}), New()},
    41  	{"set overrides", overrideConfigMapData(map[string]string{
    42  		clusterDNSKey:         "10.0.0.1",
    43  		serviceSubnetKey:      "10.0.0.0/16",
    44  		podSubnetKey:          "172.23.0.0/16",
    45  		egressTunnelSubnetKey: "192.168.0.0/16",
    46  	}), &Info{
    47  		ClusterDNSIP:       "10.0.0.1",
    48  		ServiceSubnet:      "10.0.0.0/16",
    49  		PodSubnet:          "172.23.0.0/16",
    50  		EgressTunnelSubnet: "192.168.0.0/16",
    51  	}},
    52  }
    53  
    54  var validationTestCases = []struct {
    55  	name string
    56  	cm   *v1.ConfigMap
    57  	err  error
    58  }{
    59  	// default network info test values
    60  	{"valid configuration", overrideConfigMapData(map[string]string{}), nil},
    61  	{"invalid cluster dns ip", overrideConfigMapData(map[string]string{
    62  		clusterDNSKey:         "10.0.x.1",
    63  		serviceSubnetKey:      "10.0.0.0/16",
    64  		podSubnetKey:          "172.23.0.0/16",
    65  		egressTunnelSubnetKey: "192.168.0.0/16",
    66  	}), ErrInvalidClusterDNSIP},
    67  	{"invalid service subnet", overrideConfigMapData(map[string]string{
    68  		clusterDNSKey:         "10.0.0.1",
    69  		serviceSubnetKey:      "10.invalid.0.0-16",
    70  		podSubnetKey:          "172.23.0.0/16",
    71  		egressTunnelSubnetKey: "192.168.0.0/16",
    72  	}), ErrInvalidServiceSubnet},
    73  	{"invalid pod subnet", overrideConfigMapData(map[string]string{
    74  		clusterDNSKey:         "10.0.0.1",
    75  		serviceSubnetKey:      "10.0.0.0/16",
    76  		podSubnetKey:          "172.invalid.0.0-16",
    77  		egressTunnelSubnetKey: "192.168.0.0/16",
    78  	}), ErrInvalidPodSubnet},
    79  	{"invalid tunnel subnet", overrideConfigMapData(map[string]string{
    80  		clusterDNSKey:         "10.0.0.1",
    81  		serviceSubnetKey:      "10.0.0.0/16",
    82  		podSubnetKey:          "172.23.0.0/16",
    83  		egressTunnelSubnetKey: "192.invalid.0.0-16",
    84  	}), ErrInvalidEgressTunnelSubnet},
    85  }
    86  
    87  func TestConversionToConfigMap(t *testing.T) {
    88  	for _, tc := range convertToConfigMapTestCases {
    89  		t.Run(tc.name, func(t *testing.T) {
    90  			expectedConfigMap := overrideConfigMapData(tc.data)
    91  			actualConfigMap := *tc.netInfo.ToConfigMap()
    92  			assert.DeepEqual(t, *expectedConfigMap, actualConfigMap)
    93  		})
    94  	}
    95  }
    96  
    97  func TestNetworkInfoValidation(t *testing.T) {
    98  	for _, tc := range validationTestCases {
    99  		t.Run(tc.name, func(t *testing.T) {
   100  			netInfo := &Info{}
   101  			netInfo = netInfo.FromConfigMap(tc.cm)
   102  			err := netInfo.Validate()
   103  			assert.Equal(t, err, tc.err)
   104  		})
   105  	}
   106  }
   107  
   108  func TestConversionToInfo(t *testing.T) {
   109  	for _, tc := range convertConfigMapToInfoTestCases {
   110  		t.Run(tc.name, func(t *testing.T) {
   111  			netInfo := &Info{}
   112  			netInfo = netInfo.FromConfigMap(tc.cm)
   113  			assert.DeepEqual(t, *netInfo, *tc.netInfo)
   114  		})
   115  	}
   116  }
   117  
   118  func overrideConfigMapData(data map[string]string) *v1.ConfigMap {
   119  	cm := newNetworkInfoConfigMap()
   120  	cm.Data = data
   121  	return &cm
   122  }
   123  

View as plain text