Skip to content

Commit

Permalink
Clean shutdown of deployment integration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
wojtek-t committed May 26, 2022
1 parent 7928929 commit 368802d
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 43 deletions.
70 changes: 42 additions & 28 deletions test/integration/deployment/deployment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)}
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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)}
Expand Down Expand Up @@ -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)}
Expand Down Expand Up @@ -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)}
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
31 changes: 16 additions & 15 deletions test/integration/deployment/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -101,48 +102,48 @@ 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)
}
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
Expand Down

0 comments on commit 368802d

Please sign in to comment.