gae-interop-testing: increase response verbosity (#4765)

for jdk7 include the passing test names in the order they were run
for both, include the JUL log output

The runner should always print http response
This commit is contained in:
zpencer 2018-08-17 10:09:22 -07:00 committed by GitHub
parent 73b098702c
commit 3bc6e314bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 93 additions and 3 deletions

View File

@ -140,6 +140,7 @@ task runInteropTestRemote(dependsOn: 'appengineDeploy') {
try {
def response = client.newCall(interopRequest).execute()
result = response.body().string()
project.println(result)
if (response.code() == 200) {
return
}
@ -148,6 +149,6 @@ task runInteropTestRemote(dependsOn: 'appengineDeploy') {
logger.log(LogLevel.ERROR, "caught exception. will retry if possible", t)
}
}
throw new GradleException("Interop test failed:\nresponse: ${result}\nthrowable:${caught}")
throw new GradleException("Interop test failed:\nthrowable:${caught}")
}
}

View File

@ -30,6 +30,12 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -49,8 +55,45 @@ import org.junit.internal.AssumptionViolatedException;
public final class OkHttpClientInteropServlet extends HttpServlet {
private static final String INTEROP_TEST_ADDRESS = "grpc-test.sandbox.googleapis.com:443";
private static final class LogEntryRecorder extends Handler {
private Queue<LogRecord> loggedMessages = new ConcurrentLinkedQueue<>();
@Override
public void publish(LogRecord logRecord) {
loggedMessages.add(logRecord);
}
@Override
public void flush() {}
@Override
public void close() {}
public String getLogOutput() {
SimpleFormatter formatter = new SimpleFormatter();
StringBuilder sb = new StringBuilder();
for (LogRecord loggedMessage : loggedMessages) {
sb.append(formatter.format(loggedMessage));
}
return sb.toString();
}
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
LogEntryRecorder handler = new LogEntryRecorder();
Logger.getLogger("").addHandler(handler);
try {
doGetHelper(req, resp);
} finally {
Logger.getLogger("").removeHandler(handler);
}
resp.getWriter().append("=======================================\n")
.append("Server side java.util.logging messages:\n")
.append(handler.getLogOutput());
}
private void doGetHelper(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setContentType("text/plain");
PrintWriter writer = resp.getWriter();
writer.println("Test invoked at: ");
@ -91,6 +134,8 @@ public final class OkHttpClientInteropServlet extends HttpServlet {
for (Method after : afters) {
after.invoke(tester);
}
sb.append("================\n");
sb.append("PASS: Test method: ").append(method).append("\n");
} catch (Exception e) {
// The default JUnit4 test runner skips tests with failed assumptions.
// We will do the same here.
@ -106,7 +151,7 @@ public final class OkHttpClientInteropServlet extends HttpServlet {
}
sb.append("================\n");
sb.append("Test method: ").append(method).append("\n");
sb.append("FAILED: Test method: ").append(method).append("\n");
failures++;
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);

View File

@ -147,6 +147,7 @@ task runInteropTestRemote(dependsOn: 'appengineDeploy') {
try {
def response = client.newCall(interopRequest).execute()
result = response.body().string()
project.println(result)
if (response.code() == 200) {
return
}
@ -155,6 +156,6 @@ task runInteropTestRemote(dependsOn: 'appengineDeploy') {
logger.log(LogLevel.ERROR, "caught exception. will retry if possible", t)
}
}
throw new GradleException("Interop test failed:\nresponse: ${result}\nthrowable:${caught}")
throw new GradleException("Interop test failed:\nthrowable:${caught}")
}
}

View File

@ -27,6 +27,12 @@ import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -45,8 +51,45 @@ import org.junit.runner.notification.Failure;
public final class NettyClientInteropServlet extends HttpServlet {
private static final String INTEROP_TEST_ADDRESS = "grpc-test.sandbox.googleapis.com:443";
private static final class LogEntryRecorder extends Handler {
private Queue<LogRecord> loggedMessages = new ConcurrentLinkedQueue<>();
@Override
public void publish(LogRecord logRecord) {
loggedMessages.add(logRecord);
}
@Override
public void flush() {}
@Override
public void close() {}
public String getLogOutput() {
SimpleFormatter formatter = new SimpleFormatter();
StringBuilder sb = new StringBuilder();
for (LogRecord loggedMessage : loggedMessages) {
sb.append(formatter.format(loggedMessage));
}
return sb.toString();
}
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
LogEntryRecorder handler = new LogEntryRecorder();
Logger.getLogger("").addHandler(handler);
try {
doGetHelper(req, resp);
} finally {
Logger.getLogger("").removeHandler(handler);
}
resp.getWriter().append("=======================================\n")
.append("Server side java.util.logging messages:\n")
.append(handler.getLogOutput());
}
private void doGetHelper(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setContentType("text/plain");
PrintWriter writer = resp.getWriter();
writer.println("Test invoked at: ");