Coverage Report

Created: 2023-11-12 09:30

/proc/self/cwd/source/extensions/load_balancing_policies/random/config.cc
Line
Count
Source (jump to first uncovered line)
1
#include "source/extensions/load_balancing_policies/random/config.h"
2
3
#include "envoy/extensions/load_balancing_policies/random/v3/random.pb.h"
4
5
#include "source/common/upstream/load_balancer_impl.h"
6
7
namespace Envoy {
8
namespace Extensions {
9
namespace LoadBalancingPolices {
10
namespace Random {
11
12
0
TypedRandomLbConfig::TypedRandomLbConfig(const RandomLbProto& lb_config) : lb_config_(lb_config) {}
13
14
Upstream::LoadBalancerPtr RandomCreator::operator()(
15
    Upstream::LoadBalancerParams params, OptRef<const Upstream::LoadBalancerConfig> lb_config,
16
    const Upstream::ClusterInfo& cluster_info, const Upstream::PrioritySet&,
17
0
    Runtime::Loader& runtime, Envoy::Random::RandomGenerator& random, TimeSource&) {
18
19
0
  const auto typed_lb_config = dynamic_cast<const TypedRandomLbConfig*>(lb_config.ptr());
20
21
0
  if (typed_lb_config != nullptr) {
22
0
    return std::make_unique<Upstream::RandomLoadBalancer>(
23
0
        params.priority_set, params.local_priority_set, cluster_info.lbStats(), runtime, random,
24
0
        PROTOBUF_PERCENT_TO_ROUNDED_INTEGER_OR_DEFAULT(cluster_info.lbConfig(),
25
0
                                                       healthy_panic_threshold, 100, 50),
26
0
        typed_lb_config->lb_config_);
27
0
  } else {
28
0
    return std::make_unique<Upstream::RandomLoadBalancer>(
29
0
        params.priority_set, params.local_priority_set, cluster_info.lbStats(), runtime, random,
30
0
        cluster_info.lbConfig());
31
0
  }
32
0
}
33
34
/**
35
 * Static registration for the Factory. @see RegisterFactory.
36
 */
37
REGISTER_FACTORY(Factory, Upstream::TypedLoadBalancerFactory);
38
39
} // namespace Random
40
} // namespace LoadBalancingPolices
41
} // namespace Extensions
42
} // namespace Envoy