LCOV - code coverage report
Current view: top level - source/common/config - custom_config_validators_impl.cc (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 11 29 37.9 %
Date: 2024-01-05 06:35:25 Functions: 3 3 100.0 %

          Line data    Source code
       1             : #include "source/common/config/custom_config_validators_impl.h"
       2             : 
       3             : #include "source/common/config/opaque_resource_decoder_impl.h"
       4             : #include "source/common/config/utility.h"
       5             : 
       6             : namespace Envoy {
       7             : namespace Config {
       8             : 
       9             : CustomConfigValidatorsImpl::CustomConfigValidatorsImpl(
      10             :     ProtobufMessage::ValidationVisitor& validation_visitor, const Server::Instance& server,
      11             :     const Protobuf::RepeatedPtrField<envoy::config::core::v3::TypedExtensionConfig>&
      12             :         validators_configs)
      13          31 :     : server_(server) {
      14          31 :   for (const auto& validator_config : validators_configs) {
      15           0 :     auto& factory =
      16           0 :         Config::Utility::getAndCheckFactory<Config::ConfigValidatorFactory>(validator_config);
      17           0 :     const auto validator_type_url = factory.typeUrl();
      18           0 :     Config::ConfigValidatorPtr validator =
      19           0 :         factory.createConfigValidator(validator_config.typed_config(), validation_visitor);
      20             : 
      21             :     // Insert a new vector for the type url if one doesn't exist.
      22           0 :     auto pair = validators_map_.emplace(validator_type_url, 0);
      23           0 :     pair.first->second.emplace_back(std::move(validator));
      24           0 :   }
      25          31 : }
      26             : 
      27             : void CustomConfigValidatorsImpl::executeValidators(
      28         176 :     absl::string_view type_url, const std::vector<DecodedResourcePtr>& resources) {
      29         176 :   auto validators_it = validators_map_.find(type_url);
      30         176 :   if (validators_it != validators_map_.end()) {
      31           0 :     auto& validators = validators_it->second;
      32           0 :     for (auto& validator : validators) {
      33             :       // A validator can either succeed, or throw an EnvoyException.
      34           0 :       validator->validate(server_, resources);
      35           0 :     }
      36           0 :   }
      37         176 : }
      38             : 
      39             : void CustomConfigValidatorsImpl::executeValidators(
      40             :     absl::string_view type_url, const std::vector<DecodedResourcePtr>& added_resources,
      41          46 :     const Protobuf::RepeatedPtrField<std::string>& removed_resources) {
      42          46 :   auto validators_it = validators_map_.find(type_url);
      43          46 :   if (validators_it != validators_map_.end()) {
      44           0 :     auto& validators = validators_it->second;
      45           0 :     for (auto& validator : validators) {
      46             :       // A validator can either succeed, or throw an EnvoyException.
      47           0 :       validator->validate(server_, added_resources, removed_resources);
      48           0 :     }
      49           0 :   }
      50          46 : }
      51             : 
      52             : } // namespace Config
      53             : } // namespace Envoy

Generated by: LCOV version 1.15