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]

Reply via email to