Repository: activemq-artemis Updated Branches: refs/heads/master 16bcdf90b -> 558bb477f
NO-JIRA Adding Test to validate OpenWire and Fail flow control Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/558bb477 Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/558bb477 Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/558bb477 Branch: refs/heads/master Commit: 558bb477f1688ecbd240f46dcbc451e3b8ec600b Parents: 16bcdf9 Author: Clebert Suconic <[email protected]> Authored: Tue Oct 30 11:40:39 2018 -0400 Committer: Clebert Suconic <[email protected]> Committed: Tue Oct 30 11:47:37 2018 -0400 ---------------------------------------------------------------------- .../openwire/OpenWireFlowControlFailTest.java | 91 ++++++++++++++++++++ .../integration/openwire/OpenWireTestBase.java | 9 +- 2 files changed, 99 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/558bb477/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/OpenWireFlowControlFailTest.java ---------------------------------------------------------------------- diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/OpenWireFlowControlFailTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/OpenWireFlowControlFailTest.java new file mode 100644 index 0000000..341f920 --- /dev/null +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/OpenWireFlowControlFailTest.java @@ -0,0 +1,91 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.activemq.artemis.tests.integration.openwire; + +import javax.jms.Connection; +import javax.jms.ConnectionFactory; +import javax.jms.MessageConsumer; +import javax.jms.MessageProducer; +import javax.jms.Session; +import javax.jms.TextMessage; +import java.util.Map; + +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.core.server.impl.AddressInfo; +import org.apache.activemq.artemis.core.settings.impl.AddressFullMessagePolicy; +import org.apache.activemq.artemis.core.settings.impl.AddressSettings; +import org.junit.Assert; +import org.junit.Test; + +public class OpenWireFlowControlFailTest extends OpenWireTestBase { + + public static final String OWHOST = "localhost"; + public static final int OWPORT = 61616; + + protected static final String urlString = "tcp://" + OWHOST + ":" + OWPORT + "?wireFormat.cacheEnabled=true"; + + @Override + protected void configureAddressSettings(Map<String, AddressSettings> addressSettingsMap) { + addressSettingsMap.put("#", new AddressSettings().setAutoCreateQueues(false).setAutoCreateAddresses(false). + setDeadLetterAddress(new SimpleString("ActiveMQ.DLQ")).setAddressFullMessagePolicy(AddressFullMessagePolicy.FAIL).setMaxSizeBytes(10000)); + } + + @Test(timeout = 60000) + public void testMesagesNotSent() throws Exception { + + AddressInfo addressInfo = new AddressInfo(SimpleString.toSimpleString("Test"), RoutingType.ANYCAST); + server.addAddressInfo(addressInfo); + server.createQueue(addressInfo.getName(), RoutingType.ANYCAST, addressInfo.getName(), null, true, false); + + StringBuffer textBody = new StringBuffer(); + for (int i = 0; i < 10; i++) { + textBody.append(" "); + } + ConnectionFactory factory = new ActiveMQConnectionFactory(urlString); + try (Connection connection = factory.createConnection()) { + Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + javax.jms.Queue queue = session.createQueue(addressInfo.getName().toString()); + MessageProducer producer = session.createProducer(queue); + int numberOfMessage = 0; + boolean failed = false; + try { + for (int i = 0; i < 1000; i++) { + producer.send(session.createTextMessage(textBody.toString())); + numberOfMessage++; + } + } catch (Exception e) { + e.printStackTrace(System.out); + failed = true; + } + + System.out.println("Message failed with " + numberOfMessage); + + Assert.assertTrue(failed); + MessageConsumer consumer = session.createConsumer(queue); + connection.start(); + for (int i = 0; i < numberOfMessage; i++) { + TextMessage message = (TextMessage) consumer.receive(5000); + Assert.assertNotNull(message); + Assert.assertEquals(textBody.toString(), message.getText()); + } + + Assert.assertNull(consumer.receiveNoWait()); + } + } +} http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/558bb477/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/OpenWireTestBase.java ---------------------------------------------------------------------- diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/OpenWireTestBase.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/OpenWireTestBase.java index 2f06a42..89c99de 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/OpenWireTestBase.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/OpenWireTestBase.java @@ -20,6 +20,7 @@ import javax.jms.ConnectionFactory; import javax.management.MBeanServer; import javax.management.MBeanServerFactory; import java.util.HashSet; +import java.util.Map; import java.util.Set; import org.apache.activemq.artemis.api.core.SimpleString; @@ -60,7 +61,9 @@ public class OpenWireTestBase extends ActiveMQTestBase { Configuration serverConfig = server.getConfiguration(); - serverConfig.getAddressesSettings().put("#", new AddressSettings().setAutoCreateQueues(false).setAutoCreateAddresses(false).setDeadLetterAddress(new SimpleString("ActiveMQ.DLQ")).setAutoCreateAddresses(true)); + Map<String, AddressSettings> addressSettingsMap = serverConfig.getAddressesSettings(); + + configureAddressSettings(addressSettingsMap); serverConfig.setSecurityEnabled(enableSecurity); @@ -107,6 +110,10 @@ public class OpenWireTestBase extends ActiveMQTestBase { System.out.println("debug: server started"); } + protected void configureAddressSettings(Map<String, AddressSettings> addressSettingsMap) { + addressSettingsMap.put("#", new AddressSettings().setAutoCreateQueues(false).setAutoCreateAddresses(false).setDeadLetterAddress(new SimpleString("ActiveMQ.DLQ")).setAutoCreateAddresses(true)); + } + //override this to add extra server configs protected void extraServerConfig(Configuration serverConfig) { }
