| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462 | 
							- #!/usr/bin/env python2.7
 
- # Copyright 2015 gRPC authors.
 
- #
 
- # Licensed under the Apache License, Version 2.0 (the "License");
 
- # you may not use this file except in compliance with the License.
 
- # You may obtain a copy of the License at
 
- #
 
- #     http://www.apache.org/licenses/LICENSE-2.0
 
- #
 
- # Unless required by applicable law or agreed to in writing, software
 
- # distributed under the License is distributed on an "AS IS" BASIS,
 
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
- # See the License for the specific language governing permissions and
 
- # limitations under the License.
 
- """Generates the appropriate build.json data for all the end2end tests."""
 
- load("//bazel:grpc_build_system.bzl", "grpc_cc_binary", "grpc_cc_library")
 
- POLLERS = ["epollex", "epoll1", "poll", "poll-cv"]
 
- def _fixture_options(
 
-         fullstack = True,
 
-         includes_proxy = False,
 
-         dns_resolver = True,
 
-         name_resolution = True,
 
-         secure = True,
 
-         tracing = False,
 
-         _platforms = ["windows", "linux", "mac", "posix"],
 
-         is_inproc = False,
 
-         is_http2 = True,
 
-         supports_proxy_auth = False,
 
-         supports_write_buffering = True,
 
-         client_channel = True):
 
-     return struct(
 
-         fullstack = fullstack,
 
-         includes_proxy = includes_proxy,
 
-         dns_resolver = dns_resolver,
 
-         name_resolution = name_resolution,
 
-         secure = secure,
 
-         tracing = tracing,
 
-         is_inproc = is_inproc,
 
-         is_http2 = is_http2,
 
-         supports_proxy_auth = supports_proxy_auth,
 
-         supports_write_buffering = supports_write_buffering,
 
-         client_channel = client_channel,
 
-         #_platforms=_platforms,
 
-     )
 
- # maps fixture name to whether it requires the security library
 
- END2END_FIXTURES = {
 
-     "h2_compress": _fixture_options(),
 
-     "h2_census": _fixture_options(),
 
-     # TODO(juanlishen): This is disabled for now, but should be considered to re-enable once we have
 
-     # decided how the load reporting service should be enabled.
 
-     #'h2_load_reporting': _fixture_options(),
 
-     "h2_fakesec": _fixture_options(),
 
-     "h2_fd": _fixture_options(
 
-         dns_resolver = False,
 
-         fullstack = False,
 
-         client_channel = False,
 
-         _platforms = ["linux", "mac", "posix"],
 
-     ),
 
-     "h2_full": _fixture_options(),
 
-     "h2_full+pipe": _fixture_options(_platforms = ["linux"]),
 
-     "h2_full+trace": _fixture_options(tracing = True),
 
-     "h2_full+workarounds": _fixture_options(),
 
-     "h2_http_proxy": _fixture_options(supports_proxy_auth = True),
 
-     "h2_oauth2": _fixture_options(),
 
-     "h2_proxy": _fixture_options(includes_proxy = True),
 
-     "h2_sockpair_1byte": _fixture_options(
 
-         fullstack = False,
 
-         dns_resolver = False,
 
-         client_channel = False,
 
-     ),
 
-     "h2_sockpair": _fixture_options(
 
-         fullstack = False,
 
-         dns_resolver = False,
 
-         client_channel = False,
 
-     ),
 
-     "h2_sockpair+trace": _fixture_options(
 
-         fullstack = False,
 
-         dns_resolver = False,
 
-         tracing = True,
 
-         client_channel = False,
 
-     ),
 
-     "h2_ssl": _fixture_options(secure = True),
 
-     "h2_local": _fixture_options(secure = True, dns_resolver = False, _platforms = ["linux", "mac", "posix"]),
 
-     "h2_ssl_proxy": _fixture_options(includes_proxy = True, secure = True),
 
-     "h2_uds": _fixture_options(
 
-         dns_resolver = False,
 
-         _platforms = ["linux", "mac", "posix"],
 
-     ),
 
-     "inproc": _fixture_options(
 
-         fullstack = False,
 
-         dns_resolver = False,
 
-         name_resolution = False,
 
-         is_inproc = True,
 
-         is_http2 = False,
 
-         supports_write_buffering = False,
 
-         client_channel = False,
 
-     ),
 
- }
 
