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
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