diff options
author | Morten Tokle <morten.tokle@gmail.com> | 2021-01-22 09:02:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-22 09:02:47 +0100 |
commit | d541d865632d59a6bff5c56d4d0a4eca351a5de7 (patch) | |
tree | bd0591551f6d95a494d9be5350cd418737b8d976 /jdisc_http_service/src/test | |
parent | 30e6d1f66187bd2d1c8cb50906da81fc841bc244 (diff) |
Revert "Access log optimizations [run-systemtest]"
Diffstat (limited to 'jdisc_http_service/src/test')
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()); |