From ab1d3fb59b14e7124c7686ea4de9a43e5436aba0 Mon Sep 17 00:00:00 2001 From: Jakub Al-Khalili Date: Fri, 23 Aug 2019 11:27:24 +0200 Subject: [PATCH] Fix tests --- pkg/controller/jenkins/client/jenkins.go | 2 +- .../resources/base_configuration_configmap.go | 1 + .../configuration/base/resources/pod.go | 6 ++-- .../configuration/user/seedjobs/seedjobs.go | 29 ++++++++++--------- .../user/seedjobs/seedjobs_test.go | 23 +++++++++++---- 5 files changed, 39 insertions(+), 22 deletions(-) diff --git a/pkg/controller/jenkins/client/jenkins.go b/pkg/controller/jenkins/client/jenkins.go index 5332de53..246e6da8 100644 --- a/pkg/controller/jenkins/client/jenkins.go +++ b/pkg/controller/jenkins/client/jenkins.go @@ -14,7 +14,7 @@ import ( var ( errorNotFound = errors.New("404") - regex = regexp.MustCompile("()(?P[a-z0-9]*)") + regex = regexp.MustCompile("()(?P[a-z0-9]*)") ) // Jenkins defines Jenkins API diff --git a/pkg/controller/jenkins/configuration/base/resources/base_configuration_configmap.go b/pkg/controller/jenkins/configuration/base/resources/base_configuration_configmap.go index 9de69757..18ec0b2e 100644 --- a/pkg/controller/jenkins/configuration/base/resources/base_configuration_configmap.go +++ b/pkg/controller/jenkins/configuration/base/resources/base_configuration_configmap.go @@ -168,6 +168,7 @@ import jenkins.model.GlobalConfiguration GlobalConfiguration.all().get(GlobalJobDslSecurityConfiguration.class).useScriptSecurity=false GlobalConfiguration.all().get(GlobalJobDslSecurityConfiguration.class).save() ` + // GetBaseConfigurationConfigMapName returns name of Kubernetes config map used to base configuration func GetBaseConfigurationConfigMapName(jenkins *v1alpha2.Jenkins) string { return fmt.Sprintf("%s-base-configuration-%s", constants.OperatorName, jenkins.ObjectMeta.Name) diff --git a/pkg/controller/jenkins/configuration/base/resources/pod.go b/pkg/controller/jenkins/configuration/base/resources/pod.go index f1901d7a..6dcbf6fb 100644 --- a/pkg/controller/jenkins/configuration/base/resources/pod.go +++ b/pkg/controller/jenkins/configuration/base/resources/pod.go @@ -231,9 +231,9 @@ func NewJenkinsMasterContainer(jenkins *v1alpha2.Jenkins) corev1.Container { }, }, SecurityContext: jenkinsContainer.SecurityContext, - Env: envs, - Resources: jenkinsContainer.Resources, - VolumeMounts: append(GetJenkinsMasterContainerBaseVolumeMounts(jenkins), jenkinsContainer.VolumeMounts...), + Env: envs, + Resources: jenkinsContainer.Resources, + VolumeMounts: append(GetJenkinsMasterContainerBaseVolumeMounts(jenkins), jenkinsContainer.VolumeMounts...), } } diff --git a/pkg/controller/jenkins/configuration/user/seedjobs/seedjobs.go b/pkg/controller/jenkins/configuration/user/seedjobs/seedjobs.go index 1cdbb945..4791b9e3 100644 --- a/pkg/controller/jenkins/configuration/user/seedjobs/seedjobs.go +++ b/pkg/controller/jenkins/configuration/user/seedjobs/seedjobs.go @@ -8,21 +8,21 @@ import ( "reflect" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2" + jenkinsclient "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" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/jobs" "github.com/jenkinsci/kubernetes-operator/pkg/log" - jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client" "github.com/go-logr/logr" stackerr "github.com/pkg/errors" + apps "k8s.io/api/apps/v1" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/types" - k8s "sigs.k8s.io/controller-runtime/pkg/client" - apps "k8s.io/api/apps/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" + k8s "sigs.k8s.io/controller-runtime/pkg/client" ) const ( @@ -47,8 +47,10 @@ const ( // credential type JenkinsCredentialTypeLabelName = "jenkins.io/credentials-type" - // AgentName is the name of seed job + // AgentName is the name of seed job agent AgentName = "seed-job-agent" + + // AgentNamespace is the namespace of seed job agent AgentNamespace = "default" ) @@ -105,7 +107,7 @@ func (s *SeedJobs) EnsureSeedJobs(jenkins *v1alpha2.Jenkins) (done bool, err err err := s.k8sClient.Delete(context.TODO(), &appsv1.Deployment{ ObjectMeta: metav1.ObjectMeta{ Namespace: AgentNamespace, - Name: fmt.Sprintf("%s-deployment", AgentName), + Name: fmt.Sprintf("%s-deployment", AgentName), }, }) @@ -259,6 +261,7 @@ func (s *SeedJobs) isRecreatePodNeeded(jenkins v1alpha2.Jenkins) bool { return false } +// CreateAgent deploys Jenkins agent to Kubernetes cluster func CreateAgent(jenkinsClient jenkinsclient.Jenkins, k8sClient client.Client, jenkinsManifest *v1alpha2.Jenkins, namespace string, agentName string) error { var exists bool @@ -291,7 +294,7 @@ func CreateAgent(jenkinsClient jenkinsclient.Jenkins, k8sClient client.Client, j } deployment := agentDeployment(jenkinsManifest, namespace, agentName, secret) - err = k8sClient.List(context.TODO(), &client.ListOptions{}, deployments) + err = k8sClient.List(context.TODO(), &client.ListOptions{}, deployments) if err != nil { return err } @@ -317,8 +320,8 @@ func CreateAgent(jenkinsClient jenkinsclient.Jenkins, k8sClient client.Client, j func agentDeployment(jenkinsManifest *v1alpha2.Jenkins, namespace string, agentName string, secret string) *apps.Deployment { return &apps.Deployment{ ObjectMeta: metav1.ObjectMeta{ - Name: fmt.Sprintf("%s-deployment", agentName), - Namespace: namespace, + Name: fmt.Sprintf("%s-deployment", agentName), + Namespace: namespace, }, Spec: apps.DeploymentSpec{ Template: corev1.PodTemplateSpec{ @@ -336,11 +339,11 @@ func agentDeployment(jenkinsManifest *v1alpha2.Jenkins, namespace string, agentN jenkinsManifest.Spec.SlaveService.Port), }, { - Name: "JENKINS_SECRET", + Name: "JENKINS_SECRET", Value: secret, }, { - Name: "JENKINS_AGENT_NAME", + Name: "JENKINS_AGENT_NAME", Value: agentName, }, { @@ -352,7 +355,7 @@ func agentDeployment(jenkinsManifest *v1alpha2.Jenkins, namespace string, agentN ), }, { - Name: "JENKINS_AGENT_WORKDIR", + Name: "JENKINS_AGENT_WORKDIR", Value: "/home/jenkins/agent", }, }, @@ -470,7 +473,7 @@ jobRef.getBuildersList().add(executeDslScripts) jobRef.setDisplayName("${params.` + displayNameParameterName + `}") jobRef.setScm(scm) // TODO don't use master executors -jobRef.setAssignedLabel(new LabelAtom("`+AgentName+`")) +jobRef.setAssignedLabel(new LabelAtom("` + AgentName + `")) jenkins.getQueue().schedule(jobRef) diff --git a/pkg/controller/jenkins/configuration/user/seedjobs/seedjobs_test.go b/pkg/controller/jenkins/configuration/user/seedjobs/seedjobs_test.go index 224f89fe..d45807ea 100644 --- a/pkg/controller/jenkins/configuration/user/seedjobs/seedjobs_test.go +++ b/pkg/controller/jenkins/configuration/user/seedjobs/seedjobs_test.go @@ -39,6 +39,19 @@ func TestEnsureSeedJobs(t *testing.T) { assert.NoError(t, err) buildNumber := int64(1) + agentName := "seed-job-agent" + secret := "test-secret" + testNode := &gojenkins.Node{ + Raw: &gojenkins.NodeResponse{ + DisplayName: agentName, + }, + } + + jenkinsClient.EXPECT().GetNodeSecret(agentName).Return(secret, nil) + jenkinsClient.EXPECT().GetAllNodes().Return([]*gojenkins.Node{}, nil) + jenkinsClient.EXPECT().CreateNode(agentName, 1, "The jenkins-operator generated agent", "/home/jenkins", agentName).Return(testNode, nil) + jenkinsClient.EXPECT().GetNode(agentName).Return(testNode, nil).AnyTimes() + for reconcileAttempt := 1; reconcileAttempt <= 2; reconcileAttempt++ { logger.Info(fmt.Sprintf("Reconcile attempt #%d", reconcileAttempt)) @@ -235,7 +248,7 @@ func TestCreateAgent(t *testing.T) { jenkinsCustomRes := jenkinsCustomResource() testNode := &gojenkins.Node{ Raw: &gojenkins.NodeResponse{ - DisplayName: agentName, + DisplayName: agentName, }, } @@ -262,7 +275,7 @@ func TestCreateAgent(t *testing.T) { assert.Equal(t, node.Raw.DisplayName, testNode.Raw.DisplayName) }) - + t.Run("not fail when deployment is available", func(t *testing.T) { // given ctrl := gomock.NewController(t) @@ -285,8 +298,8 @@ func TestCreateAgent(t *testing.T) { // when err = fakeClient.Create(ctx, &appsv1.Deployment{ ObjectMeta: metav1.ObjectMeta{ - Name: fmt.Sprintf("%s-deployment", agentName), - Namespace:namespace, + Name: fmt.Sprintf("%s-deployment", agentName), + Namespace: namespace, }, }) @@ -296,4 +309,4 @@ func TestCreateAgent(t *testing.T) { err = CreateAgent(jenkinsClient, fakeClient, jenkinsCustomResource(), namespace, agentName) assert.NoError(t, err) }) -} \ No newline at end of file +}