#28 Fix e2e test

This commit is contained in:
Tomasz Sęk 2019-09-03 20:19:24 +02:00
parent 1c147e1899
commit 1e03f639d0
No known key found for this signature in database
GPG Key ID: DC356D23F6A644D0
5 changed files with 40 additions and 20 deletions

View File

@ -1,7 +1,7 @@
#!/usr/bin/env groovy
pipelineJob('e2e-jenkins-operator') {
displayName('Dummy job to e2e testing')
displayName('Dummy job for e2e testing')
logRotator {
numToKeep(10)

View File

@ -15,12 +15,11 @@ import jenkins.model.JenkinsLocationConfiguration
import hudson.model.Node.Mode
def jenkins = Jenkins.instance
//Number of jobs that run simultaneously on master, currently only SeedJob.
//Number of jobs that run simultaneously on master.
jenkins.setNumExecutors(%d)
//Jobs must specify that they want to run on master
jenkins.setMode(Mode.EXCLUSIVE)
jenkins.save()
`
const enableCSRF = `

View File

@ -9,10 +9,6 @@ const (
SeedJobSuffix = "job-dsl-seed"
// DefaultJenkinsMasterImage is the default Jenkins master docker image
DefaultJenkinsMasterImage = "jenkins/jenkins:lts"
// UserConfigurationJobName is the Jenkins job name used to configure Jenkins by groovy scripts provided by user
UserConfigurationJobName = OperatorName + "-user-configuration"
// UserConfigurationCASCJobName is the Jenkins job name used to configure Jenkins by Configuration as code yaml configs provided by user
UserConfigurationCASCJobName = OperatorName + "-user-configuration-casc"
// DefaultHTTPPortInt32 is the default Jenkins HTTP port
DefaultHTTPPortInt32 = int32(8080)
// DefaultSlavePortInt32 is the default Jenkins port for slaves

View File

@ -28,6 +28,7 @@ func TestJenkinsMasterPodRestart(t *testing.T) {
waitForJenkinsBaseConfigurationToComplete(t, jenkins)
}
// FIXME java.lang.Exception: AuthorizationStrategy.Unsecured is not set
func TestSafeRestart(t *testing.T) {
t.Parallel()
namespace, ctx := setupTest(t)

View File

@ -3,12 +3,12 @@ package e2e
import (
"context"
"testing"
"time"
"github.com/jenkinsci/kubernetes-operator/internal/try"
"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base/resources"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
framework "github.com/operator-framework/operator-sdk/pkg/test"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@ -25,28 +25,41 @@ func TestBackupAndRestore(t *testing.T) {
// Deletes test namespace
defer ctx.Cleanup()
jobID := "e2e-jenkins-operator"
createPVC(t, namespace)
jenkins := createJenkinsWithBackupAndRestoreConfigured(t, "e2e", namespace)
waitForJenkinsUserConfigurationToComplete(t, jenkins)
jenkinsClient := verifyJenkinsAPIConnection(t, jenkins)
waitForJob(t, jenkinsClient, jobID)
job, err := jenkinsClient.GetJob(jobID)
require.NoError(t, err, job)
i, err := job.InvokeSimple(map[string]string{})
require.NoError(t, err, i)
time.Sleep(60 * time.Second) // wait for the build to complete
restartJenkinsMasterPod(t, jenkins)
waitForRecreateJenkinsMasterPod(t, jenkins)
waitForJenkinsUserConfigurationToComplete(t, jenkins)
jenkinsClient := verifyJenkinsAPIConnection(t, jenkins)
verifyJobBuildsAfterRestoreBackup(t, jenkinsClient)
jenkinsClient = verifyJenkinsAPIConnection(t, jenkins)
waitForJob(t, jenkinsClient, jobID)
verifyJobBuildsAfterRestoreBackup(t, jenkinsClient, jobID)
}
func verifyJobBuildsAfterRestoreBackup(t *testing.T, jenkins client.Jenkins) {
job, err := jenkins.GetJob(constants.UserConfigurationJobName)
func waitForJob(t *testing.T, jenkinsClient client.Jenkins, jobID string) {
err := try.Until(func() (end bool, err error) {
_, err = jenkinsClient.GetJob(jobID)
return err == nil, err
}, time.Second*2, time.Minute*2)
require.NoErrorf(t, err, "Jenkins job '%s' not created by seed job", jobID)
}
func verifyJobBuildsAfterRestoreBackup(t *testing.T, jenkinsClient client.Jenkins, jobID string) {
job, err := jenkinsClient.GetJob(jobID)
require.NoError(t, err)
build, err := job.GetLastBuild()
require.NoError(t, err)
assert.Equal(t, int64(2), build.GetBuildNumber())
job, err = jenkins.GetJob(constants.UserConfigurationCASCJobName)
require.NoError(t, err)
build, err = job.GetLastBuild()
require.NoError(t, err)
assert.Equal(t, int64(2), build.GetBuildNumber())
assert.Equal(t, int64(1), build.GetBuildNumber())
}
func createPVC(t *testing.T, namespace string) {
@ -136,6 +149,17 @@ func createJenkinsWithBackupAndRestoreConfigured(t *testing.T, name, namespace s
},
},
},
SeedJobs: []v1alpha2.SeedJob{
{
ID: "jenkins-operator",
CredentialID: "jenkins-operator",
JenkinsCredentialType: v1alpha2.NoJenkinsCredentialCredentialType,
Targets: "cicd/jobs/*.jenkins",
Description: "Jenkins Operator repository",
RepositoryBranch: "master",
RepositoryURL: "https://github.com/jenkinsci/kubernetes-operator.git",
},
},
},
}