Skip to content
This repository was archived by the owner on Jul 26, 2023. It is now read-only.

Update statsD client creation process and filtering #23

Merged
merged 2 commits into from
May 21, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,7 @@ When you build the latest code from source, you'll have access to the latest sna
<dependency>
<groupId>net.lightbody.bmp</groupId>
<artifactId>browsermob-core</artifactId>
<version>2.1.31-SNAPSHOT</version>
<version>2.1.32-SNAPSHOT</version>
<scope>test</scope>
</dependency>
```
2 changes: 1 addition & 1 deletion browsermob-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<artifactId>browsermob-proxy</artifactId>
<groupId>net.lightbody.bmp</groupId>
<version>2.1.31-SNAPSHOT</version>
<version>2.1.32-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,13 +165,13 @@ public HarCaptureFilter(HttpRequest originalRequest, ChannelHandlerContext ctx,

@Override
public HttpObject proxyToClientResponse(HttpObject httpObject) {
if (httpObject instanceof LastHttpContent) {
if (httpObject instanceof HttpResponse) {
if (harEntry.getResponse().getStatus() == 0) {
HarCaptureFilter.logFailedRequestIfRequired(harEntry.getRequest(), harEntry.getResponse());
createStatsDClient();
statsDClient.get().increment(getProxyPrefix().concat(prepareMetric(harEntry.getRequest().getUrl()))
StatsDClient client = createStatsDClient();
client.increment(getProxyPrefix().concat(prepareMetric(harEntry.getRequest().getUrl()))
.concat("." + harEntry.getResponse().getStatus()).concat(".request_timeout"));
stopStatsDClient();
client.stop();

}
}
Expand Down Expand Up @@ -284,10 +284,6 @@ public void serverToProxyResponseTimedOut() {
// replace any existing HarResponse that was created if the server sent a partial response
HarResponse response = HarCaptureUtil.createHarResponseForFailure();
harEntry.setResponse(response);
createStatsDClient();
statsDClient.get().increment(getProxyPrefix().concat(prepareMetric(harEntry.getRequest().getUrl()))
.concat("." + harEntry.getResponse().getStatus()).concat(".response_timeout"));
stopStatsDClient();

response.setError(HarCaptureUtil.getResponseTimedOutErrorMessage());

Expand All @@ -307,6 +303,12 @@ else if (sendFinishedNanos > 0L && responseReceiveStartedNanos == 0L) {
else if (responseReceiveStartedNanos > 0L) {
harEntry.getTimings().setReceive(timeoutTimestampNanos - responseReceiveStartedNanos, TimeUnit.NANOSECONDS);
}

StatsDClient client = createStatsDClient();
client.increment(getProxyPrefix().concat(prepareMetric(harEntry.getRequest().getUrl()))
.concat("." + harEntry.getResponse().getStatus()).concat(".response_timeout"));
client.stop();

logFailedRequestIfRequired(harEntry.getRequest(), harEntry.getResponse());
}

Expand Down Expand Up @@ -658,17 +660,18 @@ public InetSocketAddress proxyToServerResolutionStarted(String resolvingServerHo
public void proxyToServerResolutionFailed(String hostAndPort) {
HarResponse response = HarCaptureUtil.createHarResponseForFailure();
harEntry.setResponse(response);
createStatsDClient();
statsDClient.get().increment(getProxyPrefix().concat(prepareMetric(harEntry.getRequest().getUrl()))
.concat("." + harEntry.getResponse().getStatus()).concat(".server_resolution_fail"));
stopStatsDClient();

response.setError(HarCaptureUtil.getResolutionFailedErrorMessage(hostAndPort));

// record the amount of time we attempted to resolve the hostname in the HarTimings object
if (dnsResolutionStartedNanos > 0L) {
harEntry.getTimings().setDns(System.nanoTime() - dnsResolutionStartedNanos, TimeUnit.NANOSECONDS);
}

StatsDClient client = createStatsDClient();
client.increment(getProxyPrefix().concat(prepareMetric(harEntry.getRequest().getUrl()))
.concat("." + harEntry.getResponse().getStatus()).concat(".server_resolution_fail"));
client.stop();
logFailedRequestIfRequired(harEntry.getRequest(), harEntry.getResponse());
}

Expand Down Expand Up @@ -704,10 +707,7 @@ public void proxyToServerConnectionStarted() {
@Override
public void proxyToServerConnectionFailed() {
HarResponse response = HarCaptureUtil.createHarResponseForFailure();
createStatsDClient();
statsDClient.get().increment(getProxyPrefix().concat(prepareMetric(harEntry.getRequest().getUrl()))
.concat("." + harEntry.getResponse().getStatus()).concat(".server_connection_fail"));
stopStatsDClient();

harEntry.setResponse(response);

response.setError(HarCaptureUtil.getConnectionFailedErrorMessage());
Expand All @@ -716,6 +716,11 @@ public void proxyToServerConnectionFailed() {
if (connectionStartedNanos > 0L) {
harEntry.getTimings().setConnect(System.nanoTime() - connectionStartedNanos, TimeUnit.NANOSECONDS);
}

StatsDClient client = createStatsDClient();
client.increment(getProxyPrefix().concat(prepareMetric(harEntry.getRequest().getUrl()))
.concat("." + harEntry.getResponse().getStatus()).concat(".server_connection_fail"));
client.stop();
}

@Override
Expand Down Expand Up @@ -794,16 +799,7 @@ protected static void logFailedRequestIfRequired(HarRequest request, HarResponse
}
}

private void createStatsDClient() {
if (statsDClient.get() == null) {
statsDClient.set(new NonBlockingStatsDClient("automated_tests", getStatsDHost(), getStatsDPort()));
}
}

private void stopStatsDClient() {
if (Objects.nonNull(statsDClient.get())) {
statsDClient.get().stop();
statsDClient.remove();
}
private StatsDClient createStatsDClient() {
return new NonBlockingStatsDClient("automated_tests", getStatsDHost(), getStatsDPort());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,7 @@
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.junit.Assert.*;
import static org.mockserver.model.HttpRequest.request;
import static org.mockserver.model.HttpResponse.response;

Expand Down Expand Up @@ -218,7 +215,6 @@ public void testWaitForQuiescenceTimeoutLessThanQuietPeriodUnuccessful() throws
}

@Test
@Ignore //TODO: ignoring this test because it seems to fail on Java 8 under travis-ci. determine if there is an actual code defect, or just a test/environment defect.
public void testWaitForQuiescenceInterruptedBySecondRequestSuccessful() throws InterruptedException {
mockServer.when(
request().withMethod("GET")
Expand All @@ -235,27 +231,24 @@ public void testWaitForQuiescenceInterruptedBySecondRequestSuccessful() throws I

final AtomicBoolean exceptionOccurred = new AtomicBoolean();

new Thread(new Runnable() {
@Override
public void run() {
try (CloseableHttpClient client = NewProxyServerTestUtil.getNewHttpClient(proxy.getPort())) {
HttpResponse response = client.execute(new HttpGet("http://127.0.0.1:" + mockServerPort + "/successquiesence2s"));
EntityUtils.consumeQuietly(response.getEntity());
firstRequestStatusCode.set(response.getStatusLine().getStatusCode());
new Thread(() -> {
try (CloseableHttpClient client = NewProxyServerTestUtil.getNewHttpClient(proxy.getPort())) {
HttpResponse response = client.execute(new HttpGet("http://127.0.0.1:" + mockServerPort + "/successquiesence2s"));
EntityUtils.consumeQuietly(response.getEntity());
firstRequestStatusCode.set(response.getStatusLine().getStatusCode());

Thread.sleep(1000);
Thread.sleep(1000);

response = client.execute(new HttpGet("http://127.0.0.1:" + mockServerPort + "/successquiesence2s"));
EntityUtils.consumeQuietly(response.getEntity());
response = client.execute(new HttpGet("http://127.0.0.1:" + mockServerPort + "/successquiesence2s"));
EntityUtils.consumeQuietly(response.getEntity());

secondRequestFinished.set(System.nanoTime());
secondRequestFinished.set(System.nanoTime());

secondRequestStatusCode.set(response.getStatusLine().getStatusCode());
} catch (IOException | InterruptedException e) {
exceptionOccurred.set(true);
secondRequestStatusCode.set(response.getStatusLine().getStatusCode());
} catch (IOException | InterruptedException e) {
exceptionOccurred.set(true);

log.error("Exception occurred while making HTTP request", e);
}
log.error("Exception occurred while making HTTP request", e);
}
}).start();

Expand Down
2 changes: 1 addition & 1 deletion browsermob-dist/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<artifactId>browsermob-proxy</artifactId>
<groupId>net.lightbody.bmp</groupId>
<version>2.1.31-SNAPSHOT</version>
<version>2.1.32-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion browsermob-legacy/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<artifactId>browsermob-proxy</artifactId>
<groupId>net.lightbody.bmp</groupId>
<version>2.1.31-SNAPSHOT</version>
<version>2.1.32-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion browsermob-rest/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>browsermob-proxy</artifactId>
<groupId>net.lightbody.bmp</groupId>
<version>2.1.31-SNAPSHOT</version>
<version>2.1.32-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion mitm/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<artifactId>browsermob-proxy</artifactId>
<groupId>net.lightbody.bmp</groupId>
<version>2.1.31-SNAPSHOT</version>
<version>2.1.32-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>net.lightbody.bmp</groupId>
<artifactId>browsermob-proxy</artifactId>
<version>2.1.31-SNAPSHOT</version>
<version>2.1.32-SNAPSHOT</version>
<modules>
<module>browsermob-core</module>
<module>browsermob-legacy</module>
Expand Down