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 21, 2024
1 parent efa45af commit 6910c0e
Show file tree
Hide file tree
Showing 7 changed files with 241 additions and 10 deletions.
15 changes: 15 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,15 @@
receivers:
hostmetrics:
scrapers:
load:
memory:

exporters:
debug:
verbosity: detailed

service:
pipelines:
metrics/sys:
receivers: [hostmetrics]
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

0 comments on commit 6910c0e

Please sign in to comment.