LCOV - code coverage report
Current view: top level - source/common/http - dependency_manager.cc (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 9 17 52.9 %
Date: 2024-01-05 06:35:25 Functions: 1 1 100.0 %

          Line data    Source code
       1             : #include "source/common/http/dependency_manager.h"
       2             : 
       3             : #include "absl/container/flat_hash_set.h"
       4             : #include "absl/strings/substitute.h"
       5             : 
       6             : namespace Envoy {
       7             : namespace Http {
       8             : 
       9             : using envoy::extensions::filters::common::dependency::v3::Dependency;
      10             : 
      11         299 : absl::Status DependencyManager::validDecodeDependencies() {
      12         299 :   using DependencyTuple = std::tuple<const std::string&, int>;
      13         299 :   absl::flat_hash_set<DependencyTuple> satisfied;
      14             : 
      15         304 :   for (const auto& [name, dependencies] : filter_chain_) {
      16         300 :     for (const auto& requirement : dependencies.decode_required()) {
      17           0 :       if (!satisfied.contains({requirement.name(), requirement.type()})) {
      18           0 :         return absl::NotFoundError(absl::Substitute(
      19           0 :             "Dependency violation: filter '$0' requires a $1 named '$2'", name,
      20           0 :             Dependency::DependencyType_Name(requirement.type()), requirement.name()));
      21           0 :       }
      22           0 :     }
      23         300 :     for (const auto& provided : dependencies.decode_provided()) {
      24           0 :       satisfied.insert({provided.name(), provided.type()});
      25           0 :     }
      26         300 :   }
      27             : 
      28         299 :   return absl::OkStatus();
      29         299 : }
      30             : 
      31             : } // namespace Http
      32             : } // namespace Envoy

Generated by: LCOV version 1.15