use of io.grpc.netty.NettyTestUtil.TrackingObjectPoolForTest in project grpc-java by grpc.
the class NettyClientTransportTest method tlsNegotiationServerExecutorShouldSucceed.
/**
* Verifies that we can successfully build a server and client negotiator with tls and the
* executor passing in, and without resource leak after closing the negotiator.
*/
@Test
public void tlsNegotiationServerExecutorShouldSucceed() throws Exception {
// initialize the client and server Executor pool
TrackingObjectPoolForTest serverExecutorPool = new TrackingObjectPoolForTest();
TrackingObjectPoolForTest clientExecutorPool = new TrackingObjectPoolForTest();
assertEquals(false, serverExecutorPool.isInUse());
assertEquals(false, clientExecutorPool.isInUse());
File serverCert = TestUtils.loadCert("server1.pem");
File serverKey = TestUtils.loadCert("server1.key");
SslContext sslContext = GrpcSslContexts.forServer(serverCert, serverKey).ciphers(TestUtils.preferredTestCiphers(), SupportedCipherSuiteFilter.INSTANCE).clientAuth(ClientAuth.NONE).build();
negotiator = ProtocolNegotiators.serverTls(sslContext, serverExecutorPool);
startServer();
// after starting the server, the Executor in the server pool should be used
assertEquals(true, serverExecutorPool.isInUse());
File caCert = TestUtils.loadCert("ca.pem");
File clientCert = TestUtils.loadCert("client.pem");
File clientKey = TestUtils.loadCert("client.key");
SslContext clientContext = GrpcSslContexts.forClient().trustManager(caCert).ciphers(TestUtils.preferredTestCiphers(), SupportedCipherSuiteFilter.INSTANCE).keyManager(clientCert, clientKey).build();
ProtocolNegotiator negotiator = ProtocolNegotiators.tls(clientContext, clientExecutorPool);
// after starting the client, the Executor in the client pool should be used
assertEquals(true, clientExecutorPool.isInUse());
final NettyClientTransport transport = newTransport(negotiator);
callMeMaybe(transport.start(clientTransportListener));
Rpc rpc = new Rpc(transport).halfClose();
rpc.waitForResponse();
// closing the negotiators should return the executors back to pool, and release the resource
negotiator.close();
assertEquals(false, clientExecutorPool.isInUse());
this.negotiator.close();
assertEquals(false, serverExecutorPool.isInUse());
}
use of io.grpc.netty.NettyTestUtil.TrackingObjectPoolForTest in project grpc-java by grpc.
the class NettyChannelBuilderTest method createProtocolNegotiatorByType_tlsWithExecutor.
@Test
public void createProtocolNegotiatorByType_tlsWithExecutor() throws Exception {
TrackingObjectPoolForTest executorPool = new TrackingObjectPoolForTest();
assertEquals(false, executorPool.isInUse());
SslContext localSslContext = GrpcSslContexts.forClient().build();
ProtocolNegotiator negotiator = NettyChannelBuilder.createProtocolNegotiatorByType(NegotiationType.TLS, localSslContext, executorPool);
assertEquals(true, executorPool.isInUse());
assertNotNull(negotiator);
negotiator.close();
assertEquals(false, executorPool.isInUse());
}
Aggregations