Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[OTEL-2125] Add E2E test for no dd exporter case #30069

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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:
traces:
receivers: [otlp]
exporters: [debug]
metrics:
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,7 +82,7 @@ func (s *minimalTestSuite) TestOTelAgentInstalled() {
}

func (s *minimalTestSuite) TestOTelFlareExtensionResponse() {
utils.TestOTelFlareExtensionResponse(s, minimalProvidedConfig, minimalFullConfig, minimalSources)
utils.TestOTelFlareExtensionResponse(s, minimalProvidedConfig, minimalFullConfig, sources)
}

func (s *minimalTestSuite) TestOTelFlareFiles() {
Expand Down
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) TestOTelFlareExtensionResponse() {
utils.TestOTelFlareExtensionResponse(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: []
29 changes: 22 additions & 7 deletions test/new-e2e/tests/otel/utils/config_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,19 @@ func TestOTelFlareExtensionResponse(s OTelTestSuite, providedCfg string, fullCfg
err := s.Env().FakeIntake.Client().FlushServerAndResetAggregators()
require.NoError(s.T(), err)
agent := getAgentPod(s)
agentJSON, err := json.Marshal(agent)
require.NoError(s.T(), err)
s.T().Log("agent pod status ", string(agentJSON))

timeout := time.Now().Add(5 * time.Minute)
for i := 1; time.Now().Before(timeout); i++ {
stdout, stderr, err := s.Env().KubernetesCluster.KubernetesClient.PodExec("datadog", agent.Name, "otel-agent", []string{"curl", "localhost:13133"})
s.T().Log("attempt ", i, " curl health check endpoint ", stdout, stderr, err)
if err == nil {
break
}
time.Sleep(30 * time.Second)
}

s.T().Log("Starting flare")
stdout, stderr, err := s.Env().KubernetesCluster.KubernetesClient.PodExec("datadog", agent.Name, "agent", []string{"agent", "flare", "--email", "e2e@test.com", "--send"})
Expand Down Expand Up @@ -213,13 +226,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
Loading