Skip to content

Commit 77cc3da

Browse files
committed
Add DeleteNamespaces function
1 parent daa2e56 commit 77cc3da

File tree

2 files changed

+46
-8
lines changed

2 files changed

+46
-8
lines changed

tests/framework/resourcemanager.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"io"
3030
"net/http"
3131
"reflect"
32+
"slices"
3233
"strings"
3334
"time"
3435

@@ -221,6 +222,47 @@ func (rm *ResourceManager) DeleteNamespace(name string) error {
221222
})
222223
}
223224

225+
func (rm *ResourceManager) DeleteNamespaces(names []string) error {
226+
ctx, cancel := context.WithTimeout(context.Background(), rm.TimeoutConfig.DeleteNamespaceTimeout*2)
227+
defer cancel()
228+
229+
var combinedErrors error
230+
ns := &core.Namespace{}
231+
for _, name := range names {
232+
if err := rm.K8sClient.Get(ctx, types.NamespacedName{Name: name}, ns); err != nil {
233+
if apierrors.IsNotFound(err) {
234+
continue
235+
}
236+
combinedErrors = errors.Join(combinedErrors, fmt.Errorf("error getting namespace: %w", err))
237+
}
238+
239+
if err := rm.K8sClient.Delete(ctx, ns); err != nil {
240+
combinedErrors = errors.Join(combinedErrors, fmt.Errorf("error deleting namespace: %w", err))
241+
}
242+
}
243+
244+
err := wait.PollUntilContextCancel(
245+
ctx,
246+
500*time.Millisecond,
247+
true, /* poll immediately */
248+
func(ctx context.Context) (bool, error) {
249+
nsList := &core.NamespaceList{}
250+
if err := rm.K8sClient.List(ctx, nsList); err != nil {
251+
return false, nil //nolint:nilerr // retry on error
252+
}
253+
254+
for _, namespace := range nsList.Items {
255+
if slices.Contains(names, namespace.Name) {
256+
return false, nil
257+
}
258+
}
259+
260+
return true, nil
261+
})
262+
263+
return errors.Join(combinedErrors, err)
264+
}
265+
224266
// DeleteFromFiles deletes Kubernetes resources defined within the provided YAML files.
225267
func (rm *ResourceManager) DeleteFromFiles(files []string, namespace string) error {
226268
handlerFunc := func(obj unstructured.Unstructured) error {

tests/suite/reconfig_test.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -170,16 +170,12 @@ var _ = Describe("Reconfiguration Performance Testing", Ordered, Label("nfr", "r
170170
cleanupResources := func() error {
171171
var err error
172172

173-
// FIXME (bjee19): https://github.com/nginx/nginx-gateway-fabric/issues/2376
174-
// Find a way to bulk delete these namespaces.
175-
for i := 1; i <= maxResourceCount; i++ {
176-
nsName := "namespace" + strconv.Itoa(i)
177-
resultError := resourceManager.DeleteNamespace(nsName)
178-
if resultError != nil {
179-
err = resultError
180-
}
173+
namespaces := make([]string, maxResourceCount)
174+
for i := range maxResourceCount {
175+
namespaces[i] = "namespace" + strconv.Itoa(i+1)
181176
}
182177

178+
err = resourceManager.DeleteNamespaces(namespaces)
183179
Expect(resourceManager.DeleteNamespace(reconfigNamespace.Name)).To(Succeed())
184180

185181
return err

0 commit comments

Comments
 (0)