LCOV - code coverage report
Current view: top level - source/extensions/tracers/datadog - config.cc (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 1 25 4.0 %
Date: 2024-01-05 06:35:25 Functions: 1 4 25.0 %

          Line data    Source code
       1             : #include "source/extensions/tracers/datadog/config.h"
       2             : 
       3             : #include <datadog/tracer_config.h>
       4             : 
       5             : #include <memory>
       6             : 
       7             : #include "envoy/config/trace/v3/datadog.pb.h"
       8             : #include "envoy/config/trace/v3/datadog.pb.validate.h"
       9             : #include "envoy/registry/registry.h"
      10             : 
      11             : #include "source/common/version/version.h"
      12             : #include "source/extensions/tracers/datadog/tracer.h"
      13             : 
      14             : namespace Envoy {
      15             : namespace Extensions {
      16             : namespace Tracers {
      17             : namespace Datadog {
      18             : 
      19           2 : DatadogTracerFactory::DatadogTracerFactory() : FactoryBase("envoy.tracers.datadog") {}
      20             : 
      21             : datadog::tracing::TracerConfig
      22           0 : DatadogTracerFactory::makeConfig(const envoy::config::trace::v3::DatadogConfig& proto_config) {
      23           0 :   datadog::tracing::TracerConfig config;
      24           0 :   config.defaults.version = "envoy " + Envoy::VersionInfo::version();
      25           0 :   config.defaults.name = "envoy.proxy";
      26           0 :   if (proto_config.service_name().empty()) {
      27           0 :     config.defaults.service = "envoy";
      28           0 :   } else {
      29           0 :     config.defaults.service = proto_config.service_name();
      30           0 :   }
      31           0 :   return config;
      32           0 : }
      33             : 
      34             : std::string DatadogTracerFactory::makeCollectorReferenceHost(
      35           0 :     const envoy::config::trace::v3::DatadogConfig& proto_config) {
      36           0 :   std::string collector_reference_host = proto_config.collector_hostname();
      37           0 :   if (collector_reference_host.empty()) {
      38           0 :     collector_reference_host = proto_config.collector_cluster();
      39           0 :   }
      40           0 :   return collector_reference_host;
      41           0 : }
      42             : 
      43             : Tracing::DriverSharedPtr DatadogTracerFactory::createTracerDriverTyped(
      44             :     const envoy::config::trace::v3::DatadogConfig& proto_config,
      45           0 :     Server::Configuration::TracerFactoryContext& context) {
      46           0 :   return std::make_shared<Tracer>(
      47           0 :       proto_config.collector_cluster(), makeCollectorReferenceHost(proto_config),
      48           0 :       makeConfig(proto_config), context.serverFactoryContext().clusterManager(),
      49           0 :       context.serverFactoryContext().scope(), context.serverFactoryContext().threadLocal());
      50           0 : }
      51             : 
      52             : /**
      53             :  * Static registration for the Datadog tracer. @see RegisterFactory.
      54             :  */
      55             : REGISTER_FACTORY(DatadogTracerFactory, Server::Configuration::TracerFactory);
      56             : 
      57             : } // namespace Datadog
      58             : } // namespace Tracers
      59             : } // namespace Extensions
      60             : } // namespace Envoy

Generated by: LCOV version 1.15