@@ -19,8 +19,11 @@ package endpointslicemirroring
19
19
import (
20
20
"testing"
21
21
22
+ "github.com/stretchr/testify/assert"
23
+
22
24
discovery "k8s.io/api/discovery/v1beta1"
23
25
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26
+ "k8s.io/apimachinery/pkg/types"
24
27
)
25
28
26
29
func TestEndpointSliceTrackerUpdate (t * testing.T ) {
@@ -43,47 +46,69 @@ func TestEndpointSliceTrackerUpdate(t *testing.T) {
43
46
epSlice1DifferentRV .ResourceVersion = "rv2"
44
47
45
48
testCases := map [string ]struct {
46
- updateParam * discovery.EndpointSlice
47
- checksParam * discovery.EndpointSlice
48
- expectHas bool
49
- expectStale bool
49
+ updateParam * discovery.EndpointSlice
50
+ checksParam * discovery.EndpointSlice
51
+ expectHas bool
52
+ expectStale bool
53
+ expectResourceVersionsByService map [types.NamespacedName ]endpointSliceResourceVersions
50
54
}{
51
55
"same slice" : {
52
56
updateParam : epSlice1 ,
53
57
checksParam : epSlice1 ,
54
58
expectHas : true ,
55
59
expectStale : false ,
60
+ expectResourceVersionsByService : map [types.NamespacedName ]endpointSliceResourceVersions {
61
+ {Namespace : epSlice1 .Namespace , Name : "svc1" }: {
62
+ epSlice1 .Name : epSlice1 .ResourceVersion ,
63
+ },
64
+ },
56
65
},
57
66
"different namespace" : {
58
67
updateParam : epSlice1 ,
59
68
checksParam : epSlice1DifferentNS ,
60
69
expectHas : false ,
61
70
expectStale : true ,
71
+ expectResourceVersionsByService : map [types.NamespacedName ]endpointSliceResourceVersions {
72
+ {Namespace : epSlice1 .Namespace , Name : "svc1" }: {
73
+ epSlice1 .Name : epSlice1 .ResourceVersion ,
74
+ },
75
+ },
62
76
},
63
77
"different service" : {
64
78
updateParam : epSlice1 ,
65
79
checksParam : epSlice1DifferentService ,
66
80
expectHas : false ,
67
81
expectStale : true ,
82
+ expectResourceVersionsByService : map [types.NamespacedName ]endpointSliceResourceVersions {
83
+ {Namespace : epSlice1 .Namespace , Name : "svc1" }: {
84
+ epSlice1 .Name : epSlice1 .ResourceVersion ,
85
+ },
86
+ },
68
87
},
69
88
"different resource version" : {
70
89
updateParam : epSlice1 ,
71
90
checksParam : epSlice1DifferentRV ,
72
91
expectHas : true ,
73
92
expectStale : true ,
93
+ expectResourceVersionsByService : map [types.NamespacedName ]endpointSliceResourceVersions {
94
+ {Namespace : epSlice1 .Namespace , Name : "svc1" }: {
95
+ epSlice1 .Name : epSlice1 .ResourceVersion ,
96
+ },
97
+ },
74
98
},
75
99
}
76
100
77
101
for name , tc := range testCases {
78
102
t .Run (name , func (t * testing.T ) {
79
103
esTracker := newEndpointSliceTracker ()
80
- esTracker .update (tc .updateParam )
81
- if esTracker .has (tc .checksParam ) != tc .expectHas {
82
- t .Errorf ("tc.tracker.has (%+v) == %t, expected %t" , tc .checksParam , esTracker .has (tc .checksParam ), tc .expectHas )
104
+ esTracker .Update (tc .updateParam )
105
+ if esTracker .Has (tc .checksParam ) != tc .expectHas {
106
+ t .Errorf ("tc.tracker.Has (%+v) == %t, expected %t" , tc .checksParam , esTracker .Has (tc .checksParam ), tc .expectHas )
83
107
}
84
- if esTracker .stale (tc .checksParam ) != tc .expectStale {
85
- t .Errorf ("tc.tracker.stale (%+v) == %t, expected %t" , tc .checksParam , esTracker .stale (tc .checksParam ), tc .expectStale )
108
+ if esTracker .Stale (tc .checksParam ) != tc .expectStale {
109
+ t .Errorf ("tc.tracker.Stale (%+v) == %t, expected %t" , tc .checksParam , esTracker .Stale (tc .checksParam ), tc .expectStale )
86
110
}
111
+ assert .Equal (t , tc .expectResourceVersionsByService , esTracker .resourceVersionsByService )
87
112
})
88
113
}
89
114
}
@@ -160,15 +185,81 @@ func TestEndpointSliceTrackerDelete(t *testing.T) {
160
185
for name , tc := range testCases {
161
186
t .Run (name , func (t * testing.T ) {
162
187
esTracker := newEndpointSliceTracker ()
163
- esTracker .update (epSlice1 )
188
+ esTracker .Update (epSlice1 )
164
189
165
- esTracker .delete (tc .deleteParam )
166
- if esTracker .has (tc .checksParam ) != tc .expectHas {
167
- t .Errorf ("esTracker.has(%+v) == %t, expected %t" , tc .checksParam , esTracker .has (tc .checksParam ), tc .expectHas )
190
+ esTracker .Delete (tc .deleteParam )
191
+ if esTracker .Has (tc .checksParam ) != tc .expectHas {
192
+ t .Errorf ("esTracker.Has(%+v) == %t, expected %t" , tc .checksParam , esTracker .Has (tc .checksParam ), tc .expectHas )
193
+ }
194
+ if esTracker .Stale (tc .checksParam ) != tc .expectStale {
195
+ t .Errorf ("esTracker.Stale(%+v) == %t, expected %t" , tc .checksParam , esTracker .Stale (tc .checksParam ), tc .expectStale )
196
+ }
197
+ })
198
+ }
199
+ }
200
+
201
+ func TestEndpointSliceTrackerDeleteService (t * testing.T ) {
202
+ svcName1 , svcNS1 := "svc1" , "ns1"
203
+ svcName2 , svcNS2 := "svc2" , "ns2"
204
+ epSlice1 := & discovery.EndpointSlice {
205
+ ObjectMeta : metav1.ObjectMeta {
206
+ Name : "example-1" ,
207
+ Namespace : svcNS1 ,
208
+ ResourceVersion : "rv1" ,
209
+ Labels : map [string ]string {discovery .LabelServiceName : svcName1 },
210
+ },
211
+ }
212
+
213
+ testCases := map [string ]struct {
214
+ updateParam * discovery.EndpointSlice
215
+ deleteServiceParam * types.NamespacedName
216
+ expectHas bool
217
+ expectStale bool
218
+ expectResourceVersionsByService map [types.NamespacedName ]endpointSliceResourceVersions
219
+ }{
220
+ "same service" : {
221
+ updateParam : epSlice1 ,
222
+ deleteServiceParam : & types.NamespacedName {Namespace : svcNS1 , Name : svcName1 },
223
+ expectHas : false ,
224
+ expectStale : true ,
225
+ expectResourceVersionsByService : map [types.NamespacedName ]endpointSliceResourceVersions {},
226
+ },
227
+ "different namespace" : {
228
+ updateParam : epSlice1 ,
229
+ deleteServiceParam : & types.NamespacedName {Namespace : svcNS2 , Name : svcName1 },
230
+ expectHas : true ,
231
+ expectStale : false ,
232
+ expectResourceVersionsByService : map [types.NamespacedName ]endpointSliceResourceVersions {
233
+ {Namespace : epSlice1 .Namespace , Name : "svc1" }: {
234
+ epSlice1 .Name : epSlice1 .ResourceVersion ,
235
+ },
236
+ },
237
+ },
238
+ "different service" : {
239
+ updateParam : epSlice1 ,
240
+ deleteServiceParam : & types.NamespacedName {Namespace : svcNS1 , Name : svcName2 },
241
+ expectHas : true ,
242
+ expectStale : false ,
243
+ expectResourceVersionsByService : map [types.NamespacedName ]endpointSliceResourceVersions {
244
+ {Namespace : epSlice1 .Namespace , Name : "svc1" }: {
245
+ epSlice1 .Name : epSlice1 .ResourceVersion ,
246
+ },
247
+ },
248
+ },
249
+ }
250
+
251
+ for name , tc := range testCases {
252
+ t .Run (name , func (t * testing.T ) {
253
+ esTracker := newEndpointSliceTracker ()
254
+ esTracker .Update (tc .updateParam )
255
+ esTracker .DeleteService (tc .deleteServiceParam .Namespace , tc .deleteServiceParam .Name )
256
+ if esTracker .Has (tc .updateParam ) != tc .expectHas {
257
+ t .Errorf ("tc.tracker.Has(%+v) == %t, expected %t" , tc .updateParam , esTracker .Has (tc .updateParam ), tc .expectHas )
168
258
}
169
- if esTracker .stale (tc .checksParam ) != tc .expectStale {
170
- t .Errorf ("esTracker.stale (%+v) == %t, expected %t" , tc .checksParam , esTracker .stale (tc .checksParam ), tc .expectStale )
259
+ if esTracker .Stale (tc .updateParam ) != tc .expectStale {
260
+ t .Errorf ("tc.tracker.Stale (%+v) == %t, expected %t" , tc .updateParam , esTracker .Stale (tc .updateParam ), tc .expectStale )
171
261
}
262
+ assert .Equal (t , tc .expectResourceVersionsByService , esTracker .resourceVersionsByService )
172
263
})
173
264
}
174
265
}
0 commit comments