Skip to content

Commit 978dd44

Browse files
committed
Refactor container restart functions
1 parent 7ded691 commit 978dd44

File tree

1 file changed

+31
-37
lines changed

1 file changed

+31
-37
lines changed

tests/suite/graceful_recovery_test.go

Lines changed: 31 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ var _ = Describe("Graceful Recovery test", Ordered, Label("nfr", "graceful-recov
7272
leaseName, err := getLeaderElectionLeaseHolderName()
7373
Expect(err).ToNot(HaveOccurred())
7474

75-
output, err := restartNGFProcess(ngfContainerName)
75+
output, err := restartNGFProcess()
7676
Expect(err).ToNot(HaveOccurred(), string(output))
7777

7878
checkContainerLogsForErrors(podNames[0])
@@ -89,6 +89,7 @@ var _ = Describe("Graceful Recovery test", Ordered, Label("nfr", "graceful-recov
8989
Expect(err).ToNot(HaveOccurred())
9090

9191
Expect(resourceManager.ApplyFromFiles(files, ns.Name)).To(Succeed())
92+
time.Sleep(2 * time.Second)
9293
Expect(resourceManager.WaitForAppsToBeReady(ns.Name)).To(Succeed())
9394

9495
err = waitForWorkingTraffic()
@@ -103,7 +104,7 @@ var _ = Describe("Graceful Recovery test", Ordered, Label("nfr", "graceful-recov
103104
leaseName, err := getLeaderElectionLeaseHolderName()
104105
Expect(err).ToNot(HaveOccurred())
105106

106-
output, err := restartNginxContainer(nginxContainerName)
107+
output, err := restartNginxContainer()
107108
Expect(err).ToNot(HaveOccurred(), string(output))
108109

109110
checkContainerLogsForErrors(podNames[0])
@@ -120,32 +121,22 @@ var _ = Describe("Graceful Recovery test", Ordered, Label("nfr", "graceful-recov
120121
Expect(err).ToNot(HaveOccurred())
121122

122123
Expect(resourceManager.ApplyFromFiles(files, ns.Name)).To(Succeed())
124+
time.Sleep(2 * time.Second)
123125
Expect(resourceManager.WaitForAppsToBeReady(ns.Name)).To(Succeed())
124126

125127
err = waitForWorkingTraffic()
126128
Expect(err).ToNot(HaveOccurred())
127129
})
128130
})
129131

130-
func restartNginxContainer(nginxContainerName string) ([]byte, error) {
132+
func restartNginxContainer() ([]byte, error) {
131133
podNames, err := framework.GetReadyNGFPodNames(k8sClient, ngfNamespace, releaseName, timeoutConfig.GetTimeout)
132134
Expect(err).ToNot(HaveOccurred())
133135
Expect(podNames).ToNot(BeEmpty())
134136

135-
ctx, cancel := context.WithTimeout(context.Background(), timeoutConfig.GetTimeout)
136-
defer cancel()
137-
138-
var ngfPod core.Pod
139-
err = k8sClient.Get(ctx, types.NamespacedName{Namespace: ngfNamespace, Name: podNames[0]}, &ngfPod)
137+
restartCount, err := getContainerRestartCount(nginxContainerName, podNames[0])
140138
Expect(err).ToNot(HaveOccurred())
141139

142-
var restartCount int
143-
for _, containerStatus := range ngfPod.Status.ContainerStatuses {
144-
if containerStatus.Name == nginxContainerName {
145-
restartCount = int(containerStatus.RestartCount)
146-
}
147-
}
148-
149140
output, err := exec.Command( // nolint:gosec
150141
"kubectl",
151142
"exec",
@@ -168,25 +159,14 @@ func restartNginxContainer(nginxContainerName string) ([]byte, error) {
168159
return nil, nil
169160
}
170161

171-
func restartNGFProcess(ngfContainerName string) ([]byte, error) {
162+
func restartNGFProcess() ([]byte, error) {
172163
podNames, err := framework.GetReadyNGFPodNames(k8sClient, ngfNamespace, releaseName, timeoutConfig.GetTimeout)
173164
Expect(err).ToNot(HaveOccurred())
174165
Expect(podNames).ToNot(BeEmpty())
175166

176-
ctx, cancel := context.WithTimeout(context.Background(), timeoutConfig.GetTimeout)
177-
defer cancel()
178-
179-
var ngfPod core.Pod
180-
err = k8sClient.Get(ctx, types.NamespacedName{Namespace: ngfNamespace, Name: podNames[0]}, &ngfPod)
167+
restartCount, err := getContainerRestartCount(ngfContainerName, podNames[0])
181168
Expect(err).ToNot(HaveOccurred())
182169

183-
var restartCount int
184-
for _, containerStatus := range ngfPod.Status.ContainerStatuses {
185-
if containerStatus.Name == ngfContainerName {
186-
restartCount = int(containerStatus.RestartCount)
187-
}
188-
}
189-
190170
output, err := exec.Command( // nolint:gosec
191171
"kubectl",
192172
"debug",
@@ -218,18 +198,13 @@ func waitForContainerRestart(ngfPodName string, containerName string, currentRes
218198
ctx,
219199
500*time.Millisecond,
220200
true, /* poll immediately */
221-
func(ctx context.Context) (bool, error) {
222-
var ngfPod core.Pod
223-
if err := k8sClient.Get(ctx, types.NamespacedName{Namespace: ngfNamespace, Name: ngfPodName}, &ngfPod); err != nil {
201+
func(_ context.Context) (bool, error) {
202+
restartCount, err := getContainerRestartCount(containerName, ngfPodName)
203+
if err != nil {
224204
return false, nil
225205
}
226206

227-
for _, containerStatus := range ngfPod.Status.ContainerStatuses {
228-
if containerStatus.Name == containerName {
229-
return int(containerStatus.RestartCount) == currentRestartCount+1, nil
230-
}
231-
}
232-
return false, nil
207+
return restartCount == currentRestartCount+1, nil
233208
},
234209
)
235210
}
@@ -361,3 +336,22 @@ func getLeaderElectionLeaseHolderName() (string, error) {
361336
}
362337
return *lease.Spec.HolderIdentity, nil
363338
}
339+
340+
func getContainerRestartCount(containerName, ngfPodName string) (int, error) {
341+
ctx, cancel := context.WithTimeout(context.Background(), timeoutConfig.GetTimeout)
342+
defer cancel()
343+
344+
var ngfPod core.Pod
345+
if err := k8sClient.Get(ctx, types.NamespacedName{Namespace: ngfNamespace, Name: ngfPodName}, &ngfPod); err != nil {
346+
return 0, errors.New("could not retrieve ngfPod")
347+
}
348+
349+
var restartCount int
350+
for _, containerStatus := range ngfPod.Status.ContainerStatuses {
351+
if containerStatus.Name == containerName {
352+
restartCount = int(containerStatus.RestartCount)
353+
}
354+
}
355+
356+
return restartCount, nil
357+
}

0 commit comments

Comments
 (0)