8143121: javax/management/remote/mandatory/loading/MethodResultTest.java fails intermittently

Changing the test to retry if the connection fails

Reviewed-by: jbachorik
This commit is contained in:
Alexander Kulyakhtin 2015-11-26 15:12:32 +03:00
parent f21d693218
commit 59b496f94a

View File

@ -27,6 +27,7 @@
* @summary Tests client default class loader used before JSR 160 loader * @summary Tests client default class loader used before JSR 160 loader
* @author Eamonn McManus * @author Eamonn McManus
* @modules java.management * @modules java.management
* @library /lib/testlibrary
* @run clean MethodResultTest * @run clean MethodResultTest
* @run build MethodResultTest * @run build MethodResultTest
* @run main MethodResultTest * @run main MethodResultTest
@ -38,6 +39,7 @@ import java.net.*;
import java.util.*; import java.util.*;
import javax.management.*; import javax.management.*;
import javax.management.remote.*; import javax.management.remote.*;
import jdk.testlibrary.Utils;
/* /*
This test checks that the class loader that is used to deserialize This test checks that the class loader that is used to deserialize
@ -124,7 +126,7 @@ public class MethodResultTest {
} }
cs.start(); cs.start();
JMXServiceURL addr = cs.getAddress(); JMXServiceURL addr = cs.getAddress();
JMXConnector client = JMXConnectorFactory.connect(addr); JMXConnector client = connect(addr);
MBeanServerConnection mbsc = client.getMBeanServerConnection(); MBeanServerConnection mbsc = client.getMBeanServerConnection();
Object getAttributeExotic = mbsc.getAttribute(on, "Exotic"); Object getAttributeExotic = mbsc.getAttribute(on, "Exotic");
AttributeList getAttrs = AttributeList getAttrs =
@ -187,6 +189,32 @@ public class MethodResultTest {
return ok; 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) { private static Exception noException(String what) {
final String msg = final String msg =
"Operation " + what + " returned when exception expected"; "Operation " + what + " returned when exception expected";