NO-JIRA Making a test harder to fail

This commit is contained in:
Clebert Suconic 2017-07-13 12:32:20 -04:00
parent c1dfc202e7
commit 7137743612
1 changed files with 24 additions and 7 deletions

View File

@ -17,6 +17,7 @@
package org.apache.activemq.artemis.tests.integration.openwire.cluster; package org.apache.activemq.artemis.tests.integration.openwire.cluster;
import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString; import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.core.postoffice.Binding; import org.apache.activemq.artemis.core.postoffice.Binding;
import org.apache.activemq.artemis.core.postoffice.Bindings; import org.apache.activemq.artemis.core.postoffice.Bindings;
@ -24,6 +25,7 @@ import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.cluster.RemoteQueueBinding; import org.apache.activemq.artemis.core.server.cluster.RemoteQueueBinding;
import org.apache.activemq.artemis.core.server.cluster.impl.MessageLoadBalancingType; import org.apache.activemq.artemis.core.server.cluster.impl.MessageLoadBalancingType;
import org.apache.activemq.artemis.tests.integration.cluster.distribution.ClusterTestBase; import org.apache.activemq.artemis.tests.integration.cluster.distribution.ClusterTestBase;
import org.apache.activemq.artemis.tests.util.Wait;
import org.apache.activemq.command.ActiveMQDestination; import org.apache.activemq.command.ActiveMQDestination;
import org.apache.activemq.util.ConsumerThread; import org.apache.activemq.util.ConsumerThread;
import org.junit.Test; import org.junit.Test;
@ -54,8 +56,10 @@ public class MessageRedistributionTest extends ClusterTestBase {
setupSessionFactory(0, true); setupSessionFactory(0, true);
setupSessionFactory(1, true); setupSessionFactory(1, true);
createQueue(0, "queues.testaddress", "queue0", null, false); createAddressInfo(0, "queues.testAddress", RoutingType.ANYCAST, -1, false);
createQueue(1, "queues.testaddress", "queue0", null, false); createAddressInfo(1, "queues.testAddress", RoutingType.ANYCAST, -1, false);
createQueue(0, "queues.testaddress", "queue0", null, true);
createQueue(1, "queues.testaddress", "queue0", null, true);
//alternately create consumers to the 2 nodes //alternately create consumers to the 2 nodes
//close the connection then close consumer quickly //close the connection then close consumer quickly
@ -94,11 +98,27 @@ public class MessageRedistributionTest extends ClusterTestBase {
conn.close(); conn.close();
} }
Wait.waitFor(() -> getRemoteQueueBinding(servers[remoteNode]) != null);
//check remote server's consumer count //check remote server's consumer count
ActiveMQServer remoteServer = servers[remoteNode]; RemoteQueueBinding remoteBinding = getRemoteQueueBinding(servers[remoteNode]);
assertNotNull(remoteBinding);
Wait.waitFor(() -> remoteBinding.consumerCount() >= 0);
int count = remoteBinding.consumerCount();
assertTrue("consumer count should never be negative " + count, count >= 0);
}
private RemoteQueueBinding getRemoteQueueBinding(ActiveMQServer server) throws Exception {
ActiveMQServer remoteServer = server;
Bindings bindings = remoteServer.getPostOffice().getBindingsForAddress(new SimpleString("queues.testaddress")); Bindings bindings = remoteServer.getPostOffice().getBindingsForAddress(new SimpleString("queues.testaddress"));
Collection<Binding> bindingSet = bindings.getBindings(); Collection<Binding> bindingSet = bindings.getBindings();
return getRemoteQueueBinding(bindingSet);
}
private RemoteQueueBinding getRemoteQueueBinding(Collection<Binding> bindingSet) {
RemoteQueueBinding remoteBinding = null; RemoteQueueBinding remoteBinding = null;
for (Binding b : bindingSet) { for (Binding b : bindingSet) {
if (b instanceof RemoteQueueBinding) { if (b instanceof RemoteQueueBinding) {
@ -106,9 +126,6 @@ public class MessageRedistributionTest extends ClusterTestBase {
break; break;
} }
} }
return remoteBinding;
assertNotNull(remoteBinding);
int count = remoteBinding.consumerCount();
assertTrue("consumer count should never be negative " + count, count >= 0);
} }
} }