xref: /aosp_15_r20/external/grpc-grpc/test/cpp/end2end/xds/BUILD (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1# Copyright 2017 gRPC authors.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#     http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15load("//bazel:grpc_build_system.bzl", "grpc_cc_library", "grpc_cc_test", "grpc_package")
16
17licenses(["notice"])
18
19grpc_package(
20    name = "test/cpp/end2end/xds",
21    visibility = "public",
22)  # Allows external users to implement end2end tests.
23
24grpc_cc_library(
25    name = "xds_server",
26    srcs = ["xds_server.cc"],
27    hdrs = ["xds_server.h"],
28    visibility = ["@grpc:xds_end2end_test_utils"],
29    deps = [
30        "//:gpr",
31        "//:grpc",
32        "//:grpc++",
33        "//src/proto/grpc/testing/xds/v3:ads_proto",
34        "//src/proto/grpc/testing/xds/v3:cluster_proto",
35        "//src/proto/grpc/testing/xds/v3:discovery_proto",
36        "//src/proto/grpc/testing/xds/v3:endpoint_proto",
37        "//src/proto/grpc/testing/xds/v3:listener_proto",
38        "//src/proto/grpc/testing/xds/v3:lrs_proto",
39        "//src/proto/grpc/testing/xds/v3:route_proto",
40        "//test/core/util:grpc_test_util",
41        "//test/cpp/end2end:counted_service",
42    ],
43)
44
45grpc_cc_library(
46    name = "xds_utils",
47    srcs = ["xds_utils.cc"],
48    hdrs = ["xds_utils.h"],
49    visibility = ["@grpc:xds_end2end_test_utils"],
50    deps = [
51        ":xds_server",
52        "//src/proto/grpc/testing/xds/v3:cluster_proto",
53        "//src/proto/grpc/testing/xds/v3:discovery_proto",
54        "//src/proto/grpc/testing/xds/v3:endpoint_proto",
55        "//src/proto/grpc/testing/xds/v3:http_connection_manager_proto",
56        "//src/proto/grpc/testing/xds/v3:listener_proto",
57        "//src/proto/grpc/testing/xds/v3:route_proto",
58        "//src/proto/grpc/testing/xds/v3:router_proto",
59        "//test/core/util:grpc_test_util_base",
60    ],
61)
62
63grpc_cc_library(
64    name = "xds_end2end_test_lib",
65    testonly = True,
66    srcs = ["xds_end2end_test_lib.cc"],
67    hdrs = ["xds_end2end_test_lib.h"],
68    external_deps = [
69        "gtest",
70    ],
71    deps = [
72        ":xds_server",
73        ":xds_utils",
74        "//:gpr",
75        "//:grpc",
76        "//:grpc++",
77        "//:grpc_resolver_fake",
78        "//src/proto/grpc/testing:echo_messages_proto",
79        "//src/proto/grpc/testing:echo_proto",
80        "//src/proto/grpc/testing/duplicate:echo_duplicate_proto",
81        "//src/proto/grpc/testing/xds/v3:ads_proto",
82        "//src/proto/grpc/testing/xds/v3:cluster_proto",
83        "//src/proto/grpc/testing/xds/v3:discovery_proto",
84        "//src/proto/grpc/testing/xds/v3:endpoint_proto",
85        "//src/proto/grpc/testing/xds/v3:http_connection_manager_proto",
86        "//src/proto/grpc/testing/xds/v3:http_filter_rbac_proto",
87        "//src/proto/grpc/testing/xds/v3:listener_proto",
88        "//src/proto/grpc/testing/xds/v3:lrs_proto",
89        "//src/proto/grpc/testing/xds/v3:route_proto",
90        "//src/proto/grpc/testing/xds/v3:router_proto",
91        "//test/core/util:grpc_test_util",
92        "//test/cpp/end2end:counted_service",
93        "//test/cpp/end2end:test_service_impl",
94        "//test/cpp/util:tls_test_utils",
95    ],
96)
97
98grpc_cc_test(
99    name = "xds_end2end_test",
100    size = "large",
101    srcs = ["xds_end2end_test.cc"],
102    data = [
103        "//src/core/tsi/test_creds:badclient.key",
104        "//src/core/tsi/test_creds:badclient.pem",
105        "//src/core/tsi/test_creds:ca.pem",
106        "//src/core/tsi/test_creds:client.key",
107        "//src/core/tsi/test_creds:client.pem",
108        "//src/core/tsi/test_creds:server1.key",
109        "//src/core/tsi/test_creds:server1.pem",
110    ],
111    external_deps = [
112        "gtest",
113    ],
114    flaky = True,  # TODO(b/144705388)
115    linkstatic = True,  # Fixes dyld error on MacOS
116    shard_count = 50,
117    tags = [
118        "no_test_ios",
119        "no_windows",
120        "xds_end2end_test",
121    ],  # TODO(jtattermusch): fix test on windows
122    deps = [
123        ":xds_end2end_test_lib",
124        "//:gpr",
125        "//:grpc",
126        "//:grpc++",
127        "//:grpc_resolver_fake",
128        "//src/core:channel_args",
129        "//src/core:grpc_audit_logging",
130        "//src/proto/grpc/testing:echo_messages_proto",
131        "//src/proto/grpc/testing:echo_proto",
132        "//src/proto/grpc/testing/duplicate:echo_duplicate_proto",
133        "//src/proto/grpc/testing/xds/v3:aggregate_cluster_proto",
134        "//src/proto/grpc/testing/xds/v3:cluster_proto",
135        "//src/proto/grpc/testing/xds/v3:endpoint_proto",
136        "//src/proto/grpc/testing/xds/v3:fault_common_proto",
137        "//src/proto/grpc/testing/xds/v3:fault_proto",
138        "//src/proto/grpc/testing/xds/v3:http_connection_manager_proto",
139        "//src/proto/grpc/testing/xds/v3:http_filter_rbac_proto",
140        "//src/proto/grpc/testing/xds/v3:listener_proto",
141        "//src/proto/grpc/testing/xds/v3:route_proto",
142        "//src/proto/grpc/testing/xds/v3:router_proto",
143        "//src/proto/grpc/testing/xds/v3:tls_proto",
144        "//src/proto/grpc/testing/xds/v3:typed_struct_proto",
145        "//test/core/util:audit_logging_utils",
146        "//test/core/util:grpc_test_util",
147        "//test/core/util:scoped_env_var",
148        "//test/cpp/util:test_config",
149        "//test/cpp/util:test_util",
150        "//test/cpp/util:tls_test_utils",
151    ],
152)
153
154grpc_cc_test(
155    name = "xds_cluster_end2end_test",
156    size = "large",
157    srcs = ["xds_cluster_end2end_test.cc"],
158    external_deps = [
159        "gtest",
160    ],
161    flaky = True,  # TODO(b/144705388)
162    linkstatic = True,  # Fixes dyld error on MacOS
163    shard_count = 50,
164    tags = [
165        "no_test_ios",
166        "no_windows",
167        "xds_end2end_test",
168    ],  # TODO(jtattermusch): fix test on windows
169    deps = [
170        ":xds_end2end_test_lib",
171        "//:gpr",
172        "//:grpc",
173        "//:grpc++",
174        "//test/core/util:fake_stats_plugin",
175        "//test/core/util:grpc_test_util",
176        "//test/core/util:scoped_env_var",
177        "//test/cpp/end2end:connection_attempt_injector",
178    ],
179)
180
181grpc_cc_test(
182    name = "xds_cluster_type_end2end_test",
183    size = "large",
184    srcs = ["xds_cluster_type_end2end_test.cc"],
185    external_deps = [
186        "gtest",
187    ],
188    flaky = True,  # TODO(b/144705388)
189    linkstatic = True,  # Fixes dyld error on MacOS
190    tags = [
191        "no_test_ios",
192        "no_windows",
193        "xds_end2end_test",
194    ],  # TODO(jtattermusch): fix test on windows
195    deps = [
196        ":xds_end2end_test_lib",
197        "//:gpr",
198        "//:grpc",
199        "//:grpc++",
200        "//:grpc_resolver_fake",
201        "//src/proto/grpc/testing/xds/v3:aggregate_cluster_proto",
202        "//test/core/util:grpc_test_util",
203        "//test/core/util:scoped_env_var",
204        "//test/cpp/end2end:connection_attempt_injector",
205    ],
206)
207
208grpc_cc_test(
209    name = "xds_core_end2end_test",
210    size = "large",
211    srcs = ["xds_core_end2end_test.cc"],
212    external_deps = [
213        "gtest",
214    ],
215    flaky = True,
216    linkstatic = True,  # Fixes dyld error on MacOS
217    shard_count = 15,
218    tags = [
219        "no_test_ios",
220        "no_windows",
221        "xds_end2end_test",
222    ],  # TODO(jtattermusch): fix test on windows
223    deps = [
224        ":xds_end2end_test_lib",
225        "//:gpr",
226        "//:grpc",
227        "//:grpc++",
228        "//test/core/util:fake_stats_plugin",
229        "//test/core/util:grpc_test_util",
230        "//test/core/util:scoped_env_var",
231    ],
232)
233
234grpc_cc_test(
235    name = "xds_csds_end2end_test",
236    size = "large",
237    srcs = ["xds_csds_end2end_test.cc"],
238    external_deps = [
239        "gtest",
240    ],
241    linkstatic = True,  # Fixes dyld error on MacOS
242    tags = [
243        "no_test_ios",
244        "no_windows",
245        "xds_end2end_test",
246    ],  # TODO(jtattermusch): fix test on windows
247    deps = [
248        ":xds_end2end_test_lib",
249        "//:gpr",
250        "//:grpc",
251        "//:grpc++",
252        "//:grpcpp_csds",
253        "//src/proto/grpc/testing/xds/v3:cluster_proto",
254        "//src/proto/grpc/testing/xds/v3:endpoint_proto",
255        "//src/proto/grpc/testing/xds/v3:listener_proto",
256        "//src/proto/grpc/testing/xds/v3:route_proto",
257        "//test/core/util:grpc_test_util",
258    ],
259)
260
261grpc_cc_test(
262    name = "xds_fault_injection_end2end_test",
263    size = "large",
264    srcs = ["xds_fault_injection_end2end_test.cc"],
265    external_deps = [
266        "gtest",
267    ],
268    flaky = True,
269    linkstatic = True,  # Fixes dyld error on MacOS
270    shard_count = 5,
271    tags = [
272        "no_test_ios",
273        "no_windows",
274        "xds_end2end_test",
275    ],  # TODO(jtattermusch): fix test on windows
276    deps = [
277        ":xds_end2end_test_lib",
278        "//:gpr",
279        "//:grpc",
280        "//:grpc++",
281        "//src/proto/grpc/testing/xds/v3:cluster_proto",
282        "//src/proto/grpc/testing/xds/v3:fault_proto",
283        "//src/proto/grpc/testing/xds/v3:http_connection_manager_proto",
284        "//src/proto/grpc/testing/xds/v3:router_proto",
285        "//test/core/util:grpc_test_util",
286    ],
287)
288
289grpc_cc_test(
290    name = "xds_outlier_detection_end2end_test",
291    size = "large",
292    srcs = ["xds_outlier_detection_end2end_test.cc"],
293    external_deps = [
294        "gtest",
295    ],
296    flaky = True,
297    linkstatic = True,  # Fixes dyld error on MacOS
298    tags = [
299        "no_test_ios",
300        "no_windows",
301        "xds_end2end_test",
302    ],  # TODO(jtattermusch): fix test on windows
303    deps = [
304        ":xds_end2end_test_lib",
305        "//:gpr",
306        "//:grpc",
307        "//:grpc++",
308        "//src/proto/grpc/testing/xds/v3:fault_proto",
309        "//src/proto/grpc/testing/xds/v3:router_proto",
310        "//test/core/util:grpc_test_util",
311    ],
312)
313
314grpc_cc_test(
315    name = "xds_wrr_end2end_test",
316    size = "large",
317    srcs = ["xds_wrr_end2end_test.cc"],
318    external_deps = [
319        "gtest",
320    ],
321    linkstatic = True,  # Fixes dyld error on MacOS
322    tags = [
323        "no_test_ios",
324        "no_windows",
325        "xds_end2end_test",
326    ],  # TODO(jtattermusch): fix test on windows
327    deps = [
328        ":xds_end2end_test_lib",
329        "//:gpr",
330        "//:grpc",
331        "//:grpc++",
332        "//src/proto/grpc/testing/xds/v3:client_side_weighted_round_robin_proto",
333        "//src/proto/grpc/testing/xds/v3:cluster_proto",
334        "//src/proto/grpc/testing/xds/v3:wrr_locality_proto",
335        "//test/core/util:fake_stats_plugin",
336        "//test/core/util:grpc_test_util",
337        "//test/core/util:scoped_env_var",
338    ],
339)
340
341grpc_cc_test(
342    name = "xds_ring_hash_end2end_test",
343    size = "large",
344    srcs = ["xds_ring_hash_end2end_test.cc"],
345    external_deps = [
346        "gtest",
347    ],
348    flaky = True,  # TODO(b/144705388)
349    linkstatic = True,  # Fixes dyld error on MacOS
350    shard_count = 10,
351    tags = [
352        "no_test_ios",
353        "no_windows",
354        "xds_end2end_test",
355    ],  # TODO(jtattermusch): fix test on windows
356    deps = [
357        ":xds_end2end_test_lib",
358        "//:gpr",
359        "//:grpc",
360        "//:grpc++",
361        "//:grpc_resolver_fake",
362        "//src/proto/grpc/testing/xds/v3:aggregate_cluster_proto",
363        "//src/proto/grpc/testing/xds/v3:cluster_proto",
364        "//src/proto/grpc/testing/xds/v3:endpoint_proto",
365        "//src/proto/grpc/testing/xds/v3:listener_proto",
366        "//src/proto/grpc/testing/xds/v3:route_proto",
367        "//test/core/util:grpc_test_util",
368        "//test/cpp/end2end:connection_attempt_injector",
369    ],
370)
371
372grpc_cc_test(
373    name = "xds_rls_end2end_test",
374    size = "large",
375    srcs = ["xds_rls_end2end_test.cc"],
376    external_deps = [
377        "gtest",
378    ],
379    linkstatic = True,  # Fixes dyld error on MacOS
380    tags = [
381        "no_test_ios",
382        "no_windows",
383        "xds_end2end_test",
384    ],  # TODO(jtattermusch): fix test on windows
385    deps = [
386        ":xds_end2end_test_lib",
387        "//:gpr",
388        "//:grpc",
389        "//:grpc++",
390        "//src/proto/grpc/lookup/v1:rls_config_proto",
391        "//src/proto/grpc/lookup/v1:rls_proto",
392        "//test/core/util:grpc_test_util",
393        "//test/core/util:scoped_env_var",
394        "//test/cpp/end2end:rls_server",
395    ],
396)
397
398grpc_cc_test(
399    name = "xds_routing_end2end_test",
400    size = "large",
401    srcs = ["xds_routing_end2end_test.cc"],
402    external_deps = [
403        "gtest",
404    ],
405    flaky = True,  # TODO(b/144705388)
406    linkstatic = True,  # Fixes dyld error on MacOS
407    shard_count = 10,
408    tags = [
409        "no_test_ios",
410        "no_windows",
411        "xds_end2end_test",
412    ],  # TODO(jtattermusch): fix test on windows
413    deps = [
414        ":xds_end2end_test_lib",
415        "//:gpr",
416        "//:grpc",
417        "//:grpc++",
418        "//src/proto/grpc/testing/xds/v3:fault_proto",
419        "//src/proto/grpc/testing/xds/v3:router_proto",
420        "//test/core/util:grpc_test_util",
421    ],
422)
423
424grpc_cc_test(
425    name = "xds_credentials_end2end_test",
426    srcs = ["xds_credentials_end2end_test.cc"],
427    external_deps = [
428        "gtest",
429    ],
430    tags = [
431        "no_test_ios",
432        "xds_end2end_test",
433    ],
434    deps = [
435        "//:gpr",
436        "//:grpc",
437        "//:grpc++",
438        "//src/proto/grpc/testing:echo_messages_proto",
439        "//src/proto/grpc/testing:echo_proto",
440        "//test/core/util:grpc_test_util",
441        "//test/cpp/end2end:test_service_impl",
442        "//test/cpp/util:test_util",
443    ],
444)
445
446grpc_cc_test(
447    name = "xds_override_host_end2end_test",
448    size = "large",
449    srcs = ["xds_override_host_end2end_test.cc"],
450    external_deps = [
451        "gtest",
452    ],
453    linkstatic = True,  # Fixes dyld error on MacOS
454    tags = [
455        "no_test_ios",
456        "no_windows",
457        "xds_end2end_test",
458    ],  # TODO(jtattermusch): fix test on windows
459    deps = [
460        ":xds_end2end_test_lib",
461        "//:gpr",
462        "//:grpc",
463        "//:grpc++",
464        "//src/proto/grpc/testing/xds/v3:stateful_session_cookie_proto",
465        "//src/proto/grpc/testing/xds/v3:stateful_session_proto",
466        "//test/core/util:grpc_test_util",
467        "//test/core/util:scoped_env_var",
468    ],
469)
470
471grpc_cc_test(
472    name = "xds_pick_first_end2end_test",
473    size = "large",
474    srcs = ["xds_pick_first_end2end_test.cc"],
475    external_deps = [
476        "gtest",
477    ],
478    linkstatic = True,  # Fixes dyld error on MacOS
479    tags = [
480        "no_test_ios",
481        "no_windows",
482        "xds_end2end_test",
483    ],  # TODO(jtattermusch): fix test on windows
484    deps = [
485        ":xds_end2end_test_lib",
486        "//:gpr",
487        "//:grpc",
488        "//:grpc++",
489        "//src/proto/grpc/testing/xds/v3:aggregate_cluster_proto",
490        "//src/proto/grpc/testing/xds/v3:pick_first_proto",
491        "//src/proto/grpc/testing/xds/v3:router_proto",
492        "//test/core/util:grpc_test_util",
493        "//test/core/util:scoped_env_var",
494        "//test/cpp/end2end:connection_attempt_injector",
495    ],
496)
497
498grpc_cc_test(
499    name = "xds_fallback_end2end_test",
500    srcs = ["xds_fallback_end2end_test.cc"],
501    external_deps = [
502        "gtest",
503    ],
504    linkstatic = True,  # Fixes dyld error on MacOS
505    tags = [
506        "no_test_ios",
507        "no_windows",
508        "xds_end2end_test",
509    ],  # TODO(jtattermusch): fix test on windows
510    deps = [
511        ":xds_end2end_test_lib",
512        "//:gpr",
513        "//:grpc",
514        "//:grpc++",
515        "//test/core/util:scoped_env_var",
516    ],
517)
518