From 9c8b6bafb39b4b229552754611f20434623c2c64 Mon Sep 17 00:00:00 2001 From: varshaprasad96 Date: Fri, 5 Feb 2021 17:12:22 -0800 Subject: [PATCH] :sparkles: Add testcases in controller when source.Channel is passed Added tests to verify the controller implementation when `source.Channel` is passed. --- pkg/internal/controller/controller_test.go | 38 ++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/pkg/internal/controller/controller_test.go b/pkg/internal/controller/controller_test.go index 3a96104adc..9699992ee5 100644 --- a/pkg/internal/controller/controller_test.go +++ b/pkg/internal/controller/controller_test.go @@ -28,6 +28,7 @@ import ( dto "github.com/prometheus/client_model/go" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" "k8s.io/client-go/util/workqueue" "sigs.k8s.io/controller-runtime/pkg/cache" @@ -172,14 +173,42 @@ var _ = Describe("controller", func() { }, 10.0) It("should not error when channel is passed as a source", func(done Done) { + eventCount := 0 + // channel to be closed when event is processed + processed := make(chan struct{}) + // source channel to be injected + ch := make(chan event.GenericEvent, 1) + ctx, cancel := context.WithCancel(context.TODO()) defer cancel() - ins := &source.Channel{Source: make(chan event.GenericEvent)} - Expect(inject.StopChannelInto(make(<-chan struct{}), ins)).To(BeTrue()) + // event to be sent to the channel + p := &corev1.Pod{ + ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "bar"}, + } + evt := event.GenericEvent{ + Object: p, + } + + ins := &source.Channel{Source: ch} + ins.DestBufferSize = 1 + Expect(inject.StopChannelInto(ctx.Done(), ins)).To(BeTrue()) + + // send the event to the channel + ch <- evt ctrl.startWatches = []watchDescription{{ src: ins, + handler: handler.Funcs{ + GenericFunc: func(evt event.GenericEvent, q workqueue.RateLimitingInterface) { + defer GinkgoRecover() + eventCount++ + + if eventCount > 0 { + close(processed) + } + }, + }, }} go func() { @@ -187,6 +216,11 @@ var _ = Describe("controller", func() { Expect(ctrl.Start(ctx)).To(Succeed()) }() + select { + case <-processed: + Expect(eventCount).To(BeEquivalentTo(1)) + } + close(done) })