Author: markt Date: Tue Feb 23 13:45:56 2016 New Revision: 1731856 URL: http://svn.apache.org/viewvc?rev=1731856&view=rev Log: Additional WebSocket test by Barry Coughlan.
Added: tomcat/trunk/test/org/apache/tomcat/websocket/server/TestCloseBug58264.java (with props) Added: tomcat/trunk/test/org/apache/tomcat/websocket/server/TestCloseBug58264.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/websocket/server/TestCloseBug58264.java?rev=1731856&view=auto ============================================================================== --- tomcat/trunk/test/org/apache/tomcat/websocket/server/TestCloseBug58264.java (added) +++ tomcat/trunk/test/org/apache/tomcat/websocket/server/TestCloseBug58264.java Tue Feb 23 13:45:56 2016 @@ -0,0 +1,134 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.tomcat.websocket.server; + +import java.net.URI; + +import javax.servlet.ServletContextEvent; +import javax.websocket.ClientEndpoint; +import javax.websocket.CloseReason; +import javax.websocket.ContainerProvider; +import javax.websocket.DeploymentException; +import javax.websocket.OnClose; +import javax.websocket.OnError; +import javax.websocket.OnMessage; +import javax.websocket.OnOpen; +import javax.websocket.Session; +import javax.websocket.WebSocketContainer; +import javax.websocket.server.ServerContainer; +import javax.websocket.server.ServerEndpointConfig; + +import org.junit.Test; + +import org.apache.catalina.Context; +import org.apache.catalina.servlets.DefaultServlet; +import org.apache.catalina.startup.Tomcat; +import org.apache.catalina.startup.TomcatBaseTest; + +public class TestCloseBug58264 extends TomcatBaseTest { + + @Test + public void testOnErrorNotCalledWhenClosingConnection() throws Throwable { + Tomcat tomcat = getTomcatInstance(); + // No file system docBase required + Context ctx = tomcat.addContext("", null); + ctx.addApplicationListener(Bug58624ServerConfig.class.getName()); + Tomcat.addServlet(ctx, "default", new DefaultServlet()); + ctx.addServletMapping("/", "default"); + + WebSocketContainer wsContainer = ContainerProvider.getWebSocketContainer(); + + tomcat.start(); + + Bug58624ClientEndpoint client = new Bug58624ClientEndpoint(); + URI uri = new URI("ws://localhost:" + getPort() + Bug58624ServerConfig.PATH); + + Session session = wsContainer.connectToServer(client, uri); + session.close(); + + if (client.getError() != null) { + throw client.getError(); + } + } + + @ClientEndpoint + public class Bug58624ClientEndpoint { + + private volatile Throwable t; + + + @OnError + public void onError(Throwable t) { + this.t = t; + } + + + public Throwable getError() { + return this.t; + } + } + + public static class Bug58624ServerConfig extends WsContextListener { + + public static String PATH = "/bug58624"; + + + @Override + public void contextInitialized(ServletContextEvent sce) { + super.contextInitialized(sce); + + ServerContainer sc = (ServerContainer) sce.getServletContext().getAttribute( + Constants.SERVER_CONTAINER_SERVLET_CONTEXT_ATTRIBUTE); + + ServerEndpointConfig sec = ServerEndpointConfig.Builder.create( + Bug58624ServerEndpoint.class, PATH).build(); + + try { + sc.addEndpoint(sec); + } catch (DeploymentException e) { + throw new RuntimeException(e); + } + } + } + + public static class Bug58624ServerEndpoint { + + @OnOpen + public void onOpen() { + System.out.println("Session opened"); + } + + + @OnMessage + public void onMessage(@SuppressWarnings("unused") Session session, String message) { + System.out.println("Received message " + message); + } + + + @OnError + public void onError(Throwable t) { + System.out.println("HERE"); + t.printStackTrace(); + } + + + @OnClose + public void onClose(CloseReason cr) { + System.out.println("Session closed: " + cr); + } + } +} Propchange: tomcat/trunk/test/org/apache/tomcat/websocket/server/TestCloseBug58264.java ------------------------------------------------------------------------------ svn:eol-style = native --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org