- # maps fixture name to whether it requires the security library
 
- END2END_NOSEC_FIXTURES = {
 
-     "h2_compress": _fixture_options(secure = False),
 
-     "h2_census": _fixture_options(secure = False),
 
-     # TODO(juanlishen): This is disabled for now, but should be considered to re-enable once we have
 
-     # decided how the load reporting service should be enabled.
 
-     #'h2_load_reporting': _fixture_options(),
 
-     "h2_fakesec": _fixture_options(),
 
-     "h2_fd": _fixture_options(
 
-         dns_resolver = False,
 
-         fullstack = False,
 
-         client_channel = False,
 
-         secure = False,
 
-         _platforms = ["linux", "mac", "posix"],
 
-     ),
 
-     "h2_full": _fixture_options(secure = False),
 
-     "h2_full+pipe": _fixture_options(secure = False, _platforms = ["linux"]),
 
-     "h2_full+trace": _fixture_options(secure = False, tracing = True),
 
-     "h2_full+workarounds": _fixture_options(secure = False),
 
-     "h2_http_proxy": _fixture_options(secure = False, supports_proxy_auth = True),
 
-     "h2_proxy": _fixture_options(secure = False, includes_proxy = True),
 
-     "h2_sockpair_1byte": _fixture_options(
 
-         fullstack = False,
 
-         dns_resolver = False,
 
-         client_channel = False,
 
-         secure = False,
 
-     ),
 
-     "h2_sockpair": _fixture_options(
 
-         fullstack = False,
 
-         dns_resolver = False,
 
-         client_channel = False,
 
-         secure = False,
 
-     ),
 
-     "h2_sockpair+trace": _fixture_options(
 
-         fullstack = False,
 
-         dns_resolver = False,
 
-         tracing = True,
 
-         secure = False,
 
-         client_channel = False,
 
-     ),
 
-     "h2_ssl": _fixture_options(secure = False),
 
-     "h2_ssl_proxy": _fixture_options(includes_proxy = True, secure = False),
 
-     "h2_uds": _fixture_options(
 
-         dns_resolver = False,
 
-         _platforms = ["linux", "mac", "posix"],
 
-         secure = False,
 
-     ),
 
- }
 
- def _test_options(
 
-         needs_fullstack = False,
 
-         needs_dns = False,
 
-         needs_names = False,
 
-         proxyable = True,
 
-         secure = False,
 
-         traceable = False,
 
-         exclude_inproc = False,
 
-         needs_http2 = False,
 
-         needs_proxy_auth = False,
 
-         needs_write_buffering = False,
 
-         needs_client_channel = False):
 
-     return struct(
 
-         needs_fullstack = needs_fullstack,
 
-         needs_dns = needs_dns,
 
-         needs_names = needs_names,
 
-         proxyable = proxyable,
 
-         secure = secure,
 
-         traceable = traceable,
 
-         exclude_inproc = exclude_inproc,
 
-         needs_http2 = needs_http2,
 
-         needs_proxy_auth = needs_proxy_auth,
 
-         needs_write_buffering = needs_write_buffering,
 
-         needs_client_channel = needs_client_channel,
 
-     )
 
- # maps test names to options
 
