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