Improve JenkinsMasterPodRestart test

This commit is contained in:
Tomasz Sęk 2018-12-25 17:07:51 +01:00
parent 25d63a881f
commit 1de7a05278
No known key found for this signature in database
GPG Key ID: DC356D23F6A644D0
2 changed files with 25 additions and 4 deletions

View File

@ -2,12 +2,12 @@ package e2e
import ( import (
"context" "context"
virtuslabv1alpha1 "github.com/VirtusLab/jenkins-operator/pkg/apis/virtuslab/v1alpha1"
"testing" "testing"
virtuslabv1alpha1 "github.com/VirtusLab/jenkins-operator/pkg/apis/virtuslab/v1alpha1"
framework "github.com/operator-framework/operator-sdk/pkg/test" framework "github.com/operator-framework/operator-sdk/pkg/test"
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
"time"
) )
func TestJenkinsMasterPodRestart(t *testing.T) { func TestJenkinsMasterPodRestart(t *testing.T) {
@ -19,7 +19,7 @@ func TestJenkinsMasterPodRestart(t *testing.T) {
jenkins := createJenkinsCR(t, namespace) jenkins := createJenkinsCR(t, namespace)
waitForJenkinsBaseConfigurationToComplete(t, jenkins) waitForJenkinsBaseConfigurationToComplete(t, jenkins)
restartJenkinsMasterPod(t, jenkins) restartJenkinsMasterPod(t, jenkins)
time.Sleep(33 * time.Second) // wait for recreate pod waitForRecreateJenkinsMasterPod(t, jenkins)
checkBaseConfigurationCompleteTimeIsNotSet(t, jenkins) checkBaseConfigurationCompleteTimeIsNotSet(t, jenkins)
waitForJenkinsBaseConfigurationToComplete(t, jenkins) waitForJenkinsBaseConfigurationToComplete(t, jenkins)
} }

View File

@ -7,8 +7,11 @@ import (
"time" "time"
virtuslabv1alpha1 "github.com/VirtusLab/jenkins-operator/pkg/apis/virtuslab/v1alpha1" 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" 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/types"
"k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/util/wait"
) )
@ -23,7 +26,7 @@ type checkConditionFunc func(*virtuslabv1alpha1.Jenkins) bool
func waitForJenkinsBaseConfigurationToComplete(t *testing.T, jenkins *virtuslabv1alpha1.Jenkins) { func waitForJenkinsBaseConfigurationToComplete(t *testing.T, jenkins *virtuslabv1alpha1.Jenkins) {
t.Log("Waiting for Jenkins base configuration to complete") 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) t.Logf("Current Jenkins status '%+v'", jenkins.Status)
return jenkins.Status.BaseConfigurationCompletedTime != nil return jenkins.Status.BaseConfigurationCompletedTime != nil
}) })
@ -33,6 +36,24 @@ func waitForJenkinsBaseConfigurationToComplete(t *testing.T, jenkins *virtuslabv
t.Log("Jenkins pod is running") 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) { func waitForJenkinsUserConfigurationToComplete(t *testing.T, jenkins *virtuslabv1alpha1.Jenkins) {
t.Log("Waiting for Jenkins user configuration to complete") t.Log("Waiting for Jenkins user configuration to complete")
_, err := WaitUntilJenkinsConditionTrue(retryInterval, 30, jenkins, func(jenkins *virtuslabv1alpha1.Jenkins) bool { _, err := WaitUntilJenkinsConditionTrue(retryInterval, 30, jenkins, func(jenkins *virtuslabv1alpha1.Jenkins) bool {