Skip to content

Commit d94ca86

Browse files
author
Israel Blancas
committed
Add missing tests
Signed-off-by: Israel Blancas <[email protected]>
1 parent 5b0cacc commit d94ca86

File tree

6 files changed

+89
-7
lines changed

6 files changed

+89
-7
lines changed

apis/v1beta1/config.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ func (c *Config) getPortsForComponentKinds(logger logr.Logger, componentKinds ..
228228

229229
// getEnvironmentVariablesForComponentKinds gets the environment variables for the given ComponentKind(s).
230230
func (c *Config) getEnvironmentVariablesForComponentKinds(logger logr.Logger, componentKinds ...ComponentKind) ([]corev1.EnvVar, error) {
231-
var envVars []corev1.EnvVar
231+
var envVars []corev1.EnvVar = []corev1.EnvVar{}
232232
enabledComponents := c.GetEnabledComponents()
233233
for _, componentKind := range componentKinds {
234234
var retriever components.ParserRetriever

apis/v1beta1/config_test.go

+60
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,66 @@ func TestConfig_GetEnabledComponents(t *testing.T) {
423423
}
424424
}
425425

426+
func TestConfig_getEnvironmentVariablesForComponentKinds(t *testing.T) {
427+
tests := []struct {
428+
name string
429+
config *Config
430+
componentKinds []ComponentKind
431+
envVarsLen int
432+
}{
433+
{
434+
name: "no env vars",
435+
config: &Config{
436+
Receivers: AnyConfig{
437+
Object: map[string]interface{}{
438+
"myreceiver": map[string]interface{}{
439+
"env": "test",
440+
},
441+
},
442+
},
443+
Service: Service{
444+
Pipelines: map[string]*Pipeline{
445+
"test": {
446+
Receivers: []string{"myreceiver"},
447+
},
448+
},
449+
},
450+
},
451+
componentKinds: []ComponentKind{KindReceiver},
452+
envVarsLen: 0,
453+
},
454+
{
455+
name: "kubeletstats env vars",
456+
config: &Config{
457+
Receivers: AnyConfig{
458+
Object: map[string]interface{}{
459+
"kubeletstats": map[string]interface{}{},
460+
},
461+
},
462+
Service: Service{
463+
Pipelines: map[string]*Pipeline{
464+
"test": {
465+
Receivers: []string{"kubeletstats"},
466+
},
467+
},
468+
},
469+
},
470+
componentKinds: []ComponentKind{KindReceiver},
471+
envVarsLen: 1,
472+
},
473+
}
474+
475+
for _, tt := range tests {
476+
t.Run(tt.name, func(t *testing.T) {
477+
logger := logr.Discard()
478+
envVars, err := tt.config.GetEnvironmentVariables(logger)
479+
480+
assert.NoError(t, err)
481+
assert.Len(t, envVars, tt.envVarsLen)
482+
})
483+
}
484+
}
485+
426486
func TestConfig_GetReceiverPorts(t *testing.T) {
427487
tests := []struct {
428488
name string

internal/components/builder.go

+1
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ func (b Builder[ComponentConfigType]) Build() (*GenericParser[ComponentConfigTyp
146146
name: o.name,
147147
portParser: o.portParser,
148148
rbacGen: o.rbacGen,
149+
envVarGen: o.envVarGen,
149150
livenessGen: o.livenessGen,
150151
readinessGen: o.readinessGen,
151152
defaultsApplier: o.defaultsApplier,

internal/components/receivers/helpers.go

+3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
package receivers
1616

1717
import (
18+
"fmt"
19+
1820
corev1 "k8s.io/api/core/v1"
1921

2022
"github.com/open-telemetry/opentelemetry-operator/internal/components"
@@ -176,5 +178,6 @@ var (
176178
func init() {
177179
for _, parser := range componentParsers {
178180
Register(parser.ParserType(), parser)
181+
fmt.Println(parser.ParserType())
179182
}
180183
}

internal/components/receivers/kubeletstats.go

+3-6
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,9 @@ func generateKubeletStatsEnvVars(_ logr.Logger, config kubeletStatsConfig) ([]co
4747
// The documentation mentions that the K8S_NODE_NAME environment variable is required when using the serviceAccount auth type.
4848
// Also, it mentions that it is a good idea to use it for the Read Only Endpoint. Added always to make it easier for users.
4949
// https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/kubeletstatsreceiver/README.md
50-
if config.AuthType == "serviceAccount" {
51-
return []corev1.EnvVar{
52-
{Name: "K8S_NODE_NAME", ValueFrom: &corev1.EnvVarSource{FieldRef: &corev1.ObjectFieldSelector{FieldPath: "spec.nodeName"}}},
53-
}, nil
54-
}
55-
return nil, nil
50+
return []corev1.EnvVar{
51+
{Name: "K8S_NODE_NAME", ValueFrom: &corev1.EnvVarSource{FieldRef: &corev1.ObjectFieldSelector{FieldPath: "spec.nodeName"}}},
52+
}, nil
5653
}
5754

5855
func generateKubeletStatsRbacRules(_ logr.Logger, config kubeletStatsConfig) ([]rbacv1.PolicyRule, error) {

tests/e2e-automatic-rbac/receiver-kubeletstats/01-assert.yaml

+21
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,24 @@ subjects:
2525
- kind: ServiceAccount
2626
name: simplest-collector
2727
namespace: chainsaw-kubeletstats
28+
---
29+
apiVersion: v1
30+
kind: Pod
31+
metadata:
32+
labels:
33+
app.kubernetes.io/component: opentelemetry-collector
34+
app.kubernetes.io/instance: chainsaw-kubeletstats.simplest
35+
app.kubernetes.io/managed-by: opentelemetry-operator
36+
app.kubernetes.io/name: simplest-collector
37+
app.kubernetes.io/part-of: opentelemetry
38+
app.kubernetes.io/version: latest
39+
namespace: chainsaw-kubeletstats
40+
spec:
41+
containers:
42+
- name: otc-container
43+
env:
44+
- name: POD_NAME
45+
- name: K8S_NODE_NAME
46+
valueFrom:
47+
fieldRef:
48+
fieldPath: spec.nodeName

0 commit comments

Comments
 (0)