LCOV - code coverage report
Current view: top level - source/extensions/config_subscription/grpc - grpc_collection_subscription_factory.cc (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 0 43 0.0 %
Date: 2024-01-05 06:35:25 Functions: 0 3 0.0 %

          Line data    Source code
       1             : #include "source/extensions/config_subscription/grpc/grpc_collection_subscription_factory.h"
       2             : 
       3             : #include "source/common/config/custom_config_validators_impl.h"
       4             : #include "source/common/config/type_to_endpoint.h"
       5             : #include "source/extensions/config_subscription/grpc/grpc_mux_impl.h"
       6             : #include "source/extensions/config_subscription/grpc/grpc_subscription_impl.h"
       7             : #include "source/extensions/config_subscription/grpc/new_grpc_mux_impl.h"
       8             : #include "source/extensions/config_subscription/grpc/xds_mux/grpc_mux_impl.h"
       9             : 
      10             : namespace Envoy {
      11             : namespace Config {
      12             : 
      13             : SubscriptionPtr DeltaGrpcCollectionConfigSubscriptionFactory::create(
      14           0 :     ConfigSubscriptionFactory::SubscriptionData& data) {
      15           0 :   const envoy::config::core::v3::ApiConfigSource& api_config_source =
      16           0 :       data.config_.api_config_source();
      17           0 :   CustomConfigValidatorsPtr custom_config_validators = std::make_unique<CustomConfigValidatorsImpl>(
      18           0 :       data.validation_visitor_, data.server_, api_config_source.config_validators());
      19             : 
      20           0 :   JitteredExponentialBackOffStrategyPtr backoff_strategy =
      21           0 :       Utility::prepareJitteredExponentialBackOffStrategy(
      22           0 :           api_config_source, data.api_.randomGenerator(), SubscriptionFactory::RetryInitialDelayMs,
      23           0 :           SubscriptionFactory::RetryMaxDelayMs);
      24             : 
      25           0 :   GrpcMuxContext grpc_mux_context{
      26           0 :       /*async_client_=*/Config::Utility::factoryForGrpcApiConfigSource(
      27           0 :           data.cm_.grpcAsyncClientManager(), api_config_source, data.scope_, true)
      28           0 :           ->createUncachedRawAsyncClient(),
      29           0 :       /*dispatcher_=*/data.dispatcher_,
      30           0 :       /*service_method_=*/deltaGrpcMethod(data.type_url_),
      31           0 :       /*local_info_=*/data.local_info_,
      32           0 :       /*rate_limit_settings_=*/Utility::parseRateLimitSettings(api_config_source),
      33           0 :       /*scope_=*/data.scope_,
      34           0 :       /*config_validators_=*/std::move(custom_config_validators),
      35           0 :       /*xds_resources_delegate_=*/{},
      36           0 :       /*xds_config_tracker_=*/data.xds_config_tracker_,
      37           0 :       /*backoff_strategy_=*/std::move(backoff_strategy),
      38           0 :       /*target_xds_authority_=*/"",
      39           0 :       /*eds_resources_cache_=*/nullptr // No EDS resources cache needed from collections.
      40           0 :   };
      41           0 :   return std::make_unique<GrpcCollectionSubscriptionImpl>(
      42           0 :       data.collection_locator_.value(), std::make_shared<Config::NewGrpcMuxImpl>(grpc_mux_context),
      43           0 :       data.callbacks_, data.resource_decoder_, data.stats_, data.dispatcher_,
      44           0 :       Utility::configSourceInitialFetchTimeout(data.config_), /*is_aggregated=*/false,
      45           0 :       data.options_);
      46           0 : }
      47             : 
      48             : SubscriptionPtr AggregatedGrpcCollectionConfigSubscriptionFactory::create(
      49           0 :     ConfigSubscriptionFactory::SubscriptionData& data) {
      50           0 :   return std::make_unique<GrpcCollectionSubscriptionImpl>(
      51           0 :       data.collection_locator_.value(), data.cm_.adsMux(), data.callbacks_, data.resource_decoder_,
      52           0 :       data.stats_, data.dispatcher_, Utility::configSourceInitialFetchTimeout(data.config_),
      53           0 :       /*is_aggregated=*/true, data.options_);
      54           0 : }
      55             : 
      56             : SubscriptionPtr
      57           0 : AdsCollectionConfigSubscriptionFactory::create(ConfigSubscriptionFactory::SubscriptionData& data) {
      58             :   // All Envoy collections currently are xDS resource graph roots and require node context
      59             :   // parameters.
      60           0 :   return std::make_unique<GrpcCollectionSubscriptionImpl>(
      61           0 :       data.collection_locator_.value(), data.cm_.adsMux(), data.callbacks_, data.resource_decoder_,
      62           0 :       data.stats_, data.dispatcher_, Utility::configSourceInitialFetchTimeout(data.config_), true,
      63           0 :       data.options_);
      64           0 : }
      65             : 
      66             : REGISTER_FACTORY(DeltaGrpcCollectionConfigSubscriptionFactory, ConfigSubscriptionFactory);
      67             : REGISTER_FACTORY(AggregatedGrpcCollectionConfigSubscriptionFactory, ConfigSubscriptionFactory);
      68             : REGISTER_FACTORY(AdsCollectionConfigSubscriptionFactory, ConfigSubscriptionFactory);
      69             : 
      70             : } // namespace Config
      71             : } // namespace Envoy

Generated by: LCOV version 1.15