@@ -18,13 +18,82 @@ import (
18
18
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/k8sobjectsreceiver/internal/metadata"
19
19
)
20
20
21
+ func TestErrorModes (t * testing.T ) {
22
+ t .Parallel ()
23
+
24
+ tests := []struct {
25
+ desc string
26
+ errorMode ErrorMode
27
+ expectError bool
28
+ }{
29
+ {
30
+ desc : "propagate error mode returns error" ,
31
+ errorMode : PropagateError ,
32
+ expectError : true ,
33
+ },
34
+ {
35
+ desc : "ignore error mode logs and continues" ,
36
+ errorMode : IgnoreError ,
37
+ expectError : false ,
38
+ },
39
+ {
40
+ desc : "silent error mode continues without logging" ,
41
+ errorMode : SilentError ,
42
+ expectError : false ,
43
+ },
44
+ }
45
+
46
+ for _ , tt := range tests {
47
+ t .Run (tt .desc , func (t * testing.T ) {
48
+ mockClient := newMockDynamicClient ()
49
+ rCfg := createDefaultConfig ().(* Config )
50
+ rCfg .makeDynamicClient = mockClient .getMockDynamicClient
51
+ rCfg .makeDiscoveryClient = getMockDiscoveryClient
52
+ rCfg .ErrorMode = tt .errorMode
53
+ rCfg .Objects = []* K8sObjectsConfig {
54
+ {
55
+ Name : "nonexistent-resource" ,
56
+ Mode : PullMode ,
57
+ },
58
+ }
59
+
60
+ r , err := newReceiver (
61
+ receivertest .NewNopSettings (metadata .Type ),
62
+ rCfg ,
63
+ consumertest .NewNop (),
64
+ )
65
+ require .NoError (t , err )
66
+ require .NotNil (t , r )
67
+ err = r .Start (context .Background (), componenttest .NewNopHost ())
68
+ if tt .expectError {
69
+ assert .Error (t , err )
70
+ } else {
71
+ assert .NoError (t , err )
72
+ }
73
+ })
74
+ }
75
+ }
76
+
21
77
func TestNewReceiver (t * testing.T ) {
22
78
t .Parallel ()
23
79
24
80
mockClient := newMockDynamicClient ()
81
+ mockClient .createPods (
82
+ generatePod ("pod1" , "default" , map [string ]any {
83
+ "environment" : "production" ,
84
+ }, "1" ),
85
+ )
86
+
25
87
rCfg := createDefaultConfig ().(* Config )
26
88
rCfg .makeDynamicClient = mockClient .getMockDynamicClient
27
89
rCfg .makeDiscoveryClient = getMockDiscoveryClient
90
+ rCfg .ErrorMode = PropagateError
91
+ rCfg .Objects = []* K8sObjectsConfig {
92
+ {
93
+ Name : "pods" ,
94
+ Mode : PullMode ,
95
+ },
96
+ }
28
97
29
98
r , err := newReceiver (
30
99
receivertest .NewNopSettings (metadata .Type ),
@@ -57,6 +126,7 @@ func TestPullObject(t *testing.T) {
57
126
rCfg := createDefaultConfig ().(* Config )
58
127
rCfg .makeDynamicClient = mockClient .getMockDynamicClient
59
128
rCfg .makeDiscoveryClient = getMockDiscoveryClient
129
+ rCfg .ErrorMode = PropagateError
60
130
61
131
rCfg .Objects = []* K8sObjectsConfig {
62
132
{
0 commit comments