aboutsummaryrefslogtreecommitdiffstats
path: root/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/Http2Test.java
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-08-16 17:28:57 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-08-16 17:28:57 +0200
commitadeadc8f1561bb7e6c144afe72ee05fe793c9c63 (patch)
tree684b7154bc9c884eef5c3dd1d5aeaf4bffebbde5 /container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/Http2Test.java
parenta14d9247d3d0ab191e3928b53689beb04349b191 (diff)
Add unit test for HTTP/2 Plain Text
Move HTTP/2 tests to separate test class. Move helper method for creating client to Utils.
Diffstat (limited to 'container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/Http2Test.java')
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/Http2Test.java67
1 files changed, 67 insertions, 0 deletions
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/Http2Test.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/Http2Test.java
new file mode 100644
index 00000000000..40b1881bc49
--- /dev/null
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/Http2Test.java
@@ -0,0 +1,67 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.jdisc.http.server.jetty;
+
+import com.yahoo.container.logging.ConnectionLog;
+import com.yahoo.container.logging.ConnectionLogEntry;
+import com.yahoo.jdisc.http.ConnectorConfig;
+import com.yahoo.jdisc.http.ServerConfig;
+import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
+import org.apache.hc.client5.http.async.methods.SimpleRequestBuilder;
+import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
+import java.nio.file.Path;
+
+import static com.yahoo.jdisc.Response.Status.OK;
+import static com.yahoo.jdisc.http.server.jetty.Utils.createHttp2Client;
+import static com.yahoo.jdisc.http.server.jetty.Utils.createSslTestDriver;
+import static com.yahoo.jdisc.http.server.jetty.Utils.generatePrivateKeyAndCertificate;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * @author bjorncs
+ */
+class Http2Test {
+ @Test
+ void requireThatServerCanRespondToHttp2Request(@TempDir Path tmpFolder) throws Exception {
+ Path privateKeyFile = tmpFolder.resolve("private-key.pem");
+ Path certificateFile = tmpFolder.resolve("certificate.pem");
+ generatePrivateKeyAndCertificate(privateKeyFile, certificateFile);
+
+ MetricConsumerMock metricConsumer = new MetricConsumerMock();
+ InMemoryConnectionLog connectionLog = new InMemoryConnectionLog();
+ JettyTestDriver driver = createSslTestDriver(certificateFile, privateKeyFile, metricConsumer, connectionLog);
+ try (CloseableHttpAsyncClient client = createHttp2Client(driver)) {
+ String uri = "https://localhost:" + driver.server().getListenPort() + "/status.html";
+ SimpleHttpResponse response = client.execute(SimpleRequestBuilder.get(uri).build(), null).get();
+ assertNull(response.getBodyText());
+ assertEquals(OK, response.getCode());
+ }
+ assertTrue(driver.close());
+ ConnectionLogEntry entry = connectionLog.logEntries().get(0);
+ assertEquals("HTTP/2.0", entry.httpProtocol().get());
+ }
+
+ @Test
+ void requireThatServerCanRespondToHttp2PlainTextRequest() throws Exception {
+ InMemoryConnectionLog connectionLog = new InMemoryConnectionLog();
+ JettyTestDriver driver = JettyTestDriver.newConfiguredInstance(
+ new EchoRequestHandler(),
+ new ServerConfig.Builder().connectionLog(new ServerConfig.ConnectionLog.Builder().enabled(true)),
+ new ConnectorConfig.Builder(),
+ binder -> binder.bind(ConnectionLog.class).toInstance(connectionLog));
+ try (CloseableHttpAsyncClient client = createHttp2Client(driver)) {
+ String uri = "http://localhost:" + driver.server().getListenPort() + "/status.html";
+ SimpleHttpResponse response = client.execute(SimpleRequestBuilder.get(uri).build(), null).get();
+ assertNull(response.getBodyText());
+ assertEquals(OK, response.getCode());
+ }
+ assertTrue(driver.close());
+ ConnectionLogEntry entry = connectionLog.logEntries().get(0);
+ assertEquals("HTTP/2.0", entry.httpProtocol().get());
+ }
+
+}