Bump initial timeouts in SSLEngineTest (#11221)

Motivation:
We've seen (very rare) flaky test failures due to timeouts.
They are too rare to analyse properly, but a theory is that on overloaded, small cloud CI instances, it can sometimes take a surprising amount of time to start a thread.
It could be that the event loop thread is getting an unlucky schedule, and takes seconds to start, causing the timeouts to elapse.

Modification:
Increase the initial timeouts in the SSLEngineTest, that could end up waiting for the event loop thread to start.
Also fix a few simple warnings from Intellij.

Result:
Hopefully we will not see these tests be flaky again.
This commit is contained in:
Chris Vest 2021-05-05 15:14:23 +02:00
parent 4fabd803c2
commit 584d674acd

View File

@ -605,7 +605,7 @@ public abstract class SSLEngineTest {
// Client trusts server but server only trusts itself // Client trusts server but server only trusts itself
mySetupMutualAuth(serverCrtFile, serverKeyFile, serverCrtFile, serverKeyPassword, mySetupMutualAuth(serverCrtFile, serverKeyFile, serverCrtFile, serverKeyPassword,
serverCrtFile, clientKeyFile, clientCrtFile, clientKeyPassword); serverCrtFile, clientKeyFile, clientCrtFile, clientKeyPassword);
assertTrue(serverLatch.await(2, TimeUnit.SECONDS)); assertTrue(serverLatch.await(10, TimeUnit.SECONDS));
assertTrue(serverException instanceof SSLHandshakeException); assertTrue(serverException instanceof SSLHandshakeException);
} }
@ -620,7 +620,7 @@ public abstract class SSLEngineTest {
// Server trusts client but client only trusts itself // Server trusts client but client only trusts itself
mySetupMutualAuth(clientCrtFile, serverKeyFile, serverCrtFile, serverKeyPassword, mySetupMutualAuth(clientCrtFile, serverKeyFile, serverCrtFile, serverKeyPassword,
clientCrtFile, clientKeyFile, clientCrtFile, clientKeyPassword); clientCrtFile, clientKeyFile, clientCrtFile, clientKeyPassword);
assertTrue(clientLatch.await(2, TimeUnit.SECONDS)); assertTrue(clientLatch.await(10, TimeUnit.SECONDS));
assertTrue(clientException instanceof SSLHandshakeException); assertTrue(clientException instanceof SSLHandshakeException);
} }
@ -665,7 +665,7 @@ public abstract class SSLEngineTest {
mySetupMutualAuth(serverKeyManagerFactory, commonCertChain, clientKeyManagerFactory, commonCertChain, mySetupMutualAuth(serverKeyManagerFactory, commonCertChain, clientKeyManagerFactory, commonCertChain,
auth, false, false); auth, false, false);
assertTrue(clientLatch.await(5, TimeUnit.SECONDS)); assertTrue(clientLatch.await(10, TimeUnit.SECONDS));
assertNull(clientException); assertNull(clientException);
assertTrue(serverLatch.await(5, TimeUnit.SECONDS)); assertTrue(serverLatch.await(5, TimeUnit.SECONDS));
assertNull(serverException); assertNull(serverException);
@ -692,7 +692,7 @@ public abstract class SSLEngineTest {
mySetupMutualAuth(serverKeyManagerFactory, commonCertChain, clientKeyManagerFactory, commonCertChain, mySetupMutualAuth(serverKeyManagerFactory, commonCertChain, clientKeyManagerFactory, commonCertChain,
auth, true, serverInitEngine); auth, true, serverInitEngine);
assertTrue(clientLatch.await(5, TimeUnit.SECONDS)); assertTrue(clientLatch.await(10, TimeUnit.SECONDS));
assertTrue("unexpected exception: " + clientException, assertTrue("unexpected exception: " + clientException,
mySetupMutualAuthServerIsValidClientException(clientException)); mySetupMutualAuthServerIsValidClientException(clientException));
assertTrue(serverLatch.await(5, TimeUnit.SECONDS)); assertTrue(serverLatch.await(5, TimeUnit.SECONDS));
@ -856,25 +856,25 @@ public abstract class SSLEngineTest {
} }
@Test @Test
public void testClientHostnameValidationSuccess() throws InterruptedException, SSLException { public void testClientHostnameValidationSuccess() throws Exception {
mySetupClientHostnameValidation(ResourcesUtil.getFile(getClass(), "localhost_server.pem"), mySetupClientHostnameValidation(ResourcesUtil.getFile(getClass(), "localhost_server.pem"),
ResourcesUtil.getFile(getClass(), "localhost_server.key"), ResourcesUtil.getFile(getClass(), "localhost_server.key"),
ResourcesUtil.getFile(getClass(), "mutual_auth_ca.pem"), ResourcesUtil.getFile(getClass(), "mutual_auth_ca.pem"),
false); false);
assertTrue(clientLatch.await(5, TimeUnit.SECONDS)); assertTrue(clientLatch.await(10, TimeUnit.SECONDS));
assertNull(clientException); assertNull(clientException);
assertTrue(serverLatch.await(5, TimeUnit.SECONDS)); assertTrue(serverLatch.await(5, TimeUnit.SECONDS));
assertNull(serverException); assertNull(serverException);
} }
@Test @Test
public void testClientHostnameValidationFail() throws InterruptedException, SSLException { public void testClientHostnameValidationFail() throws Exception {
Future<Void> clientWriteFuture = Future<Void> clientWriteFuture =
mySetupClientHostnameValidation(ResourcesUtil.getFile(getClass(), "notlocalhost_server.pem"), mySetupClientHostnameValidation(ResourcesUtil.getFile(getClass(), "notlocalhost_server.pem"),
ResourcesUtil.getFile(getClass(), "notlocalhost_server.key"), ResourcesUtil.getFile(getClass(), "notlocalhost_server.key"),
ResourcesUtil.getFile(getClass(), "mutual_auth_ca.pem"), ResourcesUtil.getFile(getClass(), "mutual_auth_ca.pem"),
true); true);
assertTrue(clientLatch.await(5, TimeUnit.SECONDS)); assertTrue(clientLatch.await(10, TimeUnit.SECONDS));
assertTrue("unexpected exception: " + clientException, assertTrue("unexpected exception: " + clientException,
mySetupMutualAuthServerIsValidClientException(clientException)); mySetupMutualAuthServerIsValidClientException(clientException));
assertTrue(serverLatch.await(5, TimeUnit.SECONDS)); assertTrue(serverLatch.await(5, TimeUnit.SECONDS));
@ -1231,7 +1231,7 @@ public abstract class SSLEngineTest {
MessageReceiver receiver) throws Exception { MessageReceiver receiver) throws Exception {
List<ByteBuf> dataCapture = null; List<ByteBuf> dataCapture = null;
try { try {
assertTrue(sendChannel.writeAndFlush(message).await(5, TimeUnit.SECONDS)); assertTrue(sendChannel.writeAndFlush(message).await(10, TimeUnit.SECONDS));
receiverLatch.await(5, TimeUnit.SECONDS); receiverLatch.await(5, TimeUnit.SECONDS);
message.readerIndex(0); message.readerIndex(0);
ArgumentCaptor<ByteBuf> captor = ArgumentCaptor.forClass(ByteBuf.class); ArgumentCaptor<ByteBuf> captor = ArgumentCaptor.forClass(ByteBuf.class);
@ -1379,8 +1379,7 @@ public abstract class SSLEngineTest {
} }
@Test(timeout = 30000) @Test(timeout = 30000)
public void clientInitiatedRenegotiationWithFatalAlertDoesNotInfiniteLoopServer() public void clientInitiatedRenegotiationWithFatalAlertDoesNotInfiniteLoopServer() throws Exception {
throws CertificateException, SSLException, InterruptedException, ExecutionException {
assumeTrue(PlatformDependent.javaVersion() >= 11); assumeTrue(PlatformDependent.javaVersion() >= 11);
final SelfSignedCertificate ssc = new SelfSignedCertificate(); final SelfSignedCertificate ssc = new SelfSignedCertificate();
serverSslCtx = wrapContext(SslContextBuilder.forServer(ssc.certificate(), ssc.privateKey()) serverSslCtx = wrapContext(SslContextBuilder.forServer(ssc.certificate(), ssc.privateKey())
@ -3911,7 +3910,7 @@ public abstract class SSLEngineTest {
} }
} }
private KeyManagerFactory newKeyManagerFactory(SelfSignedCertificate ssc) private static KeyManagerFactory newKeyManagerFactory(SelfSignedCertificate ssc)
throws UnrecoverableKeyException, KeyStoreException, NoSuchAlgorithmException, throws UnrecoverableKeyException, KeyStoreException, NoSuchAlgorithmException,
CertificateException, IOException { CertificateException, IOException {
return SslContext.buildKeyManagerFactory( return SslContext.buildKeyManagerFactory(