resolve intermiittent failures related to broker start and async mbean registration
Project: http://git-wip-us.apache.org/repos/asf/activemq/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/2a62b742 Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/2a62b742 Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/2a62b742 Branch: refs/heads/trunk Commit: 2a62b74232fc2210eb9c80afbeefb6133dee72a4 Parents: 4648dbe Author: gtully <[email protected]> Authored: Thu Jan 22 13:42:24 2015 +0000 Committer: gtully <[email protected]> Committed: Thu Jan 22 14:13:32 2015 +0000 ---------------------------------------------------------------------- .../apache/activemq/broker/jmx/MBeanTest.java | 23 ++++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq/blob/2a62b742/activemq-unit-tests/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java ---------------------------------------------------------------------- diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java index 8e94b48..e2b0c51 100644 --- a/activemq-unit-tests/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java +++ b/activemq-unit-tests/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java @@ -23,6 +23,7 @@ import java.net.URL; import java.util.HashMap; import java.util.Map; import java.util.Set; +import java.util.concurrent.atomic.AtomicBoolean; import javax.jms.BytesMessage; import javax.jms.Connection; @@ -60,6 +61,7 @@ import org.apache.activemq.command.ActiveMQQueue; import org.apache.activemq.command.ActiveMQTempQueue; import org.apache.activemq.util.JMXSupport; import org.apache.activemq.util.URISupport; +import org.apache.activemq.util.Wait; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -735,13 +737,20 @@ public class MBeanTest extends EmbeddedBrokerTestSupport { assertEquals("broker Topic Producer count", 0, broker.getTopicProducers().length); } - protected ObjectName assertRegisteredObjectName(String name) throws MalformedObjectNameException, NullPointerException { - ObjectName objectName = new ObjectName(name); - if (mbeanServer.isRegistered(objectName)) { - echo("Bean Registered: " + objectName); - } else { - fail("Could not find MBean!: " + objectName); - } + protected ObjectName assertRegisteredObjectName(String name) throws MalformedObjectNameException, Exception { + final ObjectName objectName = new ObjectName(name); + final AtomicBoolean result = new AtomicBoolean(false); + assertTrue("Bean registered: " + objectName, Wait.waitFor(new Wait.Condition() { + @Override + public boolean isSatisified() throws Exception { + try { + result.set(mbeanServer.isRegistered(objectName)); + } catch (Exception ignored) { + LOG.debug(ignored.toString()); + } + return result.get(); + } + })); return objectName; }
