Author: kwall
Date: Wed May 21 22:16:07 2014
New Revision: 1596702
URL: http://svn.apache.org/r1596702
Log:
QPID-5779: Workaround sporadic test failure.
It seems sometimes the JMX Plugin's RMI sockets are closed (by the RMI TCP
Accept thread) *after* the Broker has stopped. I can't find a way to avoid
this issue. Work around by awaiting the ports to become free within the test.
Modified:
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidRMIServerSocketFactory.java
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/RegistryProtectingRMIServerSocketFactory.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java
Modified:
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidRMIServerSocketFactory.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidRMIServerSocketFactory.java?rev=1596702&r1=1596701&r2=1596702&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidRMIServerSocketFactory.java
(original)
+++
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidRMIServerSocketFactory.java
Wed May 21 22:16:07 2014
@@ -71,6 +71,6 @@ class QpidRMIServerSocketFactory impleme
@Override
public boolean equals(final Object obj)
{
- return getClass() == obj.getClass();
+ return obj != null && getClass() == obj.getClass();
}
}
\ No newline at end of file
Modified:
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/RegistryProtectingRMIServerSocketFactory.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/RegistryProtectingRMIServerSocketFactory.java?rev=1596702&r1=1596701&r2=1596702&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/RegistryProtectingRMIServerSocketFactory.java
(original)
+++
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/RegistryProtectingRMIServerSocketFactory.java
Wed May 21 22:16:07 2014
@@ -64,7 +64,7 @@ class RegistryProtectingRMIServerSocketF
@Override
public boolean equals(final Object obj)
{
- return getClass() == obj.getClass();
+ return obj != null && getClass() == obj.getClass();
}
private static class NoLocalAddressServerSocket extends ServerSocket
Modified:
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java?rev=1596702&r1=1596701&r2=1596702&view=diff
==============================================================================
---
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java
(original)
+++
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PortRestTest.java
Wed May 21 22:16:07 2014
@@ -39,6 +39,7 @@ import org.apache.qpid.server.model.Stat
import org.apache.qpid.server.model.Transport;
import org.apache.qpid.server.model.port.JmxPort;
import
org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManager;
+import org.apache.qpid.test.utils.PortHelper;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
public class PortRestTest extends QpidRestTestCase
@@ -148,12 +149,9 @@ public class PortRestTest extends QpidRe
// make sure that port is there after broker restart
stopBroker();
- // Temporary code to investigate sporadic test failure.
- boolean rmiIsFree = getNextAvailable(rmiPort) == rmiPort;
- boolean jmxIsFree = getNextAvailable(jmxPort) == jmxPort;
-
- assertTrue("Expecting rmiPort " + rmiPort + " to be free after broker
stop", rmiIsFree);
- assertTrue("Expecting jmxPort " + jmxPort + " to be free after broker
stop", jmxIsFree);
+ // We shouldn't need to await the ports to be free, but it seems
sometimes an RMI TCP Accept
+ // thread is seen to close the socket *after* the broker has finished
stopping.
+ new PortHelper().waitUntilPortsAreFree(new
HashSet<Integer>(Arrays.asList(jmxPort, rmiPort)));
startBroker();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]