Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 6 additions & 26 deletions source/common/router/config_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -365,9 +365,8 @@ RouteEntryImplBase::RouteEntryImplBase(const VirtualHostImpl& vhost,
direct_response_body_(ConfigUtility::parseDirectResponseBody(
route, factory_context.api(),
vhost_.globalRouteConfig().maxDirectResponseBodySizeBytes())),
per_filter_configs_(route.typed_per_filter_config(),
route.hidden_envoy_deprecated_per_filter_config(), optional_http_filters,
factory_context, validator),
per_filter_configs_(route.typed_per_filter_config(), optional_http_filters, factory_context,
validator),
route_name_(route.name()), time_source_(factory_context.dispatcher().timeSource()) {
if (route.route().has_metadata_match()) {
const auto filter_it = route.route().metadata_match().filter_metadata().find(
Expand Down Expand Up @@ -1036,9 +1035,8 @@ RouteEntryImplBase::WeightedClusterEntry::WeightedClusterEntry(
cluster.request_headers_to_remove())),
response_headers_parser_(HeaderParser::configure(cluster.response_headers_to_add(),
cluster.response_headers_to_remove())),
per_filter_configs_(cluster.typed_per_filter_config(),
cluster.hidden_envoy_deprecated_per_filter_config(),
optional_http_filters, factory_context, validator),
per_filter_configs_(cluster.typed_per_filter_config(), optional_http_filters, factory_context,
validator),
host_rewrite_(cluster.host_rewrite_literal()) {
if (cluster.has_metadata_match()) {
const auto filter_it = cluster.metadata_match().filter_metadata().find(
Expand Down Expand Up @@ -1217,9 +1215,8 @@ VirtualHostImpl::VirtualHostImpl(
virtual_host.request_headers_to_remove())),
response_headers_parser_(HeaderParser::configure(virtual_host.response_headers_to_add(),
virtual_host.response_headers_to_remove())),
per_filter_configs_(virtual_host.typed_per_filter_config(),
virtual_host.hidden_envoy_deprecated_per_filter_config(),
optional_http_filters, factory_context, validator),
per_filter_configs_(virtual_host.typed_per_filter_config(), optional_http_filters,
factory_context, validator),
retry_shadow_buffer_limit_(PROTOBUF_GET_WRAPPED_OR_DEFAULT(
virtual_host, per_request_buffer_limit_bytes, std::numeric_limits<uint32_t>::max())),
include_attempt_count_in_request_(virtual_host.include_request_attempt_count()),
Expand Down Expand Up @@ -1582,13 +1579,9 @@ RouteSpecificFilterConfigConstSharedPtr PerFilterConfigs::createRouteSpecificFil

PerFilterConfigs::PerFilterConfigs(
const Protobuf::Map<std::string, ProtobufWkt::Any>& typed_configs,
const Protobuf::Map<std::string, ProtobufWkt::Struct>& configs,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator) {
if (!typed_configs.empty() && !configs.empty()) {
throw EnvoyException("Only one of typed_configs or configs can be specified");
}

for (const auto& it : typed_configs) {
// TODO(zuercher): canonicalization may be removed when deprecated filter names are removed
Expand All @@ -1602,19 +1595,6 @@ PerFilterConfigs::PerFilterConfigs(
configs_[name] = std::move(object);
}
}

for (const auto& it : configs) {
// TODO(zuercher): canonicalization may be removed when deprecated filter names are removed
const auto& name =
Extensions::HttpFilters::Common::FilterNameUtil::canonicalFilterName(it.first);

auto object =
createRouteSpecificFilterConfig(name, ProtobufWkt::Any::default_instance(), it.second,
optional_http_filters, factory_context, validator);
if (object != nullptr) {
configs_[name] = std::move(object);
}
}
}

const RouteSpecificFilterConfig* PerFilterConfigs::get(const std::string& name) const {
Expand Down
1 change: 0 additions & 1 deletion source/common/router/config_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ using OptionalHttpFilters = absl::flat_hash_set<std::string>;
class PerFilterConfigs : public Logger::Loggable<Logger::Id::http> {
public:
PerFilterConfigs(const Protobuf::Map<std::string, ProtobufWkt::Any>& typed_configs,
const Protobuf::Map<std::string, ProtobufWkt::Struct>& configs,
const OptionalHttpFilters& optional_http_filters,
Server::Configuration::ServerFactoryContext& factory_context,
ProtobufMessage::ValidationVisitor& validator);
Expand Down
201 changes: 0 additions & 201 deletions test/common/router/config_impl_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -7580,64 +7580,6 @@ class PerFilterConfigsTest : public testing::Test, public ConfigImplTestBase {
registered_default_factory_;
};

TEST_F(PerFilterConfigsTest, DEPRECATED_FEATURE_TEST(TypedConfigFilterError)) {
TestDeprecatedV2Api _deprecated_v2_api;
{
const std::string yaml = R"EOF(
virtual_hosts:
- name: bar
domains: ["*"]
routes:
- match: { prefix: "/" }
route: { cluster: baz }
per_filter_config: { unknown.filter: {} }
typed_per_filter_config:
unknown.filter:
"@type": type.googleapis.com/google.protobuf.Timestamp
)EOF";

EXPECT_THROW_WITH_MESSAGE(
TestConfigImpl(parseRouteConfigurationFromYaml(yaml), factory_context_, true),
EnvoyException, "Only one of typed_configs or configs can be specified");
}

{
const std::string yaml = R"EOF(
virtual_hosts:
- name: bar
domains: ["*"]
routes:
- match: { prefix: "/" }
route: { cluster: baz }
per_filter_config: { unknown.filter: {} }
typed_per_filter_config:
unknown.filter:
"@type": type.googleapis.com/google.protobuf.Timestamp
)EOF";

EXPECT_THROW_WITH_MESSAGE(
TestConfigImpl(parseRouteConfigurationFromYaml(yaml), factory_context_, true),
EnvoyException, "Only one of typed_configs or configs can be specified");
}
}

TEST_F(PerFilterConfigsTest, DEPRECATED_FEATURE_TEST(UnknownFilterStruct)) {
TestDeprecatedV2Api _deprecated_v2_api;
const std::string yaml = R"EOF(
virtual_hosts:
- name: bar
domains: ["*"]
routes:
- match: { prefix: "/" }
route: { cluster: baz }
per_filter_config: { unknown.filter: {} }
)EOF";

EXPECT_THROW_WITH_MESSAGE(
TestConfigImpl(parseRouteConfigurationFromYaml(yaml), factory_context_, true), EnvoyException,
"Didn't find a registered implementation for name: 'unknown.filter'");
}

TEST_F(PerFilterConfigsTest, UnknownFilterAny) {
const std::string yaml = R"EOF(
virtual_hosts:
Expand All @@ -7656,47 +7598,6 @@ TEST_F(PerFilterConfigsTest, UnknownFilterAny) {
"Didn't find a registered implementation for name: 'unknown.filter'");
}

// Test that a trivially specified NamedHttpFilterConfigFactory ignores per_filter_config without
// error.
TEST_F(PerFilterConfigsTest,
DEPRECATED_FEATURE_TEST(DefaultFilterImplementationStructPerVirtualHost)) {
TestDeprecatedV2Api _deprecated_v2_api;
const std::string yaml = R"EOF(
virtual_hosts:
- name: bar
domains: ["*"]
routes:
- match: { prefix: "/" }
route: { cluster: baz }
per_filter_config: { test.default.filter: { seconds: 123} }
)EOF";

Runtime::LoaderSingleton::getExisting()->mergeValues(
{{"envoy.reloadable_features.check_unsupported_typed_per_filter_config", "false"}});

factory_context_.cluster_manager_.initializeClusters({"baz"}, {});
checkNoPerFilterConfig(yaml);
}

TEST_F(PerFilterConfigsTest, DEPRECATED_FEATURE_TEST(DefaultFilterImplementationStructPerRoute)) {
TestDeprecatedV2Api _deprecated_v2_api;
const std::string yaml = R"EOF(
virtual_hosts:
- name: bar
domains: ["*"]
routes:
- match: { prefix: "/" }
route: { cluster: baz }
per_filter_config: { test.default.filter: { seconds: 123} }
)EOF";

Runtime::LoaderSingleton::getExisting()->mergeValues(
{{"envoy.reloadable_features.check_unsupported_typed_per_filter_config", "false"}});

factory_context_.cluster_manager_.initializeClusters({"baz"}, {});
checkNoPerFilterConfig(yaml);
}

TEST_F(PerFilterConfigsTest, DefaultFilterImplementationAnyPerVirtualHost) {
TestScopedRuntime scoped_runtime;
Runtime::LoaderSingleton::getExisting()->mergeValues(
Expand Down Expand Up @@ -7741,46 +7642,6 @@ TEST_F(PerFilterConfigsTest, DefaultFilterImplementationAnyPerRoute) {
checkNoPerFilterConfig(yaml);
}

// Test that a trivially specified NamedHttpFilterConfigFactory reject unsupported
// per_filter_config.
TEST_F(PerFilterConfigsTest,
DEPRECATED_FEATURE_TEST(DefaultFilterImplementationStructWithCheckPerVirtualHost)) {
TestDeprecatedV2Api _deprecated_v2_api;
const std::string yaml = R"EOF(
virtual_hosts:
- name: bar
domains: ["*"]
routes:
- match: { prefix: "/" }
route: { cluster: baz }
per_filter_config: { test.default.filter: { seconds: 123} }
)EOF";

EXPECT_THROW_WITH_MESSAGE(
TestConfigImpl config(parseRouteConfigurationFromYaml(yaml), factory_context_, true),
EnvoyException,
"The filter test.default.filter doesn't support virtual host-specific configurations");
}

TEST_F(PerFilterConfigsTest,
DEPRECATED_FEATURE_TEST(DefaultFilterImplementationStructWithCheckPerRoute)) {
TestDeprecatedV2Api _deprecated_v2_api;
const std::string yaml = R"EOF(
virtual_hosts:
- name: bar
domains: ["*"]
routes:
- match: { prefix: "/" }
route: { cluster: baz }
per_filter_config: { test.default.filter: { seconds: 123} }
)EOF";

EXPECT_THROW_WITH_MESSAGE(
TestConfigImpl config(parseRouteConfigurationFromYaml(yaml), factory_context_, true),
EnvoyException,
"The filter test.default.filter doesn't support virtual host-specific configurations");
}

TEST_F(PerFilterConfigsTest, DefaultFilterImplementationAnyWithCheckPerVirtualHost) {
const std::string yaml = R"EOF(
virtual_hosts:
Expand Down Expand Up @@ -7945,24 +7806,6 @@ TEST_F(PerFilterConfigsTest, PerRouteWithOptionalUnknownFilter) {
checkNoPerFilterConfig(yaml, optional_http_filters);
}

TEST_F(PerFilterConfigsTest, DEPRECATED_FEATURE_TEST(RouteLocalConfig)) {
TestDeprecatedV2Api _deprecated_v2_api;
const std::string yaml = R"EOF(
virtual_hosts:
- name: bar
domains: ["*"]
routes:
- match: { prefix: "/" }
route: { cluster: baz }
per_filter_config: { test.filter: { seconds: 123 } }
per_filter_config: { test.filter: { seconds: 456 } }
)EOF";

factory_context_.cluster_manager_.initializeClusters({"baz"}, {});
absl::InlinedVector<uint32_t, 3> expected_traveled_config({456, 123});
checkEach(yaml, 123, expected_traveled_config);
}

TEST_F(PerFilterConfigsTest, RouteLocalTypedConfig) {
const std::string yaml = R"EOF(
virtual_hosts:
Expand Down Expand Up @@ -8014,28 +7857,6 @@ TEST_F(PerFilterConfigsTest, RouteLocalTypedConfigWithDirectResponse) {
checkEach(yaml, 123, expected_traveled_config);
}

TEST_F(PerFilterConfigsTest, DEPRECATED_FEATURE_TEST(WeightedClusterConfig)) {
TestDeprecatedV2Api _deprecated_v2_api;
const std::string yaml = R"EOF(
virtual_hosts:
- name: bar
domains: ["*"]
routes:
- match: { prefix: "/" }
route:
weighted_clusters:
clusters:
- name: baz
weight: 100
per_filter_config: { test.filter: { seconds: 789 } }
per_filter_config: { test.filter: { seconds: 1011 } }
)EOF";

factory_context_.cluster_manager_.initializeClusters({"baz"}, {});
absl::InlinedVector<uint32_t, 3> expected_traveled_config({1011, 789});
checkEach(yaml, 789, expected_traveled_config);
}

TEST_F(PerFilterConfigsTest, WeightedClusterTypedConfig) {
const std::string yaml = R"EOF(
virtual_hosts:
Expand Down Expand Up @@ -8065,28 +7886,6 @@ TEST_F(PerFilterConfigsTest, WeightedClusterTypedConfig) {
checkEach(yaml, 789, expected_traveled_config);
}

TEST_F(PerFilterConfigsTest, DEPRECATED_FEATURE_TEST(WeightedClusterFallthroughConfig)) {
TestDeprecatedV2Api _deprecated_v2_api;
const std::string yaml = R"EOF(
virtual_hosts:
- name: bar
domains: ["*"]
routes:
- match: { prefix: "/" }
route:
weighted_clusters:
clusters:
- name: baz
weight: 100
per_filter_config: { test.filter: { seconds: 1213 } }
per_filter_config: { test.filter: { seconds: 1415 } }
)EOF";

factory_context_.cluster_manager_.initializeClusters({"baz"}, {});
absl::InlinedVector<uint32_t, 3> expected_traveled_config({1415, 1213});
checkEach(yaml, 1213, expected_traveled_config);
}

TEST_F(PerFilterConfigsTest, WeightedClusterFallthroughTypedConfig) {
const std::string yaml = R"EOF(
virtual_hosts:
Expand Down