do not used fixed port in core WebSocketProxyTest
Signed-off-by: Lachlan Roberts <lachlan@webtide.com>
This commit is contained in:
parent
38aec0b081
commit
b4fc70430c
|
@ -99,7 +99,7 @@ class WebSocketProxy
|
|||
break;
|
||||
|
||||
default:
|
||||
failure = new IllegalStateException();
|
||||
failure = new IllegalStateException(state.name());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -129,7 +129,7 @@ class WebSocketProxy
|
|||
break;
|
||||
|
||||
default:
|
||||
failure = new IllegalStateException();
|
||||
failure = new IllegalStateException(state.name());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -161,7 +161,7 @@ class WebSocketProxy
|
|||
break;
|
||||
|
||||
default:
|
||||
failure = new IllegalStateException();
|
||||
failure = new IllegalStateException(state.name());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -203,7 +203,7 @@ class WebSocketProxy
|
|||
break;
|
||||
|
||||
default:
|
||||
failure = new IllegalStateException();
|
||||
failure = new IllegalStateException(state.name());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -333,7 +333,7 @@ class WebSocketProxy
|
|||
break;
|
||||
|
||||
default:
|
||||
failure = new IllegalStateException();
|
||||
failure = new IllegalStateException(state.name());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -406,7 +406,7 @@ class WebSocketProxy
|
|||
|
||||
default:
|
||||
state = State.FAILED;
|
||||
error = new IllegalStateException();
|
||||
error = new IllegalStateException(state.name());
|
||||
failure = error;
|
||||
break;
|
||||
}
|
||||
|
@ -435,7 +435,7 @@ class WebSocketProxy
|
|||
|
||||
default:
|
||||
state = State.FAILED;
|
||||
error = new IllegalStateException();
|
||||
error = new IllegalStateException(state.name());
|
||||
failure = error;
|
||||
break;
|
||||
}
|
||||
|
@ -468,7 +468,7 @@ class WebSocketProxy
|
|||
|
||||
default:
|
||||
state = State.FAILED;
|
||||
error = new IllegalStateException();
|
||||
error = new IllegalStateException(state.name());
|
||||
failure = error;
|
||||
break;
|
||||
}
|
||||
|
@ -498,7 +498,7 @@ class WebSocketProxy
|
|||
break;
|
||||
|
||||
default:
|
||||
failure = new IllegalStateException();
|
||||
failure = new IllegalStateException(state.name());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -541,7 +541,7 @@ class WebSocketProxy
|
|||
break;
|
||||
|
||||
default:
|
||||
failure = new IllegalStateException();
|
||||
failure = new IllegalStateException(state.name());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -671,7 +671,7 @@ class WebSocketProxy
|
|||
break;
|
||||
|
||||
default:
|
||||
failure = new IllegalStateException();
|
||||
failure = new IllegalStateException(state.name());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,11 +21,11 @@ package org.eclipse.jetty.websocket.core.proxy;
|
|||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.time.Duration;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
|
@ -58,23 +58,22 @@ import static org.hamcrest.MatcherAssert.assertThat;
|
|||
import static org.hamcrest.Matchers.containsString;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
public class WebSocketProxyTest
|
||||
{
|
||||
// Port chosen to (hopefully) not conflict with existing servers on your test machine.
|
||||
// So don't choose ports like 8080, 9090, 8888, etc.
|
||||
private static final int PROXY_PORT = 49999;
|
||||
private Server _server;
|
||||
private WebSocketCoreClient _client;
|
||||
private WebSocketProxy proxy;
|
||||
private EchoFrameHandler serverFrameHandler;
|
||||
private TestHandler testHandler;
|
||||
Configuration.ConfigurationCustomizer defaultCustomizer;
|
||||
private Configuration.ConfigurationCustomizer defaultCustomizer;
|
||||
private URI proxyUri;
|
||||
|
||||
private class TestHandler extends AbstractHandler
|
||||
private static class TestHandler extends AbstractHandler
|
||||
{
|
||||
public void blockServerUpgradeRequests()
|
||||
{
|
||||
|
@ -84,7 +83,7 @@ public class WebSocketProxyTest
|
|||
public boolean blockServerUpgradeRequests = false;
|
||||
|
||||
@Override
|
||||
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
|
||||
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException
|
||||
{
|
||||
if (baseRequest.getHeader("Upgrade") != null)
|
||||
{
|
||||
|
@ -102,7 +101,6 @@ public class WebSocketProxyTest
|
|||
{
|
||||
_server = new Server();
|
||||
ServerConnector connector = new ServerConnector(_server);
|
||||
connector.setPort(PROXY_PORT);
|
||||
_server.addConnector(connector);
|
||||
|
||||
HandlerList handlers = new HandlerList();
|
||||
|
@ -119,12 +117,7 @@ public class WebSocketProxyTest
|
|||
serverContext.setHandler(upgradeHandler);
|
||||
handlers.addHandler(serverContext);
|
||||
|
||||
_client = new WebSocketCoreClient();
|
||||
_client.start();
|
||||
URI uri = new URI("ws://localhost:" + PROXY_PORT + "/server/");
|
||||
|
||||
ContextHandler proxyContext = new ContextHandler("/proxy");
|
||||
proxy = new WebSocketProxy(_client, uri);
|
||||
negotiator = WebSocketNegotiator.from((negotiation) -> proxy.client2Proxy, defaultCustomizer);
|
||||
upgradeHandler = new WebSocketUpgradeHandler(negotiator);
|
||||
proxyContext.setHandler(upgradeHandler);
|
||||
|
@ -132,6 +125,12 @@ public class WebSocketProxyTest
|
|||
|
||||
_server.setHandler(handlers);
|
||||
_server.start();
|
||||
_client = new WebSocketCoreClient();
|
||||
_client.start();
|
||||
|
||||
URI uri = new URI("ws://localhost:" + connector.getLocalPort());
|
||||
proxyUri = uri.resolve("/proxy");
|
||||
proxy = new WebSocketProxy(_client, uri.resolve("/server"));
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
|
@ -144,14 +143,10 @@ public class WebSocketProxyTest
|
|||
public void awaitProxyClose(WebSocketProxy.Client2Proxy client2Proxy, WebSocketProxy.Server2Proxy server2Proxy) throws Exception
|
||||
{
|
||||
if (client2Proxy != null && !client2Proxy.closed.await(5, TimeUnit.SECONDS))
|
||||
{
|
||||
throw new TimeoutException("client2Proxy close timeout");
|
||||
}
|
||||
|
||||
if (server2Proxy != null && !server2Proxy.closed.await(5, TimeUnit.SECONDS))
|
||||
{
|
||||
throw new TimeoutException("server2Proxy close timeout");
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -161,7 +156,7 @@ public class WebSocketProxyTest
|
|||
WebSocketProxy.Client2Proxy proxyClientSide = proxy.client2Proxy;
|
||||
WebSocketProxy.Server2Proxy proxyServerSide = proxy.server2Proxy;
|
||||
|
||||
CoreClientUpgradeRequest upgradeRequest = CoreClientUpgradeRequest.from(_client, new URI("ws://localhost:" + PROXY_PORT + "/proxy/"), clientFrameHandler);
|
||||
CoreClientUpgradeRequest upgradeRequest = CoreClientUpgradeRequest.from(_client, proxyUri, clientFrameHandler);
|
||||
upgradeRequest.setConfiguration(defaultCustomizer);
|
||||
CompletableFuture<CoreSession> response = _client.connect(upgradeRequest);
|
||||
|
||||
|
@ -175,10 +170,10 @@ public class WebSocketProxyTest
|
|||
assertThat(proxyClientSide.getState(), is(WebSocketProxy.State.CLOSED));
|
||||
assertThat(proxyServerSide.getState(), is(WebSocketProxy.State.CLOSED));
|
||||
|
||||
assertThat(proxyClientSide.receivedFrames.poll().getPayloadAsUTF8(), is("hello world"));
|
||||
assertThat(serverFrameHandler.receivedFrames.poll().getPayloadAsUTF8(), is("hello world"));
|
||||
assertThat(proxyServerSide.receivedFrames.poll().getPayloadAsUTF8(), is("hello world"));
|
||||
assertThat(clientFrameHandler.receivedFrames.poll().getPayloadAsUTF8(), is("hello world"));
|
||||
assertThat(Objects.requireNonNull(proxyClientSide.receivedFrames.poll()).getPayloadAsUTF8(), is("hello world"));
|
||||
assertThat(Objects.requireNonNull(serverFrameHandler.receivedFrames.poll()).getPayloadAsUTF8(), is("hello world"));
|
||||
assertThat(Objects.requireNonNull(proxyServerSide.receivedFrames.poll()).getPayloadAsUTF8(), is("hello world"));
|
||||
assertThat(Objects.requireNonNull(clientFrameHandler.receivedFrames.poll()).getPayloadAsUTF8(), is("hello world"));
|
||||
|
||||
assertThat(CloseStatus.getCloseStatus(proxyClientSide.receivedFrames.poll()).getReason(), is("standard close"));
|
||||
assertThat(CloseStatus.getCloseStatus(serverFrameHandler.receivedFrames.poll()).getReason(), is("standard close"));
|
||||
|
@ -199,9 +194,9 @@ public class WebSocketProxyTest
|
|||
WebSocketProxy.Server2Proxy proxyServerSide = proxy.server2Proxy;
|
||||
|
||||
TestAsyncFrameHandler clientFrameHandler = new TestAsyncFrameHandler("CLIENT");
|
||||
try (StacklessLogging stacklessLogging = new StacklessLogging(WebSocketCoreSession.class))
|
||||
try (StacklessLogging ignored = new StacklessLogging(WebSocketCoreSession.class))
|
||||
{
|
||||
CoreClientUpgradeRequest upgradeRequest = CoreClientUpgradeRequest.from(_client, new URI("ws://localhost:" + PROXY_PORT + "/proxy/"), clientFrameHandler);
|
||||
CoreClientUpgradeRequest upgradeRequest = CoreClientUpgradeRequest.from(_client, proxyUri, clientFrameHandler);
|
||||
upgradeRequest.setConfiguration(defaultCustomizer);
|
||||
CompletableFuture<CoreSession> response = _client.connect(upgradeRequest);
|
||||
response.get(5, TimeUnit.SECONDS);
|
||||
|
@ -238,9 +233,9 @@ public class WebSocketProxyTest
|
|||
WebSocketProxy.Client2Proxy proxyClientSide = proxy.client2Proxy;
|
||||
WebSocketProxy.Server2Proxy proxyServerSide = proxy.server2Proxy;
|
||||
|
||||
try (StacklessLogging stacklessLogging = new StacklessLogging(WebSocketCoreSession.class))
|
||||
try (StacklessLogging ignored = new StacklessLogging(WebSocketCoreSession.class))
|
||||
{
|
||||
CoreClientUpgradeRequest upgradeRequest = CoreClientUpgradeRequest.from(_client, new URI("ws://localhost:" + PROXY_PORT + "/proxy/"), clientFrameHandler);
|
||||
CoreClientUpgradeRequest upgradeRequest = CoreClientUpgradeRequest.from(_client, proxyUri, clientFrameHandler);
|
||||
upgradeRequest.setConfiguration(defaultCustomizer);
|
||||
CompletableFuture<CoreSession> response = _client.connect(upgradeRequest);
|
||||
Exception e = assertThrows(ExecutionException.class, () -> response.get(5, TimeUnit.SECONDS));
|
||||
|
@ -271,7 +266,7 @@ public class WebSocketProxyTest
|
|||
WebSocketProxy.Server2Proxy proxyServerSide = proxy.server2Proxy;
|
||||
|
||||
TestAsyncFrameHandler clientFrameHandler = new TestAsyncFrameHandler("CLIENT");
|
||||
CoreClientUpgradeRequest upgradeRequest = CoreClientUpgradeRequest.from(_client, new URI("ws://localhost:" + PROXY_PORT + "/proxy/"), clientFrameHandler);
|
||||
CoreClientUpgradeRequest upgradeRequest = CoreClientUpgradeRequest.from(_client, proxyUri, clientFrameHandler);
|
||||
upgradeRequest.setConfiguration(defaultCustomizer);
|
||||
CompletableFuture<CoreSession> response = _client.connect(upgradeRequest);
|
||||
|
||||
|
@ -286,11 +281,13 @@ public class WebSocketProxyTest
|
|||
|
||||
// Client2Proxy
|
||||
frame = proxyClientSide.receivedFrames.poll();
|
||||
assertNotNull(frame);
|
||||
assertThat(frame.getOpCode(), is(OpCode.TEXT));
|
||||
assertThat(frame.getPayloadAsUTF8(), is("hello world"));
|
||||
|
||||
// Server
|
||||
frame = serverFrameHandler.receivedFrames.poll();
|
||||
assertNotNull(frame);
|
||||
assertThat(frame.getOpCode(), is(OpCode.TEXT));
|
||||
assertThat(frame.getPayloadAsUTF8(), is("hello world"));
|
||||
frame = serverFrameHandler.receivedFrames.poll();
|
||||
|
@ -298,12 +295,14 @@ public class WebSocketProxyTest
|
|||
|
||||
// Server2Proxy
|
||||
frame = proxyServerSide.receivedFrames.poll();
|
||||
assertNotNull(frame);
|
||||
closeStatus = CloseStatus.getCloseStatus(frame);
|
||||
assertThat(closeStatus.getCode(), is(CloseStatus.SERVER_ERROR));
|
||||
assertThat(closeStatus.getReason(), is("intentionally throwing in server onFrame()"));
|
||||
|
||||
// Client
|
||||
frame = clientFrameHandler.receivedFrames.poll();
|
||||
assertNotNull(frame);
|
||||
closeStatus = CloseStatus.getCloseStatus(frame);
|
||||
assertThat(closeStatus.getCode(), is(CloseStatus.SERVER_ERROR));
|
||||
assertThat(closeStatus.getReason(), is("intentionally throwing in server onFrame()"));
|
||||
|
@ -335,7 +334,7 @@ public class WebSocketProxyTest
|
|||
}
|
||||
};
|
||||
|
||||
CoreClientUpgradeRequest upgradeRequest = CoreClientUpgradeRequest.from(_client, new URI("ws://localhost:" + PROXY_PORT + "/proxy/"), clientFrameHandler);
|
||||
CoreClientUpgradeRequest upgradeRequest = CoreClientUpgradeRequest.from(_client, proxyUri, clientFrameHandler);
|
||||
upgradeRequest.setConfiguration(defaultCustomizer);
|
||||
CompletableFuture<CoreSession> response = _client.connect(upgradeRequest);
|
||||
response.get(5, TimeUnit.SECONDS);
|
||||
|
@ -349,11 +348,13 @@ public class WebSocketProxyTest
|
|||
|
||||
// Client2Proxy
|
||||
frame = proxyClientSide.receivedFrames.poll();
|
||||
assertNotNull(frame);
|
||||
assertThat(frame.getOpCode(), is(OpCode.TEXT));
|
||||
assertThat(frame.getPayloadAsUTF8(), is("hello world"));
|
||||
|
||||
// Server
|
||||
frame = serverFrameHandler.receivedFrames.poll();
|
||||
assertNotNull(frame);
|
||||
assertThat(frame.getOpCode(), is(OpCode.TEXT));
|
||||
assertThat(frame.getPayloadAsUTF8(), is("hello world"));
|
||||
assertNull(serverFrameHandler.receivedFrames.poll());
|
||||
|
|
Loading…
Reference in New Issue