public Buffer generateHTML(int sz) { final Buffer buffer = Buffer.buffer(); buffer.appendString("<!DOCTYPE html>"); buffer.appendString("<html>"); buffer.appendString("<head>"); buffer.appendString("<title>H2 test</title>"); buffer.appendString("<style>" + "#wrap { width:" + width * sz + "px; height:" + height * sz + "px };" + ".row { width:" + width * sz + "px }" + "img { margin:0; padding:0; border:none; float:left; width: " + sz + "px; height: " + sz + "px }" + "</style>"); buffer.appendString("</head>"); buffer.appendString("<body><div id=\"wrap\">"); for (int i = 0; i < height; i++) { buffer.appendString("<div class=\"row\">"); for (int j = 0; j < width; j++) { buffer.appendString("<img src=\"/img/" + j + "/" + i + "\">"); } buffer.appendString("</div>"); } buffer.appendString("</div></body>"); buffer.appendString("</html>"); return buffer; }
@Override public void writeToBuffer(Buffer buffer) { buffer.appendInt(str.length()); buffer.appendString(str); }
@Override public void encodeToWire(Buffer buffer, CustomMessage customMessage) { // Easiest ways is using JSON object JsonObject jsonToEncode = new JsonObject(); jsonToEncode.put("statusCode", customMessage.getStatusCode()); jsonToEncode.put("resultCode", customMessage.getResultCode()); jsonToEncode.put("summary", customMessage.getSummary()); // Encode object to string String jsonToStr = jsonToEncode.encode(); // Length of JSON: is NOT characters count int length = jsonToStr.getBytes().length; // Write data into given buffer buffer.appendInt(length); buffer.appendString(jsonToStr); }
private NetSocket handshake(HttpServerRequest req) { NetSocket so = req.netSocket(); try { MessageDigest digest = MessageDigest.getInstance("SHA-1"); byte[] inputBytes = (req.getHeader("Sec-WebSocket-Key") + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11").getBytes(); digest.update(inputBytes); byte[] hashedBytes = digest.digest(); byte[] accept = Base64.getEncoder().encode(hashedBytes); Buffer data = Buffer.buffer(); data.appendString("HTTP/1.1 101 Switching Protocols\r\n"); data.appendString("Upgrade: websocket\r\n"); data.appendString("Connection: upgrade\r\n"); data.appendString("Sec-WebSocket-Accept: " + new String(accept) + "\r\n"); data.appendString("\r\n"); so.write(data); return so; } catch (NoSuchAlgorithmException e) { req.response().setStatusCode(500).end(); fail(e.getMessage()); return null; } }
@Test public void testAppendString1() throws Exception { String str = TestUtils.randomUnicodeString(100); byte[] sb = str.getBytes("UTF-8"); Buffer b = Buffer.buffer(); b.appendString(str); assertEquals(b.length(), sb.length); assertTrue(str.equals(b.toString("UTF-8"))); assertTrue(str.equals(b.toString(StandardCharsets.UTF_8))); assertNullPointerException(() -> b.appendString(null)); assertNullPointerException(() -> b.appendString(null, "UTF-8")); assertNullPointerException(() -> b.appendString("", null)); }
buff.appendByte((byte) 0x01); // Incomplete Text frame buff.appendByte((byte) firstFrame.length()); buff.appendString(firstFrame); sock.write(buff); buff.appendByte((byte) (0x00 | 0x80)); // Complete continuation frame buff.appendByte((byte) continuationFrame.length()); buff.appendString(continuationFrame); sock.write(buff); });
@Test // Let's manually handle the websocket handshake and write a frame to the client public void testHandleWSManually() throws Exception { String path = "/some/path"; String message = "here is some text data"; server = vertx.createHttpServer(new HttpServerOptions().setPort(DEFAULT_HTTP_PORT)).requestHandler(req -> { NetSocket sock = getUpgradedNetSocket(req, path); // Let's write a Text frame raw Buffer buff = Buffer.buffer(); buff.appendByte((byte)129); // Text frame buff.appendByte((byte)message.length()); buff.appendString(message); sock.write(buff); }); server.listen(ar -> { assertTrue(ar.succeeded()); client.websocketStream(DEFAULT_HTTP_PORT, HttpTestBase.DEFAULT_HTTP_HOST, path). handler(ws -> { ws.handler(buff -> { assertEquals(message, buff.toString("UTF-8")); testComplete(); }); }); }); await(); }
} else { count.incrementAndGet(); expected.appendString(chunk); req.write(chunk); sent.addAndGet(chunk.length());
private Buffer boundaryEndInfo(String boundary) { return Buffer.buffer() .appendString("\r\n") .appendString("--" + boundary + "--\r\n"); }
@Test public void testDirect() { Buffer buff = Buffer.factory.directBuffer("hello world".getBytes()); assertEquals("hello world", buff.toString()); buff.appendString(" foobar"); assertEquals("hello world foobar", buff.toString()); ByteBuf bb = buff.getByteBuf().unwrap(); assertTrue(bb.isDirect()); assertTrue(bb.release()); try { // Check it's deallocated buff.toString(); fail(); } catch (IllegalReferenceCountException e) { } } }
@Test public void testServerPipeliningConnectionConcurrency() throws Exception { int n = 5; boolean[] processing = {false}; int[] count = {0}; server.requestHandler(req -> { count[0]++; assertFalse(processing[0]); processing[0] = true; vertx.setTimer(20, id -> { processing[0] = false; HttpServerResponse resp = req.response(); resp.end(); if (count[0] == n) { resp.close(); } }); }); startServer(); Buffer requests = Buffer.buffer(); for (int i = 0;i < n;i++) { requests.appendString("GET " + DEFAULT_TEST_URI + " HTTP/1.1\r\n\r\n"); } NetClient client = vertx.createNetClient(); client.connect(DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, onSuccess(so -> { so.closeHandler(v -> testComplete()); so.write(requests); })); await(); }
@Test public void testSlice1() throws Exception { Buffer buff = TestUtils.randomBuffer(100); Buffer sliced = buff.slice(); assertEquals(buff, sliced); long rand = TestUtils.randomLong(); sliced.setLong(0, rand); assertEquals(rand, buff.getLong(0)); buff.appendString(TestUtils.randomUnicodeString(100)); assertEquals(100, sliced.length()); }
Buffer buffer = Buffer.buffer(); buffer.appendString("framework=" + URLEncoder.encode("vert x", "UTF-8") + "&runson=jvm", "UTF-8"); req.headers().set("content-length", String.valueOf(buffer.length())); req.headers().set("content-type", "application/x-www-form-urlencoded");
})); Buffer buffer = Buffer.buffer(); buffer.appendString("origin=junit-testUserAlias&login=admin%40foo.bar&pass+word=admin"); req.headers().set("content-length", String.valueOf(buffer.length())); req.headers().set("content-type", "application/x-www-form-urlencoded");
@Test public void testSlice2() throws Exception { Buffer buff = TestUtils.randomBuffer(100); Buffer sliced = buff.slice(10, 20); for (int i = 0; i < 10; i++) { assertEquals(buff.getByte(10 + i), sliced.getByte(i)); } long rand = TestUtils.randomLong(); sliced.setLong(0, rand); assertEquals(rand, buff.getLong(10)); buff.appendString(TestUtils.randomUnicodeString(100)); assertEquals(10, sliced.length()); }
log.debug("got request: " + toHex(buffer3)); Buffer authReply = Buffer.buffer(new byte[] { 1, (byte) username.length() }); authReply.appendString(username); authReply.appendByte((byte) username.length()); authReply.appendString(username); if (!buffer3.equals(authReply)) { log.debug("expected " + toHex(authReply) + ", got " + toHex(buffer3));
"--" + boundary + "--\r\n"; buffer.appendString(body); req.headers().set("content-length", String.valueOf(buffer.length())); req.headers().set("content-type", "multipart/form-data; boundary=" + boundary);
@Override public void writeToBuffer(Buffer buffer) { buffer.appendInt(str.length()); buffer.appendString(str); }
@Test public void testSlice1() throws Exception { Buffer buff = TestUtils.randomBuffer(100); Buffer sliced = buff.slice(); assertEquals(buff, sliced); long rand = TestUtils.randomLong(); sliced.setLong(0, rand); assertEquals(rand, buff.getLong(0)); buff.appendString(TestUtils.randomUnicodeString(100)); assertEquals(100, sliced.length()); }
@Test public void testSlice2() throws Exception { Buffer buff = TestUtils.randomBuffer(100); Buffer sliced = buff.slice(10, 20); for (int i = 0; i < 10; i++) { assertEquals(buff.getByte(10 + i), sliced.getByte(i)); } long rand = TestUtils.randomLong(); sliced.setLong(0, rand); assertEquals(rand, buff.getLong(10)); buff.appendString(TestUtils.randomUnicodeString(100)); assertEquals(10, sliced.length()); }