|  | @@ -39,6 +39,7 @@ from src.proto.grpc.testing import metrics_pb2
 | 
	
		
			
				|  |  |  from src.proto.grpc.testing import test_pb2
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  from tests.interop import methods
 | 
	
		
			
				|  |  | +from tests.interop import resources
 | 
	
		
			
				|  |  |  from tests.qps import histogram
 | 
	
		
			
				|  |  |  from tests.stress import metrics_server
 | 
	
		
			
				|  |  |  from tests.stress import test_runner
 | 
	
	
		
			
				|  | @@ -71,6 +72,16 @@ def _args():
 | 
	
		
			
				|  |  |        '--metrics_port',
 | 
	
		
			
				|  |  |        help='the port to listen for metrics requests on',
 | 
	
		
			
				|  |  |        default=8081, type=int)
 | 
	
		
			
				|  |  | +  parser.add_argument(
 | 
	
		
			
				|  |  | +      '--use_test_ca',
 | 
	
		
			
				|  |  | +      help='Whether to use our fake CA. Requires --use_tls=true',
 | 
	
		
			
				|  |  | +      default=False, type=bool)
 | 
	
		
			
				|  |  | +  parser.add_argument(
 | 
	
		
			
				|  |  | +      '--use_tls',
 | 
	
		
			
				|  |  | +      help='Whether to use TLS', default=False, type=bool)
 | 
	
		
			
				|  |  | +  parser.add_argument(
 | 
	
		
			
				|  |  | +      '--server_host_override', default="foo.test.google.fr",
 | 
	
		
			
				|  |  | +      help='the server host to which to claim to connect', type=str)
 | 
	
		
			
				|  |  |    return parser.parse_args()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -90,6 +101,19 @@ def _parse_weighted_test_cases(test_case_args):
 | 
	
		
			
				|  |  |      weighted_test_cases[test_case] = int(weight)
 | 
	
		
			
				|  |  |    return weighted_test_cases
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +def _get_channel(target, args):
 | 
	
		
			
				|  |  | +  if args.use_tls:
 | 
	
		
			
				|  |  | +    if args.use_test_ca:
 | 
	
		
			
				|  |  | +      root_certificates = resources.test_root_certificates()
 | 
	
		
			
				|  |  | +    else:
 | 
	
		
			
				|  |  | +      root_certificates = None  # will load default roots.
 | 
	
		
			
				|  |  | +    channel_credentials = grpc.ssl_channel_credentials(
 | 
	
		
			
				|  |  | +        root_certificates=root_certificates)
 | 
	
		
			
				|  |  | +    options = (('grpc.ssl_target_name_override', args.server_host_override,),)
 | 
	
		
			
				|  |  | +    return grpc.secure_channel(
 | 
	
		
			
				|  |  | +        target, channel_credentials, options=options)
 | 
	
		
			
				|  |  | +  else:
 | 
	
		
			
				|  |  | +    return grpc.insecure_channel(target)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def run_test(args):
 | 
	
		
			
				|  |  |    test_cases = _parse_weighted_test_cases(args.test_cases)
 | 
	
	
		
			
				|  | @@ -108,7 +132,7 @@ def run_test(args):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    for test_server_target in test_server_targets:
 | 
	
		
			
				|  |  |      for _ in xrange(args.num_channels_per_server):
 | 
	
		
			
				|  |  | -      channel = grpc.insecure_channel(test_server_target)
 | 
	
		
			
				|  |  | +      channel = _get_channel(test_server_target, args)
 | 
	
		
			
				|  |  |        for _ in xrange(args.num_stubs_per_channel):
 | 
	
		
			
				|  |  |          stub = test_pb2.TestServiceStub(channel)
 | 
	
		
			
				|  |  |          runner = test_runner.TestRunner(stub, test_cases, hist,
 |