use of io.vertx.core.http.HttpTestBase.DEFAULT_HTTP_HOST in project vert.x by eclipse.
the class WebSocketTest method testValidSubProtocol.
private void testValidSubProtocol(WebsocketVersion version) throws Exception {
String path = "/some/path";
List<String> clientSubProtocols = Arrays.asList("clientproto", "commonproto");
List<String> serverSubProtocols = Arrays.asList("serverproto", "commonproto");
Buffer buff = Buffer.buffer("AAA");
server = vertx.createHttpServer(new HttpServerOptions().setPort(DEFAULT_HTTP_PORT).setWebSocketSubProtocols(serverSubProtocols)).webSocketHandler(ws -> {
assertEquals(path, ws.path());
assertNull(ws.subProtocol());
ws.accept();
assertEquals("commonproto", ws.subProtocol());
ws.writeFrame(WebSocketFrame.binaryFrame(buff, true));
});
server.listen(onSuccess(s -> {
WebSocketConnectOptions options = new WebSocketConnectOptions().setPort(DEFAULT_HTTP_PORT).setHost(DEFAULT_HTTP_HOST).setURI(path).setVersion(version).setSubProtocols(clientSubProtocols);
client = vertx.createHttpClient();
client.webSocket(options, onSuccess(ws -> {
assertEquals("commonproto", ws.subProtocol());
final Buffer received = Buffer.buffer();
ws.handler(data -> {
received.appendBuffer(data);
if (received.length() == buff.length()) {
assertEquals(buff, received);
ws.close();
testComplete();
}
});
}));
}));
await();
}
use of io.vertx.core.http.HttpTestBase.DEFAULT_HTTP_HOST in project vert.x by eclipse.
the class WebSocketTest method testReceiveHttpResponseHeadersOnClient.
@Test
public void testReceiveHttpResponseHeadersOnClient() {
server = vertx.createHttpServer(new HttpServerOptions().setPort(DEFAULT_HTTP_PORT)).requestHandler(req -> {
handshakeWithCookie(req);
});
AtomicReference<WebSocket> webSocketRef = new AtomicReference<>();
server.listen(onSuccess(s -> {
client = vertx.createHttpClient();
client.webSocket(DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, "/some/path", onSuccess(ws -> {
MultiMap entries = ws.headers();
assertNotNull(entries);
assertFalse(entries.isEmpty());
assertEquals("websocket".toLowerCase(), entries.get("Upgrade").toLowerCase());
assertEquals("upgrade".toLowerCase(), entries.get("Connection").toLowerCase());
Set<String> cookiesToSet = new HashSet(entries.getAll("Set-Cookie"));
assertEquals(2, cookiesToSet.size());
assertTrue(cookiesToSet.contains("SERVERID=test-server-id"));
assertTrue(cookiesToSet.contains("JSONID=test-json-id"));
webSocketRef.set(ws);
vertx.runOnContext(v -> {
assertNull(ws.headers());
testComplete();
});
}));
}));
await();
}
use of io.vertx.core.http.HttpTestBase.DEFAULT_HTTP_HOST in project vert.x by eclipse.
the class WebSocketTest method testInvalidSubProtocol.
private void testInvalidSubProtocol(WebsocketVersion version) throws Exception {
String path = "/some/path";
String subProtocol = "myprotocol";
server = vertx.createHttpServer(new HttpServerOptions().setPort(DEFAULT_HTTP_PORT).addWebSocketSubProtocol("invalid")).webSocketHandler(ws -> {
});
WebSocketConnectOptions options = new WebSocketConnectOptions().setPort(DEFAULT_HTTP_PORT).setHost(DEFAULT_HTTP_HOST).setURI(path).setVersion(version).addSubProtocol(subProtocol);
server.listen(onSuccess(ar -> {
client = vertx.createHttpClient();
client.webSocket(options, onFailure(err -> {
// Should fail
testComplete();
}));
}));
await();
}
use of io.vertx.core.http.HttpTestBase.DEFAULT_HTTP_HOST in project vert.x by eclipse.
the class WebSocketTest method testServerCloseHandshake.
@Test
public void testServerCloseHandshake() {
short status = (short) (4000 + TestUtils.randomPositiveInt() % 100);
waitFor(2);
server = vertx.createHttpServer();
server.webSocketHandler(ws -> {
ws.closeHandler(sc -> {
assertEquals((Short) (short) status, ws.closeStatusCode());
complete();
});
});
server.listen(DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, onSuccess(v1 -> {
client = vertx.createHttpClient();
handshake(client, req -> {
req.send(onSuccess(resp -> {
assertEquals(101, resp.statusCode());
Http1xClientConnection conn = (Http1xClientConnection) req.connection();
NetSocketInternal soi = conn.toNetSocket();
soi.channelHandlerContext().pipeline().addBefore("handler", "encoder", new WebSocket13FrameEncoder(true));
soi.channelHandlerContext().pipeline().addBefore("handler", "decoder", new WebSocket13FrameDecoder(false, false, 1000));
String reason = randomAlphaString(10);
soi.writeMessage(new CloseWebSocketFrame(status, reason));
AtomicBoolean closeFrameReceived = new AtomicBoolean();
soi.messageHandler(msg -> {
try {
if (msg instanceof CloseWebSocketFrame) {
CloseWebSocketFrame frame = (CloseWebSocketFrame) msg;
assertEquals(status, frame.statusCode());
assertEquals(reason, frame.reasonText());
closeFrameReceived.set(true);
}
} finally {
ReferenceCountUtil.release(msg);
}
});
soi.closeHandler(v2 -> {
assertTrue(closeFrameReceived.get());
complete();
});
}));
});
}));
await();
}
use of io.vertx.core.http.HttpTestBase.DEFAULT_HTTP_HOST in project vert.x by eclipse.
the class HAProxyTest method testHttpWithoutHAProxySupport.
@Test
public void testHttpWithoutHAProxySupport() {
Vertx vertx = Vertx.vertx();
try {
vertx.createHttpServer(new HttpServerOptions().setUseProxyProtocol(true)).requestHandler(req -> {
req.response().end("hello");
}).listen(DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, onSuccess(s -> {
HttpClient client = vertx.createHttpClient();
client.request(HttpMethod.GET, DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, "/", onSuccess(req -> {
req.send(onSuccess(resp -> {
resp.body(onSuccess(body -> {
assertEquals("hello", body.toString());
testComplete();
}));
}));
}));
}));
await();
} finally {
vertx.close();
}
}
Aggregations