Fix Python interop test invocation in run_interop_tests.py
diff --git a/tools/run_tests/run_interop_tests.py b/tools/run_tests/run_interop_tests.py
index ef8e29a..be47620 100755
--- a/tools/run_tests/run_interop_tests.py
+++ b/tools/run_tests/run_interop_tests.py
@@ -169,8 +169,8 @@
self.client_cwd = None
self.safename = str(self)
- def client_args(self):
- return ['tools/http2_interop/http2_interop.test']
+ def client_cmd(self, args):
+ return ['tools/http2_interop/http2_interop.test', '-test.v'] + args
def cloud_to_prod_env(self):
return {}
@@ -349,12 +349,12 @@
return ['bash', '-l', '-c', ' '.join(cmdline)]
-def add_auth_options(language, test_case, cmdline, env):
+def auth_options(language, test_case):
"""Returns (cmdline, env) tuple with cloud_to_prod_auth test options."""
language = str(language)
- cmdline = list(cmdline)
- env = env.copy()
+ cmdargs = []
+ env = {}
# TODO(jtattermusch): this file path only works inside docker
key_filepath = '/root/service_account/stubbyCloudTestingTest-ee3fce360ac5.json'
@@ -366,19 +366,19 @@
if language in ['csharp', 'node', 'php', 'python', 'ruby']:
env['GOOGLE_APPLICATION_CREDENTIALS'] = key_filepath
else:
- cmdline += [key_file_arg]
+ cmdargs += [key_file_arg]
if test_case in ['per_rpc_creds', 'oauth2_auth_token']:
- cmdline += [oauth_scope_arg]
+ cmdargs += [oauth_scope_arg]
if test_case == 'oauth2_auth_token' and language == 'c++':
# C++ oauth2 test uses GCE creds and thus needs to know the default account
- cmdline += [default_account_arg]
+ cmdargs += [default_account_arg]
if test_case == 'compute_engine_creds':
- cmdline += [oauth_scope_arg, default_account_arg]
+ cmdargs += [oauth_scope_arg, default_account_arg]
- return (cmdline, env)
+ return (cmdargs, env)
def _job_kill_handler(job):
@@ -393,18 +393,20 @@
def cloud_to_prod_jobspec(language, test_case, docker_image=None, auth=False):
"""Creates jobspec for cloud-to-prod interop test"""
- cmdline = language.client_cmd([
+ container_name = None
+ cmdargs = [
'--server_host_override=grpc-test.sandbox.google.com',
'--server_host=grpc-test.sandbox.google.com',
'--server_port=443',
'--use_tls=true',
- '--test_case=%s' % test_case])
- cwd = language.client_cwd
+ '--test_case=%s' % test_case]
environ = dict(language.cloud_to_prod_env(), **language.global_env())
- container_name = None
if auth:
- cmdline, environ = add_auth_options(language, test_case, cmdline, environ)
- cmdline = bash_login_cmdline(cmdline)
+ auth_cmdargs, auth_env = auth_options(language, test_case)
+ cmdargs += auth_cmdargs
+ environ.update(auth_env)
+ cmdline = bash_login_cmdline(language.client_cmd(cmdargs))
+ cwd = language.client_cwd
if docker_image:
container_name = dockerjob.random_name('interop_client_%s' % language.safename)
@@ -562,7 +564,7 @@
action='store_const',
const=True,
help='Enable HTTP/2 interop tests')
-
+
args = argp.parse_args()
servers = set(s for s in itertools.chain.from_iterable(_SERVERS
@@ -586,7 +588,7 @@
for l in itertools.chain.from_iterable(
_LANGUAGES.iterkeys() if x == 'all' else [x]
for x in args.language))
-
+
http2Interop = Http2Client() if args.http2_interop else None
docker_images={}
@@ -608,10 +610,10 @@
num_failures, _ = jobset.run(
build_jobs, newline_on_success=True, maxjobs=args.jobs)
if num_failures == 0:
- jobset.message('SUCCESS', 'All docker images built successfully.',
+ jobset.message('SUCCESS', 'All docker images built successfully.',
do_newline=True)
else:
- jobset.message('FAILED', 'Failed to build interop docker images.',
+ jobset.message('FAILED', 'Failed to build interop docker images.',
do_newline=True)
for image in docker_images.itervalues():
dockerjob.remove_image(image, skip_nonexistent=True)
@@ -637,7 +639,7 @@
test_job = cloud_to_prod_jobspec(language, test_case,
docker_image=docker_images.get(str(language)))
jobs.append(test_job)
-
+
# TODO(carl-mastrangelo): Currently prod TLS terminators aren't spec compliant. Reenable
# this once a better solution is in place.
if args.http2_interop and False:
@@ -645,7 +647,7 @@
test_job = cloud_to_prod_jobspec(http2Interop, test_case,
docker_image=docker_images.get(str(http2Interop)))
jobs.append(test_job)
-
+
if args.cloud_to_prod_auth:
for language in languages:
@@ -673,12 +675,12 @@
server_port,
docker_image=docker_images.get(str(language)))
jobs.append(test_job)
-
+
if args.http2_interop:
for test_case in _HTTP2_TEST_CASES:
if server_name == "go":
# TODO(carl-mastrangelo): Reenable after https://github.com/grpc/grpc-go/issues/434
- continue
+ continue
test_job = cloud_to_cloud_jobspec(http2Interop,
test_case,
server_name,
@@ -693,7 +695,7 @@
dockerjob.remove_image(image, skip_nonexistent=True)
sys.exit(1)
- num_failures, resultset = jobset.run(jobs, newline_on_success=True,
+ num_failures, resultset = jobset.run(jobs, newline_on_success=True,
maxjobs=args.jobs)
if num_failures:
jobset.message('FAILED', 'Some tests failed', do_newline=True)
@@ -701,9 +703,9 @@
jobset.message('SUCCESS', 'All tests passed', do_newline=True)
report_utils.render_xml_report(resultset, 'report.xml')
-
+
report_utils.render_html_report(
- set([str(l) for l in languages]), servers, _TEST_CASES, _AUTH_TEST_CASES,
+ set([str(l) for l in languages]), servers, _TEST_CASES, _AUTH_TEST_CASES,
_HTTP2_TEST_CASES, resultset, num_failures,
args.cloud_to_prod_auth or args.cloud_to_prod, args.http2_interop)