|  | @@ -86,7 +86,7 @@ class CXXLanguage:
 | 
	
		
			
				|  |  |      return {}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def server_cmd(self, args):
 | 
	
		
			
				|  |  | -    return ['bins/opt/interop_server', '--use_tls=true'] + args
 | 
	
		
			
				|  |  | +    return ['bins/opt/interop_server'] + args
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def global_env(self):
 | 
	
		
			
				|  |  |      return {}
 | 
	
	
		
			
				|  | @@ -115,7 +115,7 @@ class CSharpLanguage:
 | 
	
		
			
				|  |  |      return {}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def server_cmd(self, args):
 | 
	
		
			
				|  |  | -    return ['mono', 'Grpc.IntegrationTesting.Server.exe', '--use_tls=true'] + args
 | 
	
		
			
				|  |  | +    return ['mono', 'Grpc.IntegrationTesting.Server.exe'] + args
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def global_env(self):
 | 
	
		
			
				|  |  |      return {}
 | 
	
	
		
			
				|  | @@ -144,7 +144,7 @@ class CSharpCoreCLRLanguage:
 | 
	
		
			
				|  |  |      return {}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def server_cmd(self, args):
 | 
	
		
			
				|  |  | -    return ['dotnet', 'exec', 'Grpc.IntegrationTesting.Server.dll', '--use_tls=true'] + args
 | 
	
		
			
				|  |  | +    return ['dotnet', 'exec', 'Grpc.IntegrationTesting.Server.dll'] + args
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def global_env(self):
 | 
	
		
			
				|  |  |      return {}
 | 
	
	
		
			
				|  | @@ -176,7 +176,7 @@ class JavaLanguage:
 | 
	
		
			
				|  |  |      return {}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def server_cmd(self, args):
 | 
	
		
			
				|  |  | -    return ['./run-test-server.sh', '--use_tls=true'] + args
 | 
	
		
			
				|  |  | +    return ['./run-test-server.sh'] + args
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def global_env(self):
 | 
	
		
			
				|  |  |      return {}
 | 
	
	
		
			
				|  | @@ -206,7 +206,7 @@ class GoLanguage:
 | 
	
		
			
				|  |  |      return {}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def server_cmd(self, args):
 | 
	
		
			
				|  |  | -    return ['go', 'run', 'server.go', '--use_tls=true'] + args
 | 
	
		
			
				|  |  | +    return ['go', 'run', 'server.go'] + args
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def global_env(self):
 | 
	
		
			
				|  |  |      return {}
 | 
	
	
		
			
				|  | @@ -292,8 +292,7 @@ class NodeLanguage:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def server_cmd(self, args):
 | 
	
		
			
				|  |  |      return ['tools/run_tests/interop/with_nvm.sh',
 | 
	
		
			
				|  |  | -            'node', 'src/node/interop/interop_server.js',
 | 
	
		
			
				|  |  | -            '--use_tls=true'] + args
 | 
	
		
			
				|  |  | +            'node', 'src/node/interop/interop_server.js'] + args
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def global_env(self):
 | 
	
		
			
				|  |  |      return {}
 | 
	
	
		
			
				|  | @@ -374,7 +373,7 @@ class RubyLanguage:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def server_cmd(self, args):
 | 
	
		
			
				|  |  |      return ['tools/run_tests/interop/with_rvm.sh',
 | 
	
		
			
				|  |  | -            'ruby', 'src/ruby/pb/test/server.rb', '--use_tls=true'] + args
 | 
	
		
			
				|  |  | +            'ruby', 'src/ruby/pb/test/server.rb'] + args
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def global_env(self):
 | 
	
		
			
				|  |  |      return {}
 | 
	
	
		
			
				|  | @@ -419,7 +418,7 @@ class PythonLanguage:
 | 
	
		
			
				|  |  |          'src/python/grpcio_tests/setup.py',
 | 
	
		
			
				|  |  |          'run_interop',
 | 
	
		
			
				|  |  |          '--server',
 | 
	
		
			
				|  |  | -        '--args="{}"'.format(' '.join(args) + ' --use_tls=true')
 | 
	
		
			
				|  |  | +        '--args="{}"'.format(' '.join(args))
 | 
	
		
			
				|  |  |      ]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    def global_env(self):
 | 
	
	
		
			
				|  | @@ -586,11 +585,11 @@ def cloud_to_prod_jobspec(language, test_case, server_host_name,
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def cloud_to_cloud_jobspec(language, test_case, server_name, server_host,
 | 
	
		
			
				|  |  | -                           server_port, docker_image=None):
 | 
	
		
			
				|  |  | +                           server_port, docker_image=None, insecure=False):
 | 
	
		
			
				|  |  |    """Creates jobspec for cloud-to-cloud interop test"""
 | 
	
		
			
				|  |  |    interop_only_options = [
 | 
	
		
			
				|  |  |        '--server_host_override=foo.test.google.fr',
 | 
	
		
			
				|  |  | -      '--use_tls=true',
 | 
	
		
			
				|  |  | +      '--use_tls=%s' % ('false' if insecure else 'true'),
 | 
	
		
			
				|  |  |        '--use_test_ca=true',
 | 
	
		
			
				|  |  |    ]
 | 
	
		
			
				|  |  |    common_options = [
 | 
	
	
		
			
				|  | @@ -634,11 +633,12 @@ def cloud_to_cloud_jobspec(language, test_case, server_name, server_host,
 | 
	
		
			
				|  |  |    return test_job
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -def server_jobspec(language, docker_image):
 | 
	
		
			
				|  |  | +def server_jobspec(language, docker_image, insecure=False):
 | 
	
		
			
				|  |  |    """Create jobspec for running a server"""
 | 
	
		
			
				|  |  |    container_name = dockerjob.random_name('interop_server_%s' % language.safename)
 | 
	
		
			
				|  |  |    cmdline = bash_cmdline(
 | 
	
		
			
				|  |  | -      language.server_cmd(['--port=%s' % _DEFAULT_SERVER_PORT]))
 | 
	
		
			
				|  |  | +      language.server_cmd(['--port=%s' % _DEFAULT_SERVER_PORT,
 | 
	
		
			
				|  |  | +                           '--use_tls=%s' % ('false' if insecure else 'true')]))
 | 
	
		
			
				|  |  |    environ = language.global_env()
 | 
	
		
			
				|  |  |    if language.safename == 'http2':
 | 
	
		
			
				|  |  |      # we are running the http2 interop server. Open next N ports beginning
 | 
	
	
		
			
				|  | @@ -803,6 +803,11 @@ argp.add_argument('--http2_badserver_interop',
 | 
	
		
			
				|  |  |                    action='store_const',
 | 
	
		
			
				|  |  |                    const=True,
 | 
	
		
			
				|  |  |                    help='Enable HTTP/2 server edge case testing. (Good client, bad server)')
 | 
	
		
			
				|  |  | +argp.add_argument('--insecure',
 | 
	
		
			
				|  |  | +                  default=False,
 | 
	
		
			
				|  |  | +                  action='store_const',
 | 
	
		
			
				|  |  | +                  const=True,
 | 
	
		
			
				|  |  | +                  help='Whether to use secure channel.')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  args = argp.parse_args()
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -868,7 +873,8 @@ server_addresses={}
 | 
	
		
			
				|  |  |  try:
 | 
	
		
			
				|  |  |    for s in servers:
 | 
	
		
			
				|  |  |      lang = str(s)
 | 
	
		
			
				|  |  | -    spec = server_jobspec(_LANGUAGES[lang], docker_images.get(lang))
 | 
	
		
			
				|  |  | +    spec = server_jobspec(_LANGUAGES[lang], docker_images.get(lang),
 | 
	
		
			
				|  |  | +                          args.insecure)
 | 
	
		
			
				|  |  |      job = dockerjob.DockerJob(spec)
 | 
	
		
			
				|  |  |      server_jobs[lang] = job
 | 
	
		
			
				|  |  |      server_addresses[lang] = ('localhost', job.mapped_port(_DEFAULT_SERVER_PORT))
 | 
	
	
		
			
				|  | @@ -883,6 +889,8 @@ try:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    jobs = []
 | 
	
		
			
				|  |  |    if args.cloud_to_prod:
 | 
	
		
			
				|  |  | +    if args.insecure:
 | 
	
		
			
				|  |  | +      print('TLS is always enabled for cloud_to_prod scenarios.')
 | 
	
		
			
				|  |  |      for server_host_name in args.prod_servers:
 | 
	
		
			
				|  |  |        for language in languages:
 | 
	
		
			
				|  |  |          for test_case in _TEST_CASES:
 | 
	
	
		
			
				|  | @@ -903,6 +911,8 @@ try:
 | 
	
		
			
				|  |  |            jobs.append(test_job)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    if args.cloud_to_prod_auth:
 | 
	
		
			
				|  |  | +    if args.insecure:
 | 
	
		
			
				|  |  | +      print('TLS is always enabled for cloud_to_prod scenarios.')
 | 
	
		
			
				|  |  |      for server_host_name in args.prod_servers:
 | 
	
		
			
				|  |  |        for language in languages:
 | 
	
		
			
				|  |  |          for test_case in _AUTH_TEST_CASES:
 | 
	
	
		
			
				|  | @@ -934,7 +944,8 @@ try:
 | 
	
		
			
				|  |  |                                                  server_name,
 | 
	
		
			
				|  |  |                                                  server_host,
 | 
	
		
			
				|  |  |                                                  server_port,
 | 
	
		
			
				|  |  | -                                                docker_image=docker_images.get(str(language)))
 | 
	
		
			
				|  |  | +                                                docker_image=docker_images.get(str(language)),
 | 
	
		
			
				|  |  | +                                                insecure=args.insecure)
 | 
	
		
			
				|  |  |                jobs.append(test_job)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if args.http2_interop:
 | 
	
	
		
			
				|  | @@ -947,7 +958,8 @@ try:
 | 
	
		
			
				|  |  |                                            server_name,
 | 
	
		
			
				|  |  |                                            server_host,
 | 
	
		
			
				|  |  |                                            server_port,
 | 
	
		
			
				|  |  | -                                          docker_image=docker_images.get(str(http2Interop)))
 | 
	
		
			
				|  |  | +                                          docker_image=docker_images.get(str(http2Interop)),
 | 
	
		
			
				|  |  | +                                          insecure=args.insecure)
 | 
	
		
			
				|  |  |          jobs.append(test_job)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if args.http2_badserver_interop:
 |