- END2END_TESTS = {
 
-     "bad_hostname": _test_options(needs_names = True),
 
-     "bad_ping": _test_options(needs_fullstack = True, proxyable = False),
 
-     "binary_metadata": _test_options(),
 
-     "resource_quota_server": _test_options(proxyable = False),
 
-     "call_creds": _test_options(secure = True),
 
-     "call_host_override": _test_options(
 
-         needs_fullstack = True,
 
-         needs_dns = True,
 
-         needs_names = True,
 
-     ),
 
-     "cancel_after_accept": _test_options(),
 
-     "cancel_after_client_done": _test_options(),
 
-     "cancel_after_invoke": _test_options(),
 
-     "cancel_after_round_trip": _test_options(),
 
-     "cancel_before_invoke": _test_options(),
 
-     "cancel_in_a_vacuum": _test_options(),
 
-     "cancel_with_status": _test_options(),
 
-     "compressed_payload": _test_options(proxyable = False, exclude_inproc = True),
 
-     "connectivity": _test_options(
 
-         needs_fullstack = True,
 
-         needs_names = True,
 
-         proxyable = False,
 
-     ),
 
-     "channelz": _test_options(),
 
-     "default_host": _test_options(
 
-         needs_fullstack = True,
 
-         needs_dns = True,
 
-         needs_names = True,
 
-     ),
 
-     "disappearing_server": _test_options(needs_fullstack = True, needs_names = True),
 
-     "empty_batch": _test_options(),
 
-     "filter_causes_close": _test_options(),
 
-     "filter_call_init_fails": _test_options(),
 
-     "graceful_server_shutdown": _test_options(exclude_inproc = True),
 
-     "hpack_size": _test_options(
 
-         proxyable = False,
 
-         traceable = False,
 
-         exclude_inproc = True,
 
-     ),
 
-     "high_initial_seqno": _test_options(),
 
-     "idempotent_request": _test_options(),
 
-     "invoke_large_request": _test_options(),
 
-     "keepalive_timeout": _test_options(proxyable = False, needs_http2 = True),
 
-     "large_metadata": _test_options(),
 
-     "max_concurrent_streams": _test_options(
 
-         proxyable = False,
 
-         exclude_inproc = True,
 
-     ),
 
-     "max_connection_age": _test_options(exclude_inproc = True),
 
-     "max_connection_idle": _test_options(needs_fullstack = True, proxyable = False),
 
-     "max_message_length": _test_options(),
 
-     "negative_deadline": _test_options(),
 
-     "network_status_change": _test_options(),
 
-     "no_error_on_hotpath": _test_options(proxyable = False),
 
-     "no_logging": _test_options(traceable = False),
 
-     "no_op": _test_options(),
 
-     "payload": _test_options(),
 
-     # TODO(juanlishen): This is disabled for now because it depends on some generated functions in
 
-     # end2end_tests.cc, which are not generated because they would depend on OpenCensus while
 
-     # OpenCensus can only be built via Bazel so far.
 
-     # 'load_reporting_hook': _test_options(),
 
-     "ping_pong_streaming": _test_options(),
 
-     "ping": _test_options(needs_fullstack = True, proxyable = False),
 
-     "proxy_auth": _test_options(needs_proxy_auth = True),
 
-     "registered_call": _test_options(),
 
-     "request_with_flags": _test_options(proxyable = False),
 
-     "request_with_payload": _test_options(),
 
-     # TODO(roth): Remove proxyable=False for all retry tests once we
 
-     # have a way for the proxy to propagate the fact that trailing
 
-     # metadata is available when initial metadata is returned.
 
-     # See https://github.com/grpc/grpc/issues/14467 for context.
 
-     "retry": _test_options(needs_client_channel = True, proxyable = False),
 
-     "retry_cancellation": _test_options(
 
-         needs_client_channel = True,
 
-         proxyable = False,
 
-     ),
 
-     "retry_disabled": _test_options(needs_client_channel = True, proxyable = False),
 
-     "retry_exceeds_buffer_size_in_initial_batch": _test_options(
 
-         needs_client_channel = True,
 
-         proxyable = False,
 
-     ),
 
-     "retry_exceeds_buffer_size_in_subsequent_batch": _test_options(
 
-         needs_client_channel = True,
 
-         proxyable = False,
 
-     ),
 
-     "retry_non_retriable_status": _test_options(
 
-         needs_client_channel = True,
 
-         proxyable = False,
 
-     ),
 
-     "retry_non_retriable_status_before_recv_trailing_metadata_started": _test_options(needs_client_channel = True, proxyable = False),
 
-     "retry_recv_initial_metadata": _test_options(
 
-         needs_client_channel = True,
 
-         proxyable = False,
 
-     ),
 
-     "retry_recv_message": _test_options(
 
-         needs_client_channel = True,
 
-         proxyable = False,
 
-     ),
 
-     "retry_server_pushback_delay": _test_options(
 
-         needs_client_channel = True,
 
-         proxyable = False,
 
-     ),
 
-     "retry_server_pushback_disabled": _test_options(
 
-         needs_client_channel = True,
 
-         proxyable = False,
 
-     ),
 
-     "retry_streaming": _test_options(needs_client_channel = True, proxyable = False),
 
-     "retry_streaming_after_commit": _test_options(
 
-         needs_client_channel = True,
 
-         proxyable = False,
 
-     ),
 
-     "retry_streaming_succeeds_before_replay_finished": _test_options(
 
-         needs_client_channel = True,
 
-         proxyable = False,
 
-     ),
 
-     "retry_throttled": _test_options(
 
-         needs_client_channel = True,
 
-         proxyable = False,
 
-     ),
 
-     "retry_too_many_attempts": _test_options(
 
-         needs_client_channel = True,
 
-         proxyable = False,
 
-     ),
 
-     "server_finishes_request": _test_options(),
 
-     "shutdown_finishes_calls": _test_options(),
 
-     "shutdown_finishes_tags": _test_options(),
 
-     "simple_cacheable_request": _test_options(),
 
-     "simple_delayed_request": _test_options(needs_fullstack = True),
 
-     "simple_metadata": _test_options(),
 
-     "simple_request": _test_options(),
 
-     "streaming_error_response": _test_options(),
 
-     "stream_compression_compressed_payload": _test_options(
 
-         proxyable = False,
 
-         exclude_inproc = True,
 
-     ),
 
-     "stream_compression_payload": _test_options(exclude_inproc = True),
 
-     "stream_compression_ping_pong_streaming": _test_options(exclude_inproc = True),
 
-     "trailing_metadata": _test_options(),
 
-     "authority_not_supported": _test_options(),
 
-     "filter_latency": _test_options(),
 
-     "filter_status_code": _test_options(),
 
-     "workaround_cronet_compression": _test_options(),
 
-     "write_buffering": _test_options(needs_write_buffering = True),
 
-     "write_buffering_at_end": _test_options(needs_write_buffering = True),
 
- }
 
