@@ -18,6 +18,7 @@ package handler_test
1818
1919import (
2020"context"
21+ "time"
2122
2223. "github.com/onsi/ginkgo/v2"
2324. "github.com/onsi/gomega"
@@ -776,8 +777,11 @@ var _ = Describe("Eventhandler", func() {
776777
777778Describe ("WithLowPriorityWhenUnchanged" , func () {
778779handlerPriorityTests := []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
781785}{
782786{
783787name : "WithLowPriorityWhenUnchanged wrapper" ,
@@ -837,6 +841,103 @@ var _ = Describe("Eventhandler", func() {
837841})
838842},
839843},
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+ },
840941}
841942for _ , test := range handlerPriorityTests {
842943When ("handler is " + test .name , func () {
@@ -862,7 +963,16 @@ var _ = Describe("Eventhandler", func() {
862963IsInInitialList : true ,
863964}, wq )
864965
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+ }))
866976Expect (actualRequests ).To (Equal ([]reconcile.Request {{NamespacedName : types.NamespacedName {Name : "my-pod" }}}))
867977})
868978
@@ -888,10 +998,12 @@ var _ = Describe("Eventhandler", func() {
888998IsInInitialList : false ,
889999}, wq )
8901000
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 }))
8951007Expect (actualRequests ).To (Equal ([]reconcile.Request {{NamespacedName : types.NamespacedName {Name : "my-pod" }}}))
8961008})
8971009
@@ -922,7 +1034,12 @@ var _ = Describe("Eventhandler", func() {
9221034}},
9231035}, wq )
9241036
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 )}))
9261043Expect (actualRequests ).To (Equal ([]reconcile.Request {{NamespacedName : types.NamespacedName {Name : "my-pod" }}}))
9271044})
9281045
@@ -954,10 +1071,11 @@ var _ = Describe("Eventhandler", func() {
9541071}},
9551072}, wq )
9561073
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 }))
9611079Expect (actualRequests ).To (Equal ([]reconcile.Request {{NamespacedName : types.NamespacedName {Name : "my-pod" }}}))
9621080})
9631081
0 commit comments