|  | @@ -70,18 +70,11 @@ SERVER_CERT_CHAIN_2_PEM = (resources.cert_hier_2_server_1_cert() +
 | 
	
		
			
				|  |  |  Call = collections.namedtuple('Call', ['did_raise', 'returned_cert_config'])
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -def _create_client_stub(
 | 
	
		
			
				|  |  | -        port,
 | 
	
		
			
				|  |  | -        expect_success,
 | 
	
		
			
				|  |  | -        root_certificates=None,
 | 
	
		
			
				|  |  | -        private_key=None,
 | 
	
		
			
				|  |  | -        certificate_chain=None,
 | 
	
		
			
				|  |  | -):
 | 
	
		
			
				|  |  | -    channel = grpc.secure_channel('localhost:{}'.format(port),
 | 
	
		
			
				|  |  | -                                  grpc.ssl_channel_credentials(
 | 
	
		
			
				|  |  | -                                      root_certificates=root_certificates,
 | 
	
		
			
				|  |  | -                                      private_key=private_key,
 | 
	
		
			
				|  |  | -                                      certificate_chain=certificate_chain))
 | 
	
		
			
				|  |  | +def _create_channel(port, credentials):
 | 
	
		
			
				|  |  | +    return grpc.secure_channel('localhost:{}'.format(port), credentials)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def _create_client_stub(channel, expect_success):
 | 
	
		
			
				|  |  |      if expect_success:
 | 
	
		
			
				|  |  |          # per Nathaniel: there's some robustness issue if we start
 | 
	
		
			
				|  |  |          # using a channel without waiting for it to be actually ready
 | 
	
	
		
			
				|  | @@ -176,14 +169,13 @@ class _ServerSSLCertReloadTest(
 | 
	
		
			
				|  |  |                                  root_certificates=None,
 | 
	
		
			
				|  |  |                                  private_key=None,
 | 
	
		
			
				|  |  |                                  certificate_chain=None):
 | 
	
		
			
				|  |  | -        client_stub = _create_client_stub(
 | 
	
		
			
				|  |  | -            self.port,
 | 
	
		
			
				|  |  | -            expect_success,
 | 
	
		
			
				|  |  | +        credentials = grpc.ssl_channel_credentials(
 | 
	
		
			
				|  |  |              root_certificates=root_certificates,
 | 
	
		
			
				|  |  |              private_key=private_key,
 | 
	
		
			
				|  |  |              certificate_chain=certificate_chain)
 | 
	
		
			
				|  |  | -        self._perform_rpc(client_stub, expect_success)
 | 
	
		
			
				|  |  | -        del client_stub
 | 
	
		
			
				|  |  | +        with _create_channel(self.port, credentials) as client_channel:
 | 
	
		
			
				|  |  | +            client_stub = _create_client_stub(client_channel, expect_success)
 | 
	
		
			
				|  |  | +            self._perform_rpc(client_stub, expect_success)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def _test(self):
 | 
	
		
			
				|  |  |          # things should work...
 | 
	
	
		
			
				|  | @@ -259,12 +251,13 @@ class _ServerSSLCertReloadTest(
 | 
	
		
			
				|  |  |          # now create the "persistent" clients
 | 
	
		
			
				|  |  |          self.cert_config_fetcher.reset()
 | 
	
		
			
				|  |  |          self.cert_config_fetcher.configure(False, None)
 | 
	
		
			
				|  |  | -        persistent_client_stub_A = _create_client_stub(
 | 
	
		
			
				|  |  | +        channel_A = _create_channel(
 | 
	
		
			
				|  |  |              self.port,
 | 
	
		
			
				|  |  | -            True,
 | 
	
		
			
				|  |  | -            root_certificates=CA_1_PEM,
 | 
	
		
			
				|  |  | -            private_key=CLIENT_KEY_2_PEM,
 | 
	
		
			
				|  |  | -            certificate_chain=CLIENT_CERT_CHAIN_2_PEM)
 | 
	
		
			
				|  |  | +            grpc.ssl_channel_credentials(
 | 
	
		
			
				|  |  | +                root_certificates=CA_1_PEM,
 | 
	
		
			
				|  |  | +                private_key=CLIENT_KEY_2_PEM,
 | 
	
		
			
				|  |  | +                certificate_chain=CLIENT_CERT_CHAIN_2_PEM))
 | 
	
		
			
				|  |  | +        persistent_client_stub_A = _create_client_stub(channel_A, True)
 | 
	
		
			
				|  |  |          self._perform_rpc(persistent_client_stub_A, True)
 | 
	
		
			
				|  |  |          actual_calls = self.cert_config_fetcher.getCalls()
 | 
	
		
			
				|  |  |          self.assertEqual(len(actual_calls), 1)
 | 
	
	
		
			
				|  | @@ -273,12 +266,13 @@ class _ServerSSLCertReloadTest(
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          self.cert_config_fetcher.reset()
 | 
	
		
			
				|  |  |          self.cert_config_fetcher.configure(False, None)
 | 
	
		
			
				|  |  | -        persistent_client_stub_B = _create_client_stub(
 | 
	
		
			
				|  |  | +        channel_B = _create_channel(
 | 
	
		
			
				|  |  |              self.port,
 | 
	
		
			
				|  |  | -            True,
 | 
	
		
			
				|  |  | -            root_certificates=CA_1_PEM,
 | 
	
		
			
				|  |  | -            private_key=CLIENT_KEY_2_PEM,
 | 
	
		
			
				|  |  | -            certificate_chain=CLIENT_CERT_CHAIN_2_PEM)
 | 
	
		
			
				|  |  | +            grpc.ssl_channel_credentials(
 | 
	
		
			
				|  |  | +                root_certificates=CA_1_PEM,
 | 
	
		
			
				|  |  | +                private_key=CLIENT_KEY_2_PEM,
 | 
	
		
			
				|  |  | +                certificate_chain=CLIENT_CERT_CHAIN_2_PEM))
 | 
	
		
			
				|  |  | +        persistent_client_stub_B = _create_client_stub(channel_B, True)
 | 
	
		
			
				|  |  |          self._perform_rpc(persistent_client_stub_B, True)
 | 
	
		
			
				|  |  |          actual_calls = self.cert_config_fetcher.getCalls()
 | 
	
		
			
				|  |  |          self.assertEqual(len(actual_calls), 1)
 | 
	
	
		
			
				|  | @@ -359,6 +353,9 @@ class _ServerSSLCertReloadTest(
 | 
	
		
			
				|  |  |          actual_calls = self.cert_config_fetcher.getCalls()
 | 
	
		
			
				|  |  |          self.assertEqual(len(actual_calls), 0)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        channel_A.close()
 | 
	
		
			
				|  |  | +        channel_B.close()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  class ServerSSLCertConfigFetcherParamsChecks(unittest.TestCase):
 | 
	
		
			
				|  |  |  
 |