Path: blob/main/pkg/operator/resources_pod_template_test.go
4093 views
package operator12import (3"testing"45gragent "github.com/grafana/agent/pkg/operator/apis/monitoring/v1alpha1"6"github.com/stretchr/testify/assert"7"github.com/stretchr/testify/require"8v1 "k8s.io/apimachinery/pkg/apis/meta/v1"9)1011func Test_generatePodTemplate(t *testing.T) {12var (13cfg = &Config{}14name = "example"15)1617t.Run("image should have version", func(t *testing.T) {18deploy := gragent.Deployment{19Agent: &gragent.GrafanaAgent{20ObjectMeta: v1.ObjectMeta{Name: name, Namespace: name},21},22}2324tmpl, _, err := generatePodTemplate(cfg, "agent", deploy, podTemplateOptions{})25require.NoError(t, err)26require.Equal(t, DefaultAgentImage, tmpl.Spec.Containers[1].Image)27})2829t.Run("allow custom version", func(t *testing.T) {30deploy := gragent.Deployment{31Agent: &gragent.GrafanaAgent{32ObjectMeta: v1.ObjectMeta{Name: name, Namespace: name},33Spec: gragent.GrafanaAgentSpec{34Version: "vX.Y.Z",35},36},37}3839tmpl, _, err := generatePodTemplate(cfg, "agent", deploy, podTemplateOptions{})40require.NoError(t, err)41require.Equal(t, DefaultAgentBaseImage+":vX.Y.Z", tmpl.Spec.Containers[1].Image)42})4344t.Run("security ctx does not contain privileged", func(t *testing.T) {45deploy := gragent.Deployment{46Agent: &gragent.GrafanaAgent{47ObjectMeta: v1.ObjectMeta{Name: name, Namespace: name},48},49}5051tmpl, _, err := generatePodTemplate(cfg, "agent", deploy, podTemplateOptions{})52require.NoError(t, err)53require.Equal(t, "config-reloader", tmpl.Spec.Containers[0].Name)54for i := range tmpl.Spec.Containers {55assert.False(t, tmpl.Spec.Containers[i].SecurityContext.Privileged != nil &&56*tmpl.Spec.Containers[i].SecurityContext.Privileged,57"privileged is not required. Fargate cannot schedule privileged containers.")58}59})6061t.Run("security ctx does contain privilege for logs daemonset", func(t *testing.T) {62deploy := gragent.Deployment{63Agent: &gragent.GrafanaAgent{64ObjectMeta: v1.ObjectMeta{Name: name, Namespace: name},65},66}6768tmpl, _, err := generatePodTemplate(cfg, "agent", deploy, podTemplateOptions{Privileged: true})69require.NoError(t, err)70assert.True(t, tmpl.Spec.Containers[1].SecurityContext.Privileged != nil &&71*tmpl.Spec.Containers[1].SecurityContext.Privileged,72"privileged is needed if pod options say so.")73})7475t.Run("runtimeclassname set if passed in", func(t *testing.T) {76name := "test123"77deploy := gragent.Deployment{78Agent: &gragent.GrafanaAgent{79ObjectMeta: v1.ObjectMeta{Name: name, Namespace: name},80Spec: gragent.GrafanaAgentSpec{81RuntimeClassName: &name,82},83},84}85tmpl, _, err := generatePodTemplate(cfg, "agent", deploy, podTemplateOptions{})86require.NoError(t, err)87assert.Equal(t, name, *tmpl.Spec.RuntimeClassName)8889deploy.Agent.Spec.RuntimeClassName = nil90tmpl, _, err = generatePodTemplate(cfg, "agent", deploy, podTemplateOptions{})91require.NoError(t, err)92assert.Nil(t, tmpl.Spec.RuntimeClassName)93})94}959697