Loading assets/auto-deploy-app/test/templates/cronjob_test.go +79 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ import ( "github.com/stretchr/testify/require" batchV1beta1 "k8s.io/api/batch/v1beta1" coreV1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" ) func TestCronjobMeta(t *testing.T) { Loading Loading @@ -519,6 +520,84 @@ func TestCronjobTolerations(t *testing.T) { } } func TestCronjobResources(t *testing.T) { for _, tc := range []struct { CaseName string Values map[string]string Release string EoxpectedNodeSelector map[string]string ExpectedResources coreV1.ResourceRequirements }{ { CaseName: "default", Release: "production", Values: map[string]string{ "cronjobs.job1.command[0]": "echo", "cronjobs.job1.args[0]": "hello", }, ExpectedResources: coreV1.ResourceRequirements{ Limits: coreV1.ResourceList(nil), Requests: coreV1.ResourceList{}, }, }, { CaseName: "added resources", Release: "production", Values: map[string]string{ "cronjobs.job1.command[0]": "echo", "cronjobs.job1.args[0]": "hello", "resources.limits.cpu": "500m", "resources.limits.memory": "4Gi", "resources.requests.cpu": "200m", "resources.requests.memory": "2Gi", }, ExpectedResources: coreV1.ResourceRequirements{ Limits: coreV1.ResourceList{ "cpu": resource.MustParse("500m"), "memory": resource.MustParse("4Gi"),}, Requests: coreV1.ResourceList{ "cpu": resource.MustParse("200m"), "memory": resource.MustParse("2Gi"), }, }, }, } { t.Run(tc.CaseName, func(t *testing.T) { namespaceName := "minimal-ruby-app-" + strings.ToLower(random.UniqueId()) values := map[string]string{ "gitlab.app": "auto-devops-examples/minimal-ruby-app", "gitlab.env": "prod", } mergeStringMap(values, tc.Values) options := &helm.Options{ ValuesFiles: []string{}, SetValues: values, KubectlOptions: k8s.NewKubectlOptions("", "", namespaceName), } output, err := helm.RenderTemplateE(t, options, helmChartPath, tc.Release, []string{"templates/cronjob.yaml"}) if err != nil { t.Error(err) return } var cronjobs batchV1beta1.CronJobList helm.UnmarshalK8SYaml(t, output, &cronjobs) for _, cronjob := range cronjobs.Items { require.Equal(t, tc.ExpectedResources, cronjob.Spec.JobTemplate.Spec.Template.Spec.Containers[0].Resources ) } }) } } func TestCronjobTemplateWithVolumeMounts(t *testing.T) { releaseName := "cronjob-with-volume-mounts-test" templates := []string{"templates/cronjob.yaml"} Loading assets/auto-deploy-app/test/templates/deployment_test.go +65 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ import ( coreV1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/api/resource" ) func TestDeploymentTemplate(t *testing.T) { Loading Loading @@ -892,6 +893,70 @@ func TestDeploymentTemplate(t *testing.T) { }) } // resources for _, tc := range []struct { CaseName string Values map[string]string Release string EoxpectedNodeSelector map[string]string ExpectedResources coreV1.ResourceRequirements }{ { CaseName: "default", Release: "production", Values: map[string]string{}, ExpectedResources: coreV1.ResourceRequirements{ Limits: coreV1.ResourceList(nil), Requests: coreV1.ResourceList{}, }, }, { CaseName: "added resources", Release: "production", Values: map[string]string{ "resources.limits.cpu": "500m", "resources.limits.memory": "4Gi", "resources.requests.cpu": "200m", "resources.requests.memory": "2Gi", }, ExpectedResources: coreV1.ResourceRequirements{ Limits: coreV1.ResourceList{ "cpu": resource.MustParse("500m"), "memory": resource.MustParse("4Gi"),}, Requests: coreV1.ResourceList{ "cpu": resource.MustParse("200m"), "memory": resource.MustParse("2Gi"), }, }, }, } { t.Run(tc.CaseName, func(t *testing.T) { namespaceName := "minimal-ruby-app-" + strings.ToLower(random.UniqueId()) values := map[string]string{ "gitlab.app": "auto-devops-examples/minimal-ruby-app", "gitlab.env": "prod", } mergeStringMap(values, tc.Values) options := &helm.Options{ SetValues: values, KubectlOptions: k8s.NewKubectlOptions("", "", namespaceName), } output := helm.RenderTemplate(t, options, helmChartPath, tc.Release, []string{"templates/deployment.yaml"}) var deployment appsV1.Deployment helm.UnmarshalK8SYaml(t, output, &deployment) require.Equal(t, tc.ExpectedResources, deployment.Spec.Template.Spec.Containers[0].Resources ) }) } // Test Deployment selector for _, tc := range []struct { CaseName string Loading Loading
assets/auto-deploy-app/test/templates/cronjob_test.go +79 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ import ( "github.com/stretchr/testify/require" batchV1beta1 "k8s.io/api/batch/v1beta1" coreV1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" ) func TestCronjobMeta(t *testing.T) { Loading Loading @@ -519,6 +520,84 @@ func TestCronjobTolerations(t *testing.T) { } } func TestCronjobResources(t *testing.T) { for _, tc := range []struct { CaseName string Values map[string]string Release string EoxpectedNodeSelector map[string]string ExpectedResources coreV1.ResourceRequirements }{ { CaseName: "default", Release: "production", Values: map[string]string{ "cronjobs.job1.command[0]": "echo", "cronjobs.job1.args[0]": "hello", }, ExpectedResources: coreV1.ResourceRequirements{ Limits: coreV1.ResourceList(nil), Requests: coreV1.ResourceList{}, }, }, { CaseName: "added resources", Release: "production", Values: map[string]string{ "cronjobs.job1.command[0]": "echo", "cronjobs.job1.args[0]": "hello", "resources.limits.cpu": "500m", "resources.limits.memory": "4Gi", "resources.requests.cpu": "200m", "resources.requests.memory": "2Gi", }, ExpectedResources: coreV1.ResourceRequirements{ Limits: coreV1.ResourceList{ "cpu": resource.MustParse("500m"), "memory": resource.MustParse("4Gi"),}, Requests: coreV1.ResourceList{ "cpu": resource.MustParse("200m"), "memory": resource.MustParse("2Gi"), }, }, }, } { t.Run(tc.CaseName, func(t *testing.T) { namespaceName := "minimal-ruby-app-" + strings.ToLower(random.UniqueId()) values := map[string]string{ "gitlab.app": "auto-devops-examples/minimal-ruby-app", "gitlab.env": "prod", } mergeStringMap(values, tc.Values) options := &helm.Options{ ValuesFiles: []string{}, SetValues: values, KubectlOptions: k8s.NewKubectlOptions("", "", namespaceName), } output, err := helm.RenderTemplateE(t, options, helmChartPath, tc.Release, []string{"templates/cronjob.yaml"}) if err != nil { t.Error(err) return } var cronjobs batchV1beta1.CronJobList helm.UnmarshalK8SYaml(t, output, &cronjobs) for _, cronjob := range cronjobs.Items { require.Equal(t, tc.ExpectedResources, cronjob.Spec.JobTemplate.Spec.Template.Spec.Containers[0].Resources ) } }) } } func TestCronjobTemplateWithVolumeMounts(t *testing.T) { releaseName := "cronjob-with-volume-mounts-test" templates := []string{"templates/cronjob.yaml"} Loading
assets/auto-deploy-app/test/templates/deployment_test.go +65 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ import ( coreV1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/api/resource" ) func TestDeploymentTemplate(t *testing.T) { Loading Loading @@ -892,6 +893,70 @@ func TestDeploymentTemplate(t *testing.T) { }) } // resources for _, tc := range []struct { CaseName string Values map[string]string Release string EoxpectedNodeSelector map[string]string ExpectedResources coreV1.ResourceRequirements }{ { CaseName: "default", Release: "production", Values: map[string]string{}, ExpectedResources: coreV1.ResourceRequirements{ Limits: coreV1.ResourceList(nil), Requests: coreV1.ResourceList{}, }, }, { CaseName: "added resources", Release: "production", Values: map[string]string{ "resources.limits.cpu": "500m", "resources.limits.memory": "4Gi", "resources.requests.cpu": "200m", "resources.requests.memory": "2Gi", }, ExpectedResources: coreV1.ResourceRequirements{ Limits: coreV1.ResourceList{ "cpu": resource.MustParse("500m"), "memory": resource.MustParse("4Gi"),}, Requests: coreV1.ResourceList{ "cpu": resource.MustParse("200m"), "memory": resource.MustParse("2Gi"), }, }, }, } { t.Run(tc.CaseName, func(t *testing.T) { namespaceName := "minimal-ruby-app-" + strings.ToLower(random.UniqueId()) values := map[string]string{ "gitlab.app": "auto-devops-examples/minimal-ruby-app", "gitlab.env": "prod", } mergeStringMap(values, tc.Values) options := &helm.Options{ SetValues: values, KubectlOptions: k8s.NewKubectlOptions("", "", namespaceName), } output := helm.RenderTemplate(t, options, helmChartPath, tc.Release, []string{"templates/deployment.yaml"}) var deployment appsV1.Deployment helm.UnmarshalK8SYaml(t, output, &deployment) require.Equal(t, tc.ExpectedResources, deployment.Spec.Template.Spec.Containers[0].Resources ) }) } // Test Deployment selector for _, tc := range []struct { CaseName string Loading