#43 Improve tests and fix GetJenkinsOpts

This commit is contained in:
Jakub Al-Khalili 2019-07-10 15:19:26 +02:00
parent 01655785b5
commit 9e73be7a49
3 changed files with 75 additions and 29 deletions

View File

@ -136,12 +136,15 @@ func GetJenkinsOpts(jenkins *v1alpha2.Jenkins) map[string]string {
if v.Name == "JENKINS_OPTS" { if v.Name == "JENKINS_OPTS" {
jenkinsOptsEnv := envs[k] jenkinsOptsEnv := envs[k]
jenkinsOptsWithDashes := jenkinsOptsEnv.Value jenkinsOptsWithDashes := jenkinsOptsEnv.Value
jenkinsOptsWithDashes = strings.ReplaceAll(jenkinsOptsWithDashes, "--", "") // Remove dashes if len(jenkinsOptsWithDashes) == 0 {
return nil
}
jenkinsOptsWithEqOperators := strings.Split(jenkinsOptsWithDashes, " ") jenkinsOptsWithEqOperators := strings.Split(jenkinsOptsWithDashes, " ")
for _, vx := range jenkinsOptsWithEqOperators { for _, vx := range jenkinsOptsWithEqOperators {
opt := strings.Split(vx, "=") opt := strings.Split(vx, "=")
jenkinsOpts[opt[0]] = opt[1] jenkinsOpts[strings.ReplaceAll(opt[0], "--", "")] = opt[1]
} }
return jenkinsOpts return jenkinsOpts

View File

@ -15,40 +15,81 @@ import (
) )
func TestGetJenkinsOpts(t *testing.T) { func TestGetJenkinsOpts(t *testing.T) {
envs := []corev1.EnvVar{ t.Run("JENKINS_OPTS is empty", func(t *testing.T) {
{Name: "JENKINS_OPTS", Value: "--prefix=/jenkins --httpPort=8080"}, jenkins := &v1alpha2.Jenkins{
} Spec: v1alpha2.JenkinsSpec{
Master: v1alpha2.JenkinsMaster{
jenkins := &v1alpha2.Jenkins{ Containers: []v1alpha2.Container{
Spec: v1alpha2.JenkinsSpec{ {
Master: v1alpha2.JenkinsMaster{ Env: []corev1.EnvVar{
Containers: []v1alpha2.Container{ {Name: "JENKINS_OPTS", Value: ""},
{ },
Env: envs, },
}, },
}, },
}, },
}, }
}
opts := GetJenkinsOpts(jenkins) opts := GetJenkinsOpts(jenkins)
assert.Equal(t, 0, len(opts))
t.Run("equal env vars", func(t *testing.T) {
assert.Equal(t, opts["prefix"], "/jenkins")
assert.Equal(t, opts["httpPort"], "8080")
}) })
t.Run("not equal env vars", func(t *testing.T) { t.Run("JENKINS_OPTS have --prefix argument ", func(t *testing.T) {
assert.NotEqual(t, opts["prefix"], "/jenkins_not_equal") jenkins := &v1alpha2.Jenkins{
assert.NotEqual(t, opts["httpPort"], "80808") Spec: v1alpha2.JenkinsSpec{
Master: v1alpha2.JenkinsMaster{
Containers: []v1alpha2.Container{
{
Env: []corev1.EnvVar{
{Name: "JENKINS_OPTS", Value: "--prefix=/jenkins"},
},
},
},
},
},
}
opts := GetJenkinsOpts(jenkins)
assert.Equal(t, 1, len(opts))
t.Run("ensure that JENKINS_OPTS not contains --httpPort", func(t *testing.T) {
assert.NotContains(t, opts, "httpPort")
})
t.Run("ensure that argument is --prefix", func(t *testing.T) {
assert.Contains(t, opts, "prefix")
})
}) })
t.Run("should exists", func(t *testing.T) { t.Run("JENKINS_OPTS have --prefix and --httpPort argument", func(t *testing.T) {
assert.Contains(t, opts, "httpPort") jenkins := &v1alpha2.Jenkins{
}) Spec: v1alpha2.JenkinsSpec{
Master: v1alpha2.JenkinsMaster{
Containers: []v1alpha2.Container{
{
Env: []corev1.EnvVar{
{Name: "JENKINS_OPTS", Value: "--prefix=/jenkins --httpPort=8080"},
},
},
},
},
},
}
t.Run("should exists", func(t *testing.T) { opts := GetJenkinsOpts(jenkins)
assert.NotContains(t, opts, "should_not_exists")
assert.Equal(t, 2, len(opts))
t.Run("ensure that argument is --prefix with value /jenkins", func(t *testing.T) {
assert.Contains(t, opts, "prefix")
assert.Equal(t, opts["prefix"], "/jenkins")
})
t.Run("ensure that argument is --httpPort with value 8080", func(t *testing.T) {
assert.Contains(t, opts, "httpPort")
assert.Equal(t, opts["httpPort"], "8080")
})
}) })
} }

View File

@ -3,7 +3,8 @@ package jenkins
import ( import (
"context" "context"
"fmt" "fmt"
"github.com/go-logr/logr" "reflect"
"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2"
jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client" jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base"
@ -15,6 +16,8 @@ import (
"github.com/jenkinsci/kubernetes-operator/pkg/event" "github.com/jenkinsci/kubernetes-operator/pkg/event"
"github.com/jenkinsci/kubernetes-operator/pkg/log" "github.com/jenkinsci/kubernetes-operator/pkg/log"
"github.com/jenkinsci/kubernetes-operator/version" "github.com/jenkinsci/kubernetes-operator/version"
"github.com/go-logr/logr"
"github.com/pkg/errors" "github.com/pkg/errors"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors" apierrors "k8s.io/apimachinery/pkg/api/errors"
@ -24,7 +27,6 @@ import (
"k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest" "k8s.io/client-go/rest"
"reflect"
"sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller" "sigs.k8s.io/controller-runtime/pkg/controller"
"sigs.k8s.io/controller-runtime/pkg/handler" "sigs.k8s.io/controller-runtime/pkg/handler"