...

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

Documentation: edge-infra.dev/pkg/sds/ien/topology

     1  package topology
     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  	tpInfo *Info
    13  	data   map[string]string
    14  }{
    15  	{"set defaults", New(), map[string]string{
    16  		downlinkRateKey:                   "100mbit",
    17  		uplinkRateKey:                     "100mbit",
    18  		thickPosKey:                       "false",
    19  		gatewayEnabledKey:                 "false",
    20  		gatewayRateLimitEnabledKey:        "false",
    21  		linkerdIdentityCertDurationKey:    "40",
    22  		linkerdIdentityCertRenewBeforeKey: "25",
    23  	}},
    24  	{"override defaults", overrideDefaults(), map[string]string{
    25  		downlinkRateKey:                   "10mbit",
    26  		uplinkRateKey:                     "10mbit",
    27  		thickPosKey:                       "true",
    28  		gatewayEnabledKey:                 "true",
    29  		gatewayRateLimitEnabledKey:        "true",
    30  		linkerdIdentityCertDurationKey:    "92",
    31  		linkerdIdentityCertRenewBeforeKey: "72",
    32  	}},
    33  }
    34  
    35  var convertConfigMapToInfoTestCases = []struct {
    36  	name   string
    37  	cm     *v1.ConfigMap
    38  	tpInfo *Info
    39  }{
    40  	// default topology info test values
    41  	{"set defaults", overrideConfigMapData(map[string]string{
    42  		downlinkRateKey:                   "100mbit",
    43  		uplinkRateKey:                     "100mbit",
    44  		thickPosKey:                       "false",
    45  		gatewayEnabledKey:                 "false",
    46  		gatewayRateLimitEnabledKey:        "false",
    47  		linkerdIdentityCertDurationKey:    "40",
    48  		linkerdIdentityCertRenewBeforeKey: "25",
    49  	}), New()},
    50  	{"set overrides", overrideConfigMapData(map[string]string{
    51  		downlinkRateKey:                   "10mbit",
    52  		uplinkRateKey:                     "10mbit",
    53  		thickPosKey:                       "true",
    54  		gatewayEnabledKey:                 "true",
    55  		gatewayRateLimitEnabledKey:        "true",
    56  		linkerdIdentityCertDurationKey:    "92",
    57  		linkerdIdentityCertRenewBeforeKey: "72",
    58  	}), &Info{
    59  		DownlinkRateLimit:              10 * mbitRate,
    60  		UplinkRateLimit:                10 * mbitRate,
    61  		ThickPOS:                       true,
    62  		EgressGatewayEnabled:           true,
    63  		GatewayRateLimitingEnabled:     true,
    64  		LinkerdIdentityCertDuration:    92,
    65  		LinkerdIdentityCertRenewBefore: 72,
    66  	}},
    67  	{"zero valued linkerd cert duration and renew before", overrideConfigMapData(map[string]string{
    68  		downlinkRateKey:                   "10mbit",
    69  		uplinkRateKey:                     "10mbit",
    70  		thickPosKey:                       "true",
    71  		gatewayEnabledKey:                 "true",
    72  		gatewayRateLimitEnabledKey:        "true",
    73  		linkerdIdentityCertDurationKey:    "0",
    74  		linkerdIdentityCertRenewBeforeKey: "0",
    75  	}), &Info{
    76  		DownlinkRateLimit:              10 * mbitRate,
    77  		UplinkRateLimit:                10 * mbitRate,
    78  		ThickPOS:                       true,
    79  		EgressGatewayEnabled:           true,
    80  		GatewayRateLimitingEnabled:     true,
    81  		LinkerdIdentityCertDuration:    96,
    82  		LinkerdIdentityCertRenewBefore: 72,
    83  	}},
    84  }
    85  
    86  func TestConversionToConfigMap(t *testing.T) {
    87  	for _, tc := range convertToConfigMapTestCases {
    88  		t.Run(tc.name, func(t *testing.T) {
    89  			expectedConfigMap := newTopologyInfoConfigMap()
    90  			expectedConfigMap.Data = tc.data
    91  			actualConfigMap := *tc.tpInfo.ToConfigMap()
    92  			assert.DeepEqual(t, expectedConfigMap, actualConfigMap)
    93  		})
    94  	}
    95  }
    96  
    97  func TestTopologyInfoValidation(t *testing.T) {
    98  	for _, tc := range convertConfigMapToInfoTestCases {
    99  		t.Run(tc.name, func(t *testing.T) {
   100  			tpInfo := &Info{}
   101  			tpInfo = tpInfo.FromConfigMap(tc.cm)
   102  			assert.DeepEqual(t, tpInfo, tc.tpInfo)
   103  		})
   104  	}
   105  }
   106  
   107  func overrideDefaults() *Info {
   108  	tpInfo := New()
   109  	tpInfo.ThickPOS = true
   110  	tpInfo.EgressGatewayEnabled = true
   111  	tpInfo.GatewayRateLimitingEnabled = true
   112  	tpInfo.LinkerdIdentityCertDuration = 92
   113  	tpInfo.LinkerdIdentityCertRenewBefore = 72
   114  	tpInfo.UplinkRateLimit = 10 * mbitRate
   115  	tpInfo.DownlinkRateLimit = 10 * mbitRate
   116  	return tpInfo
   117  }
   118  
   119  func overrideConfigMapData(data map[string]string) *v1.ConfigMap {
   120  	cm := newTopologyInfoConfigMap()
   121  	cm.Data = data
   122  	return &cm
   123  }
   124  

View as plain text