Skip to content

Commit 98e292e

Browse files
committed
Fix recorder integration test
Signed-off-by: Borja Clemente <[email protected]>
1 parent 690a021 commit 98e292e

File tree

1 file changed

+19
-84
lines changed

1 file changed

+19
-84
lines changed

pkg/internal/recorder/recorder_integration_test.go

Lines changed: 19 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,11 @@ import (
2323
corev1 "k8s.io/api/core/v1"
2424
eventsv1 "k8s.io/api/events/v1"
2525
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26+
"k8s.io/apimachinery/pkg/fields"
2627
"k8s.io/apimachinery/pkg/watch"
27-
"k8s.io/client-go/kubernetes"
2828
"k8s.io/client-go/kubernetes/scheme"
2929
ref "k8s.io/client-go/tools/reference"
3030
"sigs.k8s.io/controller-runtime/pkg/controller"
31-
"sigs.k8s.io/controller-runtime/pkg/envtest"
3231
"sigs.k8s.io/controller-runtime/pkg/handler"
3332
"sigs.k8s.io/controller-runtime/pkg/manager"
3433
"sigs.k8s.io/controller-runtime/pkg/reconcile"
@@ -46,13 +45,15 @@ var _ = Describe("recorder", func() {
4645
Expect(err).NotTo(HaveOccurred())
4746

4847
By("Creating the Controller")
49-
recorder := cm.GetEventRecorderFor("test-deprecated-recorder") //nolint:staticcheck
48+
deprecatedRecorder := cm.GetEventRecorderFor("test-deprecated-recorder") //nolint:staticcheck
49+
recorder := cm.GetEventRecorder("test-deprecated-recorder")
5050
instance, err := controller.New("foo-controller", cm, controller.Options{
5151
Reconciler: reconcile.Func(
5252
func(ctx context.Context, request reconcile.Request) (reconcile.Result, error) {
5353
dp, err := clientset.AppsV1().Deployments(request.Namespace).Get(ctx, request.Name, metav1.GetOptions{})
5454
Expect(err).NotTo(HaveOccurred())
55-
recorder.Event(dp, corev1.EventTypeNormal, "test-reason", "test-msg")
55+
deprecatedRecorder.Event(dp, corev1.EventTypeNormal, "deprecated-test-reason", "deprecated-test-msg")
56+
recorder.Eventf(dp, nil, corev1.EventTypeNormal, "test-reason", "test-action", "test-note")
5657
return reconcile.Result{}, nil
5758
}),
5859
})
@@ -92,107 +93,41 @@ var _ = Describe("recorder", func() {
9293
deployment, err = clientset.AppsV1().Deployments("default").Create(ctx, deployment, metav1.CreateOptions{})
9394
Expect(err).NotTo(HaveOccurred())
9495

95-
By("Validate event is published as expected")
96-
evtWatcher, err := clientset.CoreV1().Events("default").Watch(ctx, metav1.ListOptions{})
96+
// watch both deprecated and new events based on the reason
97+
By("Validate deprecated event is published as expected")
98+
deprecatedEvtWatcher, err := clientset.CoreV1().Events("default").Watch(ctx,
99+
metav1.ListOptions{FieldSelector: fields.OneTermEqualSelector("reason", "deprecated-test-reason").String()})
97100
Expect(err).NotTo(HaveOccurred())
98101

99-
resultEvent := <-evtWatcher.ResultChan()
102+
resultEvent := <-deprecatedEvtWatcher.ResultChan()
100103

101104
Expect(resultEvent.Type).To(Equal(watch.Added))
102-
evt, isEvent := resultEvent.Object.(*corev1.Event)
105+
deprecatedEvt, isEvent := resultEvent.Object.(*corev1.Event)
103106
Expect(isEvent).To(BeTrue())
104107

105108
dpRef, err := ref.GetReference(scheme.Scheme, deployment)
106109
Expect(err).NotTo(HaveOccurred())
107110

108-
Expect(evt.InvolvedObject).To(Equal(*dpRef))
109-
Expect(evt.Type).To(Equal(corev1.EventTypeNormal))
110-
Expect(evt.Reason).To(Equal("test-reason"))
111-
Expect(evt.Message).To(Equal("test-msg"))
112-
})
113-
})
114-
115-
Describe("recorder", func() {
116-
It("should publish events", func(ctx SpecContext) {
117-
By("Creating the Manager")
118-
// this test needs its own env for now to not interfere with the previous one.
119-
// Once the deprecated API is removed this can be removed.
120-
testenv := &envtest.Environment{}
121-
122-
cfg, err := testenv.Start()
123-
Expect(err).NotTo(HaveOccurred())
124-
defer testenv.Stop() //nolint:errcheck
125-
126-
clientset, err := kubernetes.NewForConfig(cfg)
127-
Expect(err).NotTo(HaveOccurred())
128-
129-
cm, err := manager.New(cfg, manager.Options{})
130-
Expect(err).NotTo(HaveOccurred())
131-
132-
By("Creating the Controller")
133-
recorder := cm.GetEventRecorder("test-recorder")
134-
instance, err := controller.New("bar-controller", cm, controller.Options{
135-
Reconciler: reconcile.Func(
136-
func(ctx context.Context, request reconcile.Request) (reconcile.Result, error) {
137-
dp, err := clientset.AppsV1().Deployments(request.Namespace).Get(ctx, request.Name, metav1.GetOptions{})
138-
Expect(err).NotTo(HaveOccurred())
139-
recorder.Eventf(dp, nil, corev1.EventTypeNormal, "test-reason", "test-action", "test-msg")
140-
return reconcile.Result{}, nil
141-
}),
142-
})
143-
Expect(err).NotTo(HaveOccurred())
144-
145-
By("Watching Resources")
146-
err = instance.Watch(source.Kind(cm.GetCache(), &appsv1.Deployment{}, &handler.TypedEnqueueRequestForObject[*appsv1.Deployment]{}))
147-
Expect(err).NotTo(HaveOccurred())
148-
149-
By("Starting the Manager")
150-
go func() {
151-
defer GinkgoRecover()
152-
Expect(cm.Start(ctx)).NotTo(HaveOccurred())
153-
}()
154-
155-
deployment := &appsv1.Deployment{
156-
ObjectMeta: metav1.ObjectMeta{Name: "deployment-name"},
157-
Spec: appsv1.DeploymentSpec{
158-
Selector: &metav1.LabelSelector{
159-
MatchLabels: map[string]string{"foo": "bar"},
160-
},
161-
Template: corev1.PodTemplateSpec{
162-
ObjectMeta: metav1.ObjectMeta{Labels: map[string]string{"foo": "bar"}},
163-
Spec: corev1.PodSpec{
164-
Containers: []corev1.Container{
165-
{
166-
Name: "nginx",
167-
Image: "nginx",
168-
},
169-
},
170-
},
171-
},
172-
},
173-
}
174-
175-
By("Invoking Reconciling")
176-
deployment, err = clientset.AppsV1().Deployments("default").Create(ctx, deployment, metav1.CreateOptions{})
177-
Expect(err).NotTo(HaveOccurred())
111+
Expect(deprecatedEvt.InvolvedObject).To(Equal(*dpRef))
112+
Expect(deprecatedEvt.Type).To(Equal(corev1.EventTypeNormal))
113+
Expect(deprecatedEvt.Reason).To(Equal("deprecated-test-reason"))
114+
Expect(deprecatedEvt.Message).To(Equal("deprecated-test-msg"))
178115

179116
By("Validate event is published as expected")
180-
evtWatcher, err := clientset.EventsV1().Events("default").Watch(ctx, metav1.ListOptions{})
117+
evtWatcher, err := clientset.EventsV1().Events("default").Watch(ctx,
118+
metav1.ListOptions{FieldSelector: fields.OneTermEqualSelector("reason", "test-reason").String()})
181119
Expect(err).NotTo(HaveOccurred())
182120

183-
resultEvent := <-evtWatcher.ResultChan()
121+
resultEvent = <-evtWatcher.ResultChan()
184122

185123
Expect(resultEvent.Type).To(Equal(watch.Added))
186124
evt, isEvent := resultEvent.Object.(*eventsv1.Event)
187125
Expect(isEvent).To(BeTrue())
188126

189-
dpRef, err := ref.GetReference(scheme.Scheme, deployment)
190-
Expect(err).NotTo(HaveOccurred())
191-
192127
Expect(evt.Regarding).To(Equal(*dpRef))
193128
Expect(evt.Type).To(Equal(corev1.EventTypeNormal))
194129
Expect(evt.Reason).To(Equal("test-reason"))
195-
Expect(evt.Note).To(Equal("test-msg"))
130+
Expect(evt.Note).To(Equal("test-note"))
196131
})
197132
})
198133
})

0 commit comments

Comments
 (0)