Merge pull request #34316 from kargakis/set-failure-traps-in-deployment-test

Automatic merge from submit-queue

test: move deployment deletion in its own test

@kubernetes/deployment this PR moves the deletion of deployment in its own test (no need to delete deployments in every test since the namespace controller does that for us once the namespace gets deleted after the test finishes)

Fixes https://github.com/kubernetes/kubernetes/issues/33256
This commit is contained in:
Kubernetes Submit Queue 2016-10-12 03:14:03 -07:00 committed by GitHub
commit 24bb97907c

View File

@ -50,9 +50,15 @@ const (
var _ = framework.KubeDescribe("Deployment", func() {
f := framework.NewDefaultFramework("deployment")
// TODO: Add failure traps once we have JustAfterEach
// See https://github.com/onsi/ginkgo/issues/303
It("deployment should create new pods", func() {
testNewDeployment(f)
})
It("deployment reaping should cascade to its replica sets and pods", func() {
testDeleteDeployment(f)
})
It("RollingUpdateDeployment should delete old pods and create new ones", func() {
testRollingUpdateDeployment(f)
})
@ -90,6 +96,7 @@ var _ = framework.KubeDescribe("Deployment", func() {
testOverlappingDeployment(f)
})
// TODO: add tests that cover deployment.Spec.MinReadySeconds once we solved clock-skew issues
// See https://github.com/kubernetes/kubernetes/issues/29229
})
func newRS(rsName string, replicas int32, rsPodLabels map[string]string, imageName string, image string) *extensions.ReplicaSet {
@ -181,15 +188,15 @@ func checkDeploymentRevision(c clientset.Interface, ns, deploymentName, revision
return deployment, newRS
}
func stopDeploymentOverlap(c clientset.Interface, oldC client.Interface, ns, deploymentName, overlapWith string) {
stopDeploymentMaybeOverlap(c, oldC, ns, deploymentName, overlapWith)
func stopDeploymentOverlap(c clientset.Interface, ns, deploymentName, overlapWith string) {
stopDeploymentMaybeOverlap(c, ns, deploymentName, overlapWith)
}
func stopDeployment(c clientset.Interface, oldC client.Interface, ns, deploymentName string) {
stopDeploymentMaybeOverlap(c, oldC, ns, deploymentName, "")
func stopDeployment(c clientset.Interface, ns, deploymentName string) {
stopDeploymentMaybeOverlap(c, ns, deploymentName, "")
}
func stopDeploymentMaybeOverlap(c clientset.Interface, oldC client.Interface, ns, deploymentName, overlapWith string) {
func stopDeploymentMaybeOverlap(c clientset.Interface, ns, deploymentName, overlapWith string) {
deployment, err := c.Extensions().Deployments(ns).Get(deploymentName)
Expect(err).NotTo(HaveOccurred())
@ -251,8 +258,6 @@ func stopDeploymentMaybeOverlap(c clientset.Interface, oldC client.Interface, ns
func testNewDeployment(f *framework.Framework) {
ns := f.Namespace.Name
// TODO: remove unversionedClient when the refactoring is done. Currently some
// functions like verifyPod still expects a unversioned#Client.
c := f.ClientSet
deploymentName := "test-new-deployment"
@ -263,7 +268,6 @@ func testNewDeployment(f *framework.Framework) {
d.Annotations = map[string]string{"test": "should-copy-to-replica-set", annotations.LastAppliedConfigAnnotation: "should-not-copy-to-replica-set"}
deploy, err := c.Extensions().Deployments(ns).Create(d)
Expect(err).NotTo(HaveOccurred())
defer stopDeployment(c, f.Client, ns, deploymentName)
// Wait for it to be updated to revision 1
err = framework.WaitForDeploymentRevisionAndImage(c, ns, deploymentName, "1", nginxImage)
@ -283,6 +287,37 @@ func testNewDeployment(f *framework.Framework) {
Expect(deployment.Annotations[annotations.LastAppliedConfigAnnotation]).Should(Equal("should-not-copy-to-replica-set"))
}
func testDeleteDeployment(f *framework.Framework) {
ns := f.Namespace.Name
c := f.ClientSet
deploymentName := "test-new-deployment"
podLabels := map[string]string{"name": nginxImageName}
replicas := int32(1)
framework.Logf("Creating simple deployment %s", deploymentName)
d := newDeployment(deploymentName, replicas, podLabels, nginxImageName, nginxImage, extensions.RollingUpdateDeploymentStrategyType, nil)
d.Annotations = map[string]string{"test": "should-copy-to-replica-set", annotations.LastAppliedConfigAnnotation: "should-not-copy-to-replica-set"}
deploy, err := c.Extensions().Deployments(ns).Create(d)
Expect(err).NotTo(HaveOccurred())
// Wait for it to be updated to revision 1
err = framework.WaitForDeploymentRevisionAndImage(c, ns, deploymentName, "1", nginxImage)
Expect(err).NotTo(HaveOccurred())
err = framework.WaitForDeploymentStatus(c, deploy)
Expect(err).NotTo(HaveOccurred())
deployment, err := c.Extensions().Deployments(ns).Get(deploymentName)
Expect(err).NotTo(HaveOccurred())
newRS, err := deploymentutil.GetNewReplicaSet(deployment, c)
Expect(err).NotTo(HaveOccurred())
if newRS == nil {
err = fmt.Errorf("expected a replica set, got nil")
Expect(err).NotTo(HaveOccurred())
}
stopDeployment(c, ns, deploymentName)
}
func testRollingUpdateDeployment(f *framework.Framework) {
ns := f.Namespace.Name
// TODO: remove unversionedClient when the refactoring is done. Currently some
@ -312,7 +347,6 @@ func testRollingUpdateDeployment(f *framework.Framework) {
framework.Logf("Creating deployment %s", deploymentName)
deploy, err := c.Extensions().Deployments(ns).Create(newDeployment(deploymentName, replicas, deploymentPodLabels, redisImageName, redisImage, extensions.RollingUpdateDeploymentStrategyType, nil))
Expect(err).NotTo(HaveOccurred())
defer stopDeployment(c, f.Client, ns, deploymentName)
// Wait for it to be updated to revision 1
err = framework.WaitForDeploymentRevisionAndImage(c, ns, deploymentName, "1", redisImage)
@ -368,7 +402,6 @@ func testRollingUpdateDeploymentEvents(f *framework.Framework) {
framework.Logf("Creating deployment %s", deploymentName)
deploy, err := c.Extensions().Deployments(ns).Create(newDeployment(deploymentName, replicas, deploymentPodLabels, redisImageName, redisImage, extensions.RollingUpdateDeploymentStrategyType, nil))
Expect(err).NotTo(HaveOccurred())
defer stopDeployment(c, f.Client, ns, deploymentName)
// Wait for it to be updated to revision 3546343826724305833
err = framework.WaitForDeploymentRevisionAndImage(c, ns, deploymentName, "3546343826724305833", redisImage)
@ -424,7 +457,6 @@ func testRecreateDeployment(f *framework.Framework) {
framework.Logf("Creating deployment %s", deploymentName)
deploy, err := c.Extensions().Deployments(ns).Create(newDeployment(deploymentName, replicas, deploymentPodLabels, redisImageName, redisImage, extensions.RecreateDeploymentStrategyType, nil))
Expect(err).NotTo(HaveOccurred())
defer stopDeployment(c, f.Client, ns, deploymentName)
// Wait for it to be updated to revision 1
err = framework.WaitForDeploymentRevisionAndImage(c, ns, deploymentName, "1", redisImage)
@ -516,7 +548,6 @@ func testDeploymentCleanUpPolicy(f *framework.Framework) {
}()
_, err = c.Extensions().Deployments(ns).Create(newDeployment(deploymentName, replicas, deploymentPodLabels, redisImageName, redisImage, extensions.RollingUpdateDeploymentStrategyType, revisionHistoryLimit))
Expect(err).NotTo(HaveOccurred())
defer stopDeployment(c, f.Client, ns, deploymentName)
err = framework.WaitForDeploymentOldRSsNum(c, ns, deploymentName, int(*revisionHistoryLimit))
Expect(err).NotTo(HaveOccurred())
@ -563,7 +594,6 @@ func testRolloverDeployment(f *framework.Framework) {
}
_, err = c.Extensions().Deployments(ns).Create(newDeployment)
Expect(err).NotTo(HaveOccurred())
defer stopDeployment(c, f.Client, ns, deploymentName)
// Verify that the pods were scaled up and down as expected.
deployment, err := c.Extensions().Deployments(ns).Get(deploymentName)
@ -596,8 +626,6 @@ func testRolloverDeployment(f *framework.Framework) {
func testPausedDeployment(f *framework.Framework) {
ns := f.Namespace.Name
// TODO: remove unversionedClient when the refactoring is done. Currently some
// functions like verifyPod still expects a unversioned#Client.
c := f.ClientSet
deploymentName := "test-paused-deployment"
podLabels := map[string]string{"name": nginxImageName}
@ -608,7 +636,6 @@ func testPausedDeployment(f *framework.Framework) {
framework.Logf("Creating paused deployment %s", deploymentName)
_, err := c.Extensions().Deployments(ns).Create(d)
Expect(err).NotTo(HaveOccurred())
defer stopDeployment(c, f.Client, ns, deploymentName)
// Check that deployment is created fine.
deployment, err := c.Extensions().Deployments(ns).Get(deploymentName)
Expect(err).NotTo(HaveOccurred())
@ -710,7 +737,6 @@ func testRollbackDeployment(f *framework.Framework) {
d.Annotations = createAnnotation
deploy, err := c.Extensions().Deployments(ns).Create(d)
Expect(err).NotTo(HaveOccurred())
defer stopDeployment(c, f.Client, ns, deploymentName)
// Wait for it to be updated to revision 1
err = framework.WaitForDeploymentRevisionAndImage(c, ns, deploymentName, "1", deploymentImage)
@ -829,7 +855,6 @@ func testRollbackDeploymentRSNoRevision(f *framework.Framework) {
d := newDeployment(deploymentName, deploymentReplicas, deploymentPodLabels, deploymentImageName, deploymentImage, deploymentStrategyType, nil)
deploy, err := c.Extensions().Deployments(ns).Create(d)
Expect(err).NotTo(HaveOccurred())
defer stopDeployment(c, f.Client, ns, deploymentName)
// Wait for it to be updated to revision 1
err = framework.WaitForDeploymentRevisionAndImage(c, ns, deploymentName, "1", deploymentImage)
@ -962,7 +987,6 @@ func testDeploymentLabelAdopted(f *framework.Framework) {
framework.Logf("Creating deployment %s", deploymentName)
deploy, err := c.Extensions().Deployments(ns).Create(newDeployment(deploymentName, replicas, podLabels, podName, image, extensions.RollingUpdateDeploymentStrategyType, nil))
Expect(err).NotTo(HaveOccurred())
defer stopDeployment(c, f.Client, ns, deploymentName)
// Wait for it to be updated to revision 1
err = framework.WaitForDeploymentRevisionAndImage(c, ns, deploymentName, "1", image)
@ -1006,7 +1030,6 @@ func testScalePausedDeployment(f *framework.Framework) {
framework.Logf("Creating deployment %q", deploymentName)
_, err := c.Extensions().Deployments(ns).Create(d)
Expect(err).NotTo(HaveOccurred())
defer stopDeployment(c, f.Client, ns, deploymentName)
// Check that deployment is created fine.
deployment, err := c.Extensions().Deployments(ns).Get(deploymentName)
@ -1060,7 +1083,6 @@ func testScaledRolloutDeployment(f *framework.Framework) {
By(fmt.Sprintf("Creating deployment %q", deploymentName))
_, err := c.Extensions().Deployments(ns).Create(d)
Expect(err).NotTo(HaveOccurred())
defer stopDeployment(c, f.Client, ns, deploymentName)
// Check that deployment is created fine.
deployment, err := c.Extensions().Deployments(ns).Get(deploymentName)
@ -1211,8 +1233,6 @@ func testScaledRolloutDeployment(f *framework.Framework) {
func testOverlappingDeployment(f *framework.Framework) {
ns := f.Namespace.Name
// TODO: remove unversionedClient when the refactoring is done. Currently some
// functions like verifyPod still expects a unversioned#Client.
c := f.ClientSet
deploymentName := "first-deployment"
@ -1233,7 +1253,6 @@ func testOverlappingDeployment(f *framework.Framework) {
d = newDeployment(deploymentName, replicas, podLabels, nginxImageName, nginxImage, extensions.RollingUpdateDeploymentStrategyType, nil)
deployOverlapping, err := c.Extensions().Deployments(ns).Create(d)
Expect(err).NotTo(HaveOccurred(), "Failed creating the second deployment")
defer stopDeployment(c, f.Client, ns, deployOverlapping.Name)
// Wait for overlapping annotation updated to both deployments
By("Waiting for both deployments to have overlapping annotations")
@ -1252,7 +1271,7 @@ func testOverlappingDeployment(f *framework.Framework) {
Expect(rsList.Items[0].Spec.Template.Spec.Containers[0].Image).To(Equal(deploy.Spec.Template.Spec.Containers[0].Image))
By("Deleting the first deployment")
stopDeploymentOverlap(c, f.Client, ns, deploy.Name, deployOverlapping.Name)
stopDeploymentOverlap(c, ns, deploy.Name, deployOverlapping.Name)
// Wait for overlapping annotation cleared
By("Waiting for the second deployment to clear overlapping annotation")
@ -1277,7 +1296,6 @@ func testOverlappingDeployment(f *framework.Framework) {
d = newDeployment(deploymentName, replicas, podLabels, nginxImageName, nginxImage, extensions.RollingUpdateDeploymentStrategyType, nil)
deployLater, err := c.Extensions().Deployments(ns).Create(d)
Expect(err).NotTo(HaveOccurred(), "Failed creating the third deployment")
defer stopDeployment(c, f.Client, ns, deployLater.Name)
// Wait for it to be updated to revision 1
err = framework.WaitForDeploymentRevisionAndImage(c, ns, deployLater.Name, "1", nginxImage)