fix fd leaks and failed file removing for test directory

This commit is contained in:
HirazawaUi 2023-05-03 01:37:20 +08:00
parent b94c6daa0b
commit 5289a7b029
11 changed files with 34 additions and 12 deletions

View File

@ -19,11 +19,14 @@ package apimachinery
import ( import (
"crypto/x509" "crypto/x509"
"os" "os"
"testing"
utiltesting "k8s.io/client-go/util/testing"
"k8s.io/kubernetes/test/utils"
"k8s.io/client-go/util/cert" "k8s.io/client-go/util/cert"
"k8s.io/client-go/util/keyutil" "k8s.io/client-go/util/keyutil"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/utils"
) )
type certContext struct { type certContext struct {
@ -52,6 +55,7 @@ func setupServerCert(namespaceName, serviceName string) *certContext {
if err != nil { if err != nil {
framework.Failf("Failed to create a temp file for ca cert generation %v", err) framework.Failf("Failed to create a temp file for ca cert generation %v", err)
} }
defer utiltesting.CloseAndRemove(&testing.T{}, caCertFile)
if err := os.WriteFile(caCertFile.Name(), utils.EncodeCertPEM(signingCert), 0644); err != nil { if err := os.WriteFile(caCertFile.Name(), utils.EncodeCertPEM(signingCert), 0644); err != nil {
framework.Failf("Failed to write CA cert %v", err) framework.Failf("Failed to write CA cert %v", err)
} }
@ -74,6 +78,7 @@ func setupServerCert(namespaceName, serviceName string) *certContext {
if err != nil { if err != nil {
framework.Failf("Failed to create a temp file for cert generation %v", err) framework.Failf("Failed to create a temp file for cert generation %v", err)
} }
defer utiltesting.CloseAndRemove(&testing.T{}, certFile)
keyFile, err := os.CreateTemp(certDir, "server.key") keyFile, err := os.CreateTemp(certDir, "server.key")
if err != nil { if err != nil {
framework.Failf("Failed to create a temp file for key generation %v", err) framework.Failf("Failed to create a temp file for key generation %v", err)
@ -88,6 +93,7 @@ func setupServerCert(namespaceName, serviceName string) *certContext {
if err = os.WriteFile(keyFile.Name(), privateKeyPEM, 0644); err != nil { if err = os.WriteFile(keyFile.Name(), privateKeyPEM, 0644); err != nil {
framework.Failf("Failed to write key file %v", err) framework.Failf("Failed to write key file %v", err)
} }
defer utiltesting.CloseAndRemove(&testing.T{}, keyFile)
return &certContext{ return &certContext{
cert: utils.EncodeCertPEM(signedCert), cert: utils.EncodeCertPEM(signedCert),
key: privateKeyPEM, key: privateKeyPEM,

View File

@ -19,6 +19,9 @@ package services
import ( import (
"fmt" "fmt"
"os" "os"
"testing"
utiltesting "k8s.io/client-go/util/testing"
"k8s.io/apiserver/pkg/storage/storagebackend" "k8s.io/apiserver/pkg/storage/storagebackend"
netutils "k8s.io/utils/net" netutils "k8s.io/utils/net"
@ -79,7 +82,7 @@ func (a *APIServer) Start() error {
if err != nil { if err != nil {
return fmt.Errorf("create temp file failed: %w", err) return fmt.Errorf("create temp file failed: %w", err)
} }
defer os.RemoveAll(saSigningKeyFile.Name()) defer utiltesting.CloseAndRemove(&testing.T{}, saSigningKeyFile)
if err = os.WriteFile(saSigningKeyFile.Name(), []byte(ecdsaPrivateKey), 0666); err != nil { if err = os.WriteFile(saSigningKeyFile.Name(), []byte(ecdsaPrivateKey), 0666); err != nil {
return fmt.Errorf("write file %s failed: %w", saSigningKeyFile.Name(), err) return fmt.Errorf("write file %s failed: %w", saSigningKeyFile.Name(), err)
} }

View File

@ -31,6 +31,8 @@ import (
"testing" "testing"
"time" "time"
utiltesting "k8s.io/client-go/util/testing"
"k8s.io/api/admission/v1beta1" "k8s.io/api/admission/v1beta1"
admissionregistrationv1 "k8s.io/api/admissionregistration/v1" admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
@ -87,7 +89,7 @@ func testWebhookClientAuth(t *testing.T, enableAggregatorRouting bool) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer os.Remove(kubeConfigFile.Name()) defer utiltesting.CloseAndRemove(t, kubeConfigFile)
if err := os.WriteFile(kubeConfigFile.Name(), []byte(` if err := os.WriteFile(kubeConfigFile.Name(), []byte(`
apiVersion: v1 apiVersion: v1
@ -113,7 +115,7 @@ users:
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer os.Remove(admissionConfigFile.Name()) defer utiltesting.CloseAndRemove(t, admissionConfigFile)
if err := os.WriteFile(admissionConfigFile.Name(), []byte(` if err := os.WriteFile(admissionConfigFile.Name(), []byte(`
apiVersion: apiserver.k8s.io/v1alpha1 apiVersion: apiserver.k8s.io/v1alpha1

View File

@ -44,6 +44,7 @@ import (
auditv1 "k8s.io/apiserver/pkg/apis/audit/v1" auditv1 "k8s.io/apiserver/pkg/apis/audit/v1"
clientset "k8s.io/client-go/kubernetes" clientset "k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest" "k8s.io/client-go/rest"
utiltesting "k8s.io/client-go/util/testing"
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing" kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
"k8s.io/kubernetes/test/integration/framework" "k8s.io/kubernetes/test/integration/framework"
"k8s.io/kubernetes/test/utils" "k8s.io/kubernetes/test/utils"
@ -281,7 +282,7 @@ func testWebhookReinvocationPolicy(t *testing.T, watchCache bool) {
if err != nil { if err != nil {
t.Fatalf("Failed to create audit log file: %v", err) t.Fatalf("Failed to create audit log file: %v", err)
} }
defer os.Remove(logFile.Name()) defer utiltesting.CloseAndRemove(t, logFile)
s := kubeapiservertesting.StartTestServerOrDie(t, kubeapiservertesting.NewDefaultTestServerOptions(), []string{ s := kubeapiservertesting.StartTestServerOrDie(t, kubeapiservertesting.NewDefaultTestServerOptions(), []string{
"--disable-admission-plugins=ServiceAccount", "--disable-admission-plugins=ServiceAccount",

View File

@ -38,6 +38,7 @@ import (
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/strategicpatch" "k8s.io/apimachinery/pkg/util/strategicpatch"
client "k8s.io/client-go/kubernetes" client "k8s.io/client-go/kubernetes"
utiltesting "k8s.io/client-go/util/testing"
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing" kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
"k8s.io/kubernetes/test/integration/framework" "k8s.io/kubernetes/test/integration/framework"
) )
@ -73,7 +74,7 @@ egressSelections:
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer os.Remove(tracingConfigFile.Name()) defer utiltesting.CloseAndRemove(t, tracingConfigFile)
if err := os.WriteFile(tracingConfigFile.Name(), []byte(fmt.Sprintf(` if err := os.WriteFile(tracingConfigFile.Name(), []byte(fmt.Sprintf(`
apiVersion: apiserver.config.k8s.io/v1beta1 apiVersion: apiserver.config.k8s.io/v1beta1

View File

@ -41,6 +41,8 @@ import (
"testing" "testing"
"time" "time"
utiltesting "k8s.io/client-go/util/testing"
"github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp"
authenticationv1beta1 "k8s.io/api/authentication/v1beta1" authenticationv1beta1 "k8s.io/api/authentication/v1beta1"
@ -86,7 +88,7 @@ func getTestWebhookTokenAuth(serverURL string, customDial utilnet.DialFunc) (aut
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer os.Remove(kubecfgFile.Name()) defer utiltesting.CloseAndRemove(&testing.T{}, kubecfgFile)
config := v1.Config{ config := v1.Config{
Clusters: []v1.NamedCluster{ Clusters: []v1.NamedCluster{
{ {

View File

@ -22,6 +22,8 @@ import (
"testing" "testing"
"time" "time"
utiltesting "k8s.io/client-go/util/testing"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apiserver/pkg/authentication/authenticator" "k8s.io/apiserver/pkg/authentication/authenticator"
clientset "k8s.io/client-go/kubernetes" clientset "k8s.io/client-go/kubernetes"
@ -38,7 +40,7 @@ func TestDynamicClientBuilder(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("create temp file failed: %v", err) t.Fatalf("create temp file failed: %v", err)
} }
defer os.RemoveAll(tmpfile.Name()) defer utiltesting.CloseAndRemove(t, tmpfile)
if err = os.WriteFile(tmpfile.Name(), []byte(ecdsaPrivateKey), 0666); err != nil { if err = os.WriteFile(tmpfile.Name(), []byte(ecdsaPrivateKey), 0666); err != nil {
t.Fatalf("write file %s failed: %v", tmpfile.Name(), err) t.Fatalf("write file %s failed: %v", tmpfile.Name(), err)

View File

@ -41,6 +41,7 @@ import (
auditinternal "k8s.io/apiserver/pkg/apis/audit" auditinternal "k8s.io/apiserver/pkg/apis/audit"
auditv1 "k8s.io/apiserver/pkg/apis/audit/v1" auditv1 "k8s.io/apiserver/pkg/apis/audit/v1"
clientset "k8s.io/client-go/kubernetes" clientset "k8s.io/client-go/kubernetes"
utiltesting "k8s.io/client-go/util/testing"
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing" kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
"k8s.io/kubernetes/test/integration/framework" "k8s.io/kubernetes/test/integration/framework"
"k8s.io/kubernetes/test/utils" "k8s.io/kubernetes/test/utils"
@ -245,7 +246,7 @@ func runTestWithVersion(t *testing.T, version string) {
if err != nil { if err != nil {
t.Fatalf("Failed to create audit log file: %v", err) t.Fatalf("Failed to create audit log file: %v", err)
} }
defer os.Remove(logFile.Name()) defer utiltesting.CloseAndRemove(t, logFile)
// start api server // start api server
result := kubeapiservertesting.StartTestServerOrDie(t, nil, result := kubeapiservertesting.StartTestServerOrDie(t, nil,

View File

@ -26,6 +26,8 @@ import (
"testing" "testing"
"time" "time"
utiltesting "k8s.io/client-go/util/testing"
clientv3 "go.etcd.io/etcd/client/v3" clientv3 "go.etcd.io/etcd/client/v3"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
@ -81,7 +83,7 @@ func StartRealAPIServerOrDie(t *testing.T, configFuncs ...func(*options.ServerRu
if err != nil { if err != nil {
t.Fatalf("create temp file failed: %v", err) t.Fatalf("create temp file failed: %v", err)
} }
defer os.RemoveAll(saSigningKeyFile.Name()) defer utiltesting.CloseAndRemove(t, saSigningKeyFile)
if err = os.WriteFile(saSigningKeyFile.Name(), []byte(ecdsaPrivateKey), 0666); err != nil { if err = os.WriteFile(saSigningKeyFile.Name(), []byte(ecdsaPrivateKey), 0666); err != nil {
t.Fatalf("write file %s failed: %v", saSigningKeyFile.Name(), err) t.Fatalf("write file %s failed: %v", saSigningKeyFile.Name(), err)
} }

View File

@ -522,6 +522,7 @@ func writeKubeConfigForWardleServerToKASConnection(t *testing.T, kubeClientConfi
t.Fatal(err) t.Fatal(err)
} }
defer wardleToKASKubeConfigFile.Close()
return wardleToKASKubeConfigFile.Name() return wardleToKASKubeConfigFile.Name()
} }

View File

@ -99,6 +99,7 @@ func StartTestServer(ctx context.Context, t testing.TB, setup TestServerSetup) (
if err := os.WriteFile(proxyCACertFile.Name(), utils.EncodeCertPEM(proxySigningCert), 0644); err != nil { if err := os.WriteFile(proxyCACertFile.Name(), utils.EncodeCertPEM(proxySigningCert), 0644); err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer proxyCACertFile.Close()
clientSigningKey, err := utils.NewPrivateKey() clientSigningKey, err := utils.NewPrivateKey()
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -111,7 +112,7 @@ func StartTestServer(ctx context.Context, t testing.TB, setup TestServerSetup) (
if err := os.WriteFile(clientCACertFile.Name(), utils.EncodeCertPEM(clientSigningCert), 0644); err != nil { if err := os.WriteFile(clientCACertFile.Name(), utils.EncodeCertPEM(clientSigningCert), 0644); err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer clientCACertFile.Close()
listener, _, err := genericapiserveroptions.CreateListener("tcp", "127.0.0.1:0", net.ListenConfig{}) listener, _, err := genericapiserveroptions.CreateListener("tcp", "127.0.0.1:0", net.ListenConfig{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -121,7 +122,7 @@ func StartTestServer(ctx context.Context, t testing.TB, setup TestServerSetup) (
if err != nil { if err != nil {
t.Fatalf("create temp file failed: %v", err) t.Fatalf("create temp file failed: %v", err)
} }
defer os.RemoveAll(saSigningKeyFile.Name()) defer saSigningKeyFile.Close()
if err = os.WriteFile(saSigningKeyFile.Name(), []byte(ecdsaPrivateKey), 0666); err != nil { if err = os.WriteFile(saSigningKeyFile.Name(), []byte(ecdsaPrivateKey), 0666); err != nil {
t.Fatalf("write file %s failed: %v", saSigningKeyFile.Name(), err) t.Fatalf("write file %s failed: %v", saSigningKeyFile.Name(), err)
} }