@@ -20,11 +20,11 @@ import (
20
20
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
21
21
"k8s.io/apimachinery/pkg/runtime"
22
22
"k8s.io/apimachinery/pkg/runtime/schema"
23
- "k8s.io/client-go/kubernetes "
23
+ "k8s.io/apimachinery/pkg/watch "
24
24
"k8s.io/client-go/kubernetes/scheme"
25
25
clock "k8s.io/utils/clock/testing"
26
26
"sigs.k8s.io/controller-runtime/pkg/client"
27
- "sigs.k8s.io/controller-runtime/pkg/envtest "
27
+ ctrlfake "sigs.k8s.io/controller-runtime/pkg/client/fake "
28
28
"sigs.k8s.io/controller-runtime/pkg/log"
29
29
"sigs.k8s.io/controller-runtime/pkg/reconcile"
30
30
)
39
39
var ctx context.Context
40
40
var fakeClock * clock.FakeClock
41
41
var controller * events.Controller [* test.CustomObject ]
42
- var environment envtest.Environment
43
42
var kubeClient client.Client
43
+ var eventChannel chan watch.Event
44
44
45
45
func Test (t * testing.T ) {
46
46
lo .Must0 (SchemeBuilder .AddToScheme (scheme .Scheme ))
@@ -52,15 +52,13 @@ var _ = BeforeSuite(func() {
52
52
ctx = log .IntoContext (context .Background (), ginkgo .GinkgoLogr )
53
53
54
54
fakeClock = clock .NewFakeClock (time .Now ())
55
- environment = envtest.Environment {Scheme : scheme .Scheme }
56
- _ = lo .Must (environment .Start ())
57
- kubeClient = lo .Must (client .New (environment .Config , client.Options {Scheme : scheme .Scheme }))
55
+ kubeClient = ctrlfake .NewClientBuilder ().WithScheme (scheme .Scheme ).WithIndex (& corev1.Event {}, "involvedObject.kind" , func (o client.Object ) []string {
56
+ evt := o .(* corev1.Event )
57
+ return []string {evt .InvolvedObject .Kind }
58
+ }).Build ()
58
59
59
- controller = events .NewController [* test.CustomObject ](ctx , kubeClient , fakeClock , kubernetes .NewForConfigOrDie (environment .Config ))
60
- })
61
-
62
- var _ = AfterSuite (func () {
63
- environment .Stop ()
60
+ eventChannel = make (chan watch.Event , 1000 )
61
+ controller = events .NewController [* test.CustomObject ](ctx , kubeClient , fakeClock , eventChannel )
64
62
})
65
63
66
64
var _ = Describe ("Controller" , func () {
@@ -78,8 +76,11 @@ var _ = Describe("Controller", func() {
78
76
// expect an metrics for custom object to be zero, waiting on controller reconcile
79
77
Expect (GetMetric ("operator_customobject_event_total" , conditionLabels (fmt .Sprintf ("Test-type-%d" , i ), fmt .Sprintf ("Test-reason-%d" , i )))).To (BeNil ())
80
78
79
+ eventChannel <- watch.Event {
80
+ Object : events [i ],
81
+ }
81
82
// reconcile on the event
82
- _ , err := singleton .AsChannelObjectReconciler (controller . EventWatch . ResultChan () , controller ).Reconcile (ctx , reconcile.Request {})
83
+ _ , err := singleton .AsChannelObjectReconciler (eventChannel , controller ).Reconcile (ctx , reconcile.Request {})
83
84
Expect (err ).ToNot (HaveOccurred ())
84
85
85
86
// expect an emitted metric to for the event
@@ -95,8 +96,11 @@ var _ = Describe("Controller", func() {
95
96
// expect an metrics for custom object to be zero, waiting on controller reconcile
96
97
Expect (GetMetric ("operator_ustomobject_event_total" , conditionLabels (corev1 .EventTypeNormal , "reason" ))).To (BeNil ())
97
98
99
+ eventChannel <- watch.Event {
100
+ Object : event ,
101
+ }
98
102
// reconcile on the event
99
- _ , err := singleton .AsChannelObjectReconciler (controller . EventWatch . ResultChan () , controller ).Reconcile (ctx , reconcile.Request {NamespacedName : client .ObjectKeyFromObject (event )})
103
+ _ , err := singleton .AsChannelObjectReconciler (eventChannel , controller ).Reconcile (ctx , reconcile.Request {NamespacedName : client .ObjectKeyFromObject (event )})
100
104
Expect (err ).ToNot (HaveOccurred ())
101
105
102
106
// expect not have an emitted metric to for the event
@@ -106,8 +110,11 @@ var _ = Describe("Controller", func() {
106
110
event .LastTimestamp .Time = time .Now ().Add (- 30 * time .Minute )
107
111
ExpectApplied (ctx , kubeClient , event )
108
112
113
+ eventChannel <- watch.Event {
114
+ Object : event ,
115
+ }
109
116
// reconcile on the event
110
- _ , err = singleton .AsChannelObjectReconciler (controller . EventWatch . ResultChan () , controller ).Reconcile (ctx , reconcile.Request {NamespacedName : client .ObjectKeyFromObject (event )})
117
+ _ , err = singleton .AsChannelObjectReconciler (eventChannel , controller ).Reconcile (ctx , reconcile.Request {NamespacedName : client .ObjectKeyFromObject (event )})
111
118
Expect (err ).ToNot (HaveOccurred ())
112
119
113
120
// expect an emitted metric to for the event
0 commit comments