This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/main by this push: new ec03e1e Fix deprecation warnings ec03e1e is described below commit ec03e1e9e47da3339faa1252a6f5432abf1b3e9e Author: Mark Thomas <ma...@apache.org> AuthorDate: Tue Dec 21 15:02:50 2021 +0000 Fix deprecation warnings --- .../tomcat/websocket/WsWebSocketContainer.java | 1 + .../websocket/TestWebSocketFrameClientSSL.java | 140 ++++++++++++++++++++- .../websocket/TestWsWebSocketContainerSSL.java | 3 +- 3 files changed, 141 insertions(+), 3 deletions(-) diff --git a/java/org/apache/tomcat/websocket/WsWebSocketContainer.java b/java/org/apache/tomcat/websocket/WsWebSocketContainer.java index e6c5f92..608e854 100644 --- a/java/org/apache/tomcat/websocket/WsWebSocketContainer.java +++ b/java/org/apache/tomcat/websocket/WsWebSocketContainer.java @@ -900,6 +900,7 @@ public class WsWebSocketContainer implements WebSocketContainer, BackgroundProce } + @SuppressWarnings("removal") private SSLEngine createSSLEngine(ClientEndpointConfig clientEndpointConfig, String host, int port) throws DeploymentException { diff --git a/test/org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java b/test/org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java index 8adc942..4323cb9 100644 --- a/test/org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java +++ b/test/org/apache/tomcat/websocket/TestWebSocketFrameClientSSL.java @@ -16,7 +16,11 @@ */ package org.apache.tomcat.websocket; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; import java.net.URI; +import java.security.KeyStore; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -24,6 +28,9 @@ import java.util.Queue; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManagerFactory; + import jakarta.websocket.ClientEndpointConfig; import jakarta.websocket.ContainerProvider; import jakarta.websocket.MessageHandler; @@ -43,6 +50,7 @@ import org.apache.catalina.core.StandardServer; import org.apache.catalina.servlets.DefaultServlet; import org.apache.catalina.startup.Tomcat; import org.apache.tomcat.util.net.TesterSupport; +import org.apache.tomcat.util.security.KeyStoreUtil; import org.apache.tomcat.websocket.TesterMessageCountClient.BasicText; import org.apache.tomcat.websocket.TesterMessageCountClient.SleepingText; import org.apache.tomcat.websocket.TesterMessageCountClient.TesterProgrammaticEndpoint; @@ -73,8 +81,9 @@ public class TestWebSocketFrameClientSSL extends WebSocketBaseTest { public String sslImplementationName; + @SuppressWarnings("removal") @Test - public void testConnectToServerEndpoint() throws Exception { + public void testConnectToServerEndpointLegacy() throws Exception { Tomcat tomcat = getTomcatInstance(); // No file system docBase required Context ctx = tomcat.addContext("", null); @@ -119,7 +128,62 @@ public class TestWebSocketFrameClientSSL extends WebSocketBaseTest { @Test - public void testBug56032() throws Exception { + public void testConnectToServerEndpoint() throws Exception { + Tomcat tomcat = getTomcatInstance(); + // No file system docBase required + Context ctx = tomcat.addContext("", null); + ctx.addApplicationListener(TesterFirehoseServer.ConfigInline.class.getName()); + Tomcat.addServlet(ctx, "default", new DefaultServlet()); + ctx.addServletMappingDecoded("/", "default"); + + tomcat.start(); + + WebSocketContainer wsContainer = ContainerProvider.getWebSocketContainer(); + + // Build the SSLContext + SSLContext sslContext = SSLContext.getInstance("TLS"); + File trustStoreFile = new File(TesterSupport.CA_JKS); + KeyStore ks = KeyStore.getInstance("JKS"); + try (InputStream is = new FileInputStream(trustStoreFile)) { + KeyStoreUtil.load(ks, is, TesterSupport.JKS_PASS.toCharArray()); + } + TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + tmf.init(ks); + sslContext.init(null, tmf.getTrustManagers(), null); + + ClientEndpointConfig clientEndpointConfig = + ClientEndpointConfig.Builder.create().sslContext(sslContext).build(); + + Session wsSession = wsContainer.connectToServer( + TesterProgrammaticEndpoint.class, + clientEndpointConfig, + new URI("wss://localhost:" + getPort() + + TesterFirehoseServer.PATH)); + CountDownLatch latch = + new CountDownLatch(TesterFirehoseServer.MESSAGE_COUNT); + BasicText handler = new BasicText(latch); + wsSession.addMessageHandler(handler); + wsSession.getBasicRemote().sendText("Hello"); + + System.out.println("Sent Hello message, waiting for data"); + + // Ignore the latch result as the message count test below will tell us + // if the right number of messages arrived + handler.getLatch().await(TesterFirehoseServer.WAIT_TIME_MILLIS, + TimeUnit.MILLISECONDS); + + Queue<String> messages = handler.getMessages(); + Assert.assertEquals( + TesterFirehoseServer.MESSAGE_COUNT, messages.size()); + for (String message : messages) { + Assert.assertEquals(TesterFirehoseServer.MESSAGE, message); + } + } + + + @SuppressWarnings("removal") + @Test + public void testBug56032Legacy() throws Exception { Tomcat tomcat = getTomcatInstance(); // No file system docBase required Context ctx = tomcat.addContext("", null); @@ -181,6 +245,78 @@ public class TestWebSocketFrameClientSSL extends WebSocketBaseTest { } + @Test + public void testBug56032() throws Exception { + Tomcat tomcat = getTomcatInstance(); + // No file system docBase required + Context ctx = tomcat.addContext("", null); + ctx.addApplicationListener(TesterFirehoseServer.ConfigInline.class.getName()); + Tomcat.addServlet(ctx, "default", new DefaultServlet()); + ctx.addServletMappingDecoded("/", "default"); + + tomcat.start(); + + WebSocketContainer wsContainer = ContainerProvider.getWebSocketContainer(); + + // Build the SSLContext + SSLContext sslContext = SSLContext.getInstance("TLS"); + File trustStoreFile = new File(TesterSupport.CA_JKS); + KeyStore ks = KeyStore.getInstance("JKS"); + try (InputStream is = new FileInputStream(trustStoreFile)) { + KeyStoreUtil.load(ks, is, TesterSupport.JKS_PASS.toCharArray()); + } + TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + tmf.init(ks); + sslContext.init(null, tmf.getTrustManagers(), null); + + ClientEndpointConfig clientEndpointConfig = + ClientEndpointConfig.Builder.create().sslContext(sslContext).build(); + + Session wsSession = wsContainer.connectToServer( + TesterProgrammaticEndpoint.class, + clientEndpointConfig, + new URI("wss://localhost:" + getPort() + + TesterFirehoseServer.PATH)); + + // Process incoming messages very slowly + MessageHandler handler = new SleepingText(5000); + wsSession.addMessageHandler(handler); + wsSession.getBasicRemote().sendText("Hello"); + + // Wait long enough for the buffers to fill and the send to timeout + int count = 0; + int limit = TesterFirehoseServer.WAIT_TIME_MILLIS / 100; + + System.out.println("Waiting for server to report an error"); + while (TesterFirehoseServer.Endpoint.getErrorCount() == 0 && count < limit) { + Thread.sleep(100); + count ++; + } + + if (TesterFirehoseServer.Endpoint.getErrorCount() == 0) { + Assert.fail("No error reported by Endpoint when timeout was expected"); + } + + // Wait up to another 10 seconds for the connection to be closed - + // should be a lot faster. + System.out.println("Waiting for connection to be closed"); + count = 0; + limit = (TesterFirehoseServer.SEND_TIME_OUT_MILLIS * 2) / 100; + while (TesterFirehoseServer.Endpoint.getOpenConnectionCount() != 0 && count < limit) { + Thread.sleep(100); + count ++; + } + + int openConnectionCount = TesterFirehoseServer.Endpoint.getOpenConnectionCount(); + if (openConnectionCount != 0) { + Assert.fail("There are [" + openConnectionCount + "] connections still open"); + } + + // Close the client session. + wsSession.close(); + } + + @Override public void setUp() throws Exception { super.setUp(); diff --git a/test/org/apache/tomcat/websocket/TestWsWebSocketContainerSSL.java b/test/org/apache/tomcat/websocket/TestWsWebSocketContainerSSL.java index bcc0a24..9e5070d 100644 --- a/test/org/apache/tomcat/websocket/TestWsWebSocketContainerSSL.java +++ b/test/org/apache/tomcat/websocket/TestWsWebSocketContainerSSL.java @@ -81,6 +81,7 @@ public class TestWsWebSocketContainerSSL extends WebSocketBaseTest { private static final String MESSAGE_STRING_1 = "qwerty"; + @SuppressWarnings("removal") @Test public void testConnectToServerEndpointSslLegacy() throws Exception { @@ -139,7 +140,7 @@ public class TestWsWebSocketContainerSSL extends WebSocketBaseTest { File trustStoreFile = new File(TesterSupport.CA_JKS); KeyStore ks = KeyStore.getInstance("JKS"); try (InputStream is = new FileInputStream(trustStoreFile)) { - KeyStoreUtil.load(ks, is, Constants.SSL_TRUSTSTORE_PWD_DEFAULT.toCharArray()); + KeyStoreUtil.load(ks, is, TesterSupport.JKS_PASS.toCharArray()); } TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init(ks); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org