Skip to content

Commit e8040e4

Browse files
committed
Add unit test for restarting the health checker
Signed-off-by: Tom Pantelis <[email protected]>
1 parent 87a25e6 commit e8040e4

File tree

1 file changed

+15
-52
lines changed

1 file changed

+15
-52
lines changed

pkg/cableengine/healthchecker/healthchecker_test.go

+15-52
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,25 @@ var _ = Describe("Controller", func() {
167167
Eventually(func() *healthchecker.LatencyInfo { return healthChecker.GetLatencyInfo(&endpoint2.Spec) }).
168168
Should(Equal(latencyInfo2))
169169

170+
By("Stopping health checker")
171+
172+
close(stopCh)
170173
healthChecker.Stop()
171174

172175
Expect(healthChecker.GetLatencyInfo(&endpoint1.Spec)).To(BeNil())
173176
Expect(healthChecker.GetLatencyInfo(&endpoint2.Spec)).To(BeNil())
177+
178+
By("Restarting health checker")
179+
180+
pingerMap = map[string]*fake.Pinger{
181+
healthCheckIP1: fake.NewPinger(healthCheckIP1),
182+
healthCheckIP2: fake.NewPinger(healthCheckIP2),
183+
}
184+
185+
stopCh = make(chan struct{})
186+
Expect(healthChecker.Start(stopCh)).To(Succeed())
187+
188+
pingerMap[healthCheckIP1].AwaitStart()
174189
})
175190
})
176191

@@ -236,56 +251,4 @@ var _ = Describe("Controller", func() {
236251
pingerMap[healthCheckIP1].AwaitNoStart()
237252
})
238253
})
239-
240-
When("Start is called", func() {
241-
JustBeforeEach(func() {
242-
stopCh = make(chan struct{})
243-
scheme := runtime.NewScheme()
244-
Expect(submarinerv1.AddToScheme(scheme)).To(Succeed())
245-
Expect(submarinerv1.AddToScheme(kubeScheme.Scheme)).To(Succeed())
246-
247-
dynamicClient := fakeClient.NewSimpleDynamicClient(scheme)
248-
restMapper := test.GetRESTMapperFor(&submarinerv1.Endpoint{})
249-
endpoints = dynamicClient.Resource(*test.GetGroupVersionResourceFor(restMapper, &submarinerv1.Endpoint{})).Namespace(namespace)
250-
251-
var err error
252-
253-
config := &healthchecker.Config{
254-
WatcherConfig: &watcher.Config{
255-
RestMapper: restMapper,
256-
Client: dynamicClient,
257-
Scheme: scheme,
258-
},
259-
EndpointNamespace: namespace,
260-
ClusterID: localClusterID,
261-
PingInterval: 3,
262-
MaxPacketLossCount: 4,
263-
}
264-
265-
config.NewPinger = func(pingerCfg healthchecker.PingerConfig) healthchecker.PingerInterface {
266-
defer GinkgoRecover()
267-
Expect(pingerCfg.Interval).To(Equal(time.Second * time.Duration(config.PingInterval)))
268-
Expect(pingerCfg.MaxPacketLossCount).To(Equal(config.MaxPacketLossCount))
269-
270-
p, ok := pingerMap[pingerCfg.IP]
271-
Expect(ok).To(BeTrue())
272-
return p
273-
}
274-
275-
healthChecker, err = healthchecker.New(config)
276-
277-
Expect(err).To(Succeed())
278-
})
279-
It("should start the endpoint watcher and start pingers for existing endpoints", func() {
280-
createEndpoint(remoteClusterID1, healthCheckIP1)
281-
createEndpoint(remoteClusterID2, healthCheckIP2)
282-
283-
// Start the healthchecker
284-
Expect(healthChecker.Start(stopCh)).To(Succeed())
285-
286-
// Ensure that the Pingers has started for already existing endpoints
287-
pingerMap[healthCheckIP1].AwaitStart()
288-
pingerMap[healthCheckIP2].AwaitStart()
289-
})
290-
})
291254
})

0 commit comments

Comments
 (0)