Skip to content

Commit f779bdd

Browse files
authored
Merge pull request #1 from alexeldeib/ace/stop
⚒️ add additional controller tests
2 parents 6a16ca0 + 32aaa1c commit f779bdd

File tree

1 file changed

+55
-3
lines changed

1 file changed

+55
-3
lines changed

pkg/manager/manager_test.go

+55-3
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ var _ = Describe("manger.Manager", func() {
143143
Context("with leader election enabled", func() {
144144
It("should default ID to controller-runtime if ID is not set", func() {
145145
var rl resourcelock.Interface
146-
m, err := New(cfg, Options{
146+
m1, err := New(cfg, Options{
147147
LeaderElection: true,
148148
LeaderElectionNamespace: "default",
149149
LeaderElectionID: "test-leader-election-id",
@@ -152,10 +152,61 @@ var _ = Describe("manger.Manager", func() {
152152
rl, err = leaderelection.NewResourceLock(config, recorderProvider, options)
153153
return rl, err
154154
},
155+
HealthProbeBindAddress: "0",
156+
MetricsBindAddress: "0",
155157
})
156158
Expect(err).ToNot(HaveOccurred())
157-
Expect(m).ToNot(BeNil())
159+
Expect(m1).ToNot(BeNil())
158160
Expect(rl.Describe()).To(Equal("default/test-leader-election-id"))
161+
162+
m2, err := New(cfg, Options{
163+
LeaderElection: true,
164+
LeaderElectionNamespace: "default",
165+
LeaderElectionID: "test-leader-election-id",
166+
newResourceLock: func(config *rest.Config, recorderProvider recorder.Provider, options leaderelection.Options) (resourcelock.Interface, error) {
167+
var err error
168+
rl, err = leaderelection.NewResourceLock(config, recorderProvider, options)
169+
return rl, err
170+
},
171+
HealthProbeBindAddress: "0",
172+
MetricsBindAddress: "0",
173+
})
174+
175+
Expect(err).ToNot(HaveOccurred())
176+
Expect(m2).ToNot(BeNil())
177+
Expect(rl.Describe()).To(Equal("default/test-leader-election-id"))
178+
179+
c1 := make(chan struct{})
180+
Expect(m1.Add(RunnableFunc(func(s <-chan struct{}) error {
181+
defer GinkgoRecover()
182+
close(c1)
183+
return nil
184+
}))).To(Succeed())
185+
186+
go func() {
187+
defer GinkgoRecover()
188+
Expect(m1.Elected()).ShouldNot(BeClosed())
189+
Expect(m1.Start(stop)).NotTo(HaveOccurred())
190+
Expect(m1.Elected()).Should(BeClosed())
191+
}()
192+
<-c1
193+
194+
c2 := make(chan struct{})
195+
Expect(m2.Add(RunnableFunc(func(s <-chan struct{}) error {
196+
defer GinkgoRecover()
197+
close(c2)
198+
return nil
199+
}))).To(Succeed())
200+
201+
By("Expect second manager to lose leader election")
202+
go func() {
203+
defer GinkgoRecover()
204+
Expect(m2.Start(stop)).NotTo(HaveOccurred())
205+
Consistently(m2.Elected()).ShouldNot(Receive())
206+
}()
207+
208+
By("Expect controller on manager without leader lease never to run")
209+
Consistently(c2).ShouldNot(Receive())
159210
})
160211

161212
It("should return an error if namespace not set and not running in cluster", func() {
@@ -260,8 +311,9 @@ var _ = Describe("manger.Manager", func() {
260311

261312
go func() {
262313
defer GinkgoRecover()
314+
Expect(m.Elected()).ShouldNot(BeClosed())
263315
Expect(m.Start(stop)).NotTo(HaveOccurred())
264-
Expect(m.Elected()).To(BeClosed())
316+
Expect(m.Elected()).Should(BeClosed())
265317
}()
266318
<-c1
267319
<-c2

0 commit comments

Comments
 (0)