Skip to content

Get source related tests to 100% coverage #28

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 13, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions pkg/manager/manager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,12 @@ var _ = Describe("manger.Manager", func() {
Expect(c).To(Equal(m.GetCache()))
return nil
},
stop: func(stop <-chan struct{}) error {
defer GinkgoRecover()
// Manager stop chan has not been initialized.
Expect(stop).To(BeNil())
return nil
},
f: func(f inject.Func) error {
defer GinkgoRecover()
Expect(f).NotTo(BeNil())
Expand Down Expand Up @@ -315,6 +321,12 @@ var _ = Describe("manger.Manager", func() {
},
})
Expect(err).To(Equal(expected))
err = m.SetFields(&injectable{
stop: func(<-chan struct{}) error {
return expected
},
})
Expect(err).To(Equal(expected))
close(done)
})
})
Expand Down Expand Up @@ -374,13 +386,15 @@ var _ inject.Cache = &injectable{}
var _ inject.Client = &injectable{}
var _ inject.Scheme = &injectable{}
var _ inject.Config = &injectable{}
var _ inject.Stoppable = &injectable{}

type injectable struct {
scheme func(scheme *runtime.Scheme) error
client func(client.Client) error
config func(config *rest.Config) error
cache func(cache.Cache) error
f func(inject.Func) error
stop func(<-chan struct{}) error
}

func (i *injectable) InjectCache(c cache.Cache) error {
Expand Down Expand Up @@ -418,6 +432,13 @@ func (i *injectable) InjectFunc(f inject.Func) error {
return i.f(f)
}

func (i *injectable) InjectStopChannel(stop <-chan struct{}) error {
if i.stop == nil {
return nil
}
return i.stop(stop)
}

func (i *injectable) Start(<-chan struct{}) error {
return nil
}
16 changes: 14 additions & 2 deletions pkg/source/source_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ import (
"github.com/kubernetes-sigs/controller-runtime/pkg/cache/informertest"
"github.com/kubernetes-sigs/controller-runtime/pkg/event"
"github.com/kubernetes-sigs/controller-runtime/pkg/handler"
"github.com/kubernetes-sigs/controller-runtime/pkg/predicate"
"github.com/kubernetes-sigs/controller-runtime/pkg/runtime/inject"
"github.com/kubernetes-sigs/controller-runtime/pkg/source"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"

"github.com/kubernetes-sigs/controller-runtime/pkg/predicate"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/util/workqueue"
Expand Down Expand Up @@ -276,6 +276,15 @@ var _ = Describe("Source", func() {
Object: p,
Meta: p,
}
// Event that should be filtered out by predicates
invalidEvt := event.GenericEvent{}

// Predicate to filter out empty event
prct := predicate.Funcs{
GenericFunc: func(e event.GenericEvent) bool {
return e.Object != nil && e.Meta != nil
},
}

q := workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "test")
instance := &source.Channel{Source: ch}
Expand All @@ -295,14 +304,17 @@ var _ = Describe("Source", func() {
},
GenericFunc: func(q2 workqueue.RateLimitingInterface, evt event.GenericEvent) {
defer GinkgoRecover()
// The empty event should have been filtered out by the predicates,
// and will not be passed to the handler.
Expect(q2).To(Equal(q))
Expect(evt.Meta).To(Equal(p))
Expect(evt.Object).To(Equal(p))
close(c)
},
}, q)
}, q, prct)
Expect(err).NotTo(HaveOccurred())

ch <- invalidEvt
ch <- evt
<-c
close(done)
Expand Down