diff --git a/requirements.bazel.txt b/requirements.bazel.txt index 0a26df5ac27..b42c8f63bd7 100644 --- a/requirements.bazel.txt +++ b/requirements.bazel.txt @@ -15,3 +15,4 @@ setuptools==44.1.1 xds-protos==0.0.11 opencensus==0.10.0 opencensus-ext-stackdriver==0.8.0 +absl-py==1.4.0 diff --git a/src/python/grpcio_tests/setup.py b/src/python/grpcio_tests/setup.py index 8409dcc9519..0cef4c2755e 100644 --- a/src/python/grpcio_tests/setup.py +++ b/src/python/grpcio_tests/setup.py @@ -47,6 +47,7 @@ INSTALL_REQUIRES = ( "protobuf>=4.21.6rc1,!=4.22.0.*", "google-auth>=1.17.2", "requests>=2.14.2", + "absl-py>=1.4.0", ) COMMAND_CLASS = { diff --git a/src/python/grpcio_tests/tests/interop/BUILD.bazel b/src/python/grpcio_tests/tests/interop/BUILD.bazel index aa7e15544c4..2d164847423 100644 --- a/src/python/grpcio_tests/tests/interop/BUILD.bazel +++ b/src/python/grpcio_tests/tests/interop/BUILD.bazel @@ -94,6 +94,7 @@ py_library( "//src/proto/grpc/testing:py_test_proto", "//src/python/grpcio/grpc:grpcio", "//src/python/grpcio_tests/tests/unit:test_common", + requirement("absl-py"), ], ) diff --git a/src/python/grpcio_tests/tests/interop/server.py b/src/python/grpcio_tests/tests/interop/server.py index d51671ef8a9..4fd0a4bde22 100644 --- a/src/python/grpcio_tests/tests/interop/server.py +++ b/src/python/grpcio_tests/tests/interop/server.py @@ -13,10 +13,11 @@ # limitations under the License. """The Python implementation of the GRPC interoperability test server.""" -import argparse from concurrent import futures import logging +from absl import app +from absl.flags import argparse_flags import grpc from src.proto.grpc.testing import test_pb2_grpc @@ -28,8 +29,8 @@ logging.basicConfig() _LOGGER = logging.getLogger(__name__) -def parse_interop_server_arguments(): - parser = argparse.ArgumentParser() +def parse_interop_server_arguments(argv): + parser = argparse_flags.ArgumentParser() parser.add_argument( "--port", type=int, required=True, help="the port on which to serve" ) @@ -45,7 +46,7 @@ def parse_interop_server_arguments(): type=resources.parse_bool, help="require an ALTS connection", ) - return parser.parse_args() + return parser.parse_args(argv[1:]) def get_server_credentials(use_tls): @@ -57,9 +58,7 @@ def get_server_credentials(use_tls): return grpc.alts_server_credentials() -def serve(): - args = parse_interop_server_arguments() - +def serve(args): server = test_common.test_server() test_pb2_grpc.add_TestServiceServicer_to_server( service.TestService(), server @@ -77,4 +76,6 @@ def serve(): if __name__ == "__main__": - serve() + app.run( + serve, flags_parser=parse_interop_server_arguments + ) diff --git a/src/python/grpcio_tests/tests_aio/interop/server.py b/src/python/grpcio_tests/tests_aio/interop/server.py index 7786a4206a6..3247bed26a8 100644 --- a/src/python/grpcio_tests/tests_aio/interop/server.py +++ b/src/python/grpcio_tests/tests_aio/interop/server.py @@ -16,6 +16,7 @@ import argparse import asyncio import logging +import sys import grpc @@ -27,9 +28,7 @@ _LOGGER = logging.getLogger(__name__) _LOGGER.setLevel(logging.DEBUG) -async def serve(): - args = interop_server_lib.parse_interop_server_arguments() - +async def serve(args): if args.use_tls or args.use_alts: credentials = interop_server_lib.get_server_credentials(args.use_tls) address, server = await _test_server.start_test_server( @@ -47,4 +46,5 @@ async def serve(): if __name__ == "__main__": - asyncio.get_event_loop().run_until_complete(serve()) + args = interop_server_lib.parse_interop_server_arguments(sys.argv) + asyncio.get_event_loop().run_until_complete(serve(args)) diff --git a/tools/run_tests/helper_scripts/build_python.sh b/tools/run_tests/helper_scripts/build_python.sh index 4f40fe7b438..72fc7d76b28 100755 --- a/tools/run_tests/helper_scripts/build_python.sh +++ b/tools/run_tests/helper_scripts/build_python.sh @@ -209,7 +209,7 @@ pip_install_dir "$ROOT/src/python/grpcio_testing" # Build/install tests pip_install coverage==4.4 oauth2client==4.1.0 \ google-auth>=1.17.2 requests==2.14.2 \ - googleapis-common-protos>=1.5.5 rsa==4.0 + googleapis-common-protos>=1.5.5 rsa==4.0 absl-py==1.4.0 $VENV_PYTHON "$ROOT/src/python/grpcio_tests/setup.py" preprocess $VENV_PYTHON "$ROOT/src/python/grpcio_tests/setup.py" build_package_protos pip_install_dir "$ROOT/src/python/grpcio_tests"