@@ -19,8 +19,11 @@ package endpointslice
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,34 +46,55 @@ 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
@@ -84,6 +108,7 @@ func TestEndpointSliceTrackerUpdate(t *testing.T) {
84
108
if esTracker .Stale (tc .checksParam ) != tc .expectStale {
85
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
}
@@ -172,3 +197,69 @@ func TestEndpointSliceTrackerDelete(t *testing.T) {
172
197
})
173
198
}
174
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 )
258
+ }
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 )
261
+ }
262
+ assert .Equal (t , tc .expectResourceVersionsByService , esTracker .resourceVersionsByService )
263
+ })
264
+ }
265
+ }
0 commit comments