mirror of
https://github.com/hanzoai/krakend-otel.git
synced 2026-10-30 14:54:15 +00:00
238 lines
5.9 KiB
Go
238 lines
5.9 KiB
Go
package state
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/krakend/krakend-otel/config"
|
|
luraconfig "github.com/luraproject/lura/v2/config"
|
|
)
|
|
|
|
func TestEndpointPipeConfigOverride(t *testing.T) {
|
|
globalMetricAttrs := makeGlobalMetricAttr()
|
|
overrideMetricAttrs := makeOverrideMetricAttr()
|
|
|
|
globalTraceAttrs := makeGlobalTraceAttr()
|
|
overrideTraceAttrs := makeOverrideTraceAttr()
|
|
|
|
stateCfg := &StateConfig{
|
|
cfgData: makePipeConf(globalMetricAttrs, globalTraceAttrs),
|
|
}
|
|
|
|
pipeCfg := &luraconfig.EndpointConfig{
|
|
ExtraConfig: map[string]interface{}{
|
|
"telemetry/opentelemetry": map[string]interface{}{
|
|
"proxy": map[string]interface{}{
|
|
"metrics_static_attributes": overrideMetricAttrs,
|
|
"traces_static_attributes": overrideTraceAttrs,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
pipeOpts := stateCfg.EndpointPipeOpts(pipeCfg)
|
|
if pipeOpts == nil {
|
|
t.Errorf("Unexpected nil for pipe opts")
|
|
return
|
|
}
|
|
|
|
if len(pipeOpts.MetricsStaticAttributes) != len(overrideMetricAttrs) {
|
|
t.Errorf(
|
|
"Incorrect number of attributes for metrics. returned: %+v - expected: %+v",
|
|
pipeOpts.MetricsStaticAttributes, overrideMetricAttrs)
|
|
return
|
|
}
|
|
|
|
if len(pipeOpts.TracesStaticAttributes) != len(overrideTraceAttrs) {
|
|
t.Errorf(
|
|
"Incorrect number of attributes for traces. returned: %+v - expected: %+v",
|
|
pipeOpts.TracesStaticAttributes, overrideTraceAttrs)
|
|
return
|
|
}
|
|
}
|
|
|
|
func TestEndpointPipeNoOverride(t *testing.T) {
|
|
stateCfg := &StateConfig{
|
|
cfgData: makePipeConf(makeGlobalMetricAttr(), makeGlobalTraceAttr()),
|
|
}
|
|
|
|
// Empty config
|
|
pipeCfg := &luraconfig.EndpointConfig{
|
|
ExtraConfig: map[string]interface{}{},
|
|
}
|
|
|
|
pipeOpts := stateCfg.EndpointPipeOpts(pipeCfg)
|
|
if pipeOpts == nil {
|
|
t.Errorf("unextpected nil pipeOpts")
|
|
return
|
|
}
|
|
|
|
if len(pipeOpts.MetricsStaticAttributes) > 1 {
|
|
t.Errorf(
|
|
"Incorrect number of attributes for metrics. returned: %+v",
|
|
pipeOpts.MetricsStaticAttributes,
|
|
)
|
|
return
|
|
}
|
|
}
|
|
|
|
func TestEndpointPipeConfigOnlyOverride(t *testing.T) {
|
|
stateCfg := &StateConfig{
|
|
cfgData: makePipeConf([]config.KeyValue{}, []config.KeyValue{}),
|
|
}
|
|
|
|
pipeCfg := &luraconfig.EndpointConfig{
|
|
ExtraConfig: map[string]interface{}{
|
|
"telemetry/opentelemetry": makePipeConf(makeOverrideMetricAttr(), makeOverrideTraceAttr()),
|
|
},
|
|
}
|
|
|
|
pipeOpts := stateCfg.EndpointPipeOpts(pipeCfg)
|
|
|
|
if len(pipeOpts.MetricsStaticAttributes) > 1 {
|
|
t.Errorf(
|
|
"Incorrect number of attributes for metrics. returned: %+v",
|
|
pipeOpts.MetricsStaticAttributes,
|
|
)
|
|
return
|
|
}
|
|
}
|
|
|
|
func TestBackendConfigOverride(t *testing.T) {
|
|
globalMetricAttrs := makeGlobalMetricAttr()
|
|
overrideMetricAttrs := makeOverrideMetricAttr()
|
|
|
|
globalTraceAttrs := makeGlobalTraceAttr()
|
|
overrideTraceAttrs := makeOverrideTraceAttr()
|
|
|
|
stateCfg := &StateConfig{
|
|
cfgData: makeBackendConf(globalMetricAttrs, globalTraceAttrs),
|
|
}
|
|
|
|
backendCfg := &luraconfig.Backend{
|
|
ExtraConfig: map[string]interface{}{
|
|
"telemetry/opentelemetry": map[string]interface{}{
|
|
"backend": map[string]interface{}{
|
|
"metrics": map[string]interface{}{
|
|
"static_attributes": overrideMetricAttrs,
|
|
},
|
|
"traces": map[string]interface{}{
|
|
"static_attributes": overrideTraceAttrs,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
backendOpts := stateCfg.BackendOpts(backendCfg)
|
|
if backendOpts == nil {
|
|
t.Errorf("unexpected nil backendOpts")
|
|
return
|
|
}
|
|
|
|
if backendOpts.Metrics == nil {
|
|
t.Errorf("unexpected nil backendOpts.Metrics")
|
|
return
|
|
}
|
|
|
|
if len(backendOpts.Metrics.StaticAttributes) != len(overrideMetricAttrs) {
|
|
t.Errorf(
|
|
"Incorrect number of attributes for metrics. returned: %+v - expected: %+v",
|
|
backendOpts.Metrics.StaticAttributes, overrideMetricAttrs)
|
|
return
|
|
}
|
|
|
|
if backendOpts.Traces == nil {
|
|
t.Errorf("unexpected nil backendOpts.Traces")
|
|
return
|
|
}
|
|
if len(backendOpts.Traces.StaticAttributes) != len(overrideTraceAttrs) {
|
|
t.Errorf(
|
|
"Incorrect number of attributes for traces. returned: %+v - expected: %+v",
|
|
backendOpts.Traces.StaticAttributes, overrideTraceAttrs)
|
|
return
|
|
}
|
|
}
|
|
|
|
func TestBackendConfigNoOverride(t *testing.T) {
|
|
stateCfg := &StateConfig{
|
|
cfgData: makeBackendConf(makeGlobalMetricAttr(), makeGlobalTraceAttr()),
|
|
}
|
|
|
|
// Empty config
|
|
backendCfg := &luraconfig.Backend{
|
|
ExtraConfig: map[string]interface{}{},
|
|
}
|
|
|
|
backendOpts := stateCfg.BackendOpts(backendCfg)
|
|
if backendOpts == nil {
|
|
t.Errorf("unexpected nil backendOpts")
|
|
return
|
|
}
|
|
|
|
if len(backendOpts.Metrics.StaticAttributes) > 1 {
|
|
t.Errorf(
|
|
"Incorrect number of attributes for metrics. returned: %+v",
|
|
backendOpts.Traces.StaticAttributes,
|
|
)
|
|
}
|
|
}
|
|
|
|
func makePipeConf(metricAttrs, traceAttrs []config.KeyValue) config.ConfigData {
|
|
return config.ConfigData{
|
|
Layers: &config.LayersOpts{
|
|
Pipe: makePipeOpts(metricAttrs, traceAttrs),
|
|
},
|
|
}
|
|
}
|
|
|
|
func makePipeOpts(metricAttrs, traceAttrs []config.KeyValue) *config.PipeOpts {
|
|
return &config.PipeOpts{
|
|
MetricsStaticAttributes: metricAttrs,
|
|
TracesStaticAttributes: traceAttrs,
|
|
}
|
|
}
|
|
|
|
func makeBackendConf(metricAttrs, traceAttrs []config.KeyValue) config.ConfigData {
|
|
return config.ConfigData{
|
|
Layers: &config.LayersOpts{
|
|
Backend: makeBackendOpts(metricAttrs, traceAttrs),
|
|
},
|
|
}
|
|
}
|
|
|
|
func makeBackendOpts(metricAttrs, traceAttrs []config.KeyValue) *config.BackendOpts {
|
|
return &config.BackendOpts{
|
|
Metrics: &config.BackendMetricOpts{
|
|
StaticAttributes: metricAttrs,
|
|
},
|
|
Traces: &config.BackendTraceOpts{
|
|
StaticAttributes: traceAttrs,
|
|
},
|
|
}
|
|
}
|
|
|
|
func makeGlobalMetricAttr() []config.KeyValue {
|
|
return makeStaticAttr("my_metric_key", "my_metric_value")
|
|
}
|
|
|
|
func makeOverrideMetricAttr() []config.KeyValue {
|
|
return makeStaticAttr("my_metric_override_key", "my_metric_override_value")
|
|
}
|
|
|
|
func makeGlobalTraceAttr() []config.KeyValue {
|
|
return makeStaticAttr("my_trace_key", "my_trace_value")
|
|
}
|
|
|
|
func makeOverrideTraceAttr() []config.KeyValue {
|
|
return makeStaticAttr("my_trace_override_key", "my_trace_override_value")
|
|
}
|
|
|
|
func makeStaticAttr(key, value string) []config.KeyValue {
|
|
return []config.KeyValue{
|
|
{
|
|
Key: key,
|
|
Value: value,
|
|
},
|
|
}
|
|
}
|