Merge base and user e2e tests into one
This commit is contained in:
		
							parent
							
								
									da17e1a011
								
							
						
					
					
						commit
						ab87922bd1
					
				|  | @ -4,30 +4,40 @@ import ( | ||||||
| 	"context" | 	"context" | ||||||
| 	"reflect" | 	"reflect" | ||||||
| 	"testing" | 	"testing" | ||||||
|  | 	"time" | ||||||
| 
 | 
 | ||||||
| 	"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1" | 	"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/jenkinsci/kubernetes-operator/pkg/controller/jenkins/plugins" | ||||||
| 
 | 
 | ||||||
| 	"github.com/bndr/gojenkins" | 	"github.com/bndr/gojenkins" | ||||||
| 	framework "github.com/operator-framework/operator-sdk/pkg/test" | 	framework "github.com/operator-framework/operator-sdk/pkg/test" | ||||||
|  | 	"github.com/stretchr/testify/assert" | ||||||
| 	corev1 "k8s.io/api/core/v1" | 	corev1 "k8s.io/api/core/v1" | ||||||
| 	"k8s.io/apimachinery/pkg/api/resource" | 	"k8s.io/apimachinery/pkg/api/resource" | ||||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | 	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() | 	t.Parallel() | ||||||
| 	namespace, ctx := setupTest(t) | 	namespace, ctx := setupTest(t) | ||||||
| 	// Deletes test namespace
 | 	// Deletes test namespace
 | ||||||
| 	defer ctx.Cleanup() | 	defer ctx.Cleanup() | ||||||
| 
 | 
 | ||||||
|  | 	// base
 | ||||||
| 	jenkins := createJenkinsCR(t, namespace) | 	jenkins := createJenkinsCR(t, namespace) | ||||||
| 	createDefaultLimitsForContainersInNamespace(t, namespace) | 	createDefaultLimitsForContainersInNamespace(t, namespace) | ||||||
| 	waitForJenkinsBaseConfigurationToComplete(t, jenkins) | 	waitForJenkinsBaseConfigurationToComplete(t, jenkins) | ||||||
| 
 | 
 | ||||||
| 	verifyJenkinsMasterPodAttributes(t, jenkins) | 	verifyJenkinsMasterPodAttributes(t, jenkins) | ||||||
| 	jenkinsClient := verifyJenkinsAPIConnection(t, jenkins) | 	client := verifyJenkinsAPIConnection(t, jenkins) | ||||||
| 	verifyBasePlugins(t, jenkinsClient) | 	verifyBasePlugins(t, client) | ||||||
|  | 
 | ||||||
|  | 	// user
 | ||||||
|  | 	waitForJenkinsUserConfigurationToComplete(t, jenkins) | ||||||
|  | 	verifyJenkinsSeedJobs(t, client, jenkins) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func createDefaultLimitsForContainersInNamespace(t *testing.T, namespace string) { | 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") | 	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) { | func isPluginValid(plugins *gojenkins.Plugins, requiredPlugin plugins.Plugin) (*gojenkins.Plugin, bool) { | ||||||
| 	p := plugins.Contains(requiredPlugin.Name) | 	p := plugins.Contains(requiredPlugin.Name) | ||||||
| 	if p == nil { | 	if p == nil { | ||||||
|  | @ -76,28 +76,6 @@ func createJenkinsAPIClient(jenkins *v1alpha1.Jenkins) (*gojenkins.Jenkins, erro | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func createJenkinsCR(t *testing.T, namespace string) *v1alpha1.Jenkins { | 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{ | 	jenkins := &v1alpha1.Jenkins{ | ||||||
| 		ObjectMeta: metav1.ObjectMeta{ | 		ObjectMeta: metav1.ObjectMeta{ | ||||||
| 			Name:      "e2e", | 			Name:      "e2e", | ||||||
|  |  | ||||||
|  | @ -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) |  | ||||||
| } |  | ||||||
		Loading…
	
		Reference in New Issue