use apollo_configuration::configuration;
use apollo_configuration::types::{HeaderValue, MetadataValue, Url};
use apollo_redaction::Redacted;
use super::otlp::{Compression, TlsConfig};
#[configuration]
pub(crate) struct DatadogHttpExporterConfig {
#[config(required)]
pub(crate) api_key: Redacted<HeaderValue>,
#[config(required)]
pub(crate) endpoint: Url,
pub(crate) compression: Compression,
#[config(default = 10000)]
pub(crate) timeout: u64,
pub(crate) tls: Option<TlsConfig>,
}
#[configuration]
pub(crate) struct DatadogGrpcExporterConfig {
#[config(required)]
pub(crate) api_key: Redacted<MetadataValue>,
#[config(required)]
pub(crate) endpoint: Url,
pub(crate) compression: Compression,
#[config(default = 10000)]
pub(crate) timeout: u64,
pub(crate) tls: Option<TlsConfig>,
}
#[cfg(test)]
mod tests {
use apollo_configuration::parse_yaml;
use crate::config::OpenTelemetryConfig;
#[test]
fn parse_datadog_otlp_http_exporter() {
let config: OpenTelemetryConfig = parse_yaml(
indoc::indoc! {"
tracer_provider:
processors:
- batch:
exporter:
datadog_otlp_http:
api_key: test-api-key
endpoint: https://trace-otlp.intake.datadoghq.eu/api/v0.2/traces
"},
&Default::default(),
)
.unwrap();
assert!(!config.tracer_provider.processors.is_empty());
}
#[test]
fn parse_datadog_otlp_grpc_exporter() {
let config: OpenTelemetryConfig = parse_yaml(
indoc::indoc! {"
tracer_provider:
processors:
- batch:
exporter:
datadog_otlp_grpc:
api_key: test-api-key
endpoint: https://trace-otlp.intake.datadoghq.eu:4317
"},
&Default::default(),
)
.unwrap();
assert!(!config.tracer_provider.processors.is_empty());
}
}