From 1de7a0527832965b8d674f8875e86314cbf473fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20S=C4=99k?= Date: Tue, 25 Dec 2018 17:07:51 +0100 Subject: [PATCH] Improve JenkinsMasterPodRestart test --- test/e2e/restart_pod_test.go | 6 +++--- test/e2e/wait.go | 23 ++++++++++++++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/test/e2e/restart_pod_test.go b/test/e2e/restart_pod_test.go index a5b2b639..de27e797 100644 --- a/test/e2e/restart_pod_test.go +++ b/test/e2e/restart_pod_test.go @@ -2,12 +2,12 @@ package e2e import ( "context" - virtuslabv1alpha1 "github.com/VirtusLab/jenkins-operator/pkg/apis/virtuslab/v1alpha1" "testing" + virtuslabv1alpha1 "github.com/VirtusLab/jenkins-operator/pkg/apis/virtuslab/v1alpha1" + framework "github.com/operator-framework/operator-sdk/pkg/test" "k8s.io/apimachinery/pkg/types" - "time" ) func TestJenkinsMasterPodRestart(t *testing.T) { @@ -19,7 +19,7 @@ func TestJenkinsMasterPodRestart(t *testing.T) { jenkins := createJenkinsCR(t, namespace) waitForJenkinsBaseConfigurationToComplete(t, jenkins) restartJenkinsMasterPod(t, jenkins) - time.Sleep(33 * time.Second) // wait for recreate pod + waitForRecreateJenkinsMasterPod(t, jenkins) checkBaseConfigurationCompleteTimeIsNotSet(t, jenkins) waitForJenkinsBaseConfigurationToComplete(t, jenkins) } diff --git a/test/e2e/wait.go b/test/e2e/wait.go index e7233a4b..d4c0c290 100644 --- a/test/e2e/wait.go +++ b/test/e2e/wait.go @@ -7,8 +7,11 @@ import ( "time" virtuslabv1alpha1 "github.com/VirtusLab/jenkins-operator/pkg/apis/virtuslab/v1alpha1" + "github.com/VirtusLab/jenkins-operator/pkg/controller/jenkins/configuration/base/resources" framework "github.com/operator-framework/operator-sdk/pkg/test" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/wait" ) @@ -23,7 +26,7 @@ type checkConditionFunc func(*virtuslabv1alpha1.Jenkins) bool func waitForJenkinsBaseConfigurationToComplete(t *testing.T, jenkins *virtuslabv1alpha1.Jenkins) { t.Log("Waiting for Jenkins base configuration to complete") - _, err := WaitUntilJenkinsConditionTrue(retryInterval, 30, jenkins, func(jenkins *virtuslabv1alpha1.Jenkins) bool { + _, err := WaitUntilJenkinsConditionTrue(retryInterval, 50, jenkins, func(jenkins *virtuslabv1alpha1.Jenkins) bool { t.Logf("Current Jenkins status '%+v'", jenkins.Status) return jenkins.Status.BaseConfigurationCompletedTime != nil }) @@ -33,6 +36,24 @@ func waitForJenkinsBaseConfigurationToComplete(t *testing.T, jenkins *virtuslabv t.Log("Jenkins pod is running") } +func waitForRecreateJenkinsMasterPod(t *testing.T, jenkins *virtuslabv1alpha1.Jenkins) { + err := wait.Poll(retryInterval, 20*retryInterval, func() (bool, error) { + lo := metav1.ListOptions{ + LabelSelector: labels.SelectorFromSet(resources.BuildResourceLabels(jenkins)).String(), + } + podList, err := framework.Global.KubeClient.CoreV1().Pods(jenkins.ObjectMeta.Namespace).List(lo) + if err != nil { + return false, err + } + + return podList.Items[0].DeletionTimestamp == nil, nil + }) + if err != nil { + t.Fatal(err) + } + t.Log("Jenkins pod has bee recreated") +} + func waitForJenkinsUserConfigurationToComplete(t *testing.T, jenkins *virtuslabv1alpha1.Jenkins) { t.Log("Waiting for Jenkins user configuration to complete") _, err := WaitUntilJenkinsConditionTrue(retryInterval, 30, jenkins, func(jenkins *virtuslabv1alpha1.Jenkins) bool {