summaryrefslogtreecommitdiffstats
path: root/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-01-14 16:09:27 +0100
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-01-14 16:09:29 +0100
commitbaf39043efa1eb7a6a324687d1f4ceb38a719b7e (patch)
treecc57cee90b0346672513feb188b856a3e2ec6a5d /jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server
parentf366c40aba7c826b6877edbf615d77db0a9123ce (diff)
Add skeleton for connection log unit test
Test will be expanded once connection log contains more details
Diffstat (limited to 'jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server')
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java18
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryConnectionLog.java25
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/TestDrivers.java33
3 files changed, 57 insertions, 19 deletions
diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java
index ba29bcae5cc..4a18c1e50c9 100644
--- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java
+++ b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java
@@ -5,12 +5,11 @@ import com.google.inject.AbstractModule;
import com.google.inject.Module;
import com.yahoo.container.logging.AccessLog;
import com.yahoo.container.logging.AccessLogEntry;
-import com.yahoo.jdisc.Metric;
+import com.yahoo.container.logging.ConnectionLog;
import com.yahoo.jdisc.References;
import com.yahoo.jdisc.Request;
import com.yahoo.jdisc.Response;
import com.yahoo.jdisc.application.BindingSetSelector;
-import com.yahoo.jdisc.application.MetricConsumer;
import com.yahoo.jdisc.handler.AbstractRequestHandler;
import com.yahoo.jdisc.handler.CompletionHandler;
import com.yahoo.jdisc.handler.ContentChannel;
@@ -35,6 +34,7 @@ import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.FormBodyPart;
import org.apache.http.entity.mime.content.StringBody;
+import org.assertj.core.api.Assertions;
import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.client.ProxyProtocolClientConnectionFactory.V1;
import org.eclipse.jetty.client.ProxyProtocolClientConnectionFactory.V2;
@@ -104,7 +104,6 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import static org.mockito.ArgumentMatchers.anyMap;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -811,6 +810,19 @@ public class HttpServerTest {
assertNotEquals(proxyLocalPort, clientPort);
}
+ @Test
+ public void requireThatConnectionIsTrackedInConnectionLog() throws Exception {
+ Path privateKeyFile = tmpFolder.newFile().toPath();
+ Path certificateFile = tmpFolder.newFile().toPath();
+ generatePrivateKeyAndCertificate(privateKeyFile, certificateFile);
+ InMemoryConnectionLog connectionLog = new InMemoryConnectionLog();
+ Module overrideModule = binder -> binder.bind(ConnectionLog.class).toInstance(connectionLog);
+ TestDriver driver = TestDrivers.newInstanceWithSsl(new EchoRequestHandler(), certificateFile, privateKeyFile, TlsClientAuth.NEED, overrideModule);
+ driver.client().get("/status.html");
+ assertTrue(driver.close());
+ Assertions.assertThat(connectionLog.logEntries()).hasSize(2); // For http connection upgraded to https
+ }
+
private ContentResponse sendJettyClientRequest(TestDriver testDriver, HttpClient client, Object tag)
throws InterruptedException, TimeoutException {
int maxAttempts = 3;
diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryConnectionLog.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryConnectionLog.java
new file mode 100644
index 00000000000..6d1baf0423f
--- /dev/null
+++ b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryConnectionLog.java
@@ -0,0 +1,25 @@
+// 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 java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+/**
+ * A {@link ConnectionLog} that aggregates log entries in memory
+ *
+ * @author bjorncs
+ */
+class InMemoryConnectionLog implements ConnectionLog {
+
+ private final List<ConnectionLogEntry> logEntries = new CopyOnWriteArrayList<>();
+
+ @Override
+ public void log(ConnectionLogEntry entry) {
+ logEntries.add(entry);
+ }
+
+ List<ConnectionLogEntry> logEntries() { return logEntries; }
+}
diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/TestDrivers.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/TestDrivers.java
index 86ea2e4d81d..aa72ff55ffe 100644
--- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/TestDrivers.java
+++ b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/TestDrivers.java
@@ -52,22 +52,23 @@ public class TestDrivers {
return TestDriver.newInstance(
JettyHttpServer.class,
requestHandler,
- newConfigModule(
- new ServerConfig.Builder(),
- new ConnectorConfig.Builder()
- .tlsClientAuthEnforcer(
- new ConnectorConfig.TlsClientAuthEnforcer.Builder()
- .enable(true)
- .pathWhitelist("/status.html"))
- .ssl(new ConnectorConfig.Ssl.Builder()
- .enabled(true)
- .clientAuth(tlsClientAuth == TlsClientAuth.NEED
- ? ConnectorConfig.Ssl.ClientAuth.Enum.NEED_AUTH
- : ConnectorConfig.Ssl.ClientAuth.Enum.WANT_AUTH)
- .privateKeyFile(privateKeyFile.toString())
- .certificateFile(certificateFile.toString())
- .caCertificateFile(certificateFile.toString())),
- Modules.combine(guiceModules)));
+ Modules.override(
+ newConfigModule(
+ new ServerConfig.Builder().connectionLog(new ServerConfig.ConnectionLog.Builder().enabled(true)),
+ new ConnectorConfig.Builder()
+ .tlsClientAuthEnforcer(
+ new ConnectorConfig.TlsClientAuthEnforcer.Builder()
+ .enable(true)
+ .pathWhitelist("/status.html"))
+ .ssl(new ConnectorConfig.Ssl.Builder()
+ .enabled(true)
+ .clientAuth(tlsClientAuth == TlsClientAuth.NEED
+ ? ConnectorConfig.Ssl.ClientAuth.Enum.NEED_AUTH
+ : ConnectorConfig.Ssl.ClientAuth.Enum.WANT_AUTH)
+ .privateKeyFile(privateKeyFile.toString())
+ .certificateFile(certificateFile.toString())
+ .caCertificateFile(certificateFile.toString()))))
+ .with(guiceModules));
}
private static Module newConfigModule(ServerConfig.Builder serverConfig,