@@ -18,6 +18,7 @@ package handler_test
18
18
19
19
import (
20
20
"context"
21
+ "time"
21
22
22
23
. "github.com/onsi/ginkgo/v2"
23
24
. "github.com/onsi/gomega"
@@ -776,8 +777,11 @@ var _ = Describe("Eventhandler", func() {
776
777
777
778
Describe ("WithLowPriorityWhenUnchanged" , func () {
778
779
handlerPriorityTests := []struct {
779
- name string
780
- handler func () handler.EventHandler
780
+ name string
781
+ handler func () handler.EventHandler
782
+ after time.Duration
783
+ ratelimited bool
784
+ overridePriority int
781
785
}{
782
786
{
783
787
name : "WithLowPriorityWhenUnchanged wrapper" ,
@@ -837,6 +841,103 @@ var _ = Describe("Eventhandler", func() {
837
841
})
838
842
},
839
843
},
844
+ {
845
+ name : "WithLowPriorityWhenUnchanged - Add" ,
846
+ handler : func () handler.EventHandler {
847
+ return handler .WithLowPriorityWhenUnchanged (
848
+ handler.TypedFuncs [client.Object , reconcile.Request ]{
849
+ CreateFunc : func (ctx context.Context , tce event.TypedCreateEvent [client.Object ], wq workqueue.TypedRateLimitingInterface [reconcile.Request ]) {
850
+ wq .Add (reconcile.Request {NamespacedName : types.NamespacedName {
851
+ Namespace : tce .Object .GetNamespace (),
852
+ Name : tce .Object .GetName (),
853
+ }})
854
+ },
855
+ UpdateFunc : func (ctx context.Context , tue event.TypedUpdateEvent [client.Object ], wq workqueue.TypedRateLimitingInterface [reconcile.Request ]) {
856
+ wq .Add (reconcile.Request {NamespacedName : types.NamespacedName {
857
+ Namespace : tue .ObjectNew .GetNamespace (),
858
+ Name : tue .ObjectNew .GetName (),
859
+ }})
860
+ },
861
+ })
862
+ },
863
+ },
864
+ {
865
+ name : "WithLowPriorityWhenUnchanged - AddAfter" ,
866
+ handler : func () handler.EventHandler {
867
+ return handler .WithLowPriorityWhenUnchanged (
868
+ handler.TypedFuncs [client.Object , reconcile.Request ]{
869
+ CreateFunc : func (ctx context.Context , tce event.TypedCreateEvent [client.Object ], wq workqueue.TypedRateLimitingInterface [reconcile.Request ]) {
870
+ wq .AddAfter (reconcile.Request {NamespacedName : types.NamespacedName {
871
+ Namespace : tce .Object .GetNamespace (),
872
+ Name : tce .Object .GetName (),
873
+ }}, time .Second )
874
+ },
875
+ UpdateFunc : func (ctx context.Context , tue event.TypedUpdateEvent [client.Object ], wq workqueue.TypedRateLimitingInterface [reconcile.Request ]) {
876
+ wq .AddAfter (reconcile.Request {NamespacedName : types.NamespacedName {
877
+ Namespace : tue .ObjectNew .GetNamespace (),
878
+ Name : tue .ObjectNew .GetName (),
879
+ }}, time .Second )
880
+ },
881
+ })
882
+ },
883
+ after : time .Second ,
884
+ },
885
+ {
886
+ name : "WithLowPriorityWhenUnchanged - AddRateLimited" ,
887
+ handler : func () handler.EventHandler {
888
+ return handler .WithLowPriorityWhenUnchanged (
889
+ handler.TypedFuncs [client.Object , reconcile.Request ]{
890
+ CreateFunc : func (ctx context.Context , tce event.TypedCreateEvent [client.Object ], wq workqueue.TypedRateLimitingInterface [reconcile.Request ]) {
891
+ wq .AddRateLimited (reconcile.Request {NamespacedName : types.NamespacedName {
892
+ Namespace : tce .Object .GetNamespace (),
893
+ Name : tce .Object .GetName (),
894
+ }})
895
+ },
896
+ UpdateFunc : func (ctx context.Context , tue event.TypedUpdateEvent [client.Object ], wq workqueue.TypedRateLimitingInterface [reconcile.Request ]) {
897
+ wq .AddRateLimited (reconcile.Request {NamespacedName : types.NamespacedName {
898
+ Namespace : tue .ObjectNew .GetNamespace (),
899
+ Name : tue .ObjectNew .GetName (),
900
+ }})
901
+ },
902
+ })
903
+ },
904
+ ratelimited : true ,
905
+ },
906
+ {
907
+ name : "WithLowPriorityWhenUnchanged - AddWithOpts priority is retained" ,
908
+ handler : func () handler.EventHandler {
909
+ return handler .WithLowPriorityWhenUnchanged (
910
+ handler.TypedFuncs [client.Object , reconcile.Request ]{
911
+ CreateFunc : func (ctx context.Context , tce event.TypedCreateEvent [client.Object ], wq workqueue.TypedRateLimitingInterface [reconcile.Request ]) {
912
+ if pq , isPQ := wq .(priorityqueue.PriorityQueue [reconcile.Request ]); isPQ {
913
+ pq .AddWithOpts (priorityqueue.AddOpts {Priority : ptr .To (100 )}, reconcile.Request {NamespacedName : types.NamespacedName {
914
+ Namespace : tce .Object .GetNamespace (),
915
+ Name : tce .Object .GetName (),
916
+ }})
917
+ return
918
+ }
919
+ wq .Add (reconcile.Request {NamespacedName : types.NamespacedName {
920
+ Namespace : tce .Object .GetNamespace (),
921
+ Name : tce .Object .GetName (),
922
+ }})
923
+ },
924
+ UpdateFunc : func (ctx context.Context , tue event.TypedUpdateEvent [client.Object ], wq workqueue.TypedRateLimitingInterface [reconcile.Request ]) {
925
+ if pq , isPQ := wq .(priorityqueue.PriorityQueue [reconcile.Request ]); isPQ {
926
+ pq .AddWithOpts (priorityqueue.AddOpts {Priority : ptr .To (100 )}, reconcile.Request {NamespacedName : types.NamespacedName {
927
+ Namespace : tue .ObjectNew .GetNamespace (),
928
+ Name : tue .ObjectNew .GetName (),
929
+ }})
930
+ return
931
+ }
932
+ wq .Add (reconcile.Request {NamespacedName : types.NamespacedName {
933
+ Namespace : tue .ObjectNew .GetNamespace (),
934
+ Name : tue .ObjectNew .GetName (),
935
+ }})
936
+ },
937
+ })
938
+ },
939
+ overridePriority : 100 ,
940
+ },
840
941
}
841
942
for _ , test := range handlerPriorityTests {
842
943
When ("handler is " + test .name , func () {
@@ -862,7 +963,16 @@ var _ = Describe("Eventhandler", func() {
862
963
IsInInitialList : true ,
863
964
}, wq )
864
965
865
- Expect (actualOpts ).To (Equal (priorityqueue.AddOpts {Priority : ptr .To (handler .LowPriority )}))
966
+ expected := handler .LowPriority
967
+ if test .overridePriority != 0 {
968
+ expected = test .overridePriority
969
+ }
970
+
971
+ Expect (actualOpts ).To (Equal (priorityqueue.AddOpts {
972
+ Priority : ptr .To (expected ),
973
+ After : test .after ,
974
+ RateLimited : test .ratelimited ,
975
+ }))
866
976
Expect (actualRequests ).To (Equal ([]reconcile.Request {{NamespacedName : types.NamespacedName {Name : "my-pod" }}}))
867
977
})
868
978
@@ -888,10 +998,14 @@ var _ = Describe("Eventhandler", func() {
888
998
IsInInitialList : false ,
889
999
}, wq )
890
1000
891
- Expect (actualOpts ).To (Or (
892
- Equal (priorityqueue.AddOpts {}),
893
- Equal (priorityqueue.AddOpts {Priority : ptr .To (0 )}),
894
- ))
1001
+ if test .overridePriority != 0 {
1002
+ Expect (actualOpts ).To (Equal (priorityqueue.AddOpts {After : test .after , RateLimited : test .ratelimited , Priority : ptr .To (test .overridePriority )}))
1003
+ } else {
1004
+ Expect (actualOpts ).To (Or (
1005
+ Equal (priorityqueue.AddOpts {After : test .after , RateLimited : test .ratelimited }),
1006
+ Equal (priorityqueue.AddOpts {After : test .after , RateLimited : test .ratelimited , Priority : ptr .To (0 )}),
1007
+ ))
1008
+ }
895
1009
Expect (actualRequests ).To (Equal ([]reconcile.Request {{NamespacedName : types.NamespacedName {Name : "my-pod" }}}))
896
1010
})
897
1011
@@ -922,7 +1036,12 @@ var _ = Describe("Eventhandler", func() {
922
1036
}},
923
1037
}, wq )
924
1038
925
- Expect (actualOpts ).To (Equal (priorityqueue.AddOpts {Priority : ptr .To (handler .LowPriority )}))
1039
+ expectedPriority := handler .LowPriority
1040
+ if test .overridePriority != 0 {
1041
+ expectedPriority = test .overridePriority
1042
+ }
1043
+
1044
+ Expect (actualOpts ).To (Equal (priorityqueue.AddOpts {After : test .after , RateLimited : test .ratelimited , Priority : ptr .To (expectedPriority )}))
926
1045
Expect (actualRequests ).To (Equal ([]reconcile.Request {{NamespacedName : types.NamespacedName {Name : "my-pod" }}}))
927
1046
})
928
1047
@@ -954,10 +1073,14 @@ var _ = Describe("Eventhandler", func() {
954
1073
}},
955
1074
}, wq )
956
1075
957
- Expect (actualOpts ).To (Or (
958
- Equal (priorityqueue.AddOpts {}),
959
- Equal (priorityqueue.AddOpts {Priority : ptr .To (0 )}),
960
- ))
1076
+ if test .overridePriority != 0 {
1077
+ Expect (actualOpts ).To (Equal (priorityqueue.AddOpts {After : test .after , RateLimited : test .ratelimited , Priority : ptr .To (test .overridePriority )}))
1078
+ } else {
1079
+ Expect (actualOpts ).To (Or (
1080
+ Equal (priorityqueue.AddOpts {After : test .after , RateLimited : test .ratelimited }),
1081
+ Equal (priorityqueue.AddOpts {After : test .after , RateLimited : test .ratelimited , Priority : ptr .To (0 )}),
1082
+ ))
1083
+ }
961
1084
Expect (actualRequests ).To (Equal ([]reconcile.Request {{NamespacedName : types.NamespacedName {Name : "my-pod" }}}))
962
1085
})
963
1086
0 commit comments