From 59b496f94ae8026aec9ccaf26dbbbf26fb442727 Mon Sep 17 00:00:00 2001 From: Alexander Kulyakhtin Date: Thu, 26 Nov 2015 15:12:32 +0300 Subject: [PATCH] 8143121: javax/management/remote/mandatory/loading/MethodResultTest.java fails intermittently Changing the test to retry if the connection fails Reviewed-by: jbachorik --- .../mandatory/loading/MethodResultTest.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/jdk/test/javax/management/remote/mandatory/loading/MethodResultTest.java b/jdk/test/javax/management/remote/mandatory/loading/MethodResultTest.java index 3d65adaf9ad..cb68a990d78 100644 --- a/jdk/test/javax/management/remote/mandatory/loading/MethodResultTest.java +++ b/jdk/test/javax/management/remote/mandatory/loading/MethodResultTest.java @@ -27,6 +27,7 @@ * @summary Tests client default class loader used before JSR 160 loader * @author Eamonn McManus * @modules java.management + * @library /lib/testlibrary * @run clean MethodResultTest * @run build MethodResultTest * @run main MethodResultTest @@ -38,6 +39,7 @@ import java.net.*; import java.util.*; import javax.management.*; import javax.management.remote.*; +import jdk.testlibrary.Utils; /* This test checks that the class loader that is used to deserialize @@ -124,7 +126,7 @@ public class MethodResultTest { } cs.start(); JMXServiceURL addr = cs.getAddress(); - JMXConnector client = JMXConnectorFactory.connect(addr); + JMXConnector client = connect(addr); MBeanServerConnection mbsc = client.getMBeanServerConnection(); Object getAttributeExotic = mbsc.getAttribute(on, "Exotic"); AttributeList getAttrs = @@ -187,6 +189,32 @@ public class MethodResultTest { return ok; } + private static JMXConnector connect(JMXServiceURL addr) { + final long timeout = Utils.adjustTimeout(100); + + JMXConnector connector = null; + while (connector == null) { + try { + connector = JMXConnectorFactory.connect(addr); + } catch (IOException e) { + System.out.println("Connection error. Retrying after delay..."); + delay(timeout); + } catch (Exception otherException) { + System.out.println("Unexpected exception while connecting " + otherException); + throw new RuntimeException(otherException); + } + } + return connector; + } + + private static void delay(long ms) { + try { + Thread.sleep(ms); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + private static Exception noException(String what) { final String msg = "Operation " + what + " returned when exception expected";