- def _compatible(fopt, topt):
 
-     if topt.needs_fullstack:
 
-         if not fopt.fullstack:
 
-             return False
 
-     if topt.needs_dns:
 
-         if not fopt.dns_resolver:
 
-             return False
 
-     if topt.needs_names:
 
-         if not fopt.name_resolution:
 
-             return False
 
-     if not topt.proxyable:
 
-         if fopt.includes_proxy:
 
-             return False
 
-     if not topt.traceable:
 
-         if fopt.tracing:
 
-             return False
 
-     if topt.exclude_inproc:
 
-         if fopt.is_inproc:
 
-             return False
 
-     if topt.needs_http2:
 
-         if not fopt.is_http2:
 
-             return False
 
-     if topt.needs_proxy_auth:
 
-         if not fopt.supports_proxy_auth:
 
-             return False
 
-     if topt.needs_write_buffering:
 
-         if not fopt.supports_write_buffering:
 
-             return False
 
-     if topt.needs_client_channel:
 
-         if not fopt.client_channel:
 
-             return False
 
-     return True
 
- def grpc_end2end_tests():
 
-     grpc_cc_library(
 
-         name = "end2end_tests",
 
-         srcs = ["end2end_tests.cc", "end2end_test_utils.cc"] + [
 
-             "tests/%s.cc" % t
 
-             for t in sorted(END2END_TESTS.keys())
 
-         ],
 
-         hdrs = [
 
-             "tests/cancel_test_helpers.h",
 
-             "end2end_tests.h",
 
-         ],
 
-         language = "C++",
 
-         deps = [
 
-             ":cq_verifier",
 
-             ":ssl_test_data",
 
-             ":http_proxy",
 
-             ":proxy",
 
-         ],
 
-     )
 
