mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Merge pull request #86767 from tanjunchen/move-functions
move functions from e2e/framework/deployment/ to e2e/apps/ and e2e/up…
This commit is contained in:
commit
9da4b00d40
@ -51,6 +51,7 @@ import (
|
||||
|
||||
const (
|
||||
poll = 2 * time.Second
|
||||
pollLongTimeout = 5 * time.Minute
|
||||
dRetryPeriod = 2 * time.Second
|
||||
dRetryTimeout = 5 * time.Minute
|
||||
)
|
||||
@ -448,7 +449,7 @@ func testRolloverDeployment(f *framework.Framework) {
|
||||
framework.ExpectNoError(err)
|
||||
framework.Logf("Make sure deployment %q performs scaling operations", deploymentName)
|
||||
// Make sure the deployment starts to scale up and down replica sets by checking if its updated replicas >= 1
|
||||
err = e2edeploy.WaitForDeploymentUpdatedReplicasGTE(c, ns, deploymentName, deploymentReplicas, deployment.Generation)
|
||||
err = waitForDeploymentUpdatedReplicasGTE(c, ns, deploymentName, deploymentReplicas, deployment.Generation)
|
||||
// Check if it's updated to revision 1 correctly
|
||||
framework.Logf("Check revision of new replica set for deployment %q", deploymentName)
|
||||
err = checkDeploymentRevisionAndImage(c, ns, deploymentName, "1", deploymentImage)
|
||||
@ -473,7 +474,7 @@ func testRolloverDeployment(f *framework.Framework) {
|
||||
|
||||
// Use observedGeneration to determine if the controller noticed the pod template update.
|
||||
framework.Logf("Wait deployment %q to be observed by the deployment controller", deploymentName)
|
||||
err = e2edeploy.WaitForObservedDeployment(c, ns, deploymentName, deployment.Generation)
|
||||
err = waitForObservedDeployment(c, ns, deploymentName, deployment.Generation)
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
// Wait for it to be updated to revision 2
|
||||
@ -482,7 +483,7 @@ func testRolloverDeployment(f *framework.Framework) {
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
framework.Logf("Make sure deployment %q is complete", deploymentName)
|
||||
err = e2edeploy.WaitForDeploymentCompleteAndCheckRolling(c, deployment)
|
||||
err = waitForDeploymentCompleteAndCheckRolling(c, deployment)
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
framework.Logf("Ensure that both old replica sets have no replicas")
|
||||
@ -623,7 +624,7 @@ func testIterativeDeployments(f *framework.Framework) {
|
||||
}
|
||||
|
||||
framework.Logf("Waiting for deployment %q to be observed by the controller", deploymentName)
|
||||
err = e2edeploy.WaitForObservedDeployment(c, ns, deploymentName, deployment.Generation)
|
||||
err = waitForObservedDeployment(c, ns, deploymentName, deployment.Generation)
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
framework.Logf("Waiting for deployment %q status", deploymentName)
|
||||
@ -631,7 +632,7 @@ func testIterativeDeployments(f *framework.Framework) {
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
framework.Logf("Checking deployment %q for a complete condition", deploymentName)
|
||||
err = e2edeploy.WaitForDeploymentWithCondition(c, ns, deploymentName, deploymentutil.NewRSAvailableReason, appsv1.DeploymentProgressing)
|
||||
err = waitForDeploymentWithCondition(c, ns, deploymentName, deploymentutil.NewRSAvailableReason, appsv1.DeploymentProgressing)
|
||||
framework.ExpectNoError(err)
|
||||
}
|
||||
|
||||
@ -710,7 +711,7 @@ func testProportionalScalingDeployment(f *framework.Framework) {
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
framework.Logf("Waiting for observed generation %d", deployment.Generation)
|
||||
err = e2edeploy.WaitForObservedDeployment(c, ns, deploymentName, deployment.Generation)
|
||||
err = waitForObservedDeployment(c, ns, deploymentName, deployment.Generation)
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
// Verify that the required pods have come up.
|
||||
@ -734,7 +735,7 @@ func testProportionalScalingDeployment(f *framework.Framework) {
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
framework.Logf("Waiting for observed generation %d", deployment.Generation)
|
||||
err = e2edeploy.WaitForObservedDeployment(c, ns, deploymentName, deployment.Generation)
|
||||
err = waitForObservedDeployment(c, ns, deploymentName, deployment.Generation)
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
// Checking state of first rollout's replicaset.
|
||||
@ -943,11 +944,11 @@ func testRollingUpdateDeploymentWithLocalTrafficLoadBalancer(f *framework.Framew
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
framework.Logf("Waiting for observed generation %d", deployment.Generation)
|
||||
err = e2edeploy.WaitForObservedDeployment(c, ns, name, deployment.Generation)
|
||||
err = waitForObservedDeployment(c, ns, name, deployment.Generation)
|
||||
framework.ExpectNoError(err)
|
||||
|
||||
framework.Logf("Make sure deployment %q is complete", name)
|
||||
err = e2edeploy.WaitForDeploymentCompleteAndCheckRolling(c, deployment)
|
||||
err = waitForDeploymentCompleteAndCheckRolling(c, deployment)
|
||||
framework.ExpectNoError(err)
|
||||
}
|
||||
|
||||
@ -1118,3 +1119,24 @@ func waitForReplicaSetTargetSpecReplicas(c clientset.Interface, replicaSet *apps
|
||||
func checkDeploymentRevisionAndImage(c clientset.Interface, ns, deploymentName, revision, image string) error {
|
||||
return testutil.CheckDeploymentRevisionAndImage(c, ns, deploymentName, revision, image)
|
||||
}
|
||||
|
||||
// waitForObservedDeployment waits for the specified deployment generation.
|
||||
func waitForObservedDeployment(c clientset.Interface, ns, deploymentName string, desiredGeneration int64) error {
|
||||
return testutil.WaitForObservedDeployment(c, ns, deploymentName, desiredGeneration)
|
||||
}
|
||||
|
||||
// waitForDeploymentWithCondition waits for the specified deployment condition.
|
||||
func waitForDeploymentWithCondition(c clientset.Interface, ns, deploymentName, reason string, condType appsv1.DeploymentConditionType) error {
|
||||
return testutil.WaitForDeploymentWithCondition(c, ns, deploymentName, reason, condType, framework.Logf, poll, pollLongTimeout)
|
||||
}
|
||||
|
||||
// waitForDeploymentCompleteAndCheckRolling waits for the deployment to complete, and check rolling update strategy isn't broken at any times.
|
||||
// Rolling update strategy should not be broken during a rolling update.
|
||||
func waitForDeploymentCompleteAndCheckRolling(c clientset.Interface, d *appsv1.Deployment) error {
|
||||
return testutil.WaitForDeploymentCompleteAndCheckRolling(c, d, framework.Logf, poll, pollLongTimeout)
|
||||
}
|
||||
|
||||
// waitForDeploymentUpdatedReplicasGTE waits for given deployment to be observed by the controller and has at least a number of updatedReplicas
|
||||
func waitForDeploymentUpdatedReplicasGTE(c clientset.Interface, ns, deploymentName string, minUpdatedReplicas int32, desiredGeneration int64) error {
|
||||
return testutil.WaitForDeploymentUpdatedReplicasGTE(c, ns, deploymentName, minUpdatedReplicas, desiredGeneration, poll, pollLongTimeout)
|
||||
}
|
||||
|
@ -15,7 +15,6 @@ go_library(
|
||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
||||
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
||||
"//test/e2e/framework:go_default_library",
|
||||
"//test/utils:go_default_library",
|
||||
|
@ -17,14 +17,10 @@ limitations under the License.
|
||||
package deployment
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
clientset "k8s.io/client-go/kubernetes"
|
||||
deploymentutil "k8s.io/kubernetes/pkg/controller/deployment/util"
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
testutils "k8s.io/kubernetes/test/utils"
|
||||
)
|
||||
@ -36,16 +32,6 @@ const (
|
||||
pollLongTimeout = 5 * time.Minute
|
||||
)
|
||||
|
||||
// WaitForObservedDeployment waits for the specified deployment generation.
|
||||
func WaitForObservedDeployment(c clientset.Interface, ns, deploymentName string, desiredGeneration int64) error {
|
||||
return testutils.WaitForObservedDeployment(c, ns, deploymentName, desiredGeneration)
|
||||
}
|
||||
|
||||
// WaitForDeploymentWithCondition waits for the specified deployment condition.
|
||||
func WaitForDeploymentWithCondition(c clientset.Interface, ns, deploymentName, reason string, condType appsv1.DeploymentConditionType) error {
|
||||
return testutils.WaitForDeploymentWithCondition(c, ns, deploymentName, reason, condType, framework.Logf, poll, pollLongTimeout)
|
||||
}
|
||||
|
||||
// WaitForDeploymentRevisionAndImage waits for the deployment's and its new RS's revision and container image to match the given revision and image.
|
||||
// Note that deployment revision and its new RS revision should be updated shortly most of the time, but an overwhelmed RS controller
|
||||
// may result in taking longer to relabel a RS.
|
||||
@ -59,36 +45,3 @@ func WaitForDeploymentRevisionAndImage(c clientset.Interface, ns, deploymentName
|
||||
func WaitForDeploymentComplete(c clientset.Interface, d *appsv1.Deployment) error {
|
||||
return testutils.WaitForDeploymentComplete(c, d, framework.Logf, poll, pollLongTimeout)
|
||||
}
|
||||
|
||||
// WaitForDeploymentCompleteAndCheckRolling waits for the deployment to complete, and check rolling update strategy isn't broken at any times.
|
||||
// Rolling update strategy should not be broken during a rolling update.
|
||||
func WaitForDeploymentCompleteAndCheckRolling(c clientset.Interface, d *appsv1.Deployment) error {
|
||||
return testutils.WaitForDeploymentCompleteAndCheckRolling(c, d, framework.Logf, poll, pollLongTimeout)
|
||||
}
|
||||
|
||||
// WaitForDeploymentUpdatedReplicasGTE waits for given deployment to be observed by the controller and has at least a number of updatedReplicas
|
||||
func WaitForDeploymentUpdatedReplicasGTE(c clientset.Interface, ns, deploymentName string, minUpdatedReplicas int32, desiredGeneration int64) error {
|
||||
return testutils.WaitForDeploymentUpdatedReplicasGTE(c, ns, deploymentName, minUpdatedReplicas, desiredGeneration, poll, pollLongTimeout)
|
||||
}
|
||||
|
||||
// WaitForDeploymentRollbackCleared waits for given deployment either started rolling back or doesn't need to rollback.
|
||||
// Note that rollback should be cleared shortly, so we only wait for 1 minute here to fail early.
|
||||
func WaitForDeploymentRollbackCleared(c clientset.Interface, ns, deploymentName string) error {
|
||||
return testutils.WaitForDeploymentRollbackCleared(c, ns, deploymentName, poll, pollShortTimeout)
|
||||
}
|
||||
|
||||
// WaitForDeploymentRevision waits for becoming the target revision of a delopyment.
|
||||
func WaitForDeploymentRevision(c clientset.Interface, d *appsv1.Deployment, targetRevision string) error {
|
||||
err := wait.PollImmediate(poll, pollLongTimeout, func() (bool, error) {
|
||||
deployment, err := c.AppsV1().Deployments(d.Namespace).Get(d.Name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
revision := deployment.Annotations[deploymentutil.RevisionAnnotation]
|
||||
return revision == targetRevision, nil
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("error waiting for revision to become %q for deployment %q: %v", targetRevision, d.Name, err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -18,10 +18,13 @@ package upgrades
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
clientset "k8s.io/client-go/kubernetes"
|
||||
deploymentutil "k8s.io/kubernetes/pkg/controller/deployment/util"
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
e2edeploy "k8s.io/kubernetes/test/e2e/framework/deployment"
|
||||
@ -33,6 +36,9 @@ import (
|
||||
|
||||
const (
|
||||
deploymentName = "dp"
|
||||
// poll is how often to poll pods, nodes and claims.
|
||||
poll = 2 * time.Second
|
||||
pollLongTimeout = 5 * time.Minute
|
||||
)
|
||||
|
||||
// TODO: Test that the deployment stays available during master (and maybe
|
||||
@ -78,7 +84,7 @@ func (t *DeploymentUpgradeTest) Setup(f *framework.Framework) {
|
||||
t.oldRSUID = rss[0].UID
|
||||
|
||||
ginkgo.By(fmt.Sprintf("Waiting for revision of the deployment %q to become 1", deploymentName))
|
||||
framework.ExpectNoError(e2edeploy.WaitForDeploymentRevision(c, deployment, "1"))
|
||||
framework.ExpectNoError(waitForDeploymentRevision(c, deployment, "1"))
|
||||
|
||||
// Trigger a new rollout so that we have some history.
|
||||
ginkgo.By(fmt.Sprintf("Triggering a new rollout for deployment %q", deploymentName))
|
||||
@ -109,7 +115,7 @@ func (t *DeploymentUpgradeTest) Setup(f *framework.Framework) {
|
||||
}
|
||||
|
||||
ginkgo.By(fmt.Sprintf("Waiting for revision of the deployment %q to become 2", deploymentName))
|
||||
framework.ExpectNoError(e2edeploy.WaitForDeploymentRevision(c, deployment, "2"))
|
||||
framework.ExpectNoError(waitForDeploymentRevision(c, deployment, "2"))
|
||||
|
||||
t.oldDeploymentUID = deployment.UID
|
||||
}
|
||||
@ -171,3 +177,19 @@ func (t *DeploymentUpgradeTest) Test(f *framework.Framework, done <-chan struct{
|
||||
func (t *DeploymentUpgradeTest) Teardown(f *framework.Framework) {
|
||||
// rely on the namespace deletion to clean up everything
|
||||
}
|
||||
|
||||
// waitForDeploymentRevision waits for becoming the target revision of a delopyment.
|
||||
func waitForDeploymentRevision(c clientset.Interface, d *appsv1.Deployment, targetRevision string) error {
|
||||
err := wait.PollImmediate(poll, pollLongTimeout, func() (bool, error) {
|
||||
deployment, err := c.AppsV1().Deployments(d.Namespace).Get(d.Name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
revision := deployment.Annotations[deploymentutil.RevisionAnnotation]
|
||||
return revision == targetRevision, nil
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("error waiting for revision to become %q for deployment %q: %v", targetRevision, d.Name, err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user