From 368802dd7e6dfd00a3e3dd5625a35c0aaa0a5e64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wojciech=20Tyczy=C5=84ski?= Date: Sun, 15 May 2022 15:47:59 +0200 Subject: [PATCH] Clean shutdown of deployment integration tests --- .../integration/deployment/deployment_test.go | 70 +++++++++++-------- test/integration/deployment/util.go | 31 ++++---- 2 files changed, 58 insertions(+), 43 deletions(-) diff --git a/test/integration/deployment/deployment_test.go b/test/integration/deployment/deployment_test.go index c2c28d55d8d..8e2ddd12a1e 100644 --- a/test/integration/deployment/deployment_test.go +++ b/test/integration/deployment/deployment_test.go @@ -39,8 +39,9 @@ func TestNewDeployment(t *testing.T) { closeFn, rm, dc, informers, c := dcSetup(t) defer closeFn() name := "test-new-deployment" - ns := framework.CreateTestingNamespace(name, t) - defer framework.DeleteTestingNamespace(ns, t) + + ns := framework.CreateNamespaceOrDie(c, name, t) + defer framework.DeleteNamespaceOrDie(c, ns, t) replicas := int32(20) tester := &deploymentTester{t: t, c: c, deployment: newDeployment(name, ns.Name, replicas)} @@ -113,9 +114,10 @@ func TestNewDeployment(t *testing.T) { func TestDeploymentRollingUpdate(t *testing.T) { closeFn, rm, dc, informers, c := dcSetup(t) defer closeFn() + name := "test-rolling-update-deployment" - ns := framework.CreateTestingNamespace(name, t) - defer framework.DeleteTestingNamespace(ns, t) + ns := framework.CreateNamespaceOrDie(c, name, t) + defer framework.DeleteNamespaceOrDie(c, ns, t) // Start informer and controllers stopControllers := runControllersAndInformers(t, rm, dc, informers) @@ -207,9 +209,10 @@ func TestDeploymentRollingUpdate(t *testing.T) { func TestDeploymentSelectorImmutability(t *testing.T) { closeFn, c := dcSimpleSetup(t) defer closeFn() + name := "test-deployment-selector-immutability" - ns := framework.CreateTestingNamespace(name, t) - defer framework.DeleteTestingNamespace(ns, t) + ns := framework.CreateNamespaceOrDie(c, name, t) + defer framework.DeleteNamespaceOrDie(c, ns, t) tester := &deploymentTester{t: t, c: c, deployment: newDeployment(name, ns.Name, int32(20))} var err error @@ -241,9 +244,10 @@ func TestDeploymentSelectorImmutability(t *testing.T) { func TestPausedDeployment(t *testing.T) { closeFn, rm, dc, informers, c := dcSetup(t) defer closeFn() + name := "test-paused-deployment" - ns := framework.CreateTestingNamespace(name, t) - defer framework.DeleteTestingNamespace(ns, t) + ns := framework.CreateNamespaceOrDie(c, name, t) + defer framework.DeleteNamespaceOrDie(c, ns, t) replicas := int32(1) tester := &deploymentTester{t: t, c: c, deployment: newDeployment(name, ns.Name, replicas)} @@ -340,9 +344,10 @@ func TestPausedDeployment(t *testing.T) { func TestScalePausedDeployment(t *testing.T) { closeFn, rm, dc, informers, c := dcSetup(t) defer closeFn() + name := "test-scale-paused-deployment" - ns := framework.CreateTestingNamespace(name, t) - defer framework.DeleteTestingNamespace(ns, t) + ns := framework.CreateNamespaceOrDie(c, name, t) + defer framework.DeleteNamespaceOrDie(c, ns, t) replicas := int32(1) tester := &deploymentTester{t: t, c: c, deployment: newDeployment(name, ns.Name, replicas)} @@ -420,9 +425,10 @@ func TestScalePausedDeployment(t *testing.T) { func TestDeploymentHashCollision(t *testing.T) { closeFn, rm, dc, informers, c := dcSetup(t) defer closeFn() + name := "test-hash-collision-deployment" - ns := framework.CreateTestingNamespace(name, t) - defer framework.DeleteTestingNamespace(ns, t) + ns := framework.CreateNamespaceOrDie(c, name, t) + defer framework.DeleteNamespaceOrDie(c, ns, t) replicas := int32(1) tester := &deploymentTester{t: t, c: c, deployment: newDeployment(name, ns.Name, replicas)} @@ -518,9 +524,10 @@ func checkPodsHashLabel(pods *v1.PodList) (string, error) { func TestFailedDeployment(t *testing.T) { closeFn, rm, dc, informers, c := dcSetup(t) defer closeFn() + name := "test-failed-deployment" - ns := framework.CreateTestingNamespace(name, t) - defer framework.DeleteTestingNamespace(ns, t) + ns := framework.CreateNamespaceOrDie(c, name, t) + defer framework.DeleteNamespaceOrDie(c, ns, t) deploymentName := "progress-check" replicas := int32(1) @@ -561,9 +568,10 @@ func TestFailedDeployment(t *testing.T) { func TestOverlappingDeployments(t *testing.T) { closeFn, rm, dc, informers, c := dcSetup(t) defer closeFn() + name := "test-overlapping-deployments" - ns := framework.CreateTestingNamespace(name, t) - defer framework.DeleteTestingNamespace(ns, t) + ns := framework.CreateNamespaceOrDie(c, name, t) + defer framework.DeleteNamespaceOrDie(c, ns, t) replicas := int32(1) firstDeploymentName := "first-deployment" @@ -641,9 +649,10 @@ func TestOverlappingDeployments(t *testing.T) { func TestScaledRolloutDeployment(t *testing.T) { closeFn, rm, dc, informers, c := dcSetup(t) defer closeFn() + name := "test-scaled-rollout-deployment" - ns := framework.CreateTestingNamespace(name, t) - defer framework.DeleteTestingNamespace(ns, t) + ns := framework.CreateNamespaceOrDie(c, name, t) + defer framework.DeleteNamespaceOrDie(c, ns, t) // Start informer and controllers stopControllers := runControllersAndInformers(t, rm, dc, informers) @@ -830,9 +839,10 @@ func TestScaledRolloutDeployment(t *testing.T) { func TestSpecReplicasChange(t *testing.T) { closeFn, rm, dc, informers, c := dcSetup(t) defer closeFn() + name := "test-spec-replicas-change" - ns := framework.CreateTestingNamespace(name, t) - defer framework.DeleteTestingNamespace(ns, t) + ns := framework.CreateNamespaceOrDie(c, name, t) + defer framework.DeleteNamespaceOrDie(c, ns, t) deploymentName := "deployment" replicas := int32(1) @@ -883,9 +893,10 @@ func TestSpecReplicasChange(t *testing.T) { func TestDeploymentAvailableCondition(t *testing.T) { closeFn, rm, dc, informers, c := dcSetup(t) defer closeFn() + name := "test-deployment-available-condition" - ns := framework.CreateTestingNamespace(name, t) - defer framework.DeleteTestingNamespace(ns, t) + ns := framework.CreateNamespaceOrDie(c, name, t) + defer framework.DeleteNamespaceOrDie(c, ns, t) deploymentName := "deployment" replicas := int32(10) @@ -1001,9 +1012,10 @@ func testRSControllerRefPatch(t *testing.T, tester *deploymentTester, rs *apps.R func TestGeneralReplicaSetAdoption(t *testing.T) { closeFn, rm, dc, informers, c := dcSetup(t) defer closeFn() + name := "test-general-replicaset-adoption" - ns := framework.CreateTestingNamespace(name, t) - defer framework.DeleteTestingNamespace(ns, t) + ns := framework.CreateNamespaceOrDie(c, name, t) + defer framework.DeleteNamespaceOrDie(c, ns, t) deploymentName := "deployment" replicas := int32(1) @@ -1090,9 +1102,10 @@ func testScalingUsingScaleSubresource(t *testing.T, tester *deploymentTester, re func TestDeploymentScaleSubresource(t *testing.T) { closeFn, rm, dc, informers, c := dcSetup(t) defer closeFn() + name := "test-deployment-scale-subresource" - ns := framework.CreateTestingNamespace(name, t) - defer framework.DeleteTestingNamespace(ns, t) + ns := framework.CreateNamespaceOrDie(c, name, t) + defer framework.DeleteNamespaceOrDie(c, ns, t) deploymentName := "deployment" replicas := int32(2) @@ -1131,9 +1144,10 @@ func TestDeploymentScaleSubresource(t *testing.T) { func TestReplicaSetOrphaningAndAdoptionWhenLabelsChange(t *testing.T) { closeFn, rm, dc, informers, c := dcSetup(t) defer closeFn() + name := "test-replicaset-orphaning-and-adoption-when-labels-change" - ns := framework.CreateTestingNamespace(name, t) - defer framework.DeleteTestingNamespace(ns, t) + ns := framework.CreateNamespaceOrDie(c, name, t) + defer framework.DeleteNamespaceOrDie(c, ns, t) deploymentName := "deployment" replicas := int32(1) diff --git a/test/integration/deployment/util.go b/test/integration/deployment/util.go index 1baf7bd6d8d..347daa8e853 100644 --- a/test/integration/deployment/util.go +++ b/test/integration/deployment/util.go @@ -31,6 +31,7 @@ import ( "k8s.io/client-go/informers" clientset "k8s.io/client-go/kubernetes" restclient "k8s.io/client-go/rest" + kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing" podutil "k8s.io/kubernetes/pkg/api/v1/pod" "k8s.io/kubernetes/pkg/controller/deployment" deploymentutil "k8s.io/kubernetes/pkg/controller/deployment/util" @@ -101,23 +102,23 @@ func newDeployment(name, ns string, replicas int32) *apps.Deployment { } // dcSetup sets up necessities for Deployment integration test, including control plane, apiserver, informers, and clientset -func dcSetup(t *testing.T) (framework.CloseFunc, *replicaset.ReplicaSetController, *deployment.DeploymentController, informers.SharedInformerFactory, clientset.Interface) { - controlPlaneConfig := framework.NewIntegrationTestControlPlaneConfig() - _, s, closeFn := framework.RunAnAPIServer(controlPlaneConfig) +func dcSetup(t *testing.T) (kubeapiservertesting.TearDownFunc, *replicaset.ReplicaSetController, *deployment.DeploymentController, informers.SharedInformerFactory, clientset.Interface) { + // Disable ServiceAccount admission plugin as we don't have serviceaccount controller running. + server := kubeapiservertesting.StartTestServerOrDie(t, nil, []string{"--disable-admission-plugins=ServiceAccount"}, framework.SharedEtcd()) - config := restclient.Config{Host: s.URL} - clientSet, err := clientset.NewForConfig(&config) + config := restclient.CopyConfig(server.ClientConfig) + clientSet, err := clientset.NewForConfig(config) if err != nil { t.Fatalf("error in create clientset: %v", err) } resyncPeriod := 12 * time.Hour - informers := informers.NewSharedInformerFactory(clientset.NewForConfigOrDie(restclient.AddUserAgent(&config, "deployment-informers")), resyncPeriod) + informers := informers.NewSharedInformerFactory(clientset.NewForConfigOrDie(restclient.AddUserAgent(config, "deployment-informers")), resyncPeriod) dc, err := deployment.NewDeploymentController( informers.Apps().V1().Deployments(), informers.Apps().V1().ReplicaSets(), informers.Core().V1().Pods(), - clientset.NewForConfigOrDie(restclient.AddUserAgent(&config, "deployment-controller")), + clientset.NewForConfigOrDie(restclient.AddUserAgent(config, "deployment-controller")), ) if err != nil { t.Fatalf("error creating Deployment controller: %v", err) @@ -125,24 +126,24 @@ func dcSetup(t *testing.T) (framework.CloseFunc, *replicaset.ReplicaSetControlle rm := replicaset.NewReplicaSetController( informers.Apps().V1().ReplicaSets(), informers.Core().V1().Pods(), - clientset.NewForConfigOrDie(restclient.AddUserAgent(&config, "replicaset-controller")), + clientset.NewForConfigOrDie(restclient.AddUserAgent(config, "replicaset-controller")), replicaset.BurstReplicas, ) - return closeFn, rm, dc, informers, clientSet + return server.TearDownFn, rm, dc, informers, clientSet } // dcSimpleSetup sets up necessities for Deployment integration test, including control plane, apiserver, // and clientset, but not controllers and informers -func dcSimpleSetup(t *testing.T) (framework.CloseFunc, clientset.Interface) { - controlPlaneConfig := framework.NewIntegrationTestControlPlaneConfig() - _, s, closeFn := framework.RunAnAPIServer(controlPlaneConfig) +func dcSimpleSetup(t *testing.T) (kubeapiservertesting.TearDownFunc, clientset.Interface) { + // Disable ServiceAccount admission plugin as we don't have serviceaccount controller running. + server := kubeapiservertesting.StartTestServerOrDie(t, nil, []string{"--disable-admission-plugins=ServiceAccount"}, framework.SharedEtcd()) - config := restclient.Config{Host: s.URL} - clientSet, err := clientset.NewForConfig(&config) + config := restclient.CopyConfig(server.ClientConfig) + clientSet, err := clientset.NewForConfig(config) if err != nil { t.Fatalf("error in create clientset: %v", err) } - return closeFn, clientSet + return server.TearDownFn, clientSet } // runControllersAndInformers runs RS and deployment controllers and informers