-     for f, fopt in END2END_FIXTURES.items():
 
-         grpc_cc_binary(
 
-             name = "%s_test" % f,
 
-             srcs = ["fixtures/%s.cc" % f],
 
-             language = "C++",
 
-             deps = [
 
-                 ":end2end_tests",
 
-                 "//test/core/util:grpc_test_util",
 
-                 "//:grpc",
 
-                 "//test/core/util:gpr_test_util",
 
-                 "//:gpr",
 
-             ],
 
-         )
 
-         for t, topt in END2END_TESTS.items():
 
-             #print(_compatible(fopt, topt), f, t, fopt, topt)
 
-             if not _compatible(fopt, topt):
 
-                 continue
 
-             for poller in POLLERS:
 
-                 native.sh_test(
 
-                     name = "%s_test@%s@poller=%s" % (f, t, poller),
 
-                     data = [":%s_test" % f],
 
-                     srcs = ["end2end_test.sh"],
 
-                     args = [
 
-                         "$(location %s_test)" % f,
 
-                         t,
 
-                         poller,
 
-                     ],
 
-                 )
 
- def grpc_end2end_nosec_tests():
 
-     grpc_cc_library(
 
-         name = "end2end_nosec_tests",
 
-         srcs = ["end2end_nosec_tests.cc", "end2end_test_utils.cc"] + [
 
-             "tests/%s.cc" % t
 
-             for t in sorted(END2END_TESTS.keys())
 
-             if not END2END_TESTS[t].secure
 
-         ],
 
-         hdrs = [
 
-             "tests/cancel_test_helpers.h",
 
-             "end2end_tests.h",
 
-         ],
 
-         language = "C++",
 
-         deps = [
 
-             ":cq_verifier",
 
-             ":ssl_test_data",
 
-             ":http_proxy",
 
-             ":proxy",
 
-         ],
 
-     )
 
-     for f, fopt in END2END_NOSEC_FIXTURES.items():
 
-         if fopt.secure:
 
-             continue
 
-         grpc_cc_binary(
 
-             name = "%s_nosec_test" % f,
 
-             srcs = ["fixtures/%s.cc" % f],
 
-             language = "C++",
 
-             deps = [
 
-                 ":end2end_nosec_tests",
 
-                 "//test/core/util:grpc_test_util_unsecure",
 
-                 "//:grpc_unsecure",
 
-                 "//test/core/util:gpr_test_util",
 
-                 "//:gpr",
 
-             ],
 
-         )
 
-         for t, topt in END2END_TESTS.items():
 
-             #print(_compatible(fopt, topt), f, t, fopt, topt)
 
-             if not _compatible(fopt, topt):
 
-                 continue
 
-             if topt.secure:
 
-                 continue
 
-             for poller in POLLERS:
 
-                 native.sh_test(
 
-                     name = "%s_nosec_test@%s@poller=%s" % (f, t, poller),
 
-                     data = [":%s_nosec_test" % f],
 
-                     srcs = ["end2end_test.sh"],
 
-                     args = [
 
-                         "$(location %s_nosec_test)" % f,
 
-                         t,
 
-                         poller,
 
-                     ],
 
-                 )
 
 
  |