@@ -12,15 +12,20 @@ import (
12
12
v1 "k8s.io/api/core/v1"
13
13
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
14
14
"k8s.io/apimachinery/pkg/types"
15
+ k8sfake "k8s.io/client-go/kubernetes/fake"
15
16
16
17
"github.com/stretchr/testify/assert"
17
18
18
19
"github.com/elastic/elastic-agent-libs/logp"
20
+
19
21
"github.com/elastic/elastic-agent/pkg/core/logger"
20
22
21
23
"github.com/elastic/elastic-agent-autodiscover/kubernetes"
22
24
"github.com/elastic/elastic-agent-autodiscover/kubernetes/metadata"
23
25
"github.com/elastic/elastic-agent-libs/mapstr"
26
+
27
+ c "github.com/elastic/elastic-agent-libs/config"
28
+
24
29
"github.com/elastic/elastic-agent/internal/pkg/config"
25
30
)
26
31
@@ -370,6 +375,90 @@ func TestEphemeralContainers(t *testing.T) {
370
375
371
376
}
372
377
378
+ func TestPodEventer_Namespace_Node_Watcher (t * testing.T ) {
379
+ client := k8sfake .NewSimpleClientset ()
380
+
381
+ log , err := logger .New ("service-eventer-test" , true )
382
+ assert .NoError (t , err )
383
+
384
+ providerDataChan := make (chan providerData , 1 )
385
+
386
+ comm := MockDynamicComm {
387
+ context .TODO (),
388
+ providerDataChan ,
389
+ }
390
+
391
+ tests := []struct {
392
+ namespaceEnabled bool
393
+ nodeEnabled bool
394
+ hintsEnabled bool
395
+ expectedNil bool
396
+ name string
397
+ msg string
398
+ }{
399
+ {
400
+ namespaceEnabled : false ,
401
+ nodeEnabled : false ,
402
+ hintsEnabled : false ,
403
+ expectedNil : true ,
404
+ name : "add_resource_metadata.namespace and add_resource_metadata.node disabled and hints disabled." ,
405
+ msg : "Watcher should be nil." ,
406
+ },
407
+ {
408
+ namespaceEnabled : false ,
409
+ nodeEnabled : false ,
410
+ hintsEnabled : true ,
411
+ expectedNil : false ,
412
+ name : "add_resource_metadata.namespace and add_resource_metadata.node disabled and hints enabled." ,
413
+ msg : "Watcher should not be nil." ,
414
+ },
415
+ {
416
+ namespaceEnabled : true ,
417
+ nodeEnabled : true ,
418
+ hintsEnabled : false ,
419
+ expectedNil : false ,
420
+ name : "add_resource_metadata.namespace and add_resource_metadata.node enabled and hints disabled." ,
421
+ msg : "Watcher should not be nil." ,
422
+ },
423
+ }
424
+
425
+ for _ , test := range tests {
426
+ t .Run (test .name , func (t * testing.T ) {
427
+ var cfg Config
428
+ cfg .InitDefaults ()
429
+
430
+ nsCfg , err := c .NewConfigFrom (map [string ]interface {}{
431
+ "enabled" : test .namespaceEnabled ,
432
+ })
433
+ assert .NoError (t , err )
434
+ nodeCfg , err := c .NewConfigFrom (map [string ]interface {}{
435
+ "enabled" : test .nodeEnabled ,
436
+ })
437
+ assert .NoError (t , err )
438
+
439
+ cfg .AddResourceMetadata .Namespace = nsCfg
440
+ cfg .AddResourceMetadata .Node = nodeCfg
441
+ cfg .Hints .Enabled = test .hintsEnabled
442
+
443
+ eventer , err := NewPodEventer (& comm , & cfg , log , client , "cluster" , false )
444
+ if err != nil {
445
+ t .Fatal (err )
446
+ }
447
+
448
+ namespaceWatcher := eventer .(* pod ).namespaceWatcher
449
+ nodeWatcher := eventer .(* pod ).nodeWatcher
450
+
451
+ if test .expectedNil {
452
+ assert .Equalf (t , nil , namespaceWatcher , "Namespace " + test .msg )
453
+ assert .Equalf (t , nil , nodeWatcher , "Node " + test .msg )
454
+ } else {
455
+ assert .NotEqualf (t , nil , namespaceWatcher , "Namespace " + test .msg )
456
+ assert .NotEqualf (t , nil , nodeWatcher , "Node " + test .msg )
457
+ }
458
+ })
459
+ }
460
+ }
461
+
373
462
// MockDynamicComm is used in tests.
374
463
type MockDynamicComm struct {
375
464
context.Context
0 commit comments