@@ -18,6 +18,7 @@ import (
18
18
"testing"
19
19
20
20
"github.com/stretchr/testify/assert"
21
+
21
22
v1 "k8s.io/api/core/v1"
22
23
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
23
24
"k8s.io/apimachinery/pkg/util/intstr"
@@ -26,6 +27,7 @@ import (
26
27
"github.com/open-telemetry/opentelemetry-operator/internal/config"
27
28
"github.com/open-telemetry/opentelemetry-operator/internal/manifests"
28
29
"github.com/open-telemetry/opentelemetry-operator/internal/manifests/manifestutils"
30
+ "github.com/open-telemetry/opentelemetry-operator/internal/naming"
29
31
)
30
32
31
33
func TestExtractPortNumbersAndNames (t * testing.T ) {
@@ -322,158 +324,203 @@ func TestMonitoringService(t *testing.T) {
322
324
}
323
325
324
326
func TestExtensionService (t * testing.T ) {
325
- t .Run ("when the extension has http endpoint" , func (t * testing.T ) {
326
- params := manifests.Params {
327
- Config : config.Config {},
328
- Log : logger ,
329
- OtelCol : v1beta1.OpenTelemetryCollector {
330
- ObjectMeta : metav1.ObjectMeta {
331
- Name : "test" ,
332
- },
333
- Spec : v1beta1.OpenTelemetryCollectorSpec {
334
- Config : v1beta1.Config {
335
- Service : v1beta1.Service {
336
- Extensions : []string {"jaeger_query" },
337
- },
338
- Extensions : & v1beta1.AnyConfig {
339
- Object : map [string ]interface {}{
340
- "jaeger_query" : map [string ]interface {}{
341
- "http" : map [string ]interface {}{
342
- "endpoint" : "0.0.0.0:16686" ,
327
+ testCases := []struct {
328
+ name string
329
+ params manifests.Params
330
+ expectedPorts []v1.ServicePort
331
+ }{
332
+ {
333
+ name : "when the extension has http endpoint" ,
334
+ params : manifests.Params {
335
+ Config : config.Config {},
336
+ Log : logger ,
337
+ OtelCol : v1beta1.OpenTelemetryCollector {
338
+ ObjectMeta : metav1.ObjectMeta {
339
+ Name : "test" ,
340
+ },
341
+ Spec : v1beta1.OpenTelemetryCollectorSpec {
342
+ Config : v1beta1.Config {
343
+ Service : v1beta1.Service {
344
+ Extensions : []string {"jaeger_query" },
345
+ },
346
+ Extensions : & v1beta1.AnyConfig {
347
+ Object : map [string ]interface {}{
348
+ "jaeger_query" : map [string ]interface {}{
349
+ "http" : map [string ]interface {}{
350
+ "endpoint" : "0.0.0.0:16686" ,
351
+ },
343
352
},
344
353
},
345
354
},
346
355
},
347
356
},
348
357
},
349
358
},
350
- }
351
-
352
- actual , err := ExtensionService (params )
353
- assert .NotNil (t , actual )
354
- assert .NoError (t , err )
355
- })
356
-
357
- t .Run ("when the extension has grpc endpoint" , func (t * testing.T ) {
358
- params := manifests.Params {
359
- Config : config.Config {},
360
- Log : logger ,
361
- OtelCol : v1beta1.OpenTelemetryCollector {
362
- ObjectMeta : metav1.ObjectMeta {
363
- Name : "test" ,
359
+ expectedPorts : []v1.ServicePort {
360
+ {
361
+ Name : "jaeger-query" ,
362
+ Port : 16686 ,
363
+ TargetPort : intstr.IntOrString {
364
+ IntVal : 16686 ,
365
+ },
364
366
},
365
- Spec : v1beta1.OpenTelemetryCollectorSpec {
366
- Config : v1beta1.Config {
367
- Service : v1beta1.Service {
368
- Extensions : []string {"jaeger_query" },
369
- },
370
- Extensions : & v1beta1.AnyConfig {
371
- Object : map [string ]interface {}{
372
- "jaeger_query" : map [string ]interface {}{
373
- "grpc" : map [string ]interface {}{
374
- "endpoint" : "0.0.0.0:16686" ,
367
+ },
368
+ },
369
+ {
370
+ name : "when the extension has grpc endpoint" ,
371
+ params : manifests.Params {
372
+ Config : config.Config {},
373
+ Log : logger ,
374
+ OtelCol : v1beta1.OpenTelemetryCollector {
375
+ ObjectMeta : metav1.ObjectMeta {
376
+ Name : "test" ,
377
+ },
378
+ Spec : v1beta1.OpenTelemetryCollectorSpec {
379
+ Config : v1beta1.Config {
380
+ Service : v1beta1.Service {
381
+ Extensions : []string {"jaeger_query" },
382
+ },
383
+ Extensions : & v1beta1.AnyConfig {
384
+ Object : map [string ]interface {}{
385
+ "jaeger_query" : map [string ]interface {}{
386
+ "http" : map [string ]interface {}{
387
+ "endpoint" : "0.0.0.0:16686" ,
388
+ },
375
389
},
376
390
},
377
391
},
378
392
},
379
393
},
380
394
},
381
395
},
382
- }
383
-
384
- actual , err := ExtensionService (params )
385
- assert .NotNil (t , actual )
386
- assert .NoError (t , err )
387
- })
388
-
389
- t .Run ("when the extension has both http and grpc endpoint" , func (t * testing.T ) {
390
- params := manifests.Params {
391
- Config : config.Config {},
392
- Log : logger ,
393
- OtelCol : v1beta1.OpenTelemetryCollector {
394
- ObjectMeta : metav1.ObjectMeta {
395
- Name : "test" ,
396
+ expectedPorts : []v1.ServicePort {
397
+ {
398
+ Name : "jaeger-query" ,
399
+ Port : 16686 ,
400
+ TargetPort : intstr.IntOrString {
401
+ IntVal : 16686 ,
402
+ },
396
403
},
397
- Spec : v1beta1.OpenTelemetryCollectorSpec {
398
- Config : v1beta1.Config {
399
- Service : v1beta1.Service {
400
- Extensions : []string {"jaeger_query" },
401
- },
402
- Extensions : & v1beta1.AnyConfig {
403
- Object : map [string ]interface {}{
404
- "jaeger_query" : map [string ]interface {}{
405
- "http" : map [string ]interface {}{
406
- "endpoint" : "0.0.0.0:16686" ,
407
- },
408
- "grpc" : map [string ]interface {}{
409
- "endpoint" : "0.0.0.0:16686" ,
404
+ },
405
+ },
406
+ {
407
+ name : "when the extension has both http and grpc endpoint" ,
408
+ params : manifests.Params {
409
+ Config : config.Config {},
410
+ Log : logger ,
411
+ OtelCol : v1beta1.OpenTelemetryCollector {
412
+ ObjectMeta : metav1.ObjectMeta {
413
+ Name : "test" ,
414
+ },
415
+ Spec : v1beta1.OpenTelemetryCollectorSpec {
416
+ Config : v1beta1.Config {
417
+ Service : v1beta1.Service {
418
+ Extensions : []string {"jaeger_query" },
419
+ },
420
+ Extensions : & v1beta1.AnyConfig {
421
+ Object : map [string ]interface {}{
422
+ "jaeger_query" : map [string ]interface {}{
423
+ "http" : map [string ]interface {}{
424
+ "endpoint" : "0.0.0.0:16686" ,
425
+ },
426
+ "grpc" : map [string ]interface {}{
427
+ "endpoint" : "0.0.0.0:16686" ,
428
+ },
410
429
},
411
430
},
412
431
},
413
432
},
414
433
},
415
434
},
416
435
},
417
- }
418
-
419
- actual , err := ExtensionService (params )
420
- assert .NotNil (t , actual )
421
- assert .NoError (t , err )
422
- })
423
-
424
- t .Run ("when the extension has no extensions defined" , func (t * testing.T ) {
425
- params := manifests.Params {
426
- Config : config.Config {},
427
- Log : logger ,
428
- OtelCol : v1beta1.OpenTelemetryCollector {
429
- ObjectMeta : metav1.ObjectMeta {
430
- Name : "test" ,
436
+ expectedPorts : []v1.ServicePort {
437
+ {
438
+ Name : "jaeger-query" ,
439
+ Port : 16686 ,
440
+ TargetPort : intstr.IntOrString {
441
+ IntVal : 16686 ,
442
+ },
431
443
},
432
- Spec : v1beta1.OpenTelemetryCollectorSpec {
433
- Config : v1beta1.Config {
434
- Service : v1beta1.Service {
435
- Extensions : []string {"jaeger_query" },
436
- },
437
- Extensions : & v1beta1.AnyConfig {
438
- Object : map [string ]interface {}{},
444
+ },
445
+ },
446
+ {
447
+ name : "when the extension has no extensions defined" ,
448
+ params : manifests.Params {
449
+ Config : config.Config {},
450
+ Log : logger ,
451
+ OtelCol : v1beta1.OpenTelemetryCollector {
452
+ ObjectMeta : metav1.ObjectMeta {
453
+ Name : "test" ,
454
+ },
455
+ Spec : v1beta1.OpenTelemetryCollectorSpec {
456
+ Config : v1beta1.Config {
457
+ Service : v1beta1.Service {
458
+ Extensions : []string {"jaeger_query" },
459
+ },
460
+ Extensions : & v1beta1.AnyConfig {
461
+ Object : map [string ]interface {}{},
462
+ },
439
463
},
440
464
},
441
465
},
442
466
},
443
- }
444
-
445
- actual , err := ExtensionService (params )
446
- assert .Nil (t , actual )
447
- assert .NoError (t , err )
448
- })
449
-
450
- t .Run ("when the extension has no endpoint defined" , func (t * testing.T ) {
451
- params := manifests.Params {
452
- Config : config.Config {},
453
- Log : logger ,
454
- OtelCol : v1beta1.OpenTelemetryCollector {
455
- ObjectMeta : metav1.ObjectMeta {
456
- Name : "test" ,
457
- },
458
- Spec : v1beta1.OpenTelemetryCollectorSpec {
459
- Config : v1beta1.Config {
460
- Service : v1beta1.Service {
461
- Extensions : []string {"jaeger_query" },
462
- },
463
- Extensions : & v1beta1.AnyConfig {
464
- Object : map [string ]interface {}{
465
- "jaeger_query" : map [string ]interface {}{},
467
+ expectedPorts : []v1.ServicePort {},
468
+ },
469
+ {
470
+ name : "when the extension has no endpoint defined" ,
471
+ params : manifests.Params {
472
+ Config : config.Config {},
473
+ Log : logger ,
474
+ OtelCol : v1beta1.OpenTelemetryCollector {
475
+ ObjectMeta : metav1.ObjectMeta {
476
+ Name : "test" ,
477
+ },
478
+ Spec : v1beta1.OpenTelemetryCollectorSpec {
479
+ Config : v1beta1.Config {
480
+ Service : v1beta1.Service {
481
+ Extensions : []string {"jaeger_query" },
482
+ },
483
+ Extensions : & v1beta1.AnyConfig {
484
+ Object : map [string ]interface {}{
485
+ "jaeger_query" : map [string ]interface {}{},
486
+ },
466
487
},
467
488
},
468
489
},
469
490
},
470
491
},
471
- }
492
+ expectedPorts : []v1.ServicePort {
493
+ {
494
+ Name : "jaeger-query" ,
495
+ Port : 16686 ,
496
+ TargetPort : intstr.IntOrString {
497
+ IntVal : 16686 ,
498
+ },
499
+ },
500
+ },
501
+ },
502
+ }
472
503
473
- actual , err := ExtensionService (params )
474
- assert .NotNil (t , actual )
475
- assert .NoError (t , err )
476
- })
504
+ for _ , tc := range testCases {
505
+ tc := tc
506
+ t .Run (tc .name , func (t * testing.T ) {
507
+ actual , err := ExtensionService (tc .params )
508
+ assert .NoError (t , err )
509
+
510
+ if len (tc .expectedPorts ) > 0 {
511
+ assert .NotNil (t , actual )
512
+ assert .Equal (t , actual .Name , naming .ExtensionService (tc .params .OtelCol .Name ))
513
+ // ports assertion
514
+ assert .Equal (t , len (tc .expectedPorts ), len (actual .Spec .Ports ))
515
+ assert .Equal (t , tc .expectedPorts [0 ].Name , actual .Spec .Ports [0 ].Name )
516
+ assert .Equal (t , tc .expectedPorts [0 ].Port , actual .Spec .Ports [0 ].Port )
517
+ assert .Equal (t , tc .expectedPorts [0 ].TargetPort .IntVal , actual .Spec .Ports [0 ].TargetPort .IntVal )
518
+ } else {
519
+ // no ports, no service
520
+ assert .Nil (t , actual )
521
+ }
522
+ })
523
+ }
477
524
}
478
525
479
526
func service (name string , ports []v1beta1.PortsSpec ) v1.Service {
0 commit comments