diff --git a/test/e2e/base_configuration_test.go b/test/e2e/configuration_test.go similarity index 65% rename from test/e2e/base_configuration_test.go rename to test/e2e/configuration_test.go index 72113dc0..e9530503 100644 --- a/test/e2e/base_configuration_test.go +++ b/test/e2e/configuration_test.go @@ -4,30 +4,40 @@ import ( "context" "reflect" "testing" + "time" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1" + "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/user/seedjobs" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/plugins" "github.com/bndr/gojenkins" framework "github.com/operator-framework/operator-sdk/pkg/test" + "github.com/stretchr/testify/assert" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/wait" ) -func TestBaseConfiguration(t *testing.T) { +func TestConfiguration(t *testing.T) { t.Parallel() namespace, ctx := setupTest(t) // Deletes test namespace defer ctx.Cleanup() + // base jenkins := createJenkinsCR(t, namespace) createDefaultLimitsForContainersInNamespace(t, namespace) waitForJenkinsBaseConfigurationToComplete(t, jenkins) verifyJenkinsMasterPodAttributes(t, jenkins) - jenkinsClient := verifyJenkinsAPIConnection(t, jenkins) - verifyBasePlugins(t, jenkinsClient) + client := verifyJenkinsAPIConnection(t, jenkins) + verifyBasePlugins(t, client) + + // user + waitForJenkinsUserConfigurationToComplete(t, jenkins) + verifyJenkinsSeedJobs(t, client, jenkins) } func createDefaultLimitsForContainersInNamespace(t *testing.T, namespace string) { @@ -104,6 +114,43 @@ func verifyBasePlugins(t *testing.T, jenkinsClient *gojenkins.Jenkins) { t.Log("Base plugins have been installed") } +func verifyJenkinsSeedJobs(t *testing.T, client *gojenkins.Jenkins, jenkins *v1alpha1.Jenkins) { + t.Logf("Attempting to get configure seed job status '%v'", seedjobs.ConfigureSeedJobsName) + + configureSeedJobs, err := client.GetJob(seedjobs.ConfigureSeedJobsName) + assert.NoError(t, err) + assert.NotNil(t, configureSeedJobs) + build, err := configureSeedJobs.GetLastSuccessfulBuild() + assert.NoError(t, err) + assert.NotNil(t, build) + + seedJobName := "jenkins-operator-configure-seed-job" + t.Logf("Attempting to verify if seed job has been created '%v'", seedJobName) + seedJob, err := client.GetJob(seedJobName) + assert.NoError(t, err) + assert.NotNil(t, seedJob) + + build, err = seedJob.GetLastSuccessfulBuild() + assert.NoError(t, err) + assert.NotNil(t, build) + + err = framework.Global.Client.Get(context.TODO(), types.NamespacedName{Namespace: jenkins.Namespace, Name: jenkins.Name}, jenkins) + assert.NoError(t, err, "couldn't get jenkins custom resource") + assert.NotNil(t, jenkins.Status.Builds) + assert.NotEmpty(t, jenkins.Status.Builds) + + jobCreatedByDSLPluginName := "build-jenkins-operator" + err = wait.Poll(time.Second*10, time.Minute*2, func() (bool, error) { + t.Logf("Attempting to verify if job '%s' has been created ", jobCreatedByDSLPluginName) + seedJob, err := client.GetJob(jobCreatedByDSLPluginName) + if err != nil || seedJob == nil { + return false, nil + } + return true, nil + }) + assert.NoError(t, err) +} + func isPluginValid(plugins *gojenkins.Plugins, requiredPlugin plugins.Plugin) (*gojenkins.Plugin, bool) { p := plugins.Contains(requiredPlugin.Name) if p == nil { diff --git a/test/e2e/jenkins.go b/test/e2e/jenkins.go index bcfc7cfb..bc055e28 100644 --- a/test/e2e/jenkins.go +++ b/test/e2e/jenkins.go @@ -76,28 +76,6 @@ func createJenkinsAPIClient(jenkins *v1alpha1.Jenkins) (*gojenkins.Jenkins, erro } func createJenkinsCR(t *testing.T, namespace string) *v1alpha1.Jenkins { - jenkins := &v1alpha1.Jenkins{ - ObjectMeta: metav1.ObjectMeta{ - Name: "e2e", - Namespace: namespace, - }, - Spec: v1alpha1.JenkinsSpec{ - Master: v1alpha1.JenkinsMaster{ - Image: "jenkins/jenkins", - Annotations: map[string]string{"test": "label"}, - }, - }, - } - - t.Logf("Jenkins CR %+v", *jenkins) - if err := framework.Global.Client.Create(context.TODO(), jenkins, nil); err != nil { - t.Fatal(err) - } - - return jenkins -} - -func createJenkinsCRWithSeedJob(t *testing.T, namespace string) *v1alpha1.Jenkins { jenkins := &v1alpha1.Jenkins{ ObjectMeta: metav1.ObjectMeta{ Name: "e2e", diff --git a/test/e2e/user_configuration_test.go b/test/e2e/user_configuration_test.go deleted file mode 100644 index 4ae6b98a..00000000 --- a/test/e2e/user_configuration_test.go +++ /dev/null @@ -1,69 +0,0 @@ -package e2e - -import ( - "context" - "testing" - "time" - - "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1" - "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/user/seedjobs" - - "github.com/bndr/gojenkins" - framework "github.com/operator-framework/operator-sdk/pkg/test" - "github.com/stretchr/testify/assert" - "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/wait" -) - -func TestUserConfiguration(t *testing.T) { - t.Parallel() - namespace, ctx := setupTest(t) - // Deletes test namespace - defer ctx.Cleanup() - - // base - jenkins := createJenkinsCRWithSeedJob(t, namespace) - waitForJenkinsBaseConfigurationToComplete(t, jenkins) - client := verifyJenkinsAPIConnection(t, jenkins) - - // user - waitForJenkinsUserConfigurationToComplete(t, jenkins) - verifyJenkinsSeedJobs(t, client, jenkins) -} - -func verifyJenkinsSeedJobs(t *testing.T, client *gojenkins.Jenkins, jenkins *v1alpha1.Jenkins) { - t.Logf("Attempting to get configure seed job status '%v'", seedjobs.ConfigureSeedJobsName) - - configureSeedJobs, err := client.GetJob(seedjobs.ConfigureSeedJobsName) - assert.NoError(t, err) - assert.NotNil(t, configureSeedJobs) - build, err := configureSeedJobs.GetLastSuccessfulBuild() - assert.NoError(t, err) - assert.NotNil(t, build) - - seedJobName := "jenkins-operator-configure-seed-job" - t.Logf("Attempting to verify if seed job has been created '%v'", seedJobName) - seedJob, err := client.GetJob(seedJobName) - assert.NoError(t, err) - assert.NotNil(t, seedJob) - - build, err = seedJob.GetLastSuccessfulBuild() - assert.NoError(t, err) - assert.NotNil(t, build) - - err = framework.Global.Client.Get(context.TODO(), types.NamespacedName{Namespace: jenkins.Namespace, Name: jenkins.Name}, jenkins) - assert.NoError(t, err, "couldn't get jenkins custom resource") - assert.NotNil(t, jenkins.Status.Builds) - assert.NotEmpty(t, jenkins.Status.Builds) - - jobCreatedByDSLPluginName := "build-jenkins-operator" - err = wait.Poll(time.Second*10, time.Minute*2, func() (bool, error) { - t.Logf("Attempting to verify if job '%s' has been created ", jobCreatedByDSLPluginName) - seedJob, err := client.GetJob(jobCreatedByDSLPluginName) - if err != nil || seedJob == nil { - return false, nil - } - return true, nil - }) - assert.NoError(t, err) -}