Coverage Report

Created: 2023-11-12 09:30

/proc/self/cwd/source/common/http/dependency_manager.cc
Line
Count
Source (jump to first uncovered line)
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
7.55k
absl::Status DependencyManager::validDecodeDependencies() {
12
7.55k
  using DependencyTuple = std::tuple<const std::string&, int>;
13
7.55k
  absl::flat_hash_set<DependencyTuple> satisfied;
14
15
7.55k
  for (const auto& [name, dependencies] : filter_chain_) {
16
6.59k
    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
6.59k
    for (const auto& provided : dependencies.decode_provided()) {
24
0
      satisfied.insert({provided.name(), provided.type()});
25
0
    }
26
6.59k
  }
27
28
7.55k
  return absl::OkStatus();
29
7.55k
}
30
31
} // namespace Http
32
} // namespace Envoy