From b2b01baf785a88aa22adb057d5226d17901a4d9c Mon Sep 17 00:00:00 2001 From: "Penn (Dapeng) Zhang" Date: Wed, 6 Jan 2021 16:32:26 -0800 Subject: [PATCH 1/7] Run xds v3 tests in kokoro integration --- tools/internal_ci/linux/grpc_xds_bazel_test_in_docker.sh | 2 ++ tools/run_tests/run_xds_tests.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/internal_ci/linux/grpc_xds_bazel_test_in_docker.sh b/tools/internal_ci/linux/grpc_xds_bazel_test_in_docker.sh index 7057adee90f..36f149be3b9 100755 --- a/tools/internal_ci/linux/grpc_xds_bazel_test_in_docker.sh +++ b/tools/internal_ci/linux/grpc_xds_bazel_test_in_docker.sh @@ -60,6 +60,7 @@ touch "$TOOLS_DIR"/src/proto/grpc/health/v1/__init__.py bazel build test/cpp/interop:xds_interop_client +set -o history -H # Test cases "path_matching" and "header_matching" are not included in "all", # because not all interop clients in all languages support these new tests. # @@ -76,3 +77,4 @@ GRPC_VERBOSITY=debug GRPC_TRACE=xds_client,xds_resolver,xds_cluster_manager_lb,c --client_cmd='bazel-bin/test/cpp/interop/xds_interop_client --server=xds:///{server_uri} --stats_port={stats_port} --qps={qps} {fail_on_failed_rpc} \ {rpcs_to_send} \ {metadata_to_send}' +!! --xds_v3_support diff --git a/tools/run_tests/run_xds_tests.py b/tools/run_tests/run_xds_tests.py index 6b397d49b95..69967eda131 100755 --- a/tools/run_tests/run_xds_tests.py +++ b/tools/run_tests/run_xds_tests.py @@ -2241,7 +2241,8 @@ try: # Workaround for Python 3, as report_utils will invoke decode() on # result.message, which has a default value of ''. result.message = result.message.encode('UTF-8') - test_results[test_case] = [result] + xds_version = 'v3' if args.xds_v3_support else 'v2' + test_results[test_case + '_' + xds_version] = [result] if args.log_client_output: logger.info('Client output:') with open(test_log_filename, 'r') as client_output: From e0125be88863692080fc3b3b8891e0dfeea9e0f0 Mon Sep 17 00:00:00 2001 From: "Penn (Dapeng) Zhang" Date: Tue, 12 Jan 2021 11:10:55 -0800 Subject: [PATCH 2/7] add project_num in node_id --- tools/run_tests/run_xds_tests.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/tools/run_tests/run_xds_tests.py b/tools/run_tests/run_xds_tests.py index 69967eda131..78aabec0410 100755 --- a/tools/run_tests/run_xds_tests.py +++ b/tools/run_tests/run_xds_tests.py @@ -27,6 +27,7 @@ import subprocess import sys import tempfile import time +import uuid from oauth2client.client import GoogleCredentials @@ -96,7 +97,11 @@ def parse_port_range(port_arg): argp = argparse.ArgumentParser(description='Run xDS interop tests on GCP') -argp.add_argument('--project_id', help='GCP project id') +argp.add_argument('--project_id', default='grpc-testing', help='GCP project id') +argp.add_argument( + '--project_num', + default='830293263384', + help='GCP project number') argp.add_argument( '--gcp_suffix', default='', @@ -1973,10 +1978,11 @@ class GcpResource(object): class GcpState(object): - def __init__(self, compute, alpha_compute, project): + def __init__(self, compute, alpha_compute, project, project_num): self.compute = compute self.alpha_compute = alpha_compute self.project = project + self.project_num = project_num self.health_check = None self.health_check_firewall_rule = None self.backend_services = [] @@ -2003,7 +2009,7 @@ else: alpha_compute = googleapiclient.discovery.build('compute', 'alpha') try: - gcp = GcpState(compute, alpha_compute, args.project_id) + gcp = GcpState(compute, alpha_compute, args.project_id, args.project_num) gcp_suffix = args.gcp_suffix health_check_name = _BASE_HEALTH_CHECK_NAME + gcp_suffix if not args.use_existing_gcp_resources: @@ -2109,7 +2115,8 @@ try: with tempfile.NamedTemporaryFile(delete=False) as bootstrap_file: bootstrap_file.write( _BOOTSTRAP_TEMPLATE.format( - node_id=socket.gethostname(), + node_id='projects/%s/networks/%s/nodes/%s' % + (gcp.project_num, args.network.split('/')[-1], uuid.uuid1()), server_features=json.dumps( bootstrap_server_features)).encode('utf-8')) bootstrap_path = bootstrap_file.name @@ -2117,9 +2124,10 @@ try: client_env['GRPC_XDS_EXPERIMENTAL_CIRCUIT_BREAKING'] = 'true' test_results = {} failed_tests = [] + xds_version = 'v3' if args.xds_v3_support else 'v2' for test_case in args.test_case: result = jobset.JobResult() - log_dir = os.path.join(_TEST_LOG_BASE_DIR, test_case) + log_dir = os.path.join(_TEST_LOG_BASE_DIR, test_case + '_' + xds_version) if not os.path.exists(log_dir): os.makedirs(log_dir) test_log_filename = os.path.join(log_dir, _SPONGE_LOG_NAME) @@ -2241,7 +2249,6 @@ try: # Workaround for Python 3, as report_utils will invoke decode() on # result.message, which has a default value of ''. result.message = result.message.encode('UTF-8') - xds_version = 'v3' if args.xds_v3_support else 'v2' test_results[test_case + '_' + xds_version] = [result] if args.log_client_output: logger.info('Client output:') From 22444604a4c204f6e52ec6657bad6e0668525338 Mon Sep 17 00:00:00 2001 From: "Penn (Dapeng) Zhang" Date: Thu, 14 Jan 2021 16:32:01 -0800 Subject: [PATCH 3/7] revert grpc_xds_bazel_test_in_docker.sh --- tools/internal_ci/linux/grpc_xds_bazel_test_in_docker.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/tools/internal_ci/linux/grpc_xds_bazel_test_in_docker.sh b/tools/internal_ci/linux/grpc_xds_bazel_test_in_docker.sh index 36f149be3b9..7057adee90f 100755 --- a/tools/internal_ci/linux/grpc_xds_bazel_test_in_docker.sh +++ b/tools/internal_ci/linux/grpc_xds_bazel_test_in_docker.sh @@ -60,7 +60,6 @@ touch "$TOOLS_DIR"/src/proto/grpc/health/v1/__init__.py bazel build test/cpp/interop:xds_interop_client -set -o history -H # Test cases "path_matching" and "header_matching" are not included in "all", # because not all interop clients in all languages support these new tests. # @@ -77,4 +76,3 @@ GRPC_VERBOSITY=debug GRPC_TRACE=xds_client,xds_resolver,xds_cluster_manager_lb,c --client_cmd='bazel-bin/test/cpp/interop/xds_interop_client --server=xds:///{server_uri} --stats_port={stats_port} --qps={qps} {fail_on_failed_rpc} \ {rpcs_to_send} \ {metadata_to_send}' -!! --xds_v3_support From 33640690c28775b57600637cc0621b352b088c19 Mon Sep 17 00:00:00 2001 From: "Penn (Dapeng) Zhang" Date: Thu, 14 Jan 2021 16:32:18 -0800 Subject: [PATCH 4/7] add TOOD to remove default value --- tools/run_tests/run_xds_tests.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/run_tests/run_xds_tests.py b/tools/run_tests/run_xds_tests.py index 78aabec0410..3e2b99dc52c 100755 --- a/tools/run_tests/run_xds_tests.py +++ b/tools/run_tests/run_xds_tests.py @@ -97,6 +97,7 @@ def parse_port_range(port_arg): argp = argparse.ArgumentParser(description='Run xDS interop tests on GCP') +# TODO(zdapeng): remove default value of project_id and project_num argp.add_argument('--project_id', default='grpc-testing', help='GCP project id') argp.add_argument( '--project_num', From d8e77ce36b768b2b271e38ebcb798ccac8a693c6 Mon Sep 17 00:00:00 2001 From: "Penn (Dapeng) Zhang" Date: Thu, 14 Jan 2021 18:16:50 -0800 Subject: [PATCH 5/7] revert _v3 suffix to log dir --- tools/run_tests/run_xds_tests.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tools/run_tests/run_xds_tests.py b/tools/run_tests/run_xds_tests.py index 3e2b99dc52c..fdc9150adbf 100755 --- a/tools/run_tests/run_xds_tests.py +++ b/tools/run_tests/run_xds_tests.py @@ -2125,10 +2125,9 @@ try: client_env['GRPC_XDS_EXPERIMENTAL_CIRCUIT_BREAKING'] = 'true' test_results = {} failed_tests = [] - xds_version = 'v3' if args.xds_v3_support else 'v2' for test_case in args.test_case: result = jobset.JobResult() - log_dir = os.path.join(_TEST_LOG_BASE_DIR, test_case + '_' + xds_version) + log_dir = os.path.join(_TEST_LOG_BASE_DIR, test_case) if not os.path.exists(log_dir): os.makedirs(log_dir) test_log_filename = os.path.join(log_dir, _SPONGE_LOG_NAME) @@ -2250,7 +2249,7 @@ try: # Workaround for Python 3, as report_utils will invoke decode() on # result.message, which has a default value of ''. result.message = result.message.encode('UTF-8') - test_results[test_case + '_' + xds_version] = [result] + test_results[test_case] = [result] if args.log_client_output: logger.info('Client output:') with open(test_log_filename, 'r') as client_output: From b4a98b0a67e8edb8e9e400c2918bce8d603b1f9e Mon Sep 17 00:00:00 2001 From: "Penn (Dapeng) Zhang" Date: Fri, 15 Jan 2021 09:22:37 -0800 Subject: [PATCH 6/7] fix sanity check --- tools/run_tests/run_xds_tests.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/run_tests/run_xds_tests.py b/tools/run_tests/run_xds_tests.py index fdc9150adbf..1dc6aa46884 100755 --- a/tools/run_tests/run_xds_tests.py +++ b/tools/run_tests/run_xds_tests.py @@ -99,10 +99,9 @@ def parse_port_range(port_arg): argp = argparse.ArgumentParser(description='Run xDS interop tests on GCP') # TODO(zdapeng): remove default value of project_id and project_num argp.add_argument('--project_id', default='grpc-testing', help='GCP project id') -argp.add_argument( - '--project_num', - default='830293263384', - help='GCP project number') +argp.add_argument('--project_num', + default='830293263384', + help='GCP project number') argp.add_argument( '--gcp_suffix', default='', @@ -2117,7 +2116,8 @@ try: bootstrap_file.write( _BOOTSTRAP_TEMPLATE.format( node_id='projects/%s/networks/%s/nodes/%s' % - (gcp.project_num, args.network.split('/')[-1], uuid.uuid1()), + (gcp.project_num, args.network.split('/')[-1], + uuid.uuid1()), server_features=json.dumps( bootstrap_server_features)).encode('utf-8')) bootstrap_path = bootstrap_file.name From 5fe5a2996517a8fa77aed772a74216736fcce0e1 Mon Sep 17 00:00:00 2001 From: "Penn (Dapeng) Zhang" Date: Fri, 15 Jan 2021 09:52:19 -0800 Subject: [PATCH 7/7] fix sanity check again --- tools/run_tests/run_xds_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/run_tests/run_xds_tests.py b/tools/run_tests/run_xds_tests.py index 1dc6aa46884..81ee06e6e55 100755 --- a/tools/run_tests/run_xds_tests.py +++ b/tools/run_tests/run_xds_tests.py @@ -2117,7 +2117,7 @@ try: _BOOTSTRAP_TEMPLATE.format( node_id='projects/%s/networks/%s/nodes/%s' % (gcp.project_num, args.network.split('/')[-1], - uuid.uuid1()), + uuid.uuid1()), server_features=json.dumps( bootstrap_server_features)).encode('utf-8')) bootstrap_path = bootstrap_file.name