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

Reply via email to