Improve debugging of testcase failures.
diff --git a/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java b/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java
index bf400db..6d2f4fd 100644
--- a/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java
+++ b/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java
@@ -19,6 +19,7 @@
import javax.net.ssl.*;
+import org.apache.http.*;
import org.apache.http.client.*;
import org.apache.http.conn.ssl.*;
import org.apache.http.impl.client.*;
@@ -99,6 +100,8 @@
*/
public static RestClientBuilder client() {
try {
+ final RequestLine[] currentRequest = new RequestLine[1];
+ final StatusLine[] currentResponse = new StatusLine[1];
return new RestClientBuilder()
.rootUrl(microserviceURI)
.setRetryHandler(
@@ -106,13 +109,23 @@
@Override
public boolean retryRequest(IOException exception, int executionCount, HttpContext context) {
System.err.println("*** ERROR ***");
- TestMicroservice.jettyDump();
- microservice.stop();
- System.exit(2);
- return (executionCount < 10);
+ TestMicroservice.jettyDump(currentRequest[0], currentResponse[0]);
+ return (executionCount < 3);
}
}
)
+ .addInterceptorFirst(new org.apache.http.HttpRequestInterceptor() {
+ @Override
+ public void process(HttpRequest r, HttpContext c) throws HttpException, IOException {
+ currentRequest[0] = r.getRequestLine();
+ }
+ })
+ .addInterceptorFirst(new org.apache.http.HttpResponseInterceptor() {
+ @Override
+ public void process(HttpResponse r, HttpContext c) throws HttpException, IOException {
+ currentResponse[0] = r.getStatusLine();
+ }
+ })
.noTrace()
;
} catch (Exception e) {
@@ -150,10 +163,17 @@
}
}
- public static void jettyDump() {
+ private static int dumpCount = 0;
+
+ public static void jettyDump(RequestLine rl, StatusLine sl) {
try {
String dump = microservice.getServer().dump();
- IOUtils.pipe(dump, new FileWriter(microservice.getConfig().getString("Logging/logDir") + "/jetty-thread-dump.log"));
+ FileWriter fw = new FileWriter(microservice.getConfig().getString("Logging/logDir") + "/jetty-thread-dump-"+(dumpCount++)+".log");
+ fw.append("RequestLine = [" + rl + "]\n");
+ fw.append("StatusLine = [" + sl + "]\n");
+ IOUtils.pipe(dump, fw);
+ fw.flush();
+ fw.close();
} catch (Exception e) {
e.printStackTrace();
}
diff --git a/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/ThirdPartyProxyTest.java b/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/ThirdPartyProxyTest.java
index 8915366..f8259c7 100644
--- a/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/ThirdPartyProxyTest.java
+++ b/juneau-microservice/juneau-microservice-test/src/test/java/org/apache/juneau/rest/test/ThirdPartyProxyTest.java
@@ -82,7 +82,7 @@
if (System.currentTimeMillis() - time.get() > 10000) {
try {
System.err.println("Failed at iteration " + iteration.get());
- TestMicroservice.jettyDump();
+ TestMicroservice.jettyDump(null, null);
System.exit(2);
} catch (Exception e) {
e.printStackTrace();