From c74aeab5a5a12dde0e4470e136c531d2bd1fc2b4 Mon Sep 17 00:00:00 2001 From: kerthcet Date: Fri, 6 May 2022 17:51:34 +0800 Subject: [PATCH] fix: resolve goroutine leak in statefulset integration tests Signed-off-by: kerthcet --- test/integration/statefulset/statefulset_test.go | 12 ++++++------ test/integration/statefulset/util.go | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/test/integration/statefulset/statefulset_test.go b/test/integration/statefulset/statefulset_test.go index c99727c8f8e..806737c8899 100644 --- a/test/integration/statefulset/statefulset_test.go +++ b/test/integration/statefulset/statefulset_test.go @@ -124,8 +124,8 @@ func TestSpecReplicasChange(t *testing.T) { defer closeFn() ns := framework.CreateTestingNamespace("test-spec-replicas-change", s, t) defer framework.DeleteTestingNamespace(ns, s, t) - stopCh := runControllerAndInformers(rm, informers) - defer close(stopCh) + cancel := runControllerAndInformers(rm, informers) + defer cancel() createHeadlessService(t, c, newHeadlessService(ns.Name)) sts := newSTS("sts", ns.Name, 2) @@ -167,8 +167,8 @@ func TestDeletingAndFailedPods(t *testing.T) { defer closeFn() ns := framework.CreateTestingNamespace("test-deleting-and-failed-pods", s, t) defer framework.DeleteTestingNamespace(ns, s, t) - stopCh := runControllerAndInformers(rm, informers) - defer close(stopCh) + cancel := runControllerAndInformers(rm, informers) + defer cancel() labelMap := labelMap() sts := newSTS("sts", ns.Name, 2) @@ -268,8 +268,8 @@ func TestStatefulSetAvailable(t *testing.T) { defer closeFn() ns := framework.CreateTestingNamespace("test-available-pods", s, t) defer framework.DeleteTestingNamespace(ns, s, t) - stopCh := runControllerAndInformers(rm, informers) - defer close(stopCh) + cancel := runControllerAndInformers(rm, informers) + defer cancel() labelMap := labelMap() sts := newSTS("sts", ns.Name, 4) diff --git a/test/integration/statefulset/util.go b/test/integration/statefulset/util.go index b2ef1389c39..91b4b45eab2 100644 --- a/test/integration/statefulset/util.go +++ b/test/integration/statefulset/util.go @@ -24,7 +24,7 @@ import ( "time" appsv1 "k8s.io/api/apps/v1" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" @@ -182,11 +182,11 @@ func scSetup(t *testing.T) (*httptest.Server, framework.CloseFunc, *statefulset. } // Run STS controller and informers -func runControllerAndInformers(sc *statefulset.StatefulSetController, informers informers.SharedInformerFactory) chan struct{} { - stopCh := make(chan struct{}) - informers.Start(stopCh) - go sc.Run(context.TODO(), 5) - return stopCh +func runControllerAndInformers(sc *statefulset.StatefulSetController, informers informers.SharedInformerFactory) context.CancelFunc { + ctx, cancel := context.WithCancel(context.Background()) + informers.Start(ctx.Done()) + go sc.Run(ctx, 5) + return cancel } func createHeadlessService(t *testing.T, clientSet clientset.Interface, headlessService *v1.Service) {