server.requestHandler(req -> { String key = keyExtractor.apply(req); assertFalse(map.containsKey(key)); map.put(key, req.response()); if (map.size() == numPeers) {
assertTrue(ar.succeeded()); ContextInternal closeContext = ((VertxInternal) vertx).getContext(); assertFalse(contexts.contains(closeContext)); assertNotSame(serverRequestContext.get(), closeContext); assertFalse(contexts.contains(listenContext.get())); assertSame(serverRequestContext.get(), listenContext.get()); testComplete();
@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 testDeferredRequestEnd() throws Exception { server.requestHandler(req -> { req.pause(); req.bodyHandler(body -> { assertTrue(req.isEnded()); req.response().end(body); }); vertx.setTimer(10, v -> { assertFalse(req.isEnded()); req.resume(); }); }); startServer(); Buffer expected = Buffer.buffer(TestUtils.randomAlphaString(1024)); client.post(DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, "/", onSuccess(resp -> { resp.bodyHandler(body -> { assertEquals(expected, body); testComplete(); }); })).end(expected); await(); }
@Test public void testHttp11PersistentConnectionNotClosed() throws Exception { client.close(); server.requestHandler(req -> { assertEquals(HttpVersion.HTTP_1_1, req.version()); assertNull(req.getHeader("Connection")); req.response().end(); assertFalse(req.response().closed()); }); server.listen(onSuccess(s -> { client = vertx.createHttpClient(new HttpClientOptions().setProtocolVersion(HttpVersion.HTTP_1_1).setKeepAlive(true)); HttpClientRequest req = client.request(HttpMethod.GET, DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, DEFAULT_TEST_URI, onSuccess(resp -> { resp.endHandler(v -> { assertNull(resp.getHeader("Connection")); assertEquals(resp.getHeader("Content-Length"), "0"); testComplete(); }); })); req.end(); })); await(); }
@Test public void testHttp10KeepAliveConnectionNotClosed() throws Exception { client.close(); server.requestHandler(req -> { assertEquals(HttpVersion.HTTP_1_0, req.version()); assertEquals(req.getHeader("Connection"), "keep-alive"); req.response().end(); assertFalse(req.response().closed()); }); server.listen(onSuccess(s -> { client = vertx.createHttpClient(new HttpClientOptions().setProtocolVersion(HttpVersion.HTTP_1_0).setKeepAlive(true)); HttpClientRequest req = client.request(HttpMethod.GET, DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, DEFAULT_TEST_URI, onSuccess(resp -> { resp.endHandler(v -> { assertEquals(resp.getHeader("Connection"), "keep-alive"); assertEquals(resp.getHeader("Content-Length"), "0"); testComplete(); }); })); req.end(); })); await(); }
assertFalse(options.isReuseAddress()); assertFalse(options.isTcpNoDelay()); assertIllegalArgumentException(() -> options.setSoLinger(-2)); assertFalse(options.isUsePooledBuffers()); assertEquals(options, options.setUsePooledBuffers(true)); assertTrue(options.isUsePooledBuffers()); assertIllegalArgumentException(() -> options.setIdleTimeout(-1)); assertFalse(options.isSsl()); assertEquals(options, options.setSsl(true)); assertTrue(options.isSsl()); assertFalse(options.isCompressionSupported()); assertEquals(options, options.setCompressionSupported(true)); assertTrue(options.isCompressionSupported()); assertFalse(options.isHandle100ContinueAutomatically()); assertEquals(options, options.setHandle100ContinueAutomatically(true)); assertTrue(options.isHandle100ContinueAutomatically()); assertFalse(options.isDecompressionSupported()); assertEquals(options, options.setDecompressionSupported(true)); assertTrue(options.isDecompressionSupported());
assertFalse(options.isReuseAddress()); assertFalse(options.isTcpNoDelay()); assertFalse(options.isUsePooledBuffers()); assertEquals(options, options.setUsePooledBuffers(true)); assertTrue(options.isUsePooledBuffers()); assertFalse(options.isSsl()); assertEquals(options, options.setSsl(true)); assertTrue(options.isSsl()); assertFalse(options.isTrustAll()); assertEquals(options, options.setTrustAll(true)); assertTrue(options.isTrustAll()); assertFalse(options.isVerifyHost()); assertFalse(options.isKeepAlive()); assertFalse(options.isPipelining()); assertEquals(options, options.setPipelining(true)); assertTrue(options.isPipelining()); assertFalse(options.isTryUseCompression()); assertEquals(options, options.setTryUseCompression(true)); assertEquals(true, options.isTryUseCompression());
server.requestHandler(req -> { String key = keyExtractor.apply(req); assertFalse(map.containsKey(key)); map.put(key, req.response()); if (map.size() == numPeers) {
assertTrue(ar.succeeded()); ContextInternal closeContext = ((VertxInternal) vertx).getContext(); assertFalse(contexts.contains(closeContext)); assertNotSame(serverRequestContext.get(), closeContext); assertFalse(contexts.contains(listenContext.get())); assertSame(serverRequestContext.get(), listenContext.get()); testComplete();
@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 testDeferredRequestEnd() throws Exception { server.requestHandler(req -> { req.pause(); req.bodyHandler(body -> { assertTrue(req.isEnded()); req.response().end(body); }); vertx.setTimer(10, v -> { assertFalse(req.isEnded()); req.resume(); }); }); startServer(); Buffer expected = Buffer.buffer(TestUtils.randomAlphaString(1024)); client.post(DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, "/", resp -> { resp.bodyHandler(body -> { assertEquals(expected, body); testComplete(); }); }).end(expected); await(); }
@Test public void testHttp11PersistentConnectionNotClosed() throws Exception { client.close(); server.requestHandler(req -> { assertEquals(HttpVersion.HTTP_1_1, req.version()); assertNull(req.getHeader("Connection")); req.response().end(); assertFalse(req.response().closed()); }); server.listen(onSuccess(s -> { client = vertx.createHttpClient(new HttpClientOptions().setProtocolVersion(HttpVersion.HTTP_1_1).setKeepAlive(true)); HttpClientRequest req = client.request(HttpMethod.GET, DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, DEFAULT_TEST_URI, resp -> { resp.endHandler(v -> { assertNull(resp.getHeader("Connection")); assertEquals(resp.getHeader("Content-Length"), "0"); testComplete(); }); }); req.end(); })); await(); }
@Test public void testHttp10KeepAliveConnectionNotClosed() throws Exception { client.close(); server.requestHandler(req -> { assertEquals(HttpVersion.HTTP_1_0, req.version()); assertEquals(req.getHeader("Connection"), "keep-alive"); req.response().end(); assertFalse(req.response().closed()); }); server.listen(onSuccess(s -> { client = vertx.createHttpClient(new HttpClientOptions().setProtocolVersion(HttpVersion.HTTP_1_0).setKeepAlive(true)); HttpClientRequest req = client.request(HttpMethod.GET, DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, DEFAULT_TEST_URI, resp -> { resp.endHandler(v -> { assertEquals(resp.getHeader("Connection"), "keep-alive"); assertEquals(resp.getHeader("Content-Length"), "0"); testComplete(); }); }); req.end(); })); await(); }
assertFalse(options.isReuseAddress()); assertFalse(options.isTcpNoDelay()); assertIllegalArgumentException(() -> options.setSoLinger(-2)); assertFalse(options.isUsePooledBuffers()); assertEquals(options, options.setUsePooledBuffers(true)); assertTrue(options.isUsePooledBuffers()); assertIllegalArgumentException(() -> options.setIdleTimeout(-1)); assertFalse(options.isSsl()); assertEquals(options, options.setSsl(true)); assertTrue(options.isSsl()); assertFalse(options.isCompressionSupported()); assertEquals(options, options.setCompressionSupported(true)); assertTrue(options.isCompressionSupported()); assertFalse(options.isHandle100ContinueAutomatically()); assertEquals(options, options.setHandle100ContinueAutomatically(true)); assertTrue(options.isHandle100ContinueAutomatically()); assertFalse(options.isDecompressionSupported()); assertEquals(options, options.setDecompressionSupported(true)); assertTrue(options.isDecompressionSupported());
assertFalse(options.isReuseAddress()); assertFalse(options.isTcpNoDelay()); assertFalse(options.isUsePooledBuffers()); assertEquals(options, options.setUsePooledBuffers(true)); assertTrue(options.isUsePooledBuffers()); assertFalse(options.isSsl()); assertEquals(options, options.setSsl(true)); assertTrue(options.isSsl()); assertFalse(options.isTrustAll()); assertEquals(options, options.setTrustAll(true)); assertTrue(options.isTrustAll()); assertFalse(options.isVerifyHost()); assertFalse(options.isKeepAlive()); assertFalse(options.isPipelining()); assertEquals(options, options.setPipelining(true)); assertTrue(options.isPipelining()); assertFalse(options.isTryUseCompression()); assertEquals(options, options.setTryUseCompression(true)); assertEquals(true, options.isTryUseCompression());