LCOV - code coverage report
Current view: top level - source/extensions/stat_sinks/open_telemetry - config.cc (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 4 26 15.4 %
Date: 2024-01-05 06:35:25 Functions: 2 3 66.7 %

          Line data    Source code
       1             : #include "source/extensions/stat_sinks/open_telemetry/config.h"
       2             : 
       3             : #include "envoy/registry/registry.h"
       4             : 
       5             : #include "source/extensions/stat_sinks/open_telemetry/open_telemetry_impl.h"
       6             : #include "source/extensions/stat_sinks/open_telemetry/open_telemetry_proto_descriptors.h"
       7             : 
       8             : namespace Envoy {
       9             : namespace Extensions {
      10             : namespace StatSinks {
      11             : namespace OpenTelemetry {
      12             : 
      13             : Stats::SinkPtr
      14             : OpenTelemetrySinkFactory::createStatsSink(const Protobuf::Message& config,
      15           0 :                                           Server::Configuration::ServerFactoryContext& server) {
      16           0 :   validateProtoDescriptors();
      17             : 
      18           0 :   const auto& sink_config = MessageUtil::downcastAndValidate<const SinkConfig&>(
      19           0 :       config, server.messageValidationContext().staticValidationVisitor());
      20             : 
      21           0 :   auto otlp_options = std::make_shared<OtlpOptions>(sink_config);
      22           0 :   std::shared_ptr<OtlpMetricsFlusher> otlp_metrics_flusher =
      23           0 :       std::make_shared<OtlpMetricsFlusherImpl>(otlp_options);
      24             : 
      25           0 :   switch (sink_config.protocol_specifier_case()) {
      26           0 :   case SinkConfig::ProtocolSpecifierCase::kGrpcService: {
      27           0 :     const auto& grpc_service = sink_config.grpc_service();
      28             : 
      29           0 :     std::shared_ptr<OpenTelemetryGrpcMetricsExporter> grpc_metrics_exporter =
      30           0 :         std::make_shared<OpenTelemetryGrpcMetricsExporterImpl>(
      31           0 :             otlp_options,
      32           0 :             server.clusterManager().grpcAsyncClientManager().getOrCreateRawAsyncClient(
      33           0 :                 grpc_service, server.scope(), false));
      34             : 
      35           0 :     return std::make_unique<OpenTelemetryGrpcSink>(otlp_metrics_flusher, grpc_metrics_exporter);
      36           0 :   }
      37             : 
      38           0 :   default:
      39           0 :     break;
      40           0 :   }
      41             : 
      42           0 :   throw EnvoyException("unexpected Open Telemetry protocol case num");
      43           0 : }
      44             : 
      45           2 : ProtobufTypes::MessagePtr OpenTelemetrySinkFactory::createEmptyConfigProto() {
      46           2 :   return std::make_unique<SinkConfig>();
      47           2 : }
      48             : 
      49          42 : std::string OpenTelemetrySinkFactory::name() const { return OpenTelemetryName; }
      50             : 
      51             : /**
      52             :  * Static registration for the this sink factory. @see RegisterFactory.
      53             :  */
      54             : LEGACY_REGISTER_FACTORY(OpenTelemetrySinkFactory, Server::Configuration::StatsSinkFactory,
      55             :                         "envoy.open_telemetry_stat_sink");
      56             : 
      57             : } // namespace OpenTelemetry
      58             : } // namespace StatSinks
      59             : } // namespace Extensions
      60             : } // namespace Envoy

Generated by: LCOV version 1.15