Skip to content

Commit 5a1df6f

Browse files
authored
Merge pull request #28 from lichuqiang/covererage_fix
Get source related tests to 100% coverage
2 parents 985614c + 473ea95 commit 5a1df6f

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

pkg/manager/manager_test.go

+21
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,12 @@ var _ = Describe("manger.Manager", func() {
270270
Expect(c).To(Equal(m.GetCache()))
271271
return nil
272272
},
273+
stop: func(stop <-chan struct{}) error {
274+
defer GinkgoRecover()
275+
// Manager stop chan has not been initialized.
276+
Expect(stop).To(BeNil())
277+
return nil
278+
},
273279
f: func(f inject.Func) error {
274280
defer GinkgoRecover()
275281
Expect(f).NotTo(BeNil())
@@ -315,6 +321,12 @@ var _ = Describe("manger.Manager", func() {
315321
},
316322
})
317323
Expect(err).To(Equal(expected))
324+
err = m.SetFields(&injectable{
325+
stop: func(<-chan struct{}) error {
326+
return expected
327+
},
328+
})
329+
Expect(err).To(Equal(expected))
318330
close(done)
319331
})
320332
})
@@ -374,13 +386,15 @@ var _ inject.Cache = &injectable{}
374386
var _ inject.Client = &injectable{}
375387
var _ inject.Scheme = &injectable{}
376388
var _ inject.Config = &injectable{}
389+
var _ inject.Stoppable = &injectable{}
377390

378391
type injectable struct {
379392
scheme func(scheme *runtime.Scheme) error
380393
client func(client.Client) error
381394
config func(config *rest.Config) error
382395
cache func(cache.Cache) error
383396
f func(inject.Func) error
397+
stop func(<-chan struct{}) error
384398
}
385399

386400
func (i *injectable) InjectCache(c cache.Cache) error {
@@ -418,6 +432,13 @@ func (i *injectable) InjectFunc(f inject.Func) error {
418432
return i.f(f)
419433
}
420434

435+
func (i *injectable) InjectStopChannel(stop <-chan struct{}) error {
436+
if i.stop == nil {
437+
return nil
438+
}
439+
return i.stop(stop)
440+
}
441+
421442
func (i *injectable) Start(<-chan struct{}) error {
422443
return nil
423444
}

pkg/source/source_test.go

+14-2
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ import (
2222
"github.com/kubernetes-sigs/controller-runtime/pkg/cache/informertest"
2323
"github.com/kubernetes-sigs/controller-runtime/pkg/event"
2424
"github.com/kubernetes-sigs/controller-runtime/pkg/handler"
25+
"github.com/kubernetes-sigs/controller-runtime/pkg/predicate"
2526
"github.com/kubernetes-sigs/controller-runtime/pkg/runtime/inject"
2627
"github.com/kubernetes-sigs/controller-runtime/pkg/source"
2728
. "github.com/onsi/ginkgo"
2829
. "github.com/onsi/gomega"
2930

30-
"github.com/kubernetes-sigs/controller-runtime/pkg/predicate"
3131
corev1 "k8s.io/api/core/v1"
3232
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3333
"k8s.io/client-go/util/workqueue"
@@ -276,6 +276,15 @@ var _ = Describe("Source", func() {
276276
Object: p,
277277
Meta: p,
278278
}
279+
// Event that should be filtered out by predicates
280+
invalidEvt := event.GenericEvent{}
281+
282+
// Predicate to filter out empty event
283+
prct := predicate.Funcs{
284+
GenericFunc: func(e event.GenericEvent) bool {
285+
return e.Object != nil && e.Meta != nil
286+
},
287+
}
279288

280289
q := workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "test")
281290
instance := &source.Channel{Source: ch}
@@ -295,14 +304,17 @@ var _ = Describe("Source", func() {
295304
},
296305
GenericFunc: func(q2 workqueue.RateLimitingInterface, evt event.GenericEvent) {
297306
defer GinkgoRecover()
307+
// The empty event should have been filtered out by the predicates,
308+
// and will not be passed to the handler.
298309
Expect(q2).To(Equal(q))
299310
Expect(evt.Meta).To(Equal(p))
300311
Expect(evt.Object).To(Equal(p))
301312
close(c)
302313
},
303-
}, q)
314+
}, q, prct)
304315
Expect(err).NotTo(HaveOccurred())
305316

317+
ch <- invalidEvt
306318
ch <- evt
307319
<-c
308320
close(done)

0 commit comments

Comments
 (0)