Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/pkg/operator/resources_pod_template_test.go
4093 views
1
package operator
2
3
import (
4
"testing"
5
6
gragent "github.com/grafana/agent/pkg/operator/apis/monitoring/v1alpha1"
7
"github.com/stretchr/testify/assert"
8
"github.com/stretchr/testify/require"
9
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
10
)
11
12
func Test_generatePodTemplate(t *testing.T) {
13
var (
14
cfg = &Config{}
15
name = "example"
16
)
17
18
t.Run("image should have version", func(t *testing.T) {
19
deploy := gragent.Deployment{
20
Agent: &gragent.GrafanaAgent{
21
ObjectMeta: v1.ObjectMeta{Name: name, Namespace: name},
22
},
23
}
24
25
tmpl, _, err := generatePodTemplate(cfg, "agent", deploy, podTemplateOptions{})
26
require.NoError(t, err)
27
require.Equal(t, DefaultAgentImage, tmpl.Spec.Containers[1].Image)
28
})
29
30
t.Run("allow custom version", func(t *testing.T) {
31
deploy := gragent.Deployment{
32
Agent: &gragent.GrafanaAgent{
33
ObjectMeta: v1.ObjectMeta{Name: name, Namespace: name},
34
Spec: gragent.GrafanaAgentSpec{
35
Version: "vX.Y.Z",
36
},
37
},
38
}
39
40
tmpl, _, err := generatePodTemplate(cfg, "agent", deploy, podTemplateOptions{})
41
require.NoError(t, err)
42
require.Equal(t, DefaultAgentBaseImage+":vX.Y.Z", tmpl.Spec.Containers[1].Image)
43
})
44
45
t.Run("security ctx does not contain privileged", func(t *testing.T) {
46
deploy := gragent.Deployment{
47
Agent: &gragent.GrafanaAgent{
48
ObjectMeta: v1.ObjectMeta{Name: name, Namespace: name},
49
},
50
}
51
52
tmpl, _, err := generatePodTemplate(cfg, "agent", deploy, podTemplateOptions{})
53
require.NoError(t, err)
54
require.Equal(t, "config-reloader", tmpl.Spec.Containers[0].Name)
55
for i := range tmpl.Spec.Containers {
56
assert.False(t, tmpl.Spec.Containers[i].SecurityContext.Privileged != nil &&
57
*tmpl.Spec.Containers[i].SecurityContext.Privileged,
58
"privileged is not required. Fargate cannot schedule privileged containers.")
59
}
60
})
61
62
t.Run("security ctx does contain privilege for logs daemonset", func(t *testing.T) {
63
deploy := gragent.Deployment{
64
Agent: &gragent.GrafanaAgent{
65
ObjectMeta: v1.ObjectMeta{Name: name, Namespace: name},
66
},
67
}
68
69
tmpl, _, err := generatePodTemplate(cfg, "agent", deploy, podTemplateOptions{Privileged: true})
70
require.NoError(t, err)
71
assert.True(t, tmpl.Spec.Containers[1].SecurityContext.Privileged != nil &&
72
*tmpl.Spec.Containers[1].SecurityContext.Privileged,
73
"privileged is needed if pod options say so.")
74
})
75
76
t.Run("runtimeclassname set if passed in", func(t *testing.T) {
77
name := "test123"
78
deploy := gragent.Deployment{
79
Agent: &gragent.GrafanaAgent{
80
ObjectMeta: v1.ObjectMeta{Name: name, Namespace: name},
81
Spec: gragent.GrafanaAgentSpec{
82
RuntimeClassName: &name,
83
},
84
},
85
}
86
tmpl, _, err := generatePodTemplate(cfg, "agent", deploy, podTemplateOptions{})
87
require.NoError(t, err)
88
assert.Equal(t, name, *tmpl.Spec.RuntimeClassName)
89
90
deploy.Agent.Spec.RuntimeClassName = nil
91
tmpl, _, err = generatePodTemplate(cfg, "agent", deploy, podTemplateOptions{})
92
require.NoError(t, err)
93
assert.Nil(t, tmpl.Spec.RuntimeClassName)
94
})
95
}
96
97