summaryrefslogtreecommitdiffstats
path: root/jdisc_http_service/src/test
diff options
context:
space:
mode:
authorMorten Tokle <morten.tokle@gmail.com>2021-01-22 09:02:47 +0100
committerGitHub <noreply@github.com>2021-01-22 09:02:47 +0100
commitd541d865632d59a6bff5c56d4d0a4eca351a5de7 (patch)
treebd0591551f6d95a494d9be5350cd418737b8d976 /jdisc_http_service/src/test
parent30e6d1f66187bd2d1c8cb50906da81fc841bc244 (diff)
Revert "Access log optimizations [run-systemtest]"
Diffstat (limited to 'jdisc_http_service/src/test')
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/container/logging/AccessLogSamplerTest.java62
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/container/logging/JSONLogTestCase.java140
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java80
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/FilterTestCase.java2
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerConformanceTest.java3
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java64
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryRequestLog.java20
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/TestDrivers.java2
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/ServletAccessLoggingTest.java16
9 files changed, 202 insertions, 187 deletions
diff --git a/jdisc_http_service/src/test/java/com/yahoo/container/logging/AccessLogSamplerTest.java b/jdisc_http_service/src/test/java/com/yahoo/container/logging/AccessLogSamplerTest.java
new file mode 100644
index 00000000000..32a55b4bb72
--- /dev/null
+++ b/jdisc_http_service/src/test/java/com/yahoo/container/logging/AccessLogSamplerTest.java
@@ -0,0 +1,62 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.container.logging;
+
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.hamcrest.CoreMatchers.hasItem;
+import static org.hamcrest.CoreMatchers.hasItems;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.Matchers.contains;
+import static org.junit.Assert.assertThat;
+
+public class AccessLogSamplerTest {
+
+ private final List<String> uris = new ArrayList<>();
+ private CircularArrayAccessLogKeeper circularArrayAccessLogKeeperMock = new CircularArrayAccessLogKeeper() {
+ @Override
+ public void addUri(String uri) {
+ uris.add(uri);
+ }
+ };
+ private AccessLogSampler accessLogSampler = new AccessLogSampler(circularArrayAccessLogKeeperMock);
+
+ @Test
+ public void testAFewLines() {
+ accessLogSampler.log(createLogEntry(200, "/search/foo"));
+ accessLogSampler.log(createLogEntry(500, "/search/bar"));
+ accessLogSampler.log(createLogEntry(500, "bar"));
+ accessLogSampler.log(createLogEntry(200, "/search/what"));
+ assertThat(uris, contains("/search/foo", "/search/what"));
+ }
+
+ @Test
+ public void testSubSampling() {
+ for (int i = 0; i < CircularArrayAccessLogKeeper.SIZE; i++) {
+ accessLogSampler.log(createLogEntry(200, "/search/" + String.valueOf(i)));
+ }
+ assertThat(uris.size(), is(CircularArrayAccessLogKeeper.SIZE));
+ assertThat(uris, hasItems("/search/0", "/search/1", "/search/2",
+ "/search/" + String.valueOf(CircularArrayAccessLogKeeper.SIZE - 1)));
+ uris.clear();
+ for (int i = 0; i < CircularArrayAccessLogKeeper.SIZE; i++) {
+ accessLogSampler.log(createLogEntry(200, "/search/fuzz"));
+ }
+ assertThat(uris, hasItem("/search/fuzz"));
+ assertThat(uris.size(), is(1));
+ for (int i = 0; i < CircularArrayAccessLogKeeper.SIZE; i++) {
+ accessLogSampler.log(createLogEntry(200, "/search/ball"));
+ }
+ assertThat(uris, hasItem("/search/ball"));
+ assertThat(uris.size(), is(2));
+ }
+
+ private AccessLogEntry createLogEntry(int statusCode, String uri) {
+ AccessLogEntry accessLogEntry = new AccessLogEntry();
+ accessLogEntry.setStatusCode(statusCode);
+ accessLogEntry.setRawPath(uri);
+ return accessLogEntry;
+ }
+}
diff --git a/jdisc_http_service/src/test/java/com/yahoo/container/logging/JSONLogTestCase.java b/jdisc_http_service/src/test/java/com/yahoo/container/logging/JSONLogTestCase.java
index f6a0d7418a0..703dcb95d95 100644
--- a/jdisc_http_service/src/test/java/com/yahoo/container/logging/JSONLogTestCase.java
+++ b/jdisc_http_service/src/test/java/com/yahoo/container/logging/JSONLogTestCase.java
@@ -6,10 +6,8 @@ import org.junit.Test;
import java.io.IOException;
import java.net.URI;
-import java.time.Duration;
-import java.time.Instant;
-import static com.yahoo.test.json.JsonTestHelper.assertJsonEquals;
+import static org.junit.Assert.assertEquals;
/**
@@ -21,25 +19,25 @@ public class JSONLogTestCase {
private static final String EMPTY_REFERRER = "";
private static final String EMPTY_USERAGENT = "";
- private RequestLogEntry.Builder newRequestLogEntry(final String query) {
- return newRequestLogEntry(query, new Coverage(100,100,100,0));
+ private AccessLogEntry newAccessLogEntry(final String query) {
+ return newAccessLogEntry(query, new Coverage(100,100,100,0));
}
- private RequestLogEntry.Builder newRequestLogEntry(final String query, Coverage coverage) {
- return new RequestLogEntry.Builder()
- .rawQuery("query=" + query)
- .rawPath("")
- .peerAddress(ipAddress)
- .httpMethod("GET")
- .httpVersion("HTTP/1.1")
- .userAgent("Mozilla/4.05 [en] (Win95; I)")
- .hitCounts(new HitCounts(0, 10, 1234, 0, 10, coverage))
- .hostString("localhost")
- .statusCode(200)
- .timestamp(Instant.ofEpochMilli(920880005023L))
- .duration(Duration.ofMillis(122))
- .contentSize(9875)
- .localPort(0)
- .peerPort(0);
+ private AccessLogEntry newAccessLogEntry(final String query, Coverage coverage) {
+ final AccessLogEntry entry = new AccessLogEntry();
+ entry.setRawQuery("query="+query);
+ entry.setRawPath("");
+ entry.setIpV4Address(ipAddress);
+ entry.setHttpMethod("GET");
+ entry.setHttpVersion("HTTP/1.1");
+ entry.setUserAgent("Mozilla/4.05 [en] (Win95; I)");
+ entry.setHitCounts(new HitCounts(0, 10, 1234, 0, 10, coverage));
+ entry.setHostString("localhost");
+ entry.setStatusCode(200);
+ entry.setTimeStamp(920880005023L);
+ entry.setDurationBetweenRequestResponse(122);
+ entry.setReturnedContentSize(9875);
+
+ return entry;
}
private static URI newQueryUri(final String query) {
@@ -48,11 +46,10 @@ public class JSONLogTestCase {
@Test
public void test_json_log_entry() throws Exception {
- RequestLogEntry entry = newRequestLogEntry("test").build();
+ AccessLogEntry entry = newAccessLogEntry("test");
String expectedOutput =
"{\"ip\":\"152.200.54.243\"," +
- "\"peeraddr\":\"152.200.54.243\"," +
"\"time\":920880005.023," +
"\"duration\":0.122," +
"\"responsesize\":9875," +
@@ -71,19 +68,17 @@ public class JSONLogTestCase {
"}" +
"}";
- assertJsonEquals(new JSONFormatter().format(entry), expectedOutput);
+ assertEquals(expectedOutput, new JSONFormatter().format(entry));
}
@Test
public void test_json_of_trace() throws IOException {
TraceNode root = new TraceNode("root", 7);
- RequestLogEntry entry = newRequestLogEntry("test")
- .traceNode(root)
- .build();
+ AccessLogEntry entry = newAccessLogEntry("test");
+ entry.setTrace(root);
String expectedOutput =
"{\"ip\":\"152.200.54.243\"," +
- "\"peeraddr\":\"152.200.54.243\"," +
"\"time\":920880005.023," +
"\"duration\":0.122," +
"\"responsesize\":9875," +
@@ -103,20 +98,18 @@ public class JSONLogTestCase {
"}" +
"}";
- assertJsonEquals(new JSONFormatter().format(entry), expectedOutput);
+ assertEquals(expectedOutput, new JSONFormatter().format(entry));
}
@Test
public void test_with_keyvalues() {
- RequestLogEntry entry = newRequestLogEntry("test")
- .addExtraAttribute("singlevalue", "value1")
- .addExtraAttribute("multivalue", "value2")
- .addExtraAttribute("multivalue", "value3")
- .build();
+ AccessLogEntry entry = newAccessLogEntry("test");
+ entry.addKeyValue("singlevalue", "value1");
+ entry.addKeyValue("multivalue", "value2");
+ entry.addKeyValue("multivalue", "value3");
String expectedOutput =
"{\"ip\":\"152.200.54.243\"," +
- "\"peeraddr\":\"152.200.54.243\"," +
"\"time\":920880005.023," +
"\"duration\":0.122," +
"\"responsesize\":9875," +
@@ -138,19 +131,19 @@ public class JSONLogTestCase {
"\"multivalue\":[\"value2\",\"value3\"]}" +
"}";
- assertJsonEquals(new JSONFormatter().format(entry), expectedOutput);
+ assertEquals(expectedOutput, new JSONFormatter().format(entry));
}
@Test
public void test_with_remoteaddrport() throws Exception {
- RequestLogEntry entry = newRequestLogEntry("test")
- .remoteAddress("FE80:0000:0000:0000:0202:B3FF:FE1E:8329")
- .build();
+ AccessLogEntry entry = newAccessLogEntry("test");
+
+ // First test with only remote address and not port set
+ entry.setRemoteAddress("FE80:0000:0000:0000:0202:B3FF:FE1E:8329");
String expectedOutput =
"{\"ip\":\"152.200.54.243\"," +
- "\"peeraddr\":\"152.200.54.243\"," +
"\"time\":920880005.023," +
"\"duration\":0.122," +
"\"responsesize\":9875," +
@@ -170,17 +163,13 @@ public class JSONLogTestCase {
"}" +
"}";
- assertJsonEquals(new JSONFormatter().format(entry), expectedOutput);
+ assertEquals(expectedOutput, new JSONFormatter().format(entry));
// Add remote port and verify
- entry = newRequestLogEntry("test")
- .remoteAddress("FE80:0000:0000:0000:0202:B3FF:FE1E:8329")
- .remotePort(1234)
- .build();
+ entry.setRemotePort(1234);
expectedOutput =
"{\"ip\":\"152.200.54.243\"," +
- "\"peeraddr\":\"152.200.54.243\"," +
"\"time\":920880005.023," +
"\"duration\":0.122," +
"\"responsesize\":9875," +
@@ -201,41 +190,36 @@ public class JSONLogTestCase {
"}" +
"}";
- assertJsonEquals(new JSONFormatter().format(entry), expectedOutput);
+ assertEquals(expectedOutput, new JSONFormatter().format(entry));
}
@Test
public void test_remote_address_same_as_ip_address() throws Exception {
- RequestLogEntry entry = newRequestLogEntry("test").build();
- RequestLogEntry entrywithremote = newRequestLogEntry("test")
- .remoteAddress(entry.peerAddress().get())
- .build();
+ AccessLogEntry entry = newAccessLogEntry("test");
+ AccessLogEntry entrywithremote = newAccessLogEntry("test");
+ entrywithremote.setRemoteAddress(entry.getIpV4Address());
JSONFormatter formatter = new JSONFormatter();
- assertJsonEquals(formatter.format(entry), formatter.format(entrywithremote));
+ assertEquals(formatter.format(entry), formatter.format(entrywithremote));
}
@Test
public void test_useragent_with_quotes() {
- RequestLogEntry entry = new RequestLogEntry.Builder()
- .rawQuery("query=test")
- .rawPath("")
- .peerAddress(ipAddress)
- .httpMethod("GET")
- .httpVersion("HTTP/1.1")
- .userAgent("Mozilla/4.05 [en] (Win95; I; \"Best Browser Ever\")")
- .hitCounts(new HitCounts(0, 10, 1234, 0, 10, new Coverage(100, 200, 200, 0)))
- .hostString("localhost")
- .statusCode(200)
- .timestamp(Instant.ofEpochMilli(920880005023L))
- .duration(Duration.ofMillis(122))
- .contentSize(9875)
- .localPort(0)
- .peerPort(0)
- .build();
+ final AccessLogEntry entry = new AccessLogEntry();
+ entry.setRawQuery("query=test");
+ entry.setRawPath("");
+ entry.setIpV4Address(ipAddress);
+ entry.setHttpMethod("GET");
+ entry.setHttpVersion("HTTP/1.1");
+ entry.setUserAgent("Mozilla/4.05 [en] (Win95; I; \"Best Browser Ever\")");
+ entry.setHitCounts(new HitCounts(0, 10, 1234, 0, 10, new Coverage(100,200,200,0)));
+ entry.setHostString("localhost");
+ entry.setStatusCode(200);
+ entry.setTimeStamp(920880005023L);
+ entry.setDurationBetweenRequestResponse(122);
+ entry.setReturnedContentSize(9875);
String expectedOutput =
"{\"ip\":\"152.200.54.243\"," +
- "\"peeraddr\":\"152.200.54.243\"," +
"\"time\":920880005.023," +
"\"duration\":0.122," +
"\"responsesize\":9875," +
@@ -254,13 +238,11 @@ public class JSONLogTestCase {
"}" +
"}";
- assertJsonEquals(new JSONFormatter().format(entry), expectedOutput);
+ assertEquals(expectedOutput, new JSONFormatter().format(entry));
}
- private void verifyCoverage(String coverage, RequestLogEntry entry) {
- assertJsonEquals(new JSONFormatter().format(entry),
- "{\"ip\":\"152.200.54.243\"," +
- "\"peeraddr\":\"152.200.54.243\"," +
+ private void verifyCoverage(String coverage, AccessLogEntry entry) {
+ assertEquals("{\"ip\":\"152.200.54.243\"," +
"\"time\":920880005.023," +
"\"duration\":0.122," +
"\"responsesize\":9875," +
@@ -277,18 +259,18 @@ public class JSONLogTestCase {
"\"hits\":0," +
coverage +
"}" +
- "}");
+ "}", new JSONFormatter().format(entry));
}
@Test
public void test_with_coverage_degradation() {
verifyCoverage("\"coverage\":{\"coverage\":50,\"documents\":100,\"degraded\":{\"non-ideal-state\":true}}",
- newRequestLogEntry("test", new Coverage(100,200,200,0)).build());
+ newAccessLogEntry("test", new Coverage(100,200,200,0)));
verifyCoverage("\"coverage\":{\"coverage\":50,\"documents\":100,\"degraded\":{\"match-phase\":true}}",
- newRequestLogEntry("test", new Coverage(100,200,200,1)).build());
+ newAccessLogEntry("test", new Coverage(100,200,200,1)));
verifyCoverage("\"coverage\":{\"coverage\":50,\"documents\":100,\"degraded\":{\"timeout\":true}}",
- newRequestLogEntry("test", new Coverage(100,200,200,2)).build());
+ newAccessLogEntry("test", new Coverage(100,200,200,2)));
verifyCoverage("\"coverage\":{\"coverage\":50,\"documents\":100,\"degraded\":{\"adaptive-timeout\":true}}",
- newRequestLogEntry("test", new Coverage(100,200,200,4)).build());
+ newAccessLogEntry("test", new Coverage(100,200,200,4)));
}
}
diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java
index c9b466517b3..a4fd7c9bc5f 100644
--- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java
+++ b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java
@@ -1,9 +1,8 @@
// Copyright 2017 Yahoo Holdings. 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.AccessLog;
import com.yahoo.container.logging.AccessLogEntry;
-import com.yahoo.container.logging.RequestLog;
-import com.yahoo.container.logging.RequestLogEntry;
import com.yahoo.jdisc.http.ServerConfig;
import org.eclipse.jetty.http.MetaData;
import org.eclipse.jetty.server.HttpChannel;
@@ -20,7 +19,6 @@ import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -32,115 +30,103 @@ import static org.mockito.Mockito.when;
public class AccessLogRequestLogTest {
@Test
public void requireThatQueryWithUnquotedSpecialCharactersIsHandled() {
- final Request jettyRequest = createRequestMock();
+ final AccessLogEntry accessLogEntry = new AccessLogEntry();
+ final Request jettyRequest = createRequestMock(accessLogEntry);
when(jettyRequest.getRequestURI()).thenReturn("/search/");
when(jettyRequest.getQueryString()).thenReturn("query=year:>2010");
- InMemoryRequestLog requestLog = new InMemoryRequestLog();
- doAccessLoggingOfRequest(requestLog, jettyRequest);
- RequestLogEntry entry = requestLog.entries().get(0);
+ doAccessLoggingOfRequest(jettyRequest);
- assertThat(entry.rawPath().get(), is(not(nullValue())));
- assertTrue(entry.rawQuery().isPresent());
+ assertThat(accessLogEntry.getRawPath(), is(not(nullValue())));
+ assertTrue(accessLogEntry.getRawQuery().isPresent());
}
@Test
public void requireThatDoubleQuotingIsNotPerformed() {
- final Request jettyRequest = createRequestMock();
+ final AccessLogEntry accessLogEntry = new AccessLogEntry();
+ final Request jettyRequest = createRequestMock(accessLogEntry);
final String path = "/search/";
when(jettyRequest.getRequestURI()).thenReturn(path);
final String query = "query=year%252010+%3B&customParameter=something";
when(jettyRequest.getQueryString()).thenReturn(query);
- InMemoryRequestLog requestLog = new InMemoryRequestLog();
- doAccessLoggingOfRequest(requestLog, jettyRequest);
- RequestLogEntry entry = requestLog.entries().get(0);
+ doAccessLoggingOfRequest(jettyRequest);
- assertThat(entry.rawPath().get(), is(path));
- assertThat(entry.rawQuery().get(), is(query));
+ assertThat(accessLogEntry.getRawPath(), is(path));
+ assertThat(accessLogEntry.getRawQuery().get(), is(query));
}
@Test
public void raw_path_and_query_are_set_from_request() {
- Request jettyRequest = createRequestMock();
+ AccessLogEntry accessLogEntry = new AccessLogEntry();
+ Request jettyRequest = createRequestMock(accessLogEntry);
String rawPath = "//search/";
when(jettyRequest.getRequestURI()).thenReturn(rawPath);
String rawQuery = "q=%%2";
when(jettyRequest.getQueryString()).thenReturn(rawQuery);
- InMemoryRequestLog requestLog = new InMemoryRequestLog();
- doAccessLoggingOfRequest(requestLog, jettyRequest);
- RequestLogEntry entry = requestLog.entries().get(0);
- assertThat(entry.rawPath().get(), is(rawPath));
- Optional<String> actualRawQuery = entry.rawQuery();
+ doAccessLoggingOfRequest(jettyRequest);
+ assertThat(accessLogEntry.getRawPath(), is(rawPath));
+ Optional<String> actualRawQuery = accessLogEntry.getRawQuery();
assertThat(actualRawQuery.isPresent(), is(true));
assertThat(actualRawQuery.get(), is(rawQuery));
}
@Test
public void verify_x_forwarded_for_precedence () {
- Request jettyRequest = createRequestMock();
+ AccessLogEntry accessLogEntry = new AccessLogEntry();
+ Request jettyRequest = createRequestMock(accessLogEntry);
when(jettyRequest.getRequestURI()).thenReturn("//search/");
when(jettyRequest.getQueryString()).thenReturn("q=%%2");
when(jettyRequest.getHeader("x-forwarded-for")).thenReturn("1.2.3.4");
when(jettyRequest.getHeader("y-ra")).thenReturn("2.3.4.5");
- InMemoryRequestLog requestLog = new InMemoryRequestLog();
- doAccessLoggingOfRequest(requestLog, jettyRequest);
- RequestLogEntry entry = requestLog.entries().get(0);
- assertThat(entry.remoteAddress().get(), is("1.2.3.4"));
+ doAccessLoggingOfRequest(jettyRequest);
+ assertThat(accessLogEntry.getRemoteAddress(), is("1.2.3.4"));
}
@Test
public void verify_x_forwarded_port_precedence () {
- Request jettyRequest = createRequestMock();
+ AccessLogEntry accessLogEntry = new AccessLogEntry();
+ Request jettyRequest = createRequestMock(accessLogEntry);
when(jettyRequest.getRequestURI()).thenReturn("//search/");
when(jettyRequest.getQueryString()).thenReturn("q=%%2");
when(jettyRequest.getHeader("X-Forwarded-Port")).thenReturn("80");
when(jettyRequest.getHeader("y-rp")).thenReturn("8080");
- InMemoryRequestLog requestLog = new InMemoryRequestLog();
- doAccessLoggingOfRequest(requestLog, jettyRequest);
- RequestLogEntry entry = requestLog.entries().get(0);
- assertThat(entry.remotePort().getAsInt(), is(80));
+ doAccessLoggingOfRequest(jettyRequest);
+ assertThat(accessLogEntry.getRemotePort(), is(80));
}
@Test
public void defaults_to_peer_port_if_remote_port_header_is_invalid() {
- final Request jettyRequest = createRequestMock();
+ final AccessLogEntry accessLogEntry = new AccessLogEntry();
+ final Request jettyRequest = createRequestMock(accessLogEntry);
when(jettyRequest.getRequestURI()).thenReturn("/search/");
when(jettyRequest.getHeader("X-Forwarded-Port")).thenReturn("8o8o");
when(jettyRequest.getRemotePort()).thenReturn(80);
- InMemoryRequestLog requestLog = new InMemoryRequestLog();
- doAccessLoggingOfRequest(requestLog, jettyRequest);
- RequestLogEntry entry = requestLog.entries().get(0);
- assertFalse(entry.remotePort().isPresent());
- assertThat(entry.peerPort().getAsInt(), is(80));
+ doAccessLoggingOfRequest(jettyRequest);
+ assertThat(accessLogEntry.getRemotePort(), is(0));
+ assertThat(accessLogEntry.getPeerPort(), is(80));
}
- private void doAccessLoggingOfRequest(RequestLog requestLog, Request jettyRequest) {
+ private void doAccessLoggingOfRequest(Request jettyRequest) {
ServerConfig.AccessLog config = new ServerConfig.AccessLog(
new ServerConfig.AccessLog.Builder()
.remoteAddressHeaders(List.of("x-forwarded-for", "y-ra"))
.remotePortHeaders(List.of("X-Forwarded-Port", "y-rp")));
- new AccessLogRequestLog(requestLog, config).log(jettyRequest, createResponseMock());
+ new AccessLogRequestLog(mock(AccessLog.class), config).log(jettyRequest, createResponseMock());
}
- private static Request createRequestMock() {
+ private static Request createRequestMock(AccessLogEntry entry) {
ServerConnector serverConnector = mock(ServerConnector.class);
when(serverConnector.getLocalPort()).thenReturn(1234);
HttpConnection httpConnection = mock(HttpConnection.class);
when(httpConnection.getConnector()).thenReturn(serverConnector);
Request request = mock(Request.class);
- when(request.getMethod()).thenReturn("GET");
- when(request.getRemoteAddr()).thenReturn("localhost");
- when(request.getRemotePort()).thenReturn(12345);
- when(request.getProtocol()).thenReturn("HTTP/1.1");
- when(request.getScheme()).thenReturn("http");
- when(request.getTimeStamp()).thenReturn(0L);
- when(request.getAttribute(JDiscHttpServlet.ATTRIBUTE_NAME_ACCESS_LOG_ENTRY)).thenReturn(new AccessLogEntry());
+ when(request.getAttribute(JDiscHttpServlet.ATTRIBUTE_NAME_ACCESS_LOG_ENTRY)).thenReturn(entry);
when(request.getAttribute("org.eclipse.jetty.server.HttpConnection")).thenReturn(httpConnection);
return request;
}
diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/FilterTestCase.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/FilterTestCase.java
index a67656dd5ca..33fbe4e3016 100644
--- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/FilterTestCase.java
+++ b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/FilterTestCase.java
@@ -4,7 +4,6 @@ package com.yahoo.jdisc.http.server.jetty;
import com.google.inject.AbstractModule;
import com.google.inject.util.Modules;
import com.yahoo.container.logging.ConnectionLog;
-import com.yahoo.container.logging.RequestLog;
import com.yahoo.jdisc.AbstractResource;
import com.yahoo.jdisc.Request;
import com.yahoo.jdisc.ResourceReference;
@@ -557,7 +556,6 @@ public class FilterTestCase {
bind(ConnectorConfig.class).toInstance(new ConnectorConfig(new ConnectorConfig.Builder()));
bind(ServletPathsConfig.class).toInstance(new ServletPathsConfig(new ServletPathsConfig.Builder()));
bind(ConnectionLog.class).toInstance(new VoidConnectionLog());
- bind(RequestLog.class).toInstance(new VoidRequestLog());
}
},
new ConnectorFactoryRegistryModule(),
diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerConformanceTest.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerConformanceTest.java
index 5659dfc2d3c..2f8e35fffa6 100644
--- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerConformanceTest.java
+++ b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerConformanceTest.java
@@ -5,7 +5,6 @@ import com.google.inject.AbstractModule;
import com.google.inject.Module;
import com.google.inject.util.Modules;
import com.yahoo.container.logging.ConnectionLog;
-import com.yahoo.container.logging.RequestLog;
import com.yahoo.jdisc.http.ServerConfig;
import com.yahoo.jdisc.http.ServletPathsConfig;
import com.yahoo.jdisc.http.guiceModules.ConnectorFactoryRegistryModule;
@@ -777,8 +776,6 @@ public class HttpServerConformanceTest extends ServerProviderConformanceTest {
.toInstance(new ServletPathsConfig(new ServletPathsConfig.Builder()));
bind(ConnectionLog.class)
.toInstance(new VoidConnectionLog());
- bind(RequestLog.class)
- .toInstance(new VoidRequestLog());
}
},
new ConnectorFactoryRegistryModule());
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 96464a48938..81ccb2ccb1c 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
@@ -3,10 +3,10 @@ package com.yahoo.jdisc.http.server.jetty;
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.container.logging.ConnectionLog;
import com.yahoo.container.logging.ConnectionLogEntry;
-import com.yahoo.container.logging.RequestLog;
-import com.yahoo.container.logging.RequestLogEntry;
import com.yahoo.jdisc.References;
import com.yahoo.jdisc.Request;
import com.yahoo.jdisc.Response;
@@ -71,6 +71,7 @@ import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.UUID;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
@@ -175,18 +176,31 @@ public class HttpServerTest {
@Test
public void requireThatAccessLogIsCalledForRequestRejectedByJetty() throws Exception {
- InMemoryRequestLog requestLogMock = new InMemoryRequestLog();
+ AccessLogMock accessLogMock = new AccessLogMock();
final TestDriver driver = TestDrivers.newConfiguredInstance(
mockRequestHandler(),
new ServerConfig.Builder(),
new ConnectorConfig.Builder().requestHeaderSize(1),
- binder -> binder.bind(RequestLog.class).toInstance(requestLogMock));
+ binder -> binder.bind(AccessLog.class).toInstance(accessLogMock));
driver.client().get("/status.html")
.expectStatusCode(is(REQUEST_URI_TOO_LONG));
assertThat(driver.close(), is(true));
- assertThat(requestLogMock.entries().size(), equalTo(1));
- RequestLogEntry entry = requestLogMock.entries().get(0);
- assertEquals(414, entry.statusCode().getAsInt());
+
+ assertThat(accessLogMock.logEntries.size(), equalTo(1));
+ AccessLogEntry accessLogEntry = accessLogMock.logEntries.get(0);
+ assertEquals(414, accessLogEntry.getStatusCode());
+ }
+
+ private static class AccessLogMock extends AccessLog {
+
+ final List<AccessLogEntry> logEntries = new CopyOnWriteArrayList<>();
+
+ AccessLogMock() { super(null); }
+
+ @Override
+ public void log(AccessLogEntry accessLogEntry) {
+ logEntries.add(accessLogEntry);
+ }
}
@Test
@@ -762,9 +776,9 @@ public class HttpServerTest {
Path privateKeyFile = tmpFolder.newFile().toPath();
Path certificateFile = tmpFolder.newFile().toPath();
generatePrivateKeyAndCertificate(privateKeyFile, certificateFile);
- InMemoryRequestLog requestLogMock = new InMemoryRequestLog();
+ AccessLogMock accessLogMock = new AccessLogMock();
InMemoryConnectionLog connectionLog = new InMemoryConnectionLog();
- TestDriver driver = createSslWithProxyProtocolTestDriver(certificateFile, privateKeyFile, requestLogMock, /*mixedMode*/connectionLog, false);
+ TestDriver driver = createSslWithProxyProtocolTestDriver(certificateFile, privateKeyFile, accessLogMock, /*mixedMode*/connectionLog, false);
String proxiedRemoteAddress = "192.168.0.100";
int proxiedRemotePort = 12345;
@@ -772,9 +786,9 @@ public class HttpServerTest {
sendJettyClientRequest(driver, certificateFile, new V2.Tag(proxiedRemoteAddress, proxiedRemotePort));
assertTrue(driver.close());
- assertEquals(2, requestLogMock.entries().size());
- assertLogEntryHasRemote(requestLogMock.entries().get(0), proxiedRemoteAddress, proxiedRemotePort);
- assertLogEntryHasRemote(requestLogMock.entries().get(1), proxiedRemoteAddress, proxiedRemotePort);
+ assertEquals(2, accessLogMock.logEntries.size());
+ assertLogEntryHasRemote(accessLogMock.logEntries.get(0), proxiedRemoteAddress, proxiedRemotePort);
+ assertLogEntryHasRemote(accessLogMock.logEntries.get(1), proxiedRemoteAddress, proxiedRemotePort);
Assertions.assertThat(connectionLog.logEntries()).hasSize(2);
assertLogEntryHasRemote(connectionLog.logEntries().get(0), proxiedRemoteAddress, proxiedRemotePort);
assertLogEntryHasRemote(connectionLog.logEntries().get(1), proxiedRemoteAddress, proxiedRemotePort);
@@ -785,18 +799,18 @@ public class HttpServerTest {
Path privateKeyFile = tmpFolder.newFile().toPath();
Path certificateFile = tmpFolder.newFile().toPath();
generatePrivateKeyAndCertificate(privateKeyFile, certificateFile);
- InMemoryRequestLog requestLogMock = new InMemoryRequestLog();
+ AccessLogMock accessLogMock = new AccessLogMock();
InMemoryConnectionLog connectionLog = new InMemoryConnectionLog();
- TestDriver driver = createSslWithProxyProtocolTestDriver(certificateFile, privateKeyFile, requestLogMock, /*mixedMode*/connectionLog, true);
+ TestDriver driver = createSslWithProxyProtocolTestDriver(certificateFile, privateKeyFile, accessLogMock, /*mixedMode*/connectionLog, true);
String proxiedRemoteAddress = "192.168.0.100";
sendJettyClientRequest(driver, certificateFile, null);
sendJettyClientRequest(driver, certificateFile, new V2.Tag(proxiedRemoteAddress, 12345));
assertTrue(driver.close());
- assertEquals(2, requestLogMock.entries().size());
- assertLogEntryHasRemote(requestLogMock.entries().get(0), "127.0.0.1", 0);
- assertLogEntryHasRemote(requestLogMock.entries().get(1), proxiedRemoteAddress, 0);
+ assertEquals(2, accessLogMock.logEntries.size());
+ assertLogEntryHasRemote(accessLogMock.logEntries.get(0), "127.0.0.1", 0);
+ assertLogEntryHasRemote(accessLogMock.logEntries.get(1), proxiedRemoteAddress, 0);
Assertions.assertThat(connectionLog.logEntries()).hasSize(2);
assertLogEntryHasRemote(connectionLog.logEntries().get(0), null, 0);
assertLogEntryHasRemote(connectionLog.logEntries().get(1), proxiedRemoteAddress, 12345);
@@ -807,9 +821,9 @@ public class HttpServerTest {
Path privateKeyFile = tmpFolder.newFile().toPath();
Path certificateFile = tmpFolder.newFile().toPath();
generatePrivateKeyAndCertificate(privateKeyFile, certificateFile);
- InMemoryRequestLog requestLogMock = new InMemoryRequestLog();
+ AccessLogMock accessLogMock = new AccessLogMock();
InMemoryConnectionLog connectionLog = new InMemoryConnectionLog();
- TestDriver driver = createSslWithProxyProtocolTestDriver(certificateFile, privateKeyFile, requestLogMock, connectionLog, /*mixedMode*/false);
+ TestDriver driver = createSslWithProxyProtocolTestDriver(certificateFile, privateKeyFile, accessLogMock, connectionLog, /*mixedMode*/false);
String proxiedRemoteAddress = "192.168.0.100";
int proxiedRemotePort = 12345;
@@ -892,10 +906,10 @@ public class HttpServerTest {
return client;
}
- private static void assertLogEntryHasRemote(RequestLogEntry entry, String expectedAddress, int expectedPort) {
- assertEquals(expectedAddress, entry.peerAddress().get());
+ private static void assertLogEntryHasRemote(AccessLogEntry entry, String expectedAddress, int expectedPort) {
+ assertEquals(expectedAddress, entry.getPeerAddress());
if (expectedPort > 0) {
- assertEquals(expectedPort, entry.peerPort().getAsInt());
+ assertEquals(expectedPort, entry.getPeerPort());
}
}
@@ -913,8 +927,8 @@ public class HttpServerTest {
}
private static TestDriver createSslWithProxyProtocolTestDriver(
- Path certificateFile, Path privateKeyFile, RequestLog requestLog,
- ConnectionLog connectionLog, boolean mixedMode) {
+ Path certificateFile, Path privateKeyFile, AccessLogMock accessLogMock,
+ InMemoryConnectionLog connectionLog, boolean mixedMode) {
ConnectorConfig.Builder connectorConfig = new ConnectorConfig.Builder()
.proxyProtocol(new ConnectorConfig.ProxyProtocol.Builder()
.enabled(true)
@@ -929,7 +943,7 @@ public class HttpServerTest {
new ServerConfig.Builder().connectionLog(new ServerConfig.ConnectionLog.Builder().enabled(true)),
connectorConfig,
binder -> {
- binder.bind(RequestLog.class).toInstance(requestLog);
+ binder.bind(AccessLog.class).toInstance(accessLogMock);
binder.bind(ConnectionLog.class).toInstance(connectionLog);
});
}
diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryRequestLog.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryRequestLog.java
deleted file mode 100644
index b87ec5e8b8b..00000000000
--- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/InMemoryRequestLog.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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.RequestLog;
-import com.yahoo.container.logging.RequestLogEntry;
-
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-/**
- * @author bjorncs
- */
-public class InMemoryRequestLog implements RequestLog {
-
- private final List<RequestLogEntry> entries = new CopyOnWriteArrayList<>();
-
- @Override public void log(RequestLogEntry entry) { entries.add(entry); }
-
- List<RequestLogEntry> entries() { return entries; }
-}
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 7d7530c32e0..4b8a9bed1f3 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
@@ -5,7 +5,6 @@ import com.google.inject.AbstractModule;
import com.google.inject.Module;
import com.google.inject.util.Modules;
import com.yahoo.container.logging.ConnectionLog;
-import com.yahoo.container.logging.RequestLog;
import com.yahoo.jdisc.handler.RequestHandler;
import com.yahoo.jdisc.http.ConnectorConfig;
import com.yahoo.jdisc.http.ServerConfig;
@@ -83,7 +82,6 @@ public class TestDrivers {
bind(ConnectorConfig.class).toInstance(new ConnectorConfig(connectorConfigBuilder));
bind(FilterBindings.class).toInstance(new FilterBindings.Builder().build());
bind(ConnectionLog.class).toInstance(new VoidConnectionLog());
- bind(RequestLog.class).toInstance(new VoidRequestLog());
}
},
new ConnectorFactoryRegistryModule(connectorConfigBuilder),
diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/ServletAccessLoggingTest.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/ServletAccessLoggingTest.java
index a533a447f6a..6637ee24b5f 100644
--- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/ServletAccessLoggingTest.java
+++ b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/servlet/ServletAccessLoggingTest.java
@@ -5,8 +5,7 @@ import com.google.inject.AbstractModule;
import com.google.inject.Module;
import com.google.inject.util.Modules;
import com.yahoo.container.logging.AccessLog;
-import com.yahoo.container.logging.RequestLog;
-import com.yahoo.container.logging.RequestLogEntry;
+import com.yahoo.container.logging.AccessLogEntry;
import com.yahoo.jdisc.http.server.jetty.TestDriver;
import com.yahoo.jdisc.http.server.jetty.TestDrivers;
import org.junit.Test;
@@ -22,7 +21,6 @@ import static org.mockito.Mockito.verify;
/**
* @author bakksjo
- * @author bjorncs
*/
public class ServletAccessLoggingTest extends ServletTestBase {
private static final long MAX_LOG_WAIT_TIME_MILLIS = TimeUnit.SECONDS.toMillis(60);
@@ -43,20 +41,20 @@ public class ServletAccessLoggingTest extends ServletTestBase {
verifyCallsLog(accessLog, timeout(MAX_LOG_WAIT_TIME_MILLIS).times(1));
}
- private void verifyCallsLog(RequestLog requestLog, final VerificationMode verificationMode) {
- verify(requestLog, verificationMode).log(any(RequestLogEntry.class));
+ private void verifyCallsLog(final AccessLog accessLog, final VerificationMode verificationMode) {
+ verify(accessLog, verificationMode).log(any(AccessLogEntry.class));
}
- private TestDriver newTestDriver(RequestLog requestLog) throws IOException {
- return TestDrivers.newInstance(dummyRequestHandler, bindings(requestLog));
+ private TestDriver newTestDriver(final AccessLog accessLog) throws IOException {
+ return TestDrivers.newInstance(dummyRequestHandler, bindings(accessLog));
}
- private Module bindings(RequestLog requestLog) {
+ private Module bindings(final AccessLog accessLog) {
return Modules.combine(
new AbstractModule() {
@Override
protected void configure() {
- bind(RequestLog.class).toInstance(requestLog);
+ bind(AccessLog.class).toInstance(accessLog);
}
},
guiceModule());