@@ -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,12 @@ 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
+ var expectedPriority * int
1002
+ if test .overridePriority != 0 {
1003
+ expectedPriority = & test .overridePriority
1004
+ }
1005
+
1006
+ Expect (actualOpts ).To (Equal (priorityqueue.AddOpts {After : test .after , RateLimited : test .ratelimited , Priority : expectedPriority }))
895
1007
Expect (actualRequests ).To (Equal ([]reconcile.Request {{NamespacedName : types.NamespacedName {Name : "my-pod" }}}))
896
1008
})
897
1009
@@ -922,7 +1034,12 @@ var _ = Describe("Eventhandler", func() {
922
1034
}},
923
1035
}, wq )
924
1036
925
- Expect (actualOpts ).To (Equal (priorityqueue.AddOpts {Priority : ptr .To (handler .LowPriority )}))
1037
+ expectedPriority := handler .LowPriority
1038
+ if test .overridePriority != 0 {
1039
+ expectedPriority = test .overridePriority
1040
+ }
1041
+
1042
+ Expect (actualOpts ).To (Equal (priorityqueue.AddOpts {After : test .after , RateLimited : test .ratelimited , Priority : ptr .To (expectedPriority )}))
926
1043
Expect (actualRequests ).To (Equal ([]reconcile.Request {{NamespacedName : types.NamespacedName {Name : "my-pod" }}}))
927
1044
})
928
1045
@@ -954,10 +1071,11 @@ var _ = Describe("Eventhandler", func() {
954
1071
}},
955
1072
}, wq )
956
1073
957
- Expect (actualOpts ).To (Or (
958
- Equal (priorityqueue.AddOpts {}),
959
- Equal (priorityqueue.AddOpts {Priority : ptr .To (0 )}),
960
- ))
1074
+ var expectedPriority * int
1075
+ if test .overridePriority != 0 {
1076
+ expectedPriority = & test .overridePriority
1077
+ }
1078
+ Expect (actualOpts ).To (Equal (priorityqueue.AddOpts {After : test .after , RateLimited : test .ratelimited , Priority : expectedPriority }))
961
1079
Expect (actualRequests ).To (Equal ([]reconcile.Request {{NamespacedName : types.NamespacedName {Name : "my-pod" }}}))
962
1080
})
963
1081
0 commit comments