From ebcc210ccbe0fa5779555997967c743b3f21a359 Mon Sep 17 00:00:00 2001 From: Kay Werndli Date: Tue, 1 Oct 2024 14:15:43 +0300 Subject: [PATCH] 4.x: Move WriteBufferTest to correct module (#9276) --- .../webserver/tests/NoWriteBufferTest.java | 72 ++++++++++++++ .../webserver/http1/WriteBufferTest.java | 94 ------------------- 2 files changed, 72 insertions(+), 94 deletions(-) create mode 100644 webserver/tests/webserver/src/test/java/io/helidon/webserver/tests/NoWriteBufferTest.java delete mode 100644 webserver/webserver/src/test/java/io/helidon/webserver/http1/WriteBufferTest.java diff --git a/webserver/tests/webserver/src/test/java/io/helidon/webserver/tests/NoWriteBufferTest.java b/webserver/tests/webserver/src/test/java/io/helidon/webserver/tests/NoWriteBufferTest.java new file mode 100644 index 00000000000..3a35b701506 --- /dev/null +++ b/webserver/tests/webserver/src/test/java/io/helidon/webserver/tests/NoWriteBufferTest.java @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2024 Oracle and/or its affiliates. + * + * Licensed 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 io.helidon.webserver.tests; + +import io.helidon.http.Method; +import io.helidon.http.Status; +import io.helidon.webclient.api.HttpClientResponse; +import io.helidon.webclient.http1.Http1Client; +import io.helidon.webserver.WebServerConfig; +import io.helidon.webserver.http.HttpRules; +import io.helidon.webserver.http.ServerResponse; +import io.helidon.webserver.testing.junit5.ServerTest; +import io.helidon.webserver.testing.junit5.SetUpRoute; +import io.helidon.webserver.testing.junit5.SetUpServer; +import org.junit.jupiter.api.Test; + +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; + +/** + * Test that a simple response can be sent using the {@link ServerResponse#outputStream()} using no write buffer + * (i.e. the write buffer size was set to {@code 0}). + */ +@ServerTest +class NoWriteBufferTest { + private static final String RESPONSE = "Hello World!"; + + private final Http1Client client; + + NoWriteBufferTest(Http1Client client) { + this.client = client; + } + + @SetUpServer + static void setup(WebServerConfig.Builder builder) { + builder.writeBufferSize(0); + } + + @SetUpRoute + static void routing(HttpRules rules) { + rules.get("/", (req, res) -> { + try(OutputStream out = res.outputStream()) { + out.write(RESPONSE.getBytes(StandardCharsets.UTF_8)); + } + }); + } + + @Test + void noWriteBufferTest() throws Exception { + try (HttpClientResponse response = client.method(Method.GET).request()) { + assertThat(response.status(), is(Status.OK_200)); + assertThat(response.entity().as(String.class), is(RESPONSE)); + } + } +} diff --git a/webserver/webserver/src/test/java/io/helidon/webserver/http1/WriteBufferTest.java b/webserver/webserver/src/test/java/io/helidon/webserver/http1/WriteBufferTest.java deleted file mode 100644 index 8dfedcecb4a..00000000000 --- a/webserver/webserver/src/test/java/io/helidon/webserver/http1/WriteBufferTest.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2024 Oracle and/or its affiliates. - * - * Licensed 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 io.helidon.webserver.http1; - -import io.helidon.webserver.WebServer; -import io.helidon.webserver.http.Handler; -import io.helidon.webserver.http1.Http1ServerResponse.BlockingOutputStream; -import io.helidon.webserver.http1.Http1ServerResponse.ClosingBufferedOutputStream; -import org.junit.jupiter.api.Test; - -import java.io.OutputStream; -import java.net.HttpURLConnection; -import java.net.URI; -import java.net.URL; -import java.nio.charset.StandardCharsets; - -import io.helidon.webserver.http.ServerResponse; - -import static org.hamcrest.CoreMatchers.instanceOf; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; - -class WriteBufferTest { - - /** - * Test that a simple response can be sent using the {@link ServerResponse#outputStream()} using the default - * (non-zero) write buffer. - */ - @Test - void defaultWriteBufferTest() throws Exception { - String path = "/test"; - String response = "Hello World!"; - Handler handler = (req, res) -> { - try(OutputStream out = res.outputStream()) { - assertThat(out, instanceOf(ClosingBufferedOutputStream.class)); - out.write(response.getBytes(StandardCharsets.UTF_8)); - } - }; - WebServer server = WebServer.builder().port(0).routing(it -> it.get(path, handler)).build().start(); - try { - URL url = new URI("http://localhost:" + server.port() + path).toURL(); - HttpURLConnection conn = (HttpURLConnection)url.openConnection(); - conn.setRequestMethod("GET"); - assertThat(conn.getResponseCode(), is(200)); - String received = new String(conn.getInputStream().readAllBytes(), StandardCharsets.UTF_8); - assertThat(received, is(response)); - } finally { - server.stop(); - } - } - - /** - * Test that a simple response can be sent using the {@link ServerResponse#outputStream()} using no write buffer - * (i.e. the write buffer size was set to {@code 0}). - */ - @Test - void noWriteBufferTest() throws Exception { - String path = "/test"; - String response = "Hello World!"; - Handler handler = (req, res) -> { - try(OutputStream out = res.outputStream()) { - assertThat(out, instanceOf(BlockingOutputStream.class)); - out.write(response.getBytes(StandardCharsets.UTF_8)); - } - }; - WebServer server = WebServer.builder().port(0).writeBufferSize(0) - .routing(it -> it.get(path, handler)).build().start(); - try { - URL url = new URI("http://localhost:" + server.port() + path).toURL(); - HttpURLConnection conn = (HttpURLConnection)url.openConnection(); - conn.setRequestMethod("GET"); - assertThat(conn.getResponseCode(), is(200)); - String received = new String(conn.getInputStream().readAllBytes(), StandardCharsets.UTF_8); - assertThat(received, is(response)); - } finally { - server.stop(); - } - } - -}