From 970785d82b7441fae6d8baa0216cbf4856c9e67e Mon Sep 17 00:00:00 2001 From: zpencer Date: Thu, 9 Nov 2017 16:07:58 -0800 Subject: [PATCH] gae-interop-testing: create new instance per test for okhttp (#3698) Without this, the test is flakey for some test methods. The flakiness is probably caused by AbstractInteropTest and not due to gRPC itself. --- .../grpc/testing/integration/OkHttpClientInteropServlet.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gae-interop-testing/gae-jdk7/src/main/java/io/grpc/testing/integration/OkHttpClientInteropServlet.java b/gae-interop-testing/gae-jdk7/src/main/java/io/grpc/testing/integration/OkHttpClientInteropServlet.java index 42255bb9e2..d7d7632a10 100644 --- a/gae-interop-testing/gae-jdk7/src/main/java/io/grpc/testing/integration/OkHttpClientInteropServlet.java +++ b/gae-interop-testing/gae-jdk7/src/main/java/io/grpc/testing/integration/OkHttpClientInteropServlet.java @@ -60,12 +60,11 @@ public final class OkHttpClientInteropServlet extends HttpServlet { // We can not use JUnit because it tries to spawn backgrounds threads. // GAE+JDK7 does not allow arbitrary background threads. // Let's use reflection to run test methods. - Tester tester = new Tester(); List befores = new ArrayList<>(); List afters = new ArrayList<>(); List testMethods = new ArrayList<>(); int ignored = 0; - for (Method method : tester.getClass().getMethods()) { + for (Method method : Tester.class.getMethods()) { if (method.getAnnotation(Test.class) != null) { if (method.getAnnotation(Ignore.class) != null) { ignored++; @@ -82,6 +81,8 @@ public final class OkHttpClientInteropServlet extends HttpServlet { StringBuilder sb = new StringBuilder(); int failures = 0; for (Method method : testMethods) { + // JUnit creates a new instance per test method, we will emulate that behavior. + Tester tester = new Tester(); try { for (Method before : befores) { before.invoke(tester);