Skip to content

Commit

Permalink
[OTEL-2125] Add E2E test for no dd exporter case
Browse files Browse the repository at this point in the history
  • Loading branch information
songy23 committed Nov 1, 2024
1 parent 41b80a5 commit bc53842
Show file tree
Hide file tree
Showing 8 changed files with 236 additions and 11 deletions.
1 change: 0 additions & 1 deletion comp/otelcol/ddflareextension/impl/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,6 @@ func newServer(endpoint string, handler http.Handler) (*server, error) {

r := mux.NewRouter()
r.Handle("/", handler)

r.Use(validateToken)

s := &http.Server{
Expand Down
23 changes: 23 additions & 0 deletions test/new-e2e/tests/otel/otel-agent/config/no-dd-exporter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318

exporters:
debug:
verbosity: detailed

service:
pipelines:
metrics:
receivers: [otlp]
exporters: [debug]
traces:
receivers: [otlp]
exporters: [debug]
logs:
receivers: [otlp]
exporters: [debug]
6 changes: 3 additions & 3 deletions test/new-e2e/tests/otel/otel-agent/minimal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ var minimalProvidedConfig string
//go:embed testdata/minimal-full-config.yml
var minimalFullConfig string

//go:embed testdata/minimal-sources.json
var minimalSources string
//go:embed testdata/sources.json
var sources string

func TestOTelAgentMinimal(t *testing.T) {
values := `
Expand Down Expand Up @@ -82,5 +82,5 @@ func (s *minimalTestSuite) TestOTelAgentInstalled() {
}

func (s *minimalTestSuite) TestOTelFlare() {
utils.TestOTelFlare(s, minimalProvidedConfig, minimalFullConfig, minimalSources)
utils.TestOTelFlare(s, minimalProvidedConfig, minimalFullConfig, sources)
}
59 changes: 59 additions & 0 deletions test/new-e2e/tests/otel/otel-agent/no_dd_exporter_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
// Unless explicitly stated otherwise all files in this repository are licensed
// under the Apache License Version 2.0.
// This product includes software developed at Datadog (https://www.datadoghq.com/).
// Copyright 2016-present Datadog, Inc.

// Package otelagent contains e2e otel agent tests
package otelagent

import (
_ "embed"
"testing"

"github.com/DataDog/test-infra-definitions/components/datadog/kubernetesagentparams"

"github.com/DataDog/datadog-agent/test/new-e2e/pkg/e2e"
"github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments"
awskubernetes "github.com/DataDog/datadog-agent/test/new-e2e/pkg/environments/aws/kubernetes"
"github.com/DataDog/datadog-agent/test/new-e2e/tests/otel/utils"
)

type noDDExporterTestSuite struct {
e2e.BaseSuite[environments.Kubernetes]
}

//go:embed config/no-dd-exporter.yml
var noDDExporterConfig string

//go:embed testdata/no-dd-exporter-provided-config.yml
var noDDExporterProvidedConfig string

//go:embed testdata/no-dd-exporter-full-config.yml
var noDDExporterFullConfig string

func TestOTelAgentWithNoDDExporter(t *testing.T) {
values := `
datadog:
logs:
containerCollectAll: false
containerCollectUsingFiles: false
`
t.Parallel()
e2e.Run(t, &noDDExporterTestSuite{},
e2e.WithProvisioner(
awskubernetes.KindProvisioner(
awskubernetes.WithAgentOptions(
kubernetesagentparams.WithoutDualShipping(),
kubernetesagentparams.WithHelmValues(values),
kubernetesagentparams.WithOTelAgent(),
kubernetesagentparams.WithOTelConfig(noDDExporterConfig),
))))
}

func (s *noDDExporterTestSuite) TestOTelAgentInstalled() {
utils.TestOTelAgentInstalled(s)
}

func (s *noDDExporterTestSuite) TestFlare() {
utils.TestOTelFlare(s, noDDExporterProvidedConfig, noDDExporterFullConfig, sources)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
connectors: {}
exporters:
debug:
sampling_initial: 2
sampling_thereafter: 1
use_internal_logger: true
verbosity: Detailed
extensions:
ddflare/dd-autoconfigured:
auth: null
compression_algorithms: []
cors: null
endpoint: localhost:7777
include_metadata: false
max_request_body_size: 0
response_headers: {}
tls: null
health_check/dd-autoconfigured:
auth: null
check_collector_pipeline:
enabled: false
exporter_failure_threshold: 5
interval: 5m
compression_algorithms: []
cors: null
endpoint: localhost:13133
include_metadata: false
max_request_body_size: 0
path: /
response_body: null
response_headers: {}
tls: null
pprof/dd-autoconfigured:
block_profile_fraction: 0
dialer:
timeout: 0s
endpoint: localhost:1777
mutex_profile_fraction: 0
save_to_file: ""
zpages/dd-autoconfigured:
auth: null
compression_algorithms: []
cors: null
endpoint: localhost:55679
include_metadata: false
max_request_body_size: 0
response_headers: {}
tls: null
processors: {}
receivers:
hostmetrics:
collection_interval: 1m0s
initial_delay: 1s
root_path: ""
timeout: 0s
service:
extensions:
- pprof/dd-autoconfigured
- zpages/dd-autoconfigured
- health_check/dd-autoconfigured
- ddflare/dd-autoconfigured
pipelines:
metrics/sys:
exporters:
- debug
processors: []
receivers:
- hostmetrics
telemetry:
logs:
development: false
disable_caller: false
disable_stacktrace: false
encoding: console
error_output_paths:
- stderr
initial_fields: {}
level: info
output_paths:
- stderr
sampling:
enabled: true
initial: 10
thereafter: 100
tick: 10s
metrics:
address: :8888
level: Normal
readers: []
resource: {}
traces:
processors: []
propagators: []
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
connectors: {}
exporters:
debug:
sampling_initial: 2
sampling_thereafter: 1
use_internal_logger: true
verbosity: Detailed
extensions: {}
processors: {}
receivers:
hostmetrics:
collection_interval: 1m0s
initial_delay: 1s
root_path: ""
timeout: 0s
service:
extensions: []
pipelines:
metrics/sys:
exporters:
- debug
processors: []
receivers:
- hostmetrics
telemetry:
logs:
development: false
disable_caller: false
disable_stacktrace: false
encoding: console
error_output_paths:
- stderr
initial_fields: {}
level: info
output_paths:
- stderr
sampling:
enabled: true
initial: 10
thereafter: 100
tick: 10s
metrics:
address: :8888
level: Normal
readers: []
resource: {}
traces:
processors: []
propagators: []
16 changes: 9 additions & 7 deletions test/new-e2e/tests/otel/utils/config_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,13 +141,15 @@ func validateConfigs(t *testing.T, expectedCfg string, actualCfg string) {
// Traces, metrics and logs endpoints are set dynamically to the fake intake address in the config
// These endpoints vary from test to test and should be ignored in the comparison
exps, _ := actualConfRaw["exporters"].(map[string]any)
ddExp, _ := exps["datadog"].(map[string]any)
tcfg := ddExp["traces"].(map[string]any)
delete(tcfg, "endpoint")
mcfg := ddExp["metrics"].(map[string]any)
delete(mcfg, "endpoint")
lcfg := ddExp["logs"].(map[string]any)
delete(lcfg, "endpoint")
if ddExp, ok := exps["datadog"]; ok {
ddExpCfg := ddExp.(map[string]any)
tcfg := ddExpCfg["traces"].(map[string]any)
delete(tcfg, "endpoint")
mcfg := ddExpCfg["metrics"].(map[string]any)
delete(mcfg, "endpoint")
lcfg := ddExpCfg["logs"].(map[string]any)
delete(lcfg, "endpoint")
}

actualCfgBytes, err := yaml.Marshal(actualConfRaw)
require.NoError(t, err)
Expand Down

0 comments on commit bc53842

Please sign in to comment.