Coverage Report

Created: 2023-11-12 09:30

/proc/self/cwd/source/extensions/tracers/datadog/config.cc
Line
Count
Source (jump to first uncovered line)
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
4
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