Skip to content

Commit 6579ca5

Browse files
committed
[xDS] fix GCP auth filter test with xds_channel_filter_chain_per_route enabled
1 parent 456a47b commit 6579ca5

File tree

2 files changed

+47
-26
lines changed

2 files changed

+47
-26
lines changed

test/core/filters/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ grpc_cc_test(
147147
"absl/strings",
148148
"gtest",
149149
],
150+
tags = ["xds_test"],
150151
uses_event_engine = False,
151152
uses_polling = False,
152153
deps = [

test/core/filters/gcp_authentication_filter_test.cc

Lines changed: 46 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class GcpAuthenticationFilterTest : public FilterTest<GcpAuthenticationFilter> {
4242
protected:
4343
static RefCountedPtr<ServiceConfig> MakeServiceConfig(
4444
absl::string_view service_config_json) {
45+
if (IsXdsChannelFilterChainPerRouteEnabled()) return nullptr;
4546
auto service_config = ServiceConfigImpl::Create(
4647
ChannelArgs().Set(GRPC_ARG_PARSE_GCP_AUTHENTICATION_METHOD_CONFIG,
4748
true),
@@ -50,6 +51,14 @@ class GcpAuthenticationFilterTest : public FilterTest<GcpAuthenticationFilter> {
5051
return *service_config;
5152
}
5253

54+
static RefCountedPtr<const FilterConfig> MakeFilterConfig(
55+
absl::string_view filter_instance_name) {
56+
if (!IsXdsChannelFilterChainPerRouteEnabled()) return nullptr;
57+
auto config = MakeRefCounted<GcpAuthenticationFilter::Config>();
58+
config->instance_name = std::string(filter_instance_name);
59+
return config;
60+
}
61+
5362
static RefCountedPtr<const XdsConfig> MakeXdsConfig(
5463
absl::string_view cluster, absl::string_view filter_instance_name,
5564
std::unique_ptr<XdsMetadataValue> audience_metadata) {
@@ -114,27 +123,34 @@ TEST_F(GcpAuthenticationFilterTest, CreateSucceeds) {
114123
"}";
115124
auto channel_args = MakeChannelArgs(kServiceConfigJson, kClusterName,
116125
kFilterInstanceName, nullptr);
126+
auto filter_config = MakeFilterConfig(kFilterInstanceName);
117127
auto blackboard = MakeBlackboard(kFilterInstanceName);
118128
auto filter = GcpAuthenticationFilter::Create(
119-
channel_args, ChannelFilter::Args(/*instance_id=*/0, /*config=*/nullptr,
120-
blackboard.get()));
129+
channel_args,
130+
ChannelFilter::Args(/*instance_id=*/0, filter_config, blackboard.get()));
121131
EXPECT_TRUE(filter.ok()) << filter.status();
122132
}
123133

124-
TEST_F(GcpAuthenticationFilterTest, CreateFailsWithoutServiceConfig) {
134+
TEST_F(GcpAuthenticationFilterTest, CreateFailsWithoutFilterConfig) {
125135
constexpr absl::string_view kClusterName = "foo";
126136
constexpr absl::string_view kFilterInstanceName = "gcp_authn_filter";
127137
auto channel_args = ChannelArgs().SetObject(
128138
MakeXdsConfig(kClusterName, kFilterInstanceName, nullptr));
129139
auto filter = GcpAuthenticationFilter::Create(
130140
channel_args, ChannelFilter::Args(/*instance_id=*/0));
131141
EXPECT_EQ(filter.status(),
132-
absl::InvalidArgumentError(
133-
"gcp_auth: no service config in channel args"));
142+
IsXdsChannelFilterChainPerRouteEnabled()
143+
? absl::InternalError("gcp_auth: filter config not set")
144+
: absl::InvalidArgumentError(
145+
"gcp_auth: no service config in channel args"));
134146
}
135147

136148
TEST_F(GcpAuthenticationFilterTest,
137149
CreateFailsFilterConfigMissingFromServiceConfig) {
150+
if (IsXdsChannelFilterChainPerRouteEnabled()) {
151+
GTEST_SKIP() << "test disabled when xds_channel_filter_chain_per_route "
152+
"experiment is enabled";
153+
}
138154
constexpr absl::string_view kClusterName = "foo";
139155
constexpr absl::string_view kFilterInstanceName = "gcp_authn_filter";
140156
constexpr absl::string_view kServiceConfigJson = "{}";
@@ -154,10 +170,11 @@ TEST_F(GcpAuthenticationFilterTest, CreateFailsXdsConfigNotFoundInChannelArgs) {
154170
" {\"filter_instance_name\": \"gcp_authn_filter\"}\n"
155171
" ]\n"
156172
"}";
173+
auto filter_config = MakeFilterConfig("gcp_authn_filter");
157174
auto channel_args =
158175
ChannelArgs().SetObject(MakeServiceConfig(kServiceConfigJson));
159176
auto filter = GcpAuthenticationFilter::Create(
160-
channel_args, ChannelFilter::Args(/*instance_id=*/0));
177+
channel_args, ChannelFilter::Args(/*instance_id=*/0, filter_config));
161178
EXPECT_EQ(
162179
filter.status(),
163180
absl::InternalError("gcp_auth: xds config not found in channel args"));
@@ -174,9 +191,9 @@ TEST_F(GcpAuthenticationFilterTest, FailsCallIfNoXdsClusterAttribute) {
174191
"}";
175192
auto channel_args = MakeChannelArgs(kServiceConfigJson, kClusterName,
176193
kFilterInstanceName, nullptr);
194+
auto filter_config = MakeFilterConfig(kFilterInstanceName);
177195
auto blackboard = MakeBlackboard(kFilterInstanceName);
178-
Call call(
179-
MakeChannel(channel_args, /*config=*/nullptr, blackboard.get()).value());
196+
Call call(MakeChannel(channel_args, filter_config, blackboard.get()).value());
180197
call.arena()->New<ServiceConfigCallData>(call.arena());
181198
call.Start(call.NewClientMetadata());
182199
EXPECT_EVENT(Finished(
@@ -201,9 +218,9 @@ TEST_F(GcpAuthenticationFilterTest, NoOpIfClusterAttributeHasWrongPrefix) {
201218
auto channel_args = MakeChannelArgs(
202219
kServiceConfigJson, kClusterName, kFilterInstanceName,
203220
std::make_unique<XdsGcpAuthnAudienceMetadataValue>(kAudience));
221+
auto filter_config = MakeFilterConfig(kFilterInstanceName);
204222
auto blackboard = MakeBlackboard(kFilterInstanceName);
205-
Call call(
206-
MakeChannel(channel_args, /*config=*/nullptr, blackboard.get()).value());
223+
Call call(MakeChannel(channel_args, filter_config, blackboard.get()).value());
207224
auto* service_config_call_data =
208225
call.arena()->New<ServiceConfigCallData>(call.arena());
209226
XdsClusterAttribute xds_cluster_attribute(kClusterName);
@@ -219,17 +236,18 @@ TEST_F(GcpAuthenticationFilterTest, NoOpIfClusterAttributeHasWrongPrefix) {
219236

220237
TEST_F(GcpAuthenticationFilterTest, FailsCallIfClusterNotPresentInXdsConfig) {
221238
constexpr absl::string_view kClusterName = "foo";
239+
constexpr absl::string_view kFilterInstanceName = "gcp_authn_filter";
222240
constexpr absl::string_view kServiceConfigJson =
223241
"{\n"
224242
" \"gcp_authentication\": [\n"
225243
" {\"filter_instance_name\": \"gcp_authn_filter\"}\n"
226244
" ]\n"
227245
"}";
228246
auto channel_args = MakeChannelArgs(kServiceConfigJson, /*cluster=*/"",
229-
/*filter_instance_name=*/"", nullptr);
230-
auto blackboard = MakeBlackboard("gcp_authn_filter");
231-
Call call(
232-
MakeChannel(channel_args, /*config=*/nullptr, blackboard.get()).value());
247+
kFilterInstanceName, nullptr);
248+
auto filter_config = MakeFilterConfig(kFilterInstanceName);
249+
auto blackboard = MakeBlackboard(kFilterInstanceName);
250+
Call call(MakeChannel(channel_args, filter_config, blackboard.get()).value());
233251
auto* service_config_call_data =
234252
call.arena()->New<ServiceConfigCallData>(call.arena());
235253
std::string cluster_name_with_prefix = absl::StrCat("cluster:", kClusterName);
@@ -247,6 +265,7 @@ TEST_F(GcpAuthenticationFilterTest, FailsCallIfClusterNotPresentInXdsConfig) {
247265

248266
TEST_F(GcpAuthenticationFilterTest, FailsCallIfClusterNotOkayInXdsConfig) {
249267
constexpr absl::string_view kClusterName = "foo";
268+
constexpr absl::string_view kFilterInstanceName = "gcp_authn_filter";
250269
constexpr absl::string_view kServiceConfigJson =
251270
"{\n"
252271
" \"gcp_authentication\": [\n"
@@ -257,9 +276,9 @@ TEST_F(GcpAuthenticationFilterTest, FailsCallIfClusterNotOkayInXdsConfig) {
257276
.SetObject(MakeServiceConfig(kServiceConfigJson))
258277
.SetObject(MakeXdsConfigWithCluster(
259278
kClusterName, absl::UnavailableError("nope")));
260-
auto blackboard = MakeBlackboard("gcp_authn_filter");
261-
Call call(
262-
MakeChannel(channel_args, /*config=*/nullptr, blackboard.get()).value());
279+
auto filter_config = MakeFilterConfig(kFilterInstanceName);
280+
auto blackboard = MakeBlackboard(kFilterInstanceName);
281+
Call call(MakeChannel(channel_args, filter_config, blackboard.get()).value());
263282
auto* service_config_call_data =
264283
call.arena()->New<ServiceConfigCallData>(call.arena());
265284
std::string cluster_name_with_prefix = absl::StrCat("cluster:", kClusterName);
@@ -278,6 +297,7 @@ TEST_F(GcpAuthenticationFilterTest, FailsCallIfClusterNotOkayInXdsConfig) {
278297
TEST_F(GcpAuthenticationFilterTest,
279298
FailsCallIfClusterResourceMissingInXdsConfig) {
280299
constexpr absl::string_view kClusterName = "foo";
300+
constexpr absl::string_view kFilterInstanceName = "gcp_authn_filter";
281301
constexpr absl::string_view kServiceConfigJson =
282302
"{\n"
283303
" \"gcp_authentication\": [\n"
@@ -289,9 +309,9 @@ TEST_F(GcpAuthenticationFilterTest,
289309
.SetObject(MakeServiceConfig(kServiceConfigJson))
290310
.SetObject(MakeXdsConfigWithCluster(
291311
kClusterName, XdsConfig::ClusterConfig(nullptr, nullptr, "")));
292-
auto blackboard = MakeBlackboard("gcp_authn_filter");
293-
Call call(
294-
MakeChannel(channel_args, /*config=*/nullptr, blackboard.get()).value());
312+
auto filter_config = MakeFilterConfig(kFilterInstanceName);
313+
auto blackboard = MakeBlackboard(kFilterInstanceName);
314+
Call call(MakeChannel(channel_args, filter_config, blackboard.get()).value());
295315
auto* service_config_call_data =
296316
call.arena()->New<ServiceConfigCallData>(call.arena());
297317
std::string cluster_name_with_prefix = absl::StrCat("cluster:", kClusterName);
@@ -319,9 +339,9 @@ TEST_F(GcpAuthenticationFilterTest, NoOpIfClusterHasNoAudience) {
319339
"}";
320340
auto channel_args = MakeChannelArgs(kServiceConfigJson, kClusterName,
321341
kFilterInstanceName, nullptr);
342+
auto filter_config = MakeFilterConfig(kFilterInstanceName);
322343
auto blackboard = MakeBlackboard(kFilterInstanceName);
323-
Call call(
324-
MakeChannel(channel_args, /*config=*/nullptr, blackboard.get()).value());
344+
Call call(MakeChannel(channel_args, filter_config, blackboard.get()).value());
325345
auto* service_config_call_data =
326346
call.arena()->New<ServiceConfigCallData>(call.arena());
327347
std::string cluster_name_with_prefix = absl::StrCat("cluster:", kClusterName);
@@ -348,9 +368,9 @@ TEST_F(GcpAuthenticationFilterTest, FailsCallIfAudienceMetadataWrongType) {
348368
auto channel_args =
349369
MakeChannelArgs(kServiceConfigJson, kClusterName, kFilterInstanceName,
350370
std::make_unique<XdsStructMetadataValue>(Json()));
371+
auto filter_config = MakeFilterConfig(kFilterInstanceName);
351372
auto blackboard = MakeBlackboard(kFilterInstanceName);
352-
Call call(
353-
MakeChannel(channel_args, /*config=*/nullptr, blackboard.get()).value());
373+
Call call(MakeChannel(channel_args, filter_config, blackboard.get()).value());
354374
auto* service_config_call_data =
355375
call.arena()->New<ServiceConfigCallData>(call.arena());
356376
std::string cluster_name_with_prefix = absl::StrCat("cluster:", kClusterName);
@@ -380,9 +400,9 @@ TEST_F(GcpAuthenticationFilterTest, SetsCallCredsIfClusterHasAudience) {
380400
auto channel_args = MakeChannelArgs(
381401
kServiceConfigJson, kClusterName, kFilterInstanceName,
382402
std::make_unique<XdsGcpAuthnAudienceMetadataValue>(kAudience));
403+
auto filter_config = MakeFilterConfig(kFilterInstanceName);
383404
auto blackboard = MakeBlackboard(kFilterInstanceName);
384-
Call call(
385-
MakeChannel(channel_args, /*config=*/nullptr, blackboard.get()).value());
405+
Call call(MakeChannel(channel_args, filter_config, blackboard.get()).value());
386406
auto* service_config_call_data =
387407
call.arena()->New<ServiceConfigCallData>(call.arena());
388408
std::string cluster_name_with_prefix = absl::StrCat("cluster:", kClusterName);

0 commit comments

Comments
 (0)