mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 19:01:49 +00:00
Merge pull request #109252 from kerthcet/fix/goroutine-leak-in-integration-tests
fix: resolve goroutine leak in integration tests
This commit is contained in:
commit
7e6a8bc3db
@ -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)
|
||||
|
@ -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) {
|
||||
|
@ -54,7 +54,7 @@ func setupClusterForVolumeCapacityPriority(t *testing.T, nsName string, resyncPe
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to create PV controller: %v", err)
|
||||
}
|
||||
go ctrl.Run(context.TODO())
|
||||
go ctrl.Run(textCtx.ctx)
|
||||
|
||||
// Start informer factory after all controllers are configured and running.
|
||||
informerFactory.Start(textCtx.ctx.Done())
|
||||
|
Loading…
Reference in New Issue
Block a user