diff --git a/README.md b/README.md
index db5d6f485..0580494cf 100644
--- a/README.md
+++ b/README.md
@@ -395,7 +395,7 @@ When you build the latest code from source, you'll have access to the latest sna
net.lightbody.bmp
browsermob-core
- 2.1.31-SNAPSHOT
+ 2.1.32-SNAPSHOT
test
```
diff --git a/browsermob-core/pom.xml b/browsermob-core/pom.xml
index a26765e79..06fb7aab8 100644
--- a/browsermob-core/pom.xml
+++ b/browsermob-core/pom.xml
@@ -6,7 +6,7 @@
browsermob-proxy
net.lightbody.bmp
- 2.1.31-SNAPSHOT
+ 2.1.32-SNAPSHOT
4.0.0
diff --git a/browsermob-core/src/main/java/net/lightbody/bmp/filters/HarCaptureFilter.java b/browsermob-core/src/main/java/net/lightbody/bmp/filters/HarCaptureFilter.java
index 1be4b6f12..02d4bbfef 100644
--- a/browsermob-core/src/main/java/net/lightbody/bmp/filters/HarCaptureFilter.java
+++ b/browsermob-core/src/main/java/net/lightbody/bmp/filters/HarCaptureFilter.java
@@ -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();
}
}
@@ -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());
@@ -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());
}
@@ -658,10 +660,6 @@ 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));
@@ -669,6 +667,11 @@ public void proxyToServerResolutionFailed(String hostAndPort) {
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());
}
@@ -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());
@@ -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
@@ -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());
}
}
diff --git a/browsermob-core/src/test/java/net/lightbody/bmp/proxy/QuiescenceTest.java b/browsermob-core/src/test/java/net/lightbody/bmp/proxy/QuiescenceTest.java
index 60842b0be..cbbe669df 100644
--- a/browsermob-core/src/test/java/net/lightbody/bmp/proxy/QuiescenceTest.java
+++ b/browsermob-core/src/test/java/net/lightbody/bmp/proxy/QuiescenceTest.java
@@ -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;
@@ -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")
@@ -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();
diff --git a/browsermob-dist/pom.xml b/browsermob-dist/pom.xml
index 1a050954e..49a51910f 100644
--- a/browsermob-dist/pom.xml
+++ b/browsermob-dist/pom.xml
@@ -4,7 +4,7 @@
browsermob-proxy
net.lightbody.bmp
- 2.1.31-SNAPSHOT
+ 2.1.32-SNAPSHOT
4.0.0
diff --git a/browsermob-legacy/pom.xml b/browsermob-legacy/pom.xml
index ccef94eeb..92f5ee190 100644
--- a/browsermob-legacy/pom.xml
+++ b/browsermob-legacy/pom.xml
@@ -6,7 +6,7 @@
browsermob-proxy
net.lightbody.bmp
- 2.1.31-SNAPSHOT
+ 2.1.32-SNAPSHOT
4.0.0
diff --git a/browsermob-rest/pom.xml b/browsermob-rest/pom.xml
index 6fdf3f486..ee8cbf484 100644
--- a/browsermob-rest/pom.xml
+++ b/browsermob-rest/pom.xml
@@ -5,7 +5,7 @@
browsermob-proxy
net.lightbody.bmp
- 2.1.31-SNAPSHOT
+ 2.1.32-SNAPSHOT
4.0.0
diff --git a/mitm/pom.xml b/mitm/pom.xml
index 7c5683965..26befaf58 100644
--- a/mitm/pom.xml
+++ b/mitm/pom.xml
@@ -4,7 +4,7 @@
browsermob-proxy
net.lightbody.bmp
- 2.1.31-SNAPSHOT
+ 2.1.32-SNAPSHOT
4.0.0
diff --git a/pom.xml b/pom.xml
index 227252954..7963fe5fe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
net.lightbody.bmp
browsermob-proxy
- 2.1.31-SNAPSHOT
+ 2.1.32-SNAPSHOT
browsermob-core
browsermob-legacy