@@ -4,9 +4,13 @@ import (
4
4
"testing"
5
5
6
6
. "github.com/onsi/gomega"
7
+ appsv1 "k8s.io/api/apps/v1"
8
+ corev1 "k8s.io/api/core/v1"
7
9
apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
8
10
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
9
11
"sigs.k8s.io/controller-runtime/pkg/event"
12
+
13
+ "github.com/nginx/nginx-gateway-fabric/internal/framework/controller"
10
14
)
11
15
12
16
func TestAnnotationPredicate_Create (t * testing.T ) {
@@ -222,3 +226,177 @@ func TestAnnotationPredicate_Update(t *testing.T) {
222
226
})
223
227
}
224
228
}
229
+
230
+ func TestRestartDeploymentAnnotationPredicate_Update (t * testing.T ) {
231
+ t .Parallel ()
232
+
233
+ tests := []struct {
234
+ event event.UpdateEvent
235
+ name string
236
+ expUpdate bool
237
+ }{
238
+ {
239
+ name : "annotation added" ,
240
+ event : event.UpdateEvent {
241
+ ObjectOld : & appsv1.Deployment {
242
+ Spec : appsv1.DeploymentSpec {
243
+ Template : corev1.PodTemplateSpec {
244
+ ObjectMeta : metav1.ObjectMeta {
245
+ Annotations : map [string ]string {},
246
+ },
247
+ },
248
+ },
249
+ },
250
+ ObjectNew : & appsv1.Deployment {
251
+ Spec : appsv1.DeploymentSpec {
252
+ Template : corev1.PodTemplateSpec {
253
+ ObjectMeta : metav1.ObjectMeta {
254
+ Annotations : map [string ]string {
255
+ controller .RestartedAnnotation : "true" ,
256
+ },
257
+ },
258
+ },
259
+ },
260
+ },
261
+ },
262
+ expUpdate : false ,
263
+ },
264
+ {
265
+ name : "annotation changed" ,
266
+ event : event.UpdateEvent {
267
+ ObjectOld : & appsv1.Deployment {
268
+ Spec : appsv1.DeploymentSpec {
269
+ Template : corev1.PodTemplateSpec {
270
+ ObjectMeta : metav1.ObjectMeta {
271
+ Annotations : map [string ]string {
272
+ controller .RestartedAnnotation : "false" ,
273
+ },
274
+ },
275
+ },
276
+ },
277
+ },
278
+ ObjectNew : & appsv1.Deployment {
279
+ Spec : appsv1.DeploymentSpec {
280
+ Template : corev1.PodTemplateSpec {
281
+ ObjectMeta : metav1.ObjectMeta {
282
+ Annotations : map [string ]string {
283
+ controller .RestartedAnnotation : "true" ,
284
+ },
285
+ },
286
+ },
287
+ },
288
+ },
289
+ },
290
+ expUpdate : false ,
291
+ },
292
+ {
293
+ name : "annotation removed" ,
294
+ event : event.UpdateEvent {
295
+ ObjectOld : & appsv1.Deployment {
296
+ Spec : appsv1.DeploymentSpec {
297
+ Template : corev1.PodTemplateSpec {
298
+ ObjectMeta : metav1.ObjectMeta {
299
+ Annotations : map [string ]string {
300
+ controller .RestartedAnnotation : "true" ,
301
+ },
302
+ },
303
+ },
304
+ },
305
+ },
306
+ ObjectNew : & appsv1.Deployment {
307
+ Spec : appsv1.DeploymentSpec {
308
+ Template : corev1.PodTemplateSpec {
309
+ ObjectMeta : metav1.ObjectMeta {
310
+ Annotations : map [string ]string {},
311
+ },
312
+ },
313
+ },
314
+ },
315
+ },
316
+ expUpdate : true ,
317
+ },
318
+ {
319
+ name : "annotation unchanged" ,
320
+ event : event.UpdateEvent {
321
+ ObjectOld : & appsv1.Deployment {
322
+ Spec : appsv1.DeploymentSpec {
323
+ Template : corev1.PodTemplateSpec {
324
+ ObjectMeta : metav1.ObjectMeta {
325
+ Annotations : map [string ]string {
326
+ controller .RestartedAnnotation : "true" ,
327
+ },
328
+ },
329
+ },
330
+ },
331
+ },
332
+ ObjectNew : & appsv1.Deployment {
333
+ Spec : appsv1.DeploymentSpec {
334
+ Template : corev1.PodTemplateSpec {
335
+ ObjectMeta : metav1.ObjectMeta {
336
+ Annotations : map [string ]string {
337
+ controller .RestartedAnnotation : "true" ,
338
+ },
339
+ },
340
+ },
341
+ },
342
+ },
343
+ },
344
+ expUpdate : true ,
345
+ },
346
+ {
347
+ name : "old object is nil" ,
348
+ event : event.UpdateEvent {
349
+ ObjectOld : nil ,
350
+ ObjectNew : & appsv1.Deployment {
351
+ Spec : appsv1.DeploymentSpec {
352
+ Template : corev1.PodTemplateSpec {
353
+ ObjectMeta : metav1.ObjectMeta {
354
+ Annotations : map [string ]string {
355
+ controller .RestartedAnnotation : "true" ,
356
+ },
357
+ },
358
+ },
359
+ },
360
+ },
361
+ },
362
+ expUpdate : false ,
363
+ },
364
+ {
365
+ name : "new object is nil" ,
366
+ event : event.UpdateEvent {
367
+ ObjectOld : & appsv1.Deployment {
368
+ Spec : appsv1.DeploymentSpec {
369
+ Template : corev1.PodTemplateSpec {
370
+ ObjectMeta : metav1.ObjectMeta {
371
+ Annotations : map [string ]string {
372
+ controller .RestartedAnnotation : "true" ,
373
+ },
374
+ },
375
+ },
376
+ },
377
+ },
378
+ ObjectNew : nil ,
379
+ },
380
+ expUpdate : false ,
381
+ },
382
+ {
383
+ name : "both objects are nil" ,
384
+ event : event.UpdateEvent {
385
+ ObjectOld : nil ,
386
+ ObjectNew : nil ,
387
+ },
388
+ expUpdate : false ,
389
+ },
390
+ }
391
+
392
+ p := RestartDeploymentAnnotationPredicate {}
393
+
394
+ for _ , test := range tests {
395
+ t .Run (test .name , func (t * testing.T ) {
396
+ t .Parallel ()
397
+ g := NewWithT (t )
398
+ update := p .Update (test .event )
399
+ g .Expect (update ).To (Equal (test .expUpdate ))
400
+ })
401
+ }
402
+ }
0 commit comments