Skip to content

Commit eb14bf7

Browse files
committed
chore: added unit test for extension service function
Signed-off-by: Ankit152 <[email protected]>
1 parent af1bbcb commit eb14bf7

File tree

2 files changed

+164
-1
lines changed

2 files changed

+164
-1
lines changed

internal/manifests/collector/service.go

+9-1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
const (
3333
headlessLabel = "operator.opentelemetry.io/collector-headless-service"
3434
monitoringLabel = "operator.opentelemetry.io/collector-monitoring-service"
35+
extensionService = "operator.opentelemetry.io/collector-extension-service"
3536
serviceTypeLabel = "operator.opentelemetry.io/collector-service-type"
3637
valueExists = "Exists"
3738
)
@@ -42,10 +43,11 @@ const (
4243
BaseServiceType ServiceType = iota
4344
HeadlessServiceType
4445
MonitoringServiceType
46+
ExtensionServiceType
4547
)
4648

4749
func (s ServiceType) String() string {
48-
return [...]string{"base", "headless", "monitoring"}[s]
50+
return [...]string{"base", "headless", "monitoring", "extension"}[s]
4951
}
5052

5153
func HeadlessService(params manifests.Params) (*corev1.Service, error) {
@@ -111,6 +113,8 @@ func MonitoringService(params manifests.Params) (*corev1.Service, error) {
111113
func ExtensionService(params manifests.Params) (*corev1.Service, error) {
112114
name := naming.Service(params.OtelCol.Name)
113115
labels := manifestutils.Labels(params.OtelCol.ObjectMeta, name, params.OtelCol.Spec.Image, ComponentOpenTelemetryCollector, []string{})
116+
labels[extensionService] = valueExists
117+
labels[serviceTypeLabel] = ExtensionServiceType.String()
114118

115119
annotations, err := manifestutils.Annotations(params.OtelCol, params.Config.AnnotationsFilter())
116120
if err != nil {
@@ -122,6 +126,10 @@ func ExtensionService(params manifests.Params) (*corev1.Service, error) {
122126
return nil, err
123127
}
124128

129+
if len(ports) == 0 {
130+
return nil, nil
131+
}
132+
125133
return &corev1.Service{
126134
ObjectMeta: metav1.ObjectMeta{
127135
Name: name,

internal/manifests/collector/service_test.go

+155
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,161 @@ func TestMonitoringService(t *testing.T) {
321321
})
322322
}
323323

324+
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",
343+
},
344+
},
345+
},
346+
},
347+
},
348+
},
349+
},
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",
364+
},
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",
375+
},
376+
},
377+
},
378+
},
379+
},
380+
},
381+
},
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+
},
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",
410+
},
411+
},
412+
},
413+
},
414+
},
415+
},
416+
},
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",
431+
},
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{}{},
439+
},
440+
},
441+
},
442+
},
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+
},
467+
},
468+
},
469+
},
470+
},
471+
}
472+
473+
actual, err := ExtensionService(params)
474+
assert.NotNil(t, actual)
475+
assert.NoError(t, err)
476+
})
477+
}
478+
324479
func service(name string, ports []v1beta1.PortsSpec) v1.Service {
325480
return serviceWithInternalTrafficPolicy(name, ports, v1.ServiceInternalTrafficPolicyCluster)
326481
}

0 commit comments

Comments
 (0)