• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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    external_deps = [
29        "absl/log:check",
30        "absl/log:log",
31    ],
32    visibility = ["@grpc:xds_end2end_test_utils"],
33    deps = [
34        "//:gpr",
35        "//:grpc",
36        "//:grpc++",
37        "//src/proto/grpc/testing/xds/v3:ads_cc_grpc",
38        "//src/proto/grpc/testing/xds/v3:discovery_cc_proto",
39        "//src/proto/grpc/testing/xds/v3:lrs_cc_grpc",
40        "//test/core/test_util:grpc_test_util",
41        "//test/cpp/end2end:counted_service",
42        "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto",
43        "@envoy_api//envoy/config/endpoint/v3:pkg_cc_proto",
44        "@envoy_api//envoy/config/listener/v3:pkg_cc_proto",
45        "@envoy_api//envoy/config/route/v3:pkg_cc_proto",
46    ],
47)
48
49grpc_cc_library(
50    name = "xds_utils",
51    srcs = ["xds_utils.cc"],
52    hdrs = ["xds_utils.h"],
53    visibility = ["@grpc:xds_end2end_test_utils"],
54    deps = [
55        ":xds_server",
56        "//src/proto/grpc/testing/xds/v3:discovery_cc_proto",
57        "//test/core/test_util:grpc_test_util_base",
58        "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto",
59        "@envoy_api//envoy/config/endpoint/v3:pkg_cc_proto",
60        "@envoy_api//envoy/config/listener/v3:pkg_cc_proto",
61        "@envoy_api//envoy/config/route/v3:pkg_cc_proto",
62        "@envoy_api//envoy/extensions/filters/http/router/v3:pkg_cc_proto",
63        "@envoy_api//envoy/extensions/filters/network/http_connection_manager/v3:pkg_cc_proto",
64    ],
65)
66
67grpc_cc_library(
68    name = "xds_end2end_test_lib",
69    testonly = True,
70    srcs = ["xds_end2end_test_lib.cc"],
71    hdrs = ["xds_end2end_test_lib.h"],
72    external_deps = [
73        "absl/log:check",
74        "gtest",
75    ],
76    deps = [
77        ":xds_server",
78        ":xds_utils",
79        "//:gpr",
80        "//:grpc",
81        "//:grpc++",
82        "//:grpc_resolver_fake",
83        "//src/proto/grpc/testing:echo_cc_grpc",
84        "//src/proto/grpc/testing:echo_messages_cc_proto",
85        "//src/proto/grpc/testing/duplicate:echo_duplicate_cc_grpc",
86        "//src/proto/grpc/testing/xds/v3:ads_cc_grpc",
87        "//src/proto/grpc/testing/xds/v3:discovery_cc_proto",
88        "//src/proto/grpc/testing/xds/v3:lrs_cc_grpc",
89        "//test/core/test_util:grpc_test_util",
90        "//test/cpp/end2end:counted_service",
91        "//test/cpp/end2end:test_service_impl",
92        "//test/cpp/util:tls_test_utils",
93        "@com_github_cncf_xds//xds/data/orca/v3:pkg_cc_proto",
94        "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto",
95        "@envoy_api//envoy/config/endpoint/v3:pkg_cc_proto",
96        "@envoy_api//envoy/config/listener/v3:pkg_cc_proto",
97        "@envoy_api//envoy/config/route/v3:pkg_cc_proto",
98        "@envoy_api//envoy/extensions/filters/http/rbac/v3:pkg_cc_proto",
99        "@envoy_api//envoy/extensions/filters/http/router/v3:pkg_cc_proto",
100        "@envoy_api//envoy/extensions/filters/network/http_connection_manager/v3:pkg_cc_proto",
101    ],
102)
103
104grpc_cc_test(
105    name = "xds_security_end2end_test",
106    size = "large",
107    srcs = ["xds_security_end2end_test.cc"],
108    data = [
109        "//src/core/tsi/test_creds:badclient.key",
110        "//src/core/tsi/test_creds:badclient.pem",
111        "//src/core/tsi/test_creds:ca.pem",
112        "//src/core/tsi/test_creds:client.key",
113        "//src/core/tsi/test_creds:client.pem",
114        "//src/core/tsi/test_creds:server1.key",
115        "//src/core/tsi/test_creds:server1.pem",
116    ],
117    external_deps = [
118        "absl/log:check",
119        "gtest",
120    ],
121    flaky = True,  # TODO(b/144705388)
122    linkstatic = True,  # Fixes dyld error on MacOS
123    shard_count = 25,
124    tags = [
125        "no_test_ios",
126        "no_windows",
127        "xds_end2end_test",
128    ],  # TODO(jtattermusch): fix test on windows
129    deps = [
130        ":xds_end2end_test_lib",
131        "//:gpr",
132        "//:grpc",
133        "//:grpc++",
134        "//src/core:grpc_audit_logging",
135        "//src/proto/grpc/testing:echo_cc_grpc",
136        "//src/proto/grpc/testing:echo_messages_cc_proto",
137        "//test/core/test_util:audit_logging_utils",
138        "//test/core/test_util:grpc_test_util",
139        "//test/core/test_util:scoped_env_var",
140        "//test/cpp/util:test_config",
141        "//test/cpp/util:test_util",
142        "//test/cpp/util:tls_test_utils",
143        "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto",
144        "@envoy_api//envoy/config/endpoint/v3:pkg_cc_proto",
145        "@envoy_api//envoy/config/listener/v3:pkg_cc_proto",
146        "@envoy_api//envoy/config/route/v3:pkg_cc_proto",
147        "@envoy_api//envoy/extensions/clusters/aggregate/v3:pkg_cc_proto",
148        "@envoy_api//envoy/extensions/filters/http/rbac/v3:pkg_cc_proto",
149        "@envoy_api//envoy/extensions/filters/http/router/v3:pkg_cc_proto",
150        "@envoy_api//envoy/extensions/filters/network/http_connection_manager/v3:pkg_cc_proto",
151        "@envoy_api//envoy/extensions/transport_sockets/tls/v3:pkg_cc_proto",
152        "@envoy_api//envoy/type/v3:pkg_cc_proto",
153    ],
154)
155
156grpc_cc_test(
157    name = "xds_cluster_end2end_test",
158    size = "large",
159    srcs = ["xds_cluster_end2end_test.cc"],
160    external_deps = [
161        "gtest",
162    ],
163    flaky = True,  # TODO(b/144705388)
164    linkstatic = True,  # Fixes dyld error on MacOS
165    shard_count = 50,
166    tags = [
167        "no_test_ios",
168        "no_windows",
169        "xds_end2end_test",
170    ],  # TODO(jtattermusch): fix test on windows
171    deps = [
172        ":xds_end2end_test_lib",
173        "//:gpr",
174        "//:grpc",
175        "//:grpc++",
176        "//test/core/test_util:fake_stats_plugin",
177        "//test/core/test_util:grpc_test_util",
178        "//test/core/test_util:scoped_env_var",
179        "//test/cpp/end2end:connection_attempt_injector",
180    ],
181)
182
183grpc_cc_test(
184    name = "xds_cluster_type_end2end_test",
185    size = "large",
186    srcs = ["xds_cluster_type_end2end_test.cc"],
187    external_deps = [
188        "absl/log:check",
189        "gtest",
190    ],
191    flaky = True,  # TODO(b/144705388)
192    linkstatic = True,  # Fixes dyld error on MacOS
193    tags = [
194        "no_test_ios",
195        "no_windows",
196        "xds_end2end_test",
197    ],  # TODO(jtattermusch): fix test on windows
198    deps = [
199        ":xds_end2end_test_lib",
200        "//:gpr",
201        "//:grpc",
202        "//:grpc++",
203        "//:grpc_resolver_fake",
204        "//test/core/test_util:grpc_test_util",
205        "//test/core/test_util:scoped_env_var",
206        "//test/cpp/end2end:connection_attempt_injector",
207        "@envoy_api//envoy/extensions/clusters/aggregate/v3:pkg_cc_proto",
208    ],
209)
210
211grpc_cc_test(
212    name = "xds_core_end2end_test",
213    size = "large",
214    srcs = ["xds_core_end2end_test.cc"],
215    data = [
216        "//src/core/tsi/test_creds:ca.pem",
217        "//src/core/tsi/test_creds:server1.key",
218        "//src/core/tsi/test_creds:server1.pem",
219    ],
220    external_deps = [
221        "gtest",
222    ],
223    flaky = True,
224    linkstatic = True,  # Fixes dyld error on MacOS
225    shard_count = 15,
226    tags = [
227        "no_test_ios",
228        "no_windows",
229        "xds_end2end_test",
230    ],  # TODO(jtattermusch): fix test on windows
231    deps = [
232        ":xds_end2end_test_lib",
233        "//:gpr",
234        "//:grpc",
235        "//:grpc++",
236        "//test/core/test_util:fake_stats_plugin",
237        "//test/core/test_util:grpc_test_util",
238        "//test/core/test_util:scoped_env_var",
239    ],
240)
241
242grpc_cc_test(
243    name = "xds_csds_end2end_test",
244    size = "large",
245    srcs = ["xds_csds_end2end_test.cc"],
246    external_deps = [
247        "gtest",
248    ],
249    linkstatic = True,  # Fixes dyld error on MacOS
250    tags = [
251        "no_test_ios",
252        "no_windows",
253        "xds_end2end_test",
254    ],  # TODO(jtattermusch): fix test on windows
255    deps = [
256        ":xds_end2end_test_lib",
257        "//:gpr",
258        "//:grpc",
259        "//:grpc++",
260        "//:grpcpp_csds",
261        "//test/core/test_util:grpc_test_util",
262        "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto",
263        "@envoy_api//envoy/config/endpoint/v3:pkg_cc_proto",
264        "@envoy_api//envoy/config/listener/v3:pkg_cc_proto",
265        "@envoy_api//envoy/config/route/v3:pkg_cc_proto",
266    ],
267)
268
269grpc_cc_test(
270    name = "xds_fault_injection_end2end_test",
271    size = "large",
272    srcs = ["xds_fault_injection_end2end_test.cc"],
273    external_deps = [
274        "gtest",
275    ],
276    flaky = True,
277    linkstatic = True,  # Fixes dyld error on MacOS
278    shard_count = 5,
279    tags = [
280        "no_mac",
281        "no_test_ios",
282        "no_windows",
283        "xds_end2end_test",
284    ],  # TODO(jtattermusch): fix test on windows
285    deps = [
286        ":xds_end2end_test_lib",
287        "//:gpr",
288        "//:grpc",
289        "//:grpc++",
290        "//test/core/test_util:grpc_test_util",
291        "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto",
292        "@envoy_api//envoy/extensions/filters/http/fault/v3:pkg_cc_proto",
293        "@envoy_api//envoy/extensions/filters/http/router/v3:pkg_cc_proto",
294        "@envoy_api//envoy/extensions/filters/network/http_connection_manager/v3:pkg_cc_proto",
295    ],
296)
297
298grpc_cc_test(
299    name = "xds_gcp_authn_end2end_test",
300    size = "large",
301    srcs = ["xds_gcp_authn_end2end_test.cc"],
302    data = [
303        "//src/core/tsi/test_creds:badclient.key",
304        "//src/core/tsi/test_creds:badclient.pem",
305        "//src/core/tsi/test_creds:ca.pem",
306        "//src/core/tsi/test_creds:client.key",
307        "//src/core/tsi/test_creds:client.pem",
308        "//src/core/tsi/test_creds:server1.key",
309        "//src/core/tsi/test_creds:server1.pem",
310    ],
311    external_deps = [
312        "gtest",
313    ],
314    flaky = True,
315    linkstatic = True,  # Fixes dyld error on MacOS
316    tags = [
317        "no_test_ios",
318        "no_windows",
319        "xds_end2end_test",
320    ],  # TODO(jtattermusch): fix test on windows
321    deps = [
322        ":xds_end2end_test_lib",
323        "//:gpr",
324        "//:grpc",
325        "//:grpc++",
326        "//test/core/test_util:grpc_test_util",
327        "//test/core/test_util:scoped_env_var",
328        "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto",
329        "@envoy_api//envoy/extensions/filters/http/gcp_authn/v3:pkg_cc_proto",
330        "@envoy_api//envoy/extensions/filters/http/router/v3:pkg_cc_proto",
331        "@envoy_api//envoy/extensions/filters/network/http_connection_manager/v3:pkg_cc_proto",
332    ],
333)
334
335grpc_cc_test(
336    name = "xds_outlier_detection_end2end_test",
337    size = "large",
338    srcs = ["xds_outlier_detection_end2end_test.cc"],
339    external_deps = [
340        "absl/log:check",
341        "gtest",
342    ],
343    flaky = True,
344    linkstatic = True,  # Fixes dyld error on MacOS
345    tags = [
346        "no_test_ios",
347        "no_windows",
348        "xds_end2end_test",
349    ],  # TODO(jtattermusch): fix test on windows
350    deps = [
351        ":xds_end2end_test_lib",
352        "//:gpr",
353        "//:grpc",
354        "//:grpc++",
355        "//test/core/test_util:grpc_test_util",
356        "@envoy_api//envoy/extensions/filters/http/fault/v3:pkg_cc_proto",
357        "@envoy_api//envoy/extensions/filters/http/router/v3:pkg_cc_proto",
358    ],
359)
360
361grpc_cc_test(
362    name = "xds_wrr_end2end_test",
363    size = "large",
364    srcs = ["xds_wrr_end2end_test.cc"],
365    external_deps = [
366        "gtest",
367    ],
368    linkstatic = True,  # Fixes dyld error on MacOS
369    tags = [
370        "no_test_ios",
371        "no_windows",
372        "xds_end2end_test",
373    ],  # TODO(jtattermusch): fix test on windows
374    deps = [
375        ":xds_end2end_test_lib",
376        "//:gpr",
377        "//:grpc",
378        "//:grpc++",
379        "//test/core/test_util:fake_stats_plugin",
380        "//test/core/test_util:grpc_test_util",
381        "//test/core/test_util:scoped_env_var",
382        "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto",
383        "@envoy_api//envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3:pkg_cc_proto",
384        "@envoy_api//envoy/extensions/load_balancing_policies/wrr_locality/v3:pkg_cc_proto",
385    ],
386)
387
388grpc_cc_test(
389    name = "xds_ring_hash_end2end_test",
390    size = "large",
391    srcs = ["xds_ring_hash_end2end_test.cc"],
392    external_deps = [
393        "absl/log:check",
394        "absl/log:log",
395        "gtest",
396    ],
397    flaky = True,  # TODO(b/144705388)
398    linkstatic = True,  # Fixes dyld error on MacOS
399    shard_count = 10,
400    tags = [
401        "no_test_ios",
402        "no_windows",
403        "xds_end2end_test",
404    ],  # TODO(jtattermusch): fix test on windows
405    deps = [
406        ":xds_end2end_test_lib",
407        "//:gpr",
408        "//:grpc",
409        "//:grpc++",
410        "//:grpc_resolver_fake",
411        "//test/core/test_util:grpc_test_util",
412        "//test/core/test_util:scoped_env_var",
413        "//test/cpp/end2end:connection_attempt_injector",
414        "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto",
415        "@envoy_api//envoy/config/endpoint/v3:pkg_cc_proto",
416        "@envoy_api//envoy/config/listener/v3:pkg_cc_proto",
417        "@envoy_api//envoy/config/route/v3:pkg_cc_proto",
418        "@envoy_api//envoy/extensions/clusters/aggregate/v3:pkg_cc_proto",
419    ],
420)
421
422grpc_cc_test(
423    name = "xds_rls_end2end_test",
424    size = "large",
425    srcs = ["xds_rls_end2end_test.cc"],
426    external_deps = [
427        "gtest",
428    ],
429    linkstatic = True,  # Fixes dyld error on MacOS
430    tags = [
431        "no_test_ios",
432        "no_windows",
433        "xds_end2end_test",
434    ],  # TODO(jtattermusch): fix test on windows
435    deps = [
436        ":xds_end2end_test_lib",
437        "//:gpr",
438        "//:grpc",
439        "//:grpc++",
440        "//src/proto/grpc/lookup/v1:rls_cc_proto",
441        "//src/proto/grpc/lookup/v1:rls_config_cc_proto",
442        "//test/core/test_util:grpc_test_util",
443        "//test/core/test_util:scoped_env_var",
444        "//test/cpp/end2end:rls_server",
445    ],
446)
447
448grpc_cc_test(
449    name = "xds_routing_end2end_test",
450    size = "large",
451    srcs = ["xds_routing_end2end_test.cc"],
452    external_deps = [
453        "gtest",
454    ],
455    flaky = True,  # TODO(b/144705388)
456    linkstatic = True,  # Fixes dyld error on MacOS
457    shard_count = 10,
458    tags = [
459        "no_test_ios",
460        "no_windows",
461        "xds_end2end_test",
462    ],  # TODO(jtattermusch): fix test on windows
463    deps = [
464        ":xds_end2end_test_lib",
465        "//:gpr",
466        "//:grpc",
467        "//:grpc++",
468        "//test/core/test_util:grpc_test_util",
469        "@envoy_api//envoy/extensions/filters/http/fault/v3:pkg_cc_proto",
470        "@envoy_api//envoy/extensions/filters/http/router/v3:pkg_cc_proto",
471    ],
472)
473
474grpc_cc_test(
475    name = "xds_credentials_end2end_test",
476    srcs = ["xds_credentials_end2end_test.cc"],
477    external_deps = [
478        "gtest",
479    ],
480    tags = [
481        "no_test_ios",
482        "xds_end2end_test",
483    ],
484    deps = [
485        "//:gpr",
486        "//:grpc",
487        "//:grpc++",
488        "//src/proto/grpc/testing:echo_cc_grpc",
489        "//src/proto/grpc/testing:echo_messages_cc_proto",
490        "//test/core/test_util:grpc_test_util",
491        "//test/cpp/end2end:test_service_impl",
492        "//test/cpp/util:test_util",
493    ],
494)
495
496grpc_cc_test(
497    name = "xds_override_host_end2end_test",
498    size = "large",
499    srcs = ["xds_override_host_end2end_test.cc"],
500    external_deps = [
501        "gtest",
502    ],
503    linkstatic = True,  # Fixes dyld error on MacOS
504    tags = [
505        "no_test_ios",
506        "no_windows",
507        "xds_end2end_test",
508    ],  # TODO(jtattermusch): fix test on windows
509    deps = [
510        ":xds_end2end_test_lib",
511        "//:gpr",
512        "//:grpc",
513        "//:grpc++",
514        "//test/core/test_util:grpc_test_util",
515        "//test/core/test_util:scoped_env_var",
516        "@envoy_api//envoy/extensions/filters/http/stateful_session/v3:pkg_cc_proto",
517        "@envoy_api//envoy/extensions/http/stateful_session/cookie/v3:pkg_cc_proto",
518    ],
519)
520
521grpc_cc_test(
522    name = "xds_pick_first_end2end_test",
523    size = "large",
524    srcs = ["xds_pick_first_end2end_test.cc"],
525    external_deps = [
526        "gtest",
527    ],
528    linkstatic = True,  # Fixes dyld error on MacOS
529    tags = [
530        "no_test_ios",
531        "no_windows",
532        "xds_end2end_test",
533    ],  # TODO(jtattermusch): fix test on windows
534    deps = [
535        ":xds_end2end_test_lib",
536        "//:gpr",
537        "//:grpc",
538        "//:grpc++",
539        "//test/core/test_util:grpc_test_util",
540        "//test/core/test_util:scoped_env_var",
541        "//test/cpp/end2end:connection_attempt_injector",
542        "@envoy_api//envoy/extensions/clusters/aggregate/v3:pkg_cc_proto",
543        "@envoy_api//envoy/extensions/filters/http/router/v3:pkg_cc_proto",
544        "@envoy_api//envoy/extensions/load_balancing_policies/pick_first/v3:pkg_cc_proto",
545    ],
546)
547
548grpc_cc_test(
549    name = "xds_fallback_end2end_test",
550    srcs = ["xds_fallback_end2end_test.cc"],
551    external_deps = [
552        "gtest",
553    ],
554    linkstatic = True,  # Fixes dyld error on MacOS
555    tags = [
556        "no_test_ios",
557        "no_windows",
558        "xds_end2end_test",
559    ],  # TODO(jtattermusch): fix test on windows
560    deps = [
561        ":xds_end2end_test_lib",
562        "//:gpr",
563        "//:grpc",
564        "//:grpc++",
565        "//test/core/test_util:scoped_env_var",
566    ],
567)
568
569grpc_cc_test(
570    name = "xds_http_connect_end2end_test",
571    srcs = ["xds_http_connect_end2end_test.cc"],
572    external_deps = [
573        "gtest",
574    ],
575    linkstatic = True,  # Fixes dyld error on MacOS
576    tags = [
577        "no_test_ios",
578        "no_windows",
579        "xds_end2end_test",
580    ],  # TODO(jtattermusch): fix test on windows
581    deps = [
582        ":xds_end2end_test_lib",
583        "//:gpr",
584        "//:grpc",
585        "//:grpc++",
586        "//test/core/end2end:http_proxy",
587        "//test/core/test_util:scoped_env_var",
588        "@envoy_api//envoy/config/core/v3:pkg_cc_proto",
589        "@envoy_api//envoy/extensions/transport_sockets/http_11_proxy/v3:pkg_cc_proto",
590    ],
591)
592
593grpc_cc_test(
594    name = "xds_enabled_server_end2end_test",
595    size = "large",
596    srcs = ["xds_enabled_server_end2end_test.cc"],
597    external_deps = [
598        "gtest",
599    ],
600    flaky = True,  # TODO(b/144705388)
601    linkstatic = True,  # Fixes dyld error on MacOS
602    tags = [
603        "no_test_ios",
604        "no_windows",
605        "xds_end2end_test",
606    ],  # TODO(jtattermusch): fix test on windows
607    deps = [
608        ":xds_end2end_test_lib",
609        "//:gpr",
610        "//:grpc",
611        "//:grpc++",
612        "//test/core/test_util:grpc_test_util",
613    ],
614)
615