diff options
| author | Robert Gemmell <robbie@apache.org> | 2012-06-28 16:46:12 +0000 |
|---|---|---|
| committer | Robert Gemmell <robbie@apache.org> | 2012-06-28 16:46:12 +0000 |
| commit | edb211dc86c6fb1cf64075b20c7e932dd79849de (patch) | |
| tree | 5fc4ebb7dc5ee51a19760a14f45282edeffae01a /java/systests | |
| parent | c2bbeac3f94cb57e142648ebcac354a41ad5ab6f (diff) | |
| download | qpid-python-edb211dc86c6fb1cf64075b20c7e932dd79849de.tar.gz | |
QPID-3998, QPID-3999, QPID-4093: add new management plugins for jmx/rest/webui functionality, partial merge from the java-config-and-management branch at r1355039
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1355072 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/systests')
20 files changed, 153 insertions, 2339 deletions
diff --git a/java/systests/build.xml b/java/systests/build.xml index 57337bdc55..d8ca018ca0 100644 --- a/java/systests/build.xml +++ b/java/systests/build.xml @@ -32,7 +32,7 @@ nn - or more contributor license agreements. See the NOTICE file </or> </condition> - <property name="module.depends" value="client management/common broker broker/test common amqp-1-0-common common/test jca ${systests.optional.depends}"/> + <property name="module.depends" value="client management/common broker broker/test common amqp-1-0-common common/test jca broker-plugins/management ${systests.optional.depends}"/> <property name="module.test.src" location="src/main/java"/> <property name="module.test.excludes" value="**/DropInTest.java,**/TestClientControlledTest.java"/> diff --git a/java/systests/etc/config-systests-settings.xml b/java/systests/etc/config-systests-settings.xml index 8fad3b8a68..0b65ad83c3 100644 --- a/java/systests/etc/config-systests-settings.xml +++ b/java/systests/etc/config-systests-settings.xml @@ -56,6 +56,9 @@ <keyStorePath>${QPID_HOME}/../test-profiles/test_resources/ssl/java_broker_keystore.jks</keyStorePath> <keyStorePassword>password</keyStorePassword> </ssl> + <http> + <enabled>false</enabled> + </http> </management> <advanced> <framesize>65535</framesize> diff --git a/java/systests/src/main/java/org/apache/qpid/management/jmx/ManagedBrokerMBeanTest.java b/java/systests/src/main/java/org/apache/qpid/management/jmx/ManagedBrokerMBeanTest.java deleted file mode 100644 index ba0f955d76..0000000000 --- a/java/systests/src/main/java/org/apache/qpid/management/jmx/ManagedBrokerMBeanTest.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * 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.qpid.management.jmx; - -import org.apache.qpid.exchange.ExchangeDefaults; -import org.apache.qpid.management.common.mbeans.ManagedBroker; -import org.apache.qpid.management.common.mbeans.ManagedExchange; -import org.apache.qpid.management.common.mbeans.ManagedQueue; -import org.apache.qpid.server.queue.AMQQueueFactory; -import org.apache.qpid.test.utils.JMXTestUtils; -import org.apache.qpid.test.utils.QpidBrokerTestCase; - -import javax.management.MBeanException; -import javax.management.ObjectName; -import java.util.Collections; -import java.util.Map; - -/** - * Tests the JMX API for the Managed Broker. - * - */ -public class ManagedBrokerMBeanTest extends QpidBrokerTestCase -{ - /** - * Test virtual host - */ - private static final String VIRTUAL_HOST = "test"; - - /** - * Test exchange type - */ - private static final String EXCHANGE_TYPE = "topic"; - - /** - * JMX helper. - */ - private JMXTestUtils _jmxUtils; - private ManagedBroker _managedBroker; - - public void setUp() throws Exception - { - _jmxUtils = new JMXTestUtils(this); - _jmxUtils.setUp(); - super.setUp(); - _jmxUtils.open(); - _managedBroker = _jmxUtils.getManagedBroker(VIRTUAL_HOST); - } - - public void tearDown() throws Exception - { - if (_jmxUtils != null) - { - _jmxUtils.close(); - } - super.tearDown(); - } - - /** - * Tests queue creation/deletion also verifying the automatic binding to the default exchange. - */ - public void testCreateQueueAndDeletion() throws Exception - { - final String queueName = getTestQueueName(); - final ManagedExchange defaultExchange = _jmxUtils.getManagedExchange(ExchangeDefaults.DEFAULT_EXCHANGE_NAME.asString()); - - // Check that bind does not exist before queue creation - assertFalse("Binding to " + queueName + " should not exist in default exchange before queue creation", - defaultExchange.bindings().containsKey(new String[] {queueName})); - - _managedBroker.createNewQueue(queueName, "testowner", true); - - // Ensure the queue exists - assertNotNull("Queue object name expected to exist", _jmxUtils.getQueueObjectName("test", queueName)); - assertNotNull("Manager queue expected to be available", _jmxUtils.getManagedQueue(queueName)); - - // Now verify that the default exchange has been bound. - assertTrue("Binding to " + queueName + " should exist in default exchange after queue creation", - defaultExchange.bindings().containsKey(new String[] {queueName})); - - // Now delete the queue - _managedBroker.deleteQueue(queueName); - - // Finally ensure that the binding has been removed. - assertFalse("Binding to " + queueName + " should not exist in default exchange after queue deletion", - defaultExchange.bindings().containsKey(new String[] {queueName})); - } - - /** - * Tests exchange creation/deletion via JMX API. - */ - public void testCreateExchangeAndUnregister() throws Exception - { - String exchangeName = getTestName(); - _managedBroker.createNewExchange(exchangeName, "topic", true); - String queryString = "org.apache.qpid:type=VirtualHost.Exchange,VirtualHost=" - + ObjectName.quote(VIRTUAL_HOST) + ",name=" + ObjectName.quote(exchangeName) + ",ExchangeType=" - + EXCHANGE_TYPE; - ManagedExchange exchange = _jmxUtils.getManagedObject(ManagedExchange.class, queryString); - assertNotNull("Exchange should exist", exchange); - - _managedBroker.unregisterExchange(exchangeName); - assertFalse("Exchange should have been removed", _jmxUtils.isManagedObjectExist(queryString)); - } - - /** - * Tests that it is disallowed to unregister the default exchange. - */ - public void testUnregisterOfDefaultExchangeDisallowed() throws Exception - { - String defaultExchangeName = ExchangeDefaults.DEFAULT_EXCHANGE_NAME.asString(); - - try - { - _managedBroker.unregisterExchange(defaultExchangeName); - fail("Exception not thrown"); - } - catch (MBeanException mbe) - { - // PASS - assertEquals("Error in unregistering exchange " + defaultExchangeName, mbe.getMessage()); - assertTrue(mbe.getCause().getMessage().contains("Cannot unregister the default exchange")); - } - final ManagedExchange defaultExchange = _jmxUtils.getManagedExchange(defaultExchangeName); - assertNotNull("Exchange should exist", defaultExchange); - } - - /** - * Tests queue creation with {@link AMQQueueFactory#X_QPID_MAXIMUM_DELIVERY_COUNT} argument. Also tests - * that the attribute is exposed correctly through {@link ManagedQueue#getMaximumDeliveryCount()}. - */ - public void testCreateQueueWithMaximumDeliveryCountSet() throws Exception - { - final String queueName = getName(); - final ManagedBroker managedBroker = _jmxUtils.getManagedBroker(VIRTUAL_HOST); - - final Integer deliveryCount = 1; - final Map<String, Object> args = Collections.singletonMap(AMQQueueFactory.X_QPID_MAXIMUM_DELIVERY_COUNT, (Object)deliveryCount); - managedBroker.createNewQueue(queueName, "testowner", true, args); - - // Ensure the queue exists - assertNotNull("Queue object name expected to exist", _jmxUtils.getQueueObjectName("test", queueName)); - assertNotNull("Manager queue expected to be available", _jmxUtils.getManagedQueue(queueName)); - - final ManagedQueue managedQueue = _jmxUtils.getManagedQueue(queueName); - assertEquals("Unexpected maximum delivery count", deliveryCount, managedQueue.getMaximumDeliveryCount()); - } - -} diff --git a/java/systests/src/main/java/org/apache/qpid/management/jmx/ManagedConnectionMBeanTest.java b/java/systests/src/main/java/org/apache/qpid/management/jmx/ManagedConnectionMBeanTest.java deleted file mode 100644 index 3fc370dc68..0000000000 --- a/java/systests/src/main/java/org/apache/qpid/management/jmx/ManagedConnectionMBeanTest.java +++ /dev/null @@ -1,278 +0,0 @@ -/* - * 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.qpid.management.jmx; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.apache.qpid.client.AMQSession; -import org.apache.qpid.common.QpidProperties; -import org.apache.qpid.management.common.mbeans.ManagedConnection; -import org.apache.qpid.test.utils.JMXTestUtils; -import org.apache.qpid.test.utils.QpidBrokerTestCase; - -import javax.jms.Connection; -import javax.jms.Destination; -import javax.jms.Message; -import javax.jms.MessageConsumer; -import javax.jms.MessageProducer; -import javax.jms.Session; -import javax.jms.TextMessage; -import javax.management.JMException; -import javax.management.openmbean.CompositeDataSupport; -import javax.management.openmbean.TabularData; -import java.io.IOException; -import java.util.Date; -import java.util.Iterator; -import java.util.List; - -public class ManagedConnectionMBeanTest extends QpidBrokerTestCase -{ - private static final Logger LOGGER = LoggerFactory.getLogger(ManagedConnectionMBeanTest.class); - - /** - * JMX helper. - */ - private JMXTestUtils _jmxUtils; - private Connection _connection; - - public void setUp() throws Exception - { - _jmxUtils = new JMXTestUtils(this); - _jmxUtils.setUp(); - super.setUp(); - _jmxUtils.open(); - _connection = getConnection(); - } - - public void tearDown() throws Exception - { - if (_jmxUtils != null) - { - _jmxUtils.close(); - } - super.tearDown(); - } - - public void testChannels() throws Exception - { - final String queueName = getTestQueueName(); - - final Session session = _connection.createSession(true, Session.SESSION_TRANSACTED); - final Destination destination = session.createQueue(queueName); - final MessageConsumer consumer = session.createConsumer(destination); - - final int numberOfMessages = 2; - sendMessage(session, destination, numberOfMessages); - _connection.start(); - - for (int i = 0; i < numberOfMessages; i++) - { - final Message m = consumer.receive(1000l); - assertNotNull("Message " + i + " is not received", m); - } - - List<ManagedConnection> connections = _jmxUtils.getManagedConnections("test"); - assertNotNull("Connection MBean is not found", connections); - assertEquals("Unexpected number of connection mbeans", 1, connections.size()); - final ManagedConnection mBean = connections.get(0); - assertNotNull("Connection MBean is null", mBean); - - TabularData channelsData = mBean.channels(); - assertNotNull("Channels data are null", channelsData); - assertEquals("Unexpected number of rows in channel table", 1, channelsData.size()); - - final Iterator<CompositeDataSupport> rowItr = (Iterator<CompositeDataSupport>) channelsData.values().iterator(); - final CompositeDataSupport row = rowItr.next(); - Number unackCount = (Number) row.get(ManagedConnection.UNACKED_COUNT); - final Boolean transactional = (Boolean) row.get(ManagedConnection.TRANSACTIONAL); - final Boolean flowBlocked = (Boolean) row.get(ManagedConnection.FLOW_BLOCKED); - assertNotNull("Channel should have unacknowledged messages", unackCount); - assertEquals("Unexpected number of unacknowledged messages", 2, unackCount.intValue()); - assertNotNull("Channel should have transaction flag", transactional); - assertTrue("Unexpected transaction flag", transactional); - assertNotNull("Channel should have flow blocked flag", flowBlocked); - assertFalse("Unexpected value of flow blocked flag", flowBlocked); - - final Date initialLastIOTime = mBean.getLastIoTime(); - session.commit(); - assertTrue("Last IO time should have been updated", mBean.getLastIoTime().after(initialLastIOTime)); - - channelsData = mBean.channels(); - assertNotNull("Channels data are null", channelsData); - assertEquals("Unexpected number of rows in channel table", 1, channelsData.size()); - - final Iterator<CompositeDataSupport> rowItr2 = (Iterator<CompositeDataSupport>) channelsData.values().iterator(); - final CompositeDataSupport row2 = rowItr2.next(); - unackCount = (Number) row2.get(ManagedConnection.UNACKED_COUNT); - assertNotNull("Channel should have unacknowledged messages", unackCount); - assertEquals("Unexpected number of anacknowledged messages", 0, unackCount.intValue()); - - _connection.close(); - - LOGGER.debug("Querying JMX for number of open connections"); - connections = _jmxUtils.getManagedConnections("test"); - assertNotNull("Connection MBean is not found", connections); - assertEquals("Unexpected number of connection mbeans after connection closed", 0, connections.size()); - } - - public void testCommit() throws Exception - { - final String queueName = getTestQueueName(); - - final Session consumerSession = _connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - final Session producerSession = _connection.createSession(true, Session.SESSION_TRANSACTED); - final Destination destination = producerSession.createQueue(queueName); - final MessageConsumer consumer = consumerSession.createConsumer(destination); - final MessageProducer producer = producerSession.createProducer(destination); - - _connection.start(); - - List<ManagedConnection> connections = _jmxUtils.getManagedConnections("test"); - assertNotNull("Connection MBean is not found", connections); - assertEquals("Unexpected number of connection mbeans", 1, connections.size()); - final ManagedConnection mBean = connections.get(0); - assertNotNull("Connection MBean is null", mBean); - - final int numberOfMessages = 2; - for (int i = 0; i < numberOfMessages; i++) - { - producer.send(producerSession.createTextMessage("Test " + i)); - } - - // sync to make sure that messages are received on the broker - // before we commit via JMX - ((AMQSession<?, ?>) producerSession).sync(); - - Message m = consumer.receive(500l); - assertNull("Unexpected message received", m); - - Number channelId = getFirstTransactedChannelId(mBean, 2); - mBean.commitTransactions(channelId.intValue()); - - for (int i = 0; i < numberOfMessages; i++) - { - m = consumer.receive(1000l); - assertNotNull("Message " + i + " is not received", m); - assertEquals("Unexpected message received at " + i, "Test " + i, ((TextMessage) m).getText()); - } - producerSession.commit(); - m = consumer.receive(500l); - assertNull("Unexpected message received", m); - } - - protected Number getFirstTransactedChannelId(final ManagedConnection mBean, int channelNumber) throws IOException, JMException - { - TabularData channelsData = mBean.channels(); - assertNotNull("Channels data are null", channelsData); - assertEquals("Unexpected number of rows in channel table", channelNumber, channelsData.size()); - final Iterator<CompositeDataSupport> rowItr = (Iterator<CompositeDataSupport>) channelsData.values().iterator(); - while (rowItr.hasNext()) - { - final CompositeDataSupport row = rowItr.next(); - Boolean transacted = (Boolean) row.get(ManagedConnection.TRANSACTIONAL); - if (transacted.booleanValue()) - { - return (Number) row.get(ManagedConnection.CHAN_ID); - } - } - return null; - } - - public void testRollback() throws Exception - { - final String queueName = getTestQueueName(); - - final Session consumerSession = _connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - final Session producerSession = _connection.createSession(true, Session.SESSION_TRANSACTED); - final Destination destination = producerSession.createQueue(queueName); - final MessageConsumer consumer = consumerSession.createConsumer(destination); - final MessageProducer producer = producerSession.createProducer(destination); - - List<ManagedConnection> connections = _jmxUtils.getManagedConnections("test"); - assertNotNull("Connection MBean is not found", connections); - assertEquals("Unexpected number of connection mbeans", 1, connections.size()); - final ManagedConnection mBean = connections.get(0); - assertNotNull("Connection MBean is null", mBean); - - final int numberOfMessages = 2; - for (int i = 0; i < numberOfMessages; i++) - { - producer.send(producerSession.createTextMessage("Test " + i)); - } - - // sync to make sure that messages are received on the broker - // before we rollback via JMX - ((AMQSession<?, ?>) producerSession).sync(); - - Number channelId = getFirstTransactedChannelId(mBean, 2); - mBean.rollbackTransactions(channelId.intValue()); - - Message m = consumer.receive(1000l); - assertNull("Unexpected message received: " + String.valueOf(m), m); - - producerSession.commit(); - - _connection.start(); - m = consumer.receive(1000l); - assertNull("Unexpected message received after commit " + String.valueOf(m), m); - } - - public void testAuthorisedId() throws Exception - { - List<ManagedConnection> connections = _jmxUtils.getManagedConnections("test"); - assertNotNull("Connection MBean is not found", connections); - assertEquals("Unexpected number of connection mbeans", 1, connections.size()); - final ManagedConnection mBean = connections.get(0); - assertNotNull("Connection MBean is null", mBean); - assertEquals("Unexpected authorized id", "guest", mBean.getAuthorizedId()); - } - - public void testClientVersion() throws Exception - { - List<ManagedConnection> connections = _jmxUtils.getManagedConnections("test"); - assertNotNull("Connection MBean is not found", connections); - assertEquals("Unexpected number of connection mbeans", 1, connections.size()); - final ManagedConnection mBean = connections.get(0); - assertNotNull("Connection MBean is null", mBean); - - String expectedVersion = QpidProperties.getReleaseVersion(); - assertNotNull("version should not be null", expectedVersion); - assertFalse("version should not be the empty string", expectedVersion.equals("")); - assertFalse("version should not be the string 'null'", expectedVersion.equals("null")); - - assertEquals("Unexpected version", expectedVersion, mBean.getVersion()); - } - - public void testClientId() throws Exception - { - List<ManagedConnection> connections = _jmxUtils.getManagedConnections("test"); - assertNotNull("Connection MBean is not found", connections); - assertEquals("Unexpected number of connection mbeans", 1, connections.size()); - final ManagedConnection mBean = connections.get(0); - assertNotNull("Connection MBean is null", mBean); - - String expectedClientId = _connection.getClientID(); - assertNotNull("ClientId should not be null", expectedClientId); - assertFalse("ClientId should not be the empty string", expectedClientId.equals("")); - assertFalse("ClientId should not be the string 'null'", expectedClientId.equals("null")); - - assertEquals("Unexpected ClientId", expectedClientId, mBean.getClientId()); - } -} diff --git a/java/systests/src/main/java/org/apache/qpid/management/jmx/ManagedQueueMBeanTest.java b/java/systests/src/main/java/org/apache/qpid/management/jmx/ManagedQueueMBeanTest.java deleted file mode 100644 index 244e547e02..0000000000 --- a/java/systests/src/main/java/org/apache/qpid/management/jmx/ManagedQueueMBeanTest.java +++ /dev/null @@ -1,345 +0,0 @@ -/* - * 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.qpid.management.jmx; - -import org.apache.commons.lang.time.FastDateFormat; - -import org.apache.log4j.Logger; -import org.apache.qpid.client.AMQSession; -import org.apache.qpid.configuration.ClientProperties; -import org.apache.qpid.management.common.mbeans.ManagedQueue; -import org.apache.qpid.server.queue.AMQQueueMBean; -import org.apache.qpid.test.utils.JMXTestUtils; -import org.apache.qpid.test.utils.QpidBrokerTestCase; - -import javax.jms.Connection; -import javax.jms.Destination; -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageConsumer; -import javax.jms.MessageListener; -import javax.jms.Session; -import javax.management.openmbean.CompositeData; -import javax.management.openmbean.TabularData; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.SortedSet; -import java.util.TreeSet; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; - -/** - * Tests the JMX API for the Managed Queue. - * - */ -public class ManagedQueueMBeanTest extends QpidBrokerTestCase -{ - protected static final Logger LOGGER = Logger.getLogger(ManagedQueueMBeanTest.class); - - private JMXTestUtils _jmxUtils; - private Connection _connection; - private Session _session; - - private String _sourceQueueName; - private String _destinationQueueName; - private Destination _sourceQueue; - private Destination _destinationQueue; - private ManagedQueue _managedSourceQueue; - private ManagedQueue _managedDestinationQueue; - - public void setUp() throws Exception - { - _jmxUtils = new JMXTestUtils(this); - _jmxUtils.setUp(); - - super.setUp(); - _sourceQueueName = getTestQueueName() + "_src"; - _destinationQueueName = getTestQueueName() + "_dest"; - - _connection = getConnection(); - _connection.start(); - - _session = _connection.createSession(true, Session.SESSION_TRANSACTED); - _sourceQueue = _session.createQueue(_sourceQueueName); - _destinationQueue = _session.createQueue(_destinationQueueName); - createQueueOnBroker(_sourceQueue); - createQueueOnBroker(_destinationQueue); - - _jmxUtils.open(); - - _managedSourceQueue = _jmxUtils.getManagedQueue(_sourceQueueName); - _managedDestinationQueue = _jmxUtils.getManagedQueue(_destinationQueueName); - } - - public void tearDown() throws Exception - { - if (_jmxUtils != null) - { - _jmxUtils.close(); - } - super.tearDown(); - } - - /** - * Tests {@link ManagedQueue#viewMessages(long, long)} interface. - */ - public void testViewSingleMessage() throws Exception - { - final List<Message> sentMessages = sendMessage(_session, _sourceQueue, 1); - syncSession(_session); - final Message sentMessage = sentMessages.get(0); - - assertEquals("Unexpected queue depth", 1, _managedSourceQueue.getMessageCount().intValue()); - - // Check the contents of the message - final TabularData tab = _managedSourceQueue.viewMessages(1l, 1l); - assertEquals("Unexpected number of rows in table", 1, tab.size()); - final Iterator<CompositeData> rowItr = (Iterator<CompositeData>) tab.values().iterator(); - - final CompositeData row1 = rowItr.next(); - assertNotNull("Message should have AMQ message id", row1.get(ManagedQueue.MSG_AMQ_ID)); - assertEquals("Unexpected queue position", 1l, row1.get(ManagedQueue.MSG_QUEUE_POS)); - assertEquals("Unexpected redelivered flag", Boolean.FALSE, row1.get(ManagedQueue.MSG_REDELIVERED)); - - // Check the contents of header (encoded in a string array) - final String[] headerArray = (String[]) row1.get(ManagedQueue.MSG_HEADER); - assertNotNull("Expected message header array", headerArray); - final Map<String, String> headers = headerArrayToMap(headerArray); - - final String expectedJMSMessageID = isBroker010() ? sentMessage.getJMSMessageID().replace("ID:", "") : sentMessage.getJMSMessageID(); - final String expectedFormattedJMSTimestamp = FastDateFormat.getInstance(AMQQueueMBean.JMSTIMESTAMP_DATETIME_FORMAT).format(sentMessage.getJMSTimestamp()); - assertEquals("Unexpected JMSMessageID within header", expectedJMSMessageID, headers.get("JMSMessageID")); - assertEquals("Unexpected JMSPriority within header", String.valueOf(sentMessage.getJMSPriority()), headers.get("JMSPriority")); - assertEquals("Unexpected JMSTimestamp within header", expectedFormattedJMSTimestamp, headers.get("JMSTimestamp")); - } - - /** - * Tests {@link ManagedQueue#moveMessages(long, long, String)} interface. - */ - public void testMoveMessagesBetweenQueues() throws Exception - { - final int numberOfMessagesToSend = 10; - - sendMessage(_session, _sourceQueue, numberOfMessagesToSend); - syncSession(_session); - assertEquals("Unexpected queue depth after send", numberOfMessagesToSend, _managedSourceQueue.getMessageCount().intValue()); - - List<Long> amqMessagesIds = getAMQMessageIdsOn(_managedSourceQueue, 1, numberOfMessagesToSend); - - // Move first three messages to destination - long fromMessageId = amqMessagesIds.get(0); - long toMessageId = amqMessagesIds.get(2); - _managedSourceQueue.moveMessages(fromMessageId, toMessageId, _destinationQueueName); - - assertEquals("Unexpected queue depth on destination queue after first move", 3, _managedDestinationQueue.getMessageCount().intValue()); - assertEquals("Unexpected queue depth on source queue after first move", 7, _managedSourceQueue.getMessageCount().intValue()); - - // Now move a further two messages to destination - fromMessageId = amqMessagesIds.get(7); - toMessageId = amqMessagesIds.get(8); - _managedSourceQueue.moveMessages(fromMessageId, toMessageId, _destinationQueueName); - assertEquals("Unexpected queue depth on destination queue after second move", 5, _managedDestinationQueue.getMessageCount().intValue()); - assertEquals("Unexpected queue depth on source queue after second move", 5, _managedSourceQueue.getMessageCount().intValue()); - - assertMessageIndicesOn(_destinationQueue, 0, 1, 2, 7, 8); - } - - /** - * Tests {@link ManagedQueue#copyMessages(long, long, String)} interface. - */ - public void testCopyMessagesBetweenQueues() throws Exception - { - final int numberOfMessagesToSend = 10; - sendMessage(_session, _sourceQueue, numberOfMessagesToSend); - syncSession(_session); - assertEquals("Unexpected queue depth after send", numberOfMessagesToSend, _managedSourceQueue.getMessageCount().intValue()); - - List<Long> amqMessagesIds = getAMQMessageIdsOn(_managedSourceQueue, 1, numberOfMessagesToSend); - - // Copy first three messages to destination - long fromMessageId = amqMessagesIds.get(0); - long toMessageId = amqMessagesIds.get(2); - _managedSourceQueue.copyMessages(fromMessageId, toMessageId, _destinationQueueName); - - assertEquals("Unexpected queue depth on destination queue after first copy", 3, _managedDestinationQueue.getMessageCount().intValue()); - assertEquals("Unexpected queue depth on source queue after first copy", numberOfMessagesToSend, _managedSourceQueue.getMessageCount().intValue()); - - // Now copy a further two messages to destination - fromMessageId = amqMessagesIds.get(7); - toMessageId = amqMessagesIds.get(8); - _managedSourceQueue.copyMessages(fromMessageId, toMessageId, _destinationQueueName); - assertEquals("Unexpected queue depth on destination queue after second copy", 5, _managedDestinationQueue.getMessageCount().intValue()); - assertEquals("Unexpected queue depth on source queue after second copy", numberOfMessagesToSend, _managedSourceQueue.getMessageCount().intValue()); - - assertMessageIndicesOn(_destinationQueue, 0, 1, 2, 7, 8); - } - - public void testMoveMessagesBetweenQueuesWithActiveConsumerOnSourceQueue() throws Exception - { - setTestClientSystemProperty(ClientProperties.MAX_PREFETCH_PROP_NAME, new Integer(1).toString()); - Connection asyncConnection = getConnection(); - asyncConnection.start(); - - final int numberOfMessagesToSend = 50; - sendMessage(_session, _sourceQueue, numberOfMessagesToSend); - syncSession(_session); - assertEquals("Unexpected queue depth after send", numberOfMessagesToSend, _managedSourceQueue.getMessageCount().intValue()); - - List<Long> amqMessagesIds = getAMQMessageIdsOn(_managedSourceQueue, 1, numberOfMessagesToSend); - - long fromMessageId = amqMessagesIds.get(0); - long toMessageId = amqMessagesIds.get(numberOfMessagesToSend - 1); - - CountDownLatch consumerReadToHalfwayLatch = new CountDownLatch(numberOfMessagesToSend / 2); - AtomicInteger totalConsumed = new AtomicInteger(0); - startAsyncConsumerOn(_sourceQueue, asyncConnection, consumerReadToHalfwayLatch, totalConsumed); - - boolean halfwayPointReached = consumerReadToHalfwayLatch.await(5000, TimeUnit.MILLISECONDS); - assertTrue("Did not read half of messages within time allowed", halfwayPointReached); - - _managedSourceQueue.moveMessages(fromMessageId, toMessageId, _destinationQueueName); - - asyncConnection.stop(); - - // The exact number of messages moved will be non deterministic, as the number of messages processed - // by the consumer cannot be predicited. There is also the possibility that a message can remain - // on the source queue. This situation will arise if a message has been acquired by the consumer, but not - // yet delivered to the client application (i.e. MessageListener#onMessage()) when the Connection#stop() occurs. - // - // The number of messages moved + the number consumed + any messages remaining on source should - // *always* be equal to the number we originally sent. - - int numberOfMessagesReadByConsumer = totalConsumed.intValue(); - int numberOfMessagesOnDestinationQueue = _managedDestinationQueue.getMessageCount().intValue(); - int numberOfMessagesRemainingOnSourceQueue = _managedSourceQueue.getMessageCount().intValue(); - - LOGGER.debug("Async consumer read : " + numberOfMessagesReadByConsumer - + " Number of messages moved to destination : " + numberOfMessagesOnDestinationQueue - + " Number of messages remaining on source : " + numberOfMessagesRemainingOnSourceQueue); - assertEquals("Unexpected number of messages after move", numberOfMessagesToSend, numberOfMessagesReadByConsumer + numberOfMessagesOnDestinationQueue + numberOfMessagesRemainingOnSourceQueue); - } - - public void testMoveMessagesBetweenQueuesWithActiveConsumerOnDestinationQueue() throws Exception - { - setTestClientSystemProperty(ClientProperties.MAX_PREFETCH_PROP_NAME, new Integer(1).toString()); - Connection asyncConnection = getConnection(); - asyncConnection.start(); - - final int numberOfMessagesToSend = 50; - sendMessage(_session, _sourceQueue, numberOfMessagesToSend); - syncSession(_session); - assertEquals("Unexpected queue depth after send", numberOfMessagesToSend, _managedSourceQueue.getMessageCount().intValue()); - - List<Long> amqMessagesIds = getAMQMessageIdsOn(_managedSourceQueue, 1, numberOfMessagesToSend); - long fromMessageId = amqMessagesIds.get(0); - long toMessageId = amqMessagesIds.get(numberOfMessagesToSend - 1); - - AtomicInteger totalConsumed = new AtomicInteger(0); - CountDownLatch allMessagesConsumedLatch = new CountDownLatch(numberOfMessagesToSend); - startAsyncConsumerOn(_destinationQueue, asyncConnection, allMessagesConsumedLatch, totalConsumed); - - _managedSourceQueue.moveMessages(fromMessageId, toMessageId, _destinationQueueName); - - allMessagesConsumedLatch.await(5000, TimeUnit.MILLISECONDS); - assertEquals("Did not consume all messages from destination queue", numberOfMessagesToSend, totalConsumed.intValue()); - } - - private void startAsyncConsumerOn(Destination queue, Connection asyncConnection, - final CountDownLatch requiredNumberOfMessagesRead, final AtomicInteger totalConsumed) throws Exception - { - Session session = asyncConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); - MessageConsumer consumer = session.createConsumer(queue); - consumer.setMessageListener(new MessageListener() - { - - @Override - public void onMessage(Message arg0) - { - totalConsumed.incrementAndGet(); - requiredNumberOfMessagesRead.countDown(); - } - }); - } - - private void assertMessageIndicesOn(Destination queue, int... expectedIndices) throws Exception - { - MessageConsumer consumer = _session.createConsumer(queue); - - for (int i : expectedIndices) - { - Message message = consumer.receive(1000); - assertNotNull("Expected message with index " + i, message); - assertEquals("Expected message with index " + i, i, message.getIntProperty(INDEX)); - } - - assertNull("Unexpected message encountered", consumer.receive(1000)); - } - - private List<Long> getAMQMessageIdsOn(ManagedQueue managedQueue, long startIndex, long endIndex) throws Exception - { - final SortedSet<Long> messageIds = new TreeSet<Long>(); - - final TabularData tab = managedQueue.viewMessages(startIndex, endIndex); - final Iterator<CompositeData> rowItr = (Iterator<CompositeData>) tab.values().iterator(); - while(rowItr.hasNext()) - { - final CompositeData row = rowItr.next(); - long amqMessageId = (Long)row.get(ManagedQueue.MSG_AMQ_ID); - messageIds.add(amqMessageId); - } - - return new ArrayList<Long>(messageIds); - } - - /** - * - * Utility method to convert array of Strings in the form x = y into a - * map with key/value x => y. - * - */ - private Map<String,String> headerArrayToMap(final String[] headerArray) - { - final Map<String, String> headerMap = new HashMap<String, String>(); - final List<String> headerList = Arrays.asList(headerArray); - for (Iterator<String> iterator = headerList.iterator(); iterator.hasNext();) - { - final String nameValuePair = iterator.next(); - final String[] nameValue = nameValuePair.split(" *= *", 2); - headerMap.put(nameValue[0], nameValue[1]); - } - return headerMap; - } - - private void createQueueOnBroker(Destination destination) throws JMSException - { - _session.createConsumer(destination).close(); // Create a consumer only to cause queue creation - } - - private void syncSession(Session session) throws Exception - { - ((AMQSession<?,?>)session).sync(); - } - -} diff --git a/java/systests/src/main/java/org/apache/qpid/management/jmx/ManagementActorLoggingTest.java b/java/systests/src/main/java/org/apache/qpid/management/jmx/ManagementActorLoggingTest.java deleted file mode 100644 index 0e2875235f..0000000000 --- a/java/systests/src/main/java/org/apache/qpid/management/jmx/ManagementActorLoggingTest.java +++ /dev/null @@ -1,480 +0,0 @@ -/* - * - * 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.qpid.management.jmx; - -import org.apache.qpid.management.common.mbeans.ManagedBroker; -import org.apache.qpid.management.common.mbeans.ManagedConnection; -import org.apache.qpid.management.common.mbeans.ManagedExchange; -import org.apache.qpid.server.logging.AbstractTestLogging; -import org.apache.qpid.server.logging.subjects.AbstractTestLogSubject; -import org.apache.qpid.test.utils.JMXTestUtils; - -import javax.jms.Connection; -import javax.jms.ExceptionListener; -import javax.jms.JMSException; -import javax.management.JMException; -import java.io.IOException; -import java.util.List; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; - -/** - * Test class to test if any change in the broker JMX code is affesting the management console - * There are some hardcoding of management feature names and parameter names to create a customized - * look in the console. - */ -public class ManagementActorLoggingTest extends AbstractTestLogging -{ - private JMXTestUtils _jmxUtils; - private boolean _closed = false; - - @Override - public void setUp() throws Exception - { - _jmxUtils = new JMXTestUtils(this); - _jmxUtils.setUp(); - super.setUp(); - _jmxUtils.open(); - } - - @Override - public void tearDown() throws Exception - { - if(!_closed) - { - _jmxUtils.close(); - } - super.tearDown(); - } - - /** - * Description: - * When a connected client has its connection closed via the Management Console this will be logged as a CON-1002 message. - * Input: - * - * 1. Running Broker - * 2. Connected Client - * 3. Connection is closed via Management Console - * Output: - * - * <date> CON-1002 : Close - * - * Validation Steps: - * 4. The CON ID is correct - * 5. This must be the last CON message for the Connection - * 6. It must be preceded by a CON-1001 for this Connection - * - * @throws Exception - {@see ManagedConnection.closeConnection and #getConnection} - * @throws java.io.IOException - if there is a problem reseting the log monitor - */ - public void testConnectionCloseViaManagement() throws IOException, Exception - { - //Create a connection to the broker - Connection connection = getConnection(); - - // Monitor the connection for an exception being thrown - // this should be a DisconnectionException but it is not this tests - // job to valiate that. Only use the exception as a synchronisation - // to check the log file for the Close message - final CountDownLatch exceptionReceived = new CountDownLatch(1); - connection.setExceptionListener(new ExceptionListener() - { - public void onException(JMSException e) - { - //Failover being attempted. - exceptionReceived.countDown(); - } - }); - - //Remove the connection close from any 0-10 connections - _monitor.markDiscardPoint(); - - // Get a managedConnection - ManagedConnection mangedConnection = _jmxUtils.getManagedObject(ManagedConnection.class, "org.apache.qpid:type=VirtualHost.Connection,*"); - - //Close the connection - mangedConnection.closeConnection(); - - //Wait for the connection to close - assertTrue("Timed out waiting for conneciton to report close", - exceptionReceived.await(2, TimeUnit.SECONDS)); - - //Validate results - List<String> results = waitAndFindMatches("CON-1002"); - - assertEquals("Unexpected Connection Close count", 1, results.size()); - } - - /** - * Description: - * Exchange creation is possible from the Management Console. - * When an exchanged is created in this way then a EXH-1001 create message - * is expected to be logged. - * Input: - * - * 1. Running broker - * 2. Connected Management Console - * 3. Exchange Created via Management Console - * Output: - * - * EXH-1001 : Create : [Durable] Type:<value> Name:<value> - * - * Validation Steps: - * 4. The EXH ID is correct - * 5. The correct tags are present in the message based on the create options - * - * @throws java.io.IOException - if there is a problem reseting the log monitor - * @throws javax.management.JMException - {@see #createQueue and ManagedExchange.deleteQueue} - */ - public void testCreateExchangeDirectTransientViaManagementConsole() throws IOException, JMException - { - _monitor.markDiscardPoint(); - - _jmxUtils.createExchange("test", getName(), "direct", false); - - // Validate - - //1 - ID is correct - List<String> results = waitAndFindMatches("EXH-1001"); - - assertEquals("More than one exchange creation found", 1, results.size()); - - String log = getLogMessage(results, 0); - - // Validate correct exchange name - assertTrue("Incorrect exchange name created:" + log, log.endsWith(getName())); - - // Validate it was a management actor. - String actor = fromActor(log); - assertTrue("Actor is not a manangement actor:" + actor, actor.startsWith("mng")); - } - - public void testCreateExchangeTopicTransientViaManagementConsole() throws IOException, JMException - { - //Remove any previous exchange declares - _monitor.markDiscardPoint(); - - _jmxUtils.createExchange("test", getName(), "topic", false); - - // Validate - - //1 - ID is correct - List<String> results = waitAndFindMatches("EXH-1001"); - - assertEquals("More than one exchange creation found", 1, results.size()); - - String log = getLogMessage(results, 0); - - // Validate correct exchange name - assertTrue("Incorrect exchange name created:" + log, log.endsWith(getName())); - - // Validate it was a management actor. - String actor = fromActor(log); - assertTrue("Actor is not a manangement actor:" + actor, actor.startsWith("mng")); - - } - - public void testCreateExchangeFanoutTransientViaManagementConsole() throws IOException, JMException - { - //Remove any previous exchange declares - _monitor.markDiscardPoint(); - - _jmxUtils.createExchange("test", getName(), "fanout", false); - - // Validate - - //1 - ID is correct - List<String> results = waitAndFindMatches("EXH-1001"); - - assertEquals("More than one exchange creation found", 1, results.size()); - - String log = getLogMessage(results, 0); - - // Validate correct exchange name - assertTrue("Incorrect exchange name created:" + log, log.endsWith(getName())); - - // Validate it was a management actor. - String actor = fromActor(log); - assertTrue("Actor is not a manangement actor:" + actor, actor.startsWith("mng")); - - } - - public void testCreateExchangeHeadersTransientViaManagementConsole() throws IOException, JMException - { - //Remove any previous exchange declares - _monitor.markDiscardPoint(); - - _jmxUtils.createExchange("test", getName(), "headers", false); - - // Validate - - //1 - ID is correct - List<String> results = waitAndFindMatches("EXH-1001"); - - assertEquals("More than one exchange creation found", 1, results.size()); - - String log = getLogMessage(results, 0); - - // Validate correct exchange name - assertTrue("Incorrect exchange name created:" + log, log.endsWith(getName())); - - // Validate it was a management actor. - String actor = fromActor(log); - assertTrue("Actor is not a manangement actor:" + actor, actor.startsWith("mng")); - - } - - /** - * Description: - * Queue creation is possible from the Management Console. When a queue is created in this way then a QUE-1001 create message is expected to be logged. - * Input: - * - * 1. Running broker - * 2. Connected Management Console - * 3. Queue Created via Management Console - * Output: - * - * <date> QUE-1001 : Create : Transient Owner:<name> - * - * Validation Steps: - * 4. The QUE ID is correct - * 5. The correct tags are present in the message based on the create options - * - * @throws java.io.IOException - if there is a problem reseting the log monitor - * @throws javax.management.JMException - {@see #createQueue and ManagedExchange.deleteQueue} - */ - public void testCreateQueueTransientViaManagementConsole() throws IOException, JMException - { - //Remove any previous queue declares - _monitor.markDiscardPoint(); - - _jmxUtils.createQueue("test", getName(), null, false); - - // Validate - - List<String> results = waitAndFindMatches("QUE-1001"); - - assertEquals("More than one queue creation found", 1, results.size()); - - String log = getLogMessage(results, 0); - - // Validate correct queue name - String subject = fromSubject(log); - assertEquals("Incorrect queue name created", getName(), AbstractTestLogSubject.getSlice("qu", subject)); - - // Validate it was a management actor. - String actor = fromActor(log); - assertTrue("Actor is not a manangement actor:" + actor, actor.startsWith("mng")); - } - - /** - * Description: - * The ManagementConsole can be used to delete a queue. When this is done a QUE-1002 Deleted message must be logged. - * Input: - * - * 1. Running Broker - * 2. Queue created on the broker with no subscribers - * 3. Management Console connected - * 4. Queue is deleted via Management Console - * Output: - * - * <date> QUE-1002 : Deleted - * - * Validation Steps: - * 5. The QUE ID is correct - * - * @throws java.io.IOException - if there is a problem reseting the log monitor - * @throws javax.management.JMException - {@see #createQueue and ManagedExchange.deleteQueue} - */ - public void testQueueDeleteViaManagementConsole() throws IOException, JMException - { - //Remove any previous queue declares - _monitor.markDiscardPoint(); - - _jmxUtils.createQueue("test", getName(), null, false); - - ManagedBroker managedBroker = _jmxUtils.getManagedBroker("test"); - - managedBroker.deleteQueue(getName()); - - List<String> results = waitAndFindMatches("QUE-1002"); - - assertEquals("More than one queue deletion found", 1, results.size()); - - String log = getLog(results.get(0)); - - // Validate correct binding - String subject = fromSubject(log); - assertEquals("Incorrect queue named in delete", getName(), AbstractTestLogSubject.getSlice("qu", subject)); - - // Validate it was a management actor. - String actor = fromActor(log); - assertTrue("Actor is not a manangement actor:" + actor, actor.startsWith("mng")); - - } - - /** - * Description: - * The binding of a Queue and an Exchange is done via a Binding. When this Binding is created via the Management Console a BND-1001 Create message will be logged. - * Input: - * - * 1. Running Broker - * 2. Connected Management Console - * 3. Use Management Console to perform binding - * Output: - * - * <date> BND-1001 : Create - * - * Validation Steps: - * 4. The BND ID is correct - * 5. This will be the first message for the given binding - * - * @throws java.io.IOException - if there is a problem reseting the log monitor - * @throws javax.management.JMException - {@see #createQueue and ManagedExchange.createNewBinding} - */ - public void testBindingCreateOnDirectViaManagementConsole() throws IOException, JMException - { - //Remove any previous queue declares - _monitor.markDiscardPoint(); - - _jmxUtils.createQueue("test", getName(), null, false); - - ManagedExchange managedExchange = _jmxUtils.getManagedExchange("amq.direct"); - - managedExchange.createNewBinding(getName(), getName()); - - List<String> results = waitAndFindMatches("BND-1001"); - - assertEquals("Unexpected number of bindings logged", 2, results.size()); - - String log = getLogMessage(results, 0); - - // Validate correct binding - String subject = fromSubject(log); - assertEquals("Incorrect queue named in create", getName(), AbstractTestLogSubject.getSlice("qu", subject)); - assertEquals("Incorrect routing key in create", getName(), AbstractTestLogSubject.getSlice("rk", subject)); - - // Validate it was a management actor. - String actor = fromActor(log); - assertTrue("Actor is not a manangement actor:" + actor, actor.startsWith("mng")); - } - - public void testBindingCreateOnTopicViaManagementConsole() throws IOException, JMException - { - //Remove any previous queue declares - _monitor.markDiscardPoint(); - - _jmxUtils.createQueue("test", getName(), null, false); - - ManagedExchange managedExchange = _jmxUtils.getManagedExchange("amq.topic"); - - managedExchange.createNewBinding(getName(), getName()); - - List<String> results = waitAndFindMatches("BND-1001"); - - assertEquals("Unexpected number of bindings logged", 2, results.size()); - - String log = getLogMessage(results, 0); - - // Validate correct binding - String subject = fromSubject(log); - assertEquals("Incorrect queue named in create", getName(), AbstractTestLogSubject.getSlice("qu", subject)); - assertEquals("Incorrect routing key in create", getName(), AbstractTestLogSubject.getSlice("rk", subject)); - - // Validate it was a management actor. - String actor = fromActor(log); - assertTrue("Actor is not a manangement actor:" + actor, actor.startsWith("mng")); - } - - public void testBindingCreateOnFanoutViaManagementConsole() throws IOException, JMException - { - //Remove any previous queue declares - _monitor.markDiscardPoint(); - - _jmxUtils.createQueue("test", getName(), null, false); - - ManagedExchange managedExchange = _jmxUtils.getManagedExchange("amq.fanout"); - - managedExchange.createNewBinding(getName(), getName()); - - List<String> results = waitAndFindMatches("BND-1001"); - - assertEquals("Unexpected number of bindings logged", 2, results.size()); - - String log = getLogMessage(results, 0); - - // Validate correct binding - String subject = fromSubject(log); - assertEquals("Incorrect queue named in create", getName(), AbstractTestLogSubject.getSlice("qu", subject)); - assertEquals("Incorrect routing key in create", getName(), AbstractTestLogSubject.getSlice("rk", subject)); - - // Validate it was a management actor. - String actor = fromActor(log); - assertTrue("Actor is not a manangement actor:" + actor, actor.startsWith("mng")); - } - - /** - * Description: - * Bindings can be deleted so that a queue can be rebound with a different set of values. This can be performed via the Management Console - * Input: - * - * 1. Running Broker - * 2. Management Console connected - * 3. Management Console is used to perform unbind. - * Output: - * - * <date> BND-1002 : Deleted - * - * Validation Steps: - * 4. The BND ID is correct - * 5. There must have been a BND-1001 Create message first. - * 6. This will be the last message for the given binding - * - * @throws java.io.IOException - if there is a problem reseting the log monitor or an issue with the JMX Connection - * @throws javax.management.JMException - {@see #createExchange and ManagedBroker.unregisterExchange} - */ - public void testUnRegisterExchangeViaManagementConsole() throws IOException, JMException - { - //Remove any previous queue declares - _monitor.markDiscardPoint(); - - _jmxUtils.createExchange("test", getName(), "direct", false); - - ManagedBroker managedBroker = _jmxUtils.getManagedBroker("test"); - - managedBroker.unregisterExchange(getName()); - - List<String> results = waitAndFindMatches("EXH-1002"); - - assertEquals("More than one exchange deletion found", 1, results.size()); - - String log = getLog(results.get(0)); - - // Validate correct binding - String subject = fromSubject(log); - assertEquals("Incorrect exchange named in delete", "direct/" + getName(), AbstractTestLogSubject.getSlice("ex", subject)); - - // Validate it was a management actor. - String actor = fromActor(log); - assertTrue("Actor is not a manangement actor:" + actor, actor.startsWith("mng")); - } - -} diff --git a/java/systests/src/main/java/org/apache/qpid/management/jmx/MessageConnectionStatisticsTest.java b/java/systests/src/main/java/org/apache/qpid/management/jmx/MessageConnectionStatisticsTest.java deleted file mode 100644 index 9465749226..0000000000 --- a/java/systests/src/main/java/org/apache/qpid/management/jmx/MessageConnectionStatisticsTest.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * - * 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.qpid.management.jmx; - -import org.apache.qpid.client.AMQConnection; -import org.apache.qpid.management.common.mbeans.ManagedBroker; -import org.apache.qpid.management.common.mbeans.ManagedConnection; - -import javax.jms.Connection; -import java.util.ArrayList; -import java.util.List; - -/** - * Test enabling generation of message statistics on a per-connection basis. - */ -public class MessageConnectionStatisticsTest extends MessageStatisticsTestCase -{ - public void configureStatistics() throws Exception - { - // no statistics generation configured - } - - /** - * Test statistics on a single connection - */ - public void testEnablingStatisticsPerConnection() throws Exception - { - ManagedBroker vhost = _jmxUtils.getManagedBroker("test"); - - sendUsing(_test, 5, 200); - Thread.sleep(1000); - - List<String> addresses = new ArrayList<String>(); - for (ManagedConnection mc : _jmxUtils.getManagedConnections("test")) - { - assertEquals("Incorrect connection total", 0, mc.getTotalMessagesReceived()); - assertEquals("Incorrect connection data", 0, mc.getTotalDataReceived()); - assertFalse("Connection statistics should not be enabled", mc.isStatisticsEnabled()); - - addresses.add(mc.getRemoteAddress()); - } - assertEquals("Incorrect vhost total", 0, vhost.getTotalMessagesReceived()); - assertEquals("Incorrect vhost data", 0, vhost.getTotalDataReceived()); - - Connection test = new AMQConnection(_brokerUrl, USER, USER, "clientid", "test"); - test.start(); - for (ManagedConnection mc : _jmxUtils.getManagedConnections("test")) - { - if (addresses.contains(mc.getRemoteAddress())) - { - continue; - } - mc.setStatisticsEnabled(true); - assertEquals("Incorrect connection total", 0, mc.getTotalMessagesReceived()); - assertEquals("Incorrect connection data", 0, mc.getTotalDataReceived()); - } - - sendUsing(test, 5, 200); - sendUsing(_test, 5, 200); - Thread.sleep(1000); - - for (ManagedConnection mc : _jmxUtils.getManagedConnections("test")) - { - if (addresses.contains(mc.getRemoteAddress())) - { - assertEquals("Incorrect connection total", 0, mc.getTotalMessagesReceived()); - assertEquals("Incorrect connection data", 0, mc.getTotalDataReceived()); - assertFalse("Connection statistics should not be enabled", mc.isStatisticsEnabled()); - } - else - { - assertEquals("Incorrect connection total", 5, mc.getTotalMessagesReceived()); - assertEquals("Incorrect connection data", 1000, mc.getTotalDataReceived()); - assertTrue("Connection statistics should be enabled", mc.isStatisticsEnabled()); - } - } - assertEquals("Incorrect vhost total", 0, vhost.getTotalMessagesReceived()); - assertEquals("Incorrect vhost data", 0, vhost.getTotalDataReceived()); - assertFalse("Vhost statistics should not be enabled", vhost.isStatisticsEnabled()); - - test.close(); - } -} diff --git a/java/systests/src/main/java/org/apache/qpid/management/jmx/MessageStatisticsConfigurationTest.java b/java/systests/src/main/java/org/apache/qpid/management/jmx/MessageStatisticsConfigurationTest.java deleted file mode 100644 index 383c4c00a8..0000000000 --- a/java/systests/src/main/java/org/apache/qpid/management/jmx/MessageStatisticsConfigurationTest.java +++ /dev/null @@ -1,162 +0,0 @@ -/* - * - * 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.qpid.management.jmx; - -import org.apache.qpid.management.common.mbeans.ManagedBroker; -import org.apache.qpid.management.common.mbeans.ManagedConnection; - -/** - * Test enabling generation of message statistics on a per-connection basis. - */ -public class MessageStatisticsConfigurationTest extends MessageStatisticsTestCase -{ - public void configureStatistics() throws Exception - { - setConfigurationProperty("statistics.generation.broker", Boolean.toString(getName().contains("Broker"))); - setConfigurationProperty("statistics.generation.virtualhosts", Boolean.toString(getName().contains("Virtualhost"))); - setConfigurationProperty("statistics.generation.connections", Boolean.toString(getName().contains("Connection"))); - } - - /** - * Just broker statistics. - */ - public void testGenerateBrokerStatistics() throws Exception - { - sendUsing(_test, 5, 200); - Thread.sleep(1000); - - for (ManagedConnection mc : _jmxUtils.getManagedConnections("test")) - { - assertEquals("Incorrect connection total", 0, mc.getTotalMessagesReceived()); - assertEquals("Incorrect connection data", 0, mc.getTotalDataReceived()); - assertFalse("Connection statistics should not be enabled", mc.isStatisticsEnabled()); - } - - ManagedBroker vhost = _jmxUtils.getManagedBroker("test"); - assertEquals("Incorrect vhost data", 0, vhost.getTotalMessagesReceived()); - assertEquals("Incorrect vhost data", 0, vhost.getTotalDataReceived()); - assertFalse("Vhost statistics should not be enabled", vhost.isStatisticsEnabled()); - - assertEquals("Incorrect server total messages", 5, _jmxUtils.getServerInformation().getTotalMessagesReceived()); - assertEquals("Incorrect server total data", 1000, _jmxUtils.getServerInformation().getTotalDataReceived()); - assertTrue("Server statistics should be enabled", _jmxUtils.getServerInformation().isStatisticsEnabled()); - } - - /** - * Just virtualhost statistics. - */ - public void testGenerateVirtualhostStatistics() throws Exception - { - sendUsing(_test, 5, 200); - Thread.sleep(1000); - - for (ManagedConnection mc : _jmxUtils.getManagedConnections("test")) - { - assertEquals("Incorrect connection total", 0, mc.getTotalMessagesReceived()); - assertEquals("Incorrect connection data", 0, mc.getTotalDataReceived()); - assertFalse("Connection statistics should not be enabled", mc.isStatisticsEnabled()); - } - - ManagedBroker vhost = _jmxUtils.getManagedBroker("test"); - assertEquals("Incorrect vhost data", 5, vhost.getTotalMessagesReceived()); - assertEquals("Incorrect vhost data", 1000, vhost.getTotalDataReceived()); - assertTrue("Vhost statistics should be enabled", vhost.isStatisticsEnabled()); - - assertEquals("Incorrect server total messages", 0, _jmxUtils.getServerInformation().getTotalMessagesReceived()); - assertEquals("Incorrect server total data", 0, _jmxUtils.getServerInformation().getTotalDataReceived()); - assertFalse("Server statistics should not be enabled", _jmxUtils.getServerInformation().isStatisticsEnabled()); - } - - /** - * Just connection statistics. - */ - public void testGenerateConnectionStatistics() throws Exception - { - sendUsing(_test, 5, 200); - Thread.sleep(1000); - - for (ManagedConnection mc : _jmxUtils.getManagedConnections("test")) - { - assertEquals("Incorrect connection total", 5, mc.getTotalMessagesReceived()); - assertEquals("Incorrect connection data", 1000, mc.getTotalDataReceived()); - assertTrue("Connection statistics should be enabled", mc.isStatisticsEnabled()); - } - - ManagedBroker vhost = _jmxUtils.getManagedBroker("test"); - assertEquals("Incorrect vhost data", 0, vhost.getTotalMessagesReceived()); - assertEquals("Incorrect vhost data", 0, vhost.getTotalDataReceived()); - assertFalse("Vhost statistics should not be enabled", vhost.isStatisticsEnabled()); - - assertEquals("Incorrect server total messages", 0, _jmxUtils.getServerInformation().getTotalMessagesReceived()); - assertEquals("Incorrect server total data", 0, _jmxUtils.getServerInformation().getTotalDataReceived()); - assertFalse("Server statistics should not be enabled", _jmxUtils.getServerInformation().isStatisticsEnabled()); - } - - /** - * Both broker and virtualhost statistics. - */ - public void testGenerateBrokerAndVirtualhostStatistics() throws Exception - { - sendUsing(_test, 5, 200); - Thread.sleep(1000); - - for (ManagedConnection mc : _jmxUtils.getManagedConnections("test")) - { - assertEquals("Incorrect connection total", 0, mc.getTotalMessagesReceived()); - assertEquals("Incorrect connection data", 0, mc.getTotalDataReceived()); - assertFalse("Connection statistics should not be enabled", mc.isStatisticsEnabled()); - } - - ManagedBroker vhost = _jmxUtils.getManagedBroker("test"); - assertEquals("Incorrect vhost data", 5, vhost.getTotalMessagesReceived()); - assertEquals("Incorrect vhost data", 1000, vhost.getTotalDataReceived()); - assertTrue("Vhost statistics should be enabled", vhost.isStatisticsEnabled()); - - assertEquals("Incorrect server total messages", 5, _jmxUtils.getServerInformation().getTotalMessagesReceived()); - assertEquals("Incorrect server total data", 1000, _jmxUtils.getServerInformation().getTotalDataReceived()); - assertTrue("Server statistics should be enabled", _jmxUtils.getServerInformation().isStatisticsEnabled()); - } - - /** - * Broker, virtualhost and connection statistics. - */ - public void testGenerateBrokerVirtualhostAndConnectionStatistics() throws Exception - { - sendUsing(_test, 5, 200); - Thread.sleep(1000); - - for (ManagedConnection mc : _jmxUtils.getManagedConnections("test")) - { - assertEquals("Incorrect connection total", 5, mc.getTotalMessagesReceived()); - assertEquals("Incorrect connection data", 1000, mc.getTotalDataReceived()); - assertTrue("Connection statistics should be enabled", mc.isStatisticsEnabled()); - } - - ManagedBroker vhost = _jmxUtils.getManagedBroker("test"); - assertEquals("Incorrect vhost data", 5, vhost.getTotalMessagesReceived()); - assertEquals("Incorrect vhost data", 1000, vhost.getTotalDataReceived()); - assertTrue("Vhost statistics should be enabled", vhost.isStatisticsEnabled()); - - assertEquals("Incorrect server total messages", 5, _jmxUtils.getServerInformation().getTotalMessagesReceived()); - assertEquals("Incorrect server total data", 1000, _jmxUtils.getServerInformation().getTotalDataReceived()); - assertTrue("Server statistics should be enabled", _jmxUtils.getServerInformation().isStatisticsEnabled()); - } -} diff --git a/java/systests/src/main/java/org/apache/qpid/management/jmx/MessageStatisticsDeliveryTest.java b/java/systests/src/main/java/org/apache/qpid/management/jmx/MessageStatisticsDeliveryTest.java deleted file mode 100644 index bdfd1e2c14..0000000000 --- a/java/systests/src/main/java/org/apache/qpid/management/jmx/MessageStatisticsDeliveryTest.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * - * 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.qpid.management.jmx; - -import org.apache.qpid.client.AMQConnection; -import org.apache.qpid.management.common.mbeans.ManagedBroker; -import org.apache.qpid.management.common.mbeans.ManagedConnection; - -import javax.jms.Connection; -import javax.jms.Message; -import javax.jms.MessageConsumer; -import javax.jms.Session; -import java.util.ArrayList; -import java.util.List; - -/** - * Test statistics for delivery and receipt. - */ -public class MessageStatisticsDeliveryTest extends MessageStatisticsTestCase -{ - public void configureStatistics() throws Exception - { - setConfigurationProperty("statistics.generation.broker", "true"); - setConfigurationProperty("statistics.generation.virtualhosts", "true"); - setConfigurationProperty("statistics.generation.connections", "true"); - } - - public void testDeliveryAndReceiptStatistics() throws Exception - { - ManagedBroker vhost = _jmxUtils.getManagedBroker("test"); - - sendUsing(_test, 5, 200); - Thread.sleep(1000); - - List<String> addresses = new ArrayList<String>(); - for (ManagedConnection mc : _jmxUtils.getManagedConnections("test")) - { - assertEquals("Incorrect connection delivery total", 0, mc.getTotalMessagesDelivered()); - assertEquals("Incorrect connection delivery data", 0, mc.getTotalDataDelivered()); - assertEquals("Incorrect connection receipt total", 5, mc.getTotalMessagesReceived()); - assertEquals("Incorrect connection receipt data", 1000, mc.getTotalDataReceived()); - - addresses.add(mc.getRemoteAddress()); - } - - assertEquals("Incorrect vhost delivery total", 0, vhost.getTotalMessagesDelivered()); - assertEquals("Incorrect vhost delivery data", 0, vhost.getTotalDataDelivered()); - assertEquals("Incorrect vhost receipt total", 5, vhost.getTotalMessagesReceived()); - assertEquals("Incorrect vhost receipt data", 1000, vhost.getTotalDataReceived()); - - Connection test = new AMQConnection(_brokerUrl, USER, USER, "clientid", "test"); - test.start(); - receiveUsing(test, 5); - - for (ManagedConnection mc : _jmxUtils.getManagedConnections("test")) - { - if (addresses.contains(mc.getRemoteAddress())) - { - assertEquals("Incorrect connection delivery total", 0, mc.getTotalMessagesDelivered()); - assertEquals("Incorrect connection delivery data", 0, mc.getTotalDataDelivered()); - assertEquals("Incorrect connection receipt total", 5, mc.getTotalMessagesReceived()); - assertEquals("Incorrect connection receipt data", 1000, mc.getTotalDataReceived()); - } - else - { - assertEquals("Incorrect connection delivery total", 5, mc.getTotalMessagesDelivered()); - assertEquals("Incorrect connection delivery data", 1000, mc.getTotalDataDelivered()); - assertEquals("Incorrect connection receipt total", 0, mc.getTotalMessagesReceived()); - assertEquals("Incorrect connection receipt data", 0, mc.getTotalDataReceived()); - } - } - assertEquals("Incorrect vhost delivery total", 5, vhost.getTotalMessagesDelivered()); - assertEquals("Incorrect vhost delivery data", 1000, vhost.getTotalDataDelivered()); - assertEquals("Incorrect vhost receipt total", 5, vhost.getTotalMessagesReceived()); - assertEquals("Incorrect vhost receipt data", 1000, vhost.getTotalDataReceived()); - - test.close(); - } - - protected void receiveUsing(Connection con, int number) throws Exception - { - Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE); - createQueue(session); - MessageConsumer consumer = session.createConsumer(_queue); - for (int i = 0; i < number; i++) - { - Message msg = consumer.receive(1000); - assertNotNull("Message " + i + " was not received", msg); - } - } -} diff --git a/java/systests/src/main/java/org/apache/qpid/management/jmx/MessageStatisticsTest.java b/java/systests/src/main/java/org/apache/qpid/management/jmx/MessageStatisticsTest.java deleted file mode 100644 index de4567624d..0000000000 --- a/java/systests/src/main/java/org/apache/qpid/management/jmx/MessageStatisticsTest.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * - * 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.qpid.management.jmx; - -import org.apache.qpid.client.AMQConnection; -import org.apache.qpid.management.common.mbeans.ManagedBroker; -import org.apache.qpid.management.common.mbeans.ManagedConnection; - -import javax.jms.Connection; - -/** - * Test generation of message statistics. - */ -public class MessageStatisticsTest extends MessageStatisticsTestCase -{ - public void configureStatistics() throws Exception - { - setConfigurationProperty("statistics.generation.broker", "true"); - setConfigurationProperty("statistics.generation.virtualhosts", "true"); - setConfigurationProperty("statistics.generation.connections", "true"); - } - - /** - * Test message totals. - */ - public void testMessageTotals() throws Exception - { - sendUsing(_test, 10, 100); - sendUsing(_dev, 20, 100); - sendUsing(_local, 5, 100); - sendUsing(_local, 5, 100); - sendUsing(_local, 5, 100); - Thread.sleep(2000); - - ManagedBroker test = _jmxUtils.getManagedBroker("test"); - ManagedBroker dev = _jmxUtils.getManagedBroker("development"); - ManagedBroker local = _jmxUtils.getManagedBroker("localhost"); - - if (!isBroker010()) - { - long total = 0; - long data = 0; - for (ManagedConnection mc : _jmxUtils.getAllManagedConnections()) - { - total += mc.getTotalMessagesReceived(); - data += mc.getTotalDataReceived(); - } - assertEquals("Incorrect connection total", 45, total); - assertEquals("Incorrect connection data", 4500, data); - } - assertEquals("Incorrect server total", 45, _jmxUtils.getServerInformation().getTotalMessagesReceived()); - assertEquals("Incorrect server data", 4500, _jmxUtils.getServerInformation().getTotalDataReceived()); - - if (!isBroker010()) - { - long testTotal = 0; - long testData = 0; - for (ManagedConnection mc : _jmxUtils.getManagedConnections("test")) - { - testTotal += mc.getTotalMessagesReceived(); - testData += mc.getTotalDataReceived(); - } - assertEquals("Incorrect test connection total", 10, testTotal); - assertEquals("Incorrect test connection data", 1000, testData); - } - assertEquals("Incorrect test vhost total", 10, test.getTotalMessagesReceived()); - assertEquals("Incorrect test vhost data", 1000, test.getTotalDataReceived()); - - if (!isBroker010()) - { - long devTotal = 0; - long devData = 0; - for (ManagedConnection mc : _jmxUtils.getManagedConnections("development")) - { - devTotal += mc.getTotalMessagesReceived(); - devData += mc.getTotalDataReceived(); - } - assertEquals("Incorrect test connection total", 20, devTotal); - assertEquals("Incorrect test connection data", 2000, devData); - } - assertEquals("Incorrect development total", 20, dev.getTotalMessagesReceived()); - assertEquals("Incorrect development data", 2000, dev.getTotalDataReceived()); - - if (!isBroker010()) - { - long localTotal = 0; - long localData = 0; - for (ManagedConnection mc : _jmxUtils.getManagedConnections("localhost")) - { - localTotal += mc.getTotalMessagesReceived(); - localData += mc.getTotalDataReceived(); - } - assertEquals("Incorrect test connection total", 15, localTotal); - assertEquals("Incorrect test connection data", 1500, localData); - } - assertEquals("Incorrect localhost total", 15, local.getTotalMessagesReceived()); - assertEquals("Incorrect localhost data", 1500, local.getTotalDataReceived()); - } - - /** - * Test message totals when a connection is closed. - */ - public void testMessageTotalsWithClosedConnections() throws Exception - { - Connection temp = new AMQConnection(_brokerUrl, USER, USER, "clientid", "test"); - temp.start(); - - sendUsing(_test, 10, 100); - sendUsing(temp, 10, 100); - sendUsing(_test, 10, 100); - Thread.sleep(2000); - - temp.close(); - - ManagedBroker test = _jmxUtils.getManagedBroker("test"); - - if (!isBroker010()) - { - long total = 0; - long data = 0; - for (ManagedConnection mc : _jmxUtils.getAllManagedConnections()) - { - total += mc.getTotalMessagesReceived(); - data += mc.getTotalDataReceived(); - } - assertEquals("Incorrect active connection total", 20, total); - assertEquals("Incorrect active connection data", 2000, data); - } - assertEquals("Incorrect server total", 30, _jmxUtils.getServerInformation().getTotalMessagesReceived()); - assertEquals("Incorrect server data", 3000, _jmxUtils.getServerInformation().getTotalDataReceived()); - - if (!isBroker010()) - { - long testTotal = 0; - long testData = 0; - for (ManagedConnection mc : _jmxUtils.getManagedConnections("test")) - { - testTotal += mc.getTotalMessagesReceived(); - testData += mc.getTotalDataReceived(); - } - assertEquals("Incorrect test active connection total", 20, testTotal); - assertEquals("Incorrect test active connection data", 20 * 100, testData); - } - assertEquals("Incorrect test vhost total", 30, test.getTotalMessagesReceived()); - assertEquals("Incorrect test vhost data", 30 * 100, test.getTotalDataReceived()); - } - - /** - * Test message totals when a vhost has its statistics reset - */ - public void testMessageTotalVhostReset() throws Exception - { - sendUsing(_test, 10, 10); - sendUsing(_dev, 10, 10); - Thread.sleep(2000); - - ManagedBroker test = _jmxUtils.getManagedBroker("test"); - ManagedBroker dev = _jmxUtils.getManagedBroker("development"); - - assertEquals("Incorrect test vhost total messages", 10, test.getTotalMessagesReceived()); - assertEquals("Incorrect test vhost total data", 100, test.getTotalDataReceived()); - assertEquals("Incorrect dev vhost total messages", 10, dev.getTotalMessagesReceived()); - assertEquals("Incorrect dev vhost total data", 100, dev.getTotalDataReceived()); - - assertEquals("Incorrect server total messages", 20, _jmxUtils.getServerInformation().getTotalMessagesReceived()); - assertEquals("Incorrect server total data", 200, _jmxUtils.getServerInformation().getTotalDataReceived()); - - test.resetStatistics(); - - assertEquals("Incorrect test vhost total messages", 0, test.getTotalMessagesReceived()); - assertEquals("Incorrect test vhost total data", 0, test.getTotalDataReceived()); - assertEquals("Incorrect dev vhost total messages", 10, dev.getTotalMessagesReceived()); - assertEquals("Incorrect dev vhost total data", 100, dev.getTotalDataReceived()); - - assertEquals("Incorrect server total messages", 20, _jmxUtils.getServerInformation().getTotalMessagesReceived()); - assertEquals("Incorrect server total data", 200, _jmxUtils.getServerInformation().getTotalDataReceived()); - } -} diff --git a/java/systests/src/main/java/org/apache/qpid/management/jmx/MessageStatisticsTestCase.java b/java/systests/src/main/java/org/apache/qpid/management/jmx/MessageStatisticsTestCase.java deleted file mode 100644 index 45200ba476..0000000000 --- a/java/systests/src/main/java/org/apache/qpid/management/jmx/MessageStatisticsTestCase.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * - * 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.qpid.management.jmx; - -import org.apache.qpid.AMQException; -import org.apache.qpid.client.AMQConnection; -import org.apache.qpid.client.AMQDestination; -import org.apache.qpid.client.AMQQueue; -import org.apache.qpid.client.AMQSession; -import org.apache.qpid.exchange.ExchangeDefaults; -import org.apache.qpid.framing.AMQShortString; -import org.apache.qpid.test.utils.JMXTestUtils; -import org.apache.qpid.test.utils.QpidBrokerTestCase; - -import javax.jms.Connection; -import javax.jms.Destination; -import javax.jms.JMSException; -import javax.jms.MessageProducer; -import javax.jms.Session; -import javax.jms.TextMessage; - -/** - * Test generation of message statistics. - */ -public abstract class MessageStatisticsTestCase extends QpidBrokerTestCase -{ - protected static final String USER = "admin"; - - protected JMXTestUtils _jmxUtils; - protected Connection _test, _dev, _local; - protected String _queueName = "statistics"; - protected Destination _queue; - protected String _brokerUrl; - - @Override - public void setUp() throws Exception - { - _jmxUtils = new JMXTestUtils(this, USER, USER); - _jmxUtils.setUp(); - - configureStatistics(); - - super.setUp(); - - _brokerUrl = getBroker().toString(); - _test = new AMQConnection(_brokerUrl, USER, USER, "clientid", "test"); - _dev = new AMQConnection(_brokerUrl, USER, USER, "clientid", "development"); - _local = new AMQConnection(_brokerUrl, USER, USER, "clientid", "localhost"); - - _test.start(); - _dev.start(); - _local.start(); - - _jmxUtils.open(); - } - - protected void createQueue(Session session) throws AMQException, JMSException - { - _queue = new AMQQueue(ExchangeDefaults.DIRECT_EXCHANGE_NAME, _queueName); - if (!((AMQSession<?,?>) session).isQueueBound((AMQDestination) _queue)) - { - ((AMQSession<?,?>) session).createQueue(new AMQShortString(_queueName), false, true, false, null); - ((AMQSession<?,?>) session).declareAndBind((AMQDestination) new AMQQueue(ExchangeDefaults.DIRECT_EXCHANGE_NAME, _queueName)); - } - } - - - @Override - public void tearDown() throws Exception - { - _jmxUtils.close(); - - _test.close(); - _dev.close(); - _local.close(); - - super.tearDown(); - } - - /** - * Configure statistics generation properties on the broker. - */ - public abstract void configureStatistics() throws Exception; - - protected void sendUsing(Connection con, int number, int size) throws Exception - { - Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE); - createQueue(session); - MessageProducer producer = session.createProducer(_queue); - String content = new String(new byte[size]); - TextMessage msg = session.createTextMessage(content); - for (int i = 0; i < number; i++) - { - producer.send(msg); - } - } - - /** - * Asserts that the actual value is within the expected value plus or - * minus the given error. - */ - public void assertApprox(String message, double error, double expected, double actual) - { - double min = expected * (1.0d - error); - double max = expected * (1.0d + error); - String assertion = String.format("%s: expected %f +/- %d%%, actual %f", - message, expected, (int) (error * 100.0d), actual); - assertTrue(assertion, actual > min && actual < max); - } -} diff --git a/java/systests/src/main/java/org/apache/qpid/server/logging/ManagementLoggingTest.java b/java/systests/src/main/java/org/apache/qpid/server/logging/ManagementLoggingTest.java deleted file mode 100644 index c8a6d02761..0000000000 --- a/java/systests/src/main/java/org/apache/qpid/server/logging/ManagementLoggingTest.java +++ /dev/null @@ -1,316 +0,0 @@ -/* - * - * 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.qpid.server.logging; - - -import org.apache.qpid.server.configuration.ServerConfiguration; -import org.apache.qpid.test.utils.JMXTestUtils; -import org.apache.qpid.util.LogMonitor; - -import java.io.File; -import java.util.List; - -/** - * Management Console Test Suite - * - * The Management Console test suite validates that the follow log messages as specified in the Functional Specification. - * - * This suite of tests validate that the management console messages occur correctly and according to the following format: - * - * MNG-1001 : Startup - * MNG-1002 : Starting : <service> : Listening on port <Port> - * MNG-1003 : Shutting down : <service> : port <Port> - * MNG-1004 : Ready - * MNG-1005 : Stopped - * MNG-1006 : Using SSL Keystore : <path> - * MNG-1007 : Open : User <username> - * MNG-1008 : Close : User <username> - */ -public class ManagementLoggingTest extends AbstractTestLogging -{ - private static final String MNG_PREFIX = "MNG-"; - - public void setUp() throws Exception - { - setLogMessagePrefix(); - - // We either do this here or have a null check in tearDown. - // As when this test is run against profiles other than java it will NPE - _monitor = new LogMonitor(_outputFile); - //We explicitly do not call super.setUp as starting up the broker is - //part of the test case. - - } - - /** - * Description: - * Using the startup configuration validate that the management startup - * message is logged correctly. - * Input: - * Standard configuration with management enabled - * Output: - * - * <date> MNG-1001 : Startup - * - * Constraints: - * This is the FIRST message logged by MNG - * Validation Steps: - * - * 1. The BRK ID is correct - * 2. This is the FIRST message logged by MNG - */ - public void testManagementStartupEnabled() throws Exception - { - // This test only works on java brokers - if (isJavaBroker()) - { - startBrokerAndCreateMonitor(true, false); - - // Ensure we have received the MNG log msg. - waitForMessage("MNG-1001"); - - List<String> results = findMatches(MNG_PREFIX); - // Validation - - assertTrue("MNGer message not logged", results.size() > 0); - - String log = getLogMessage(results, 0); - - //1 - validateMessageID("MNG-1001", log); - - //2 - //There will be 2 copies of the startup message (one via SystemOut, and one via Log4J) - results = findMatches("MNG-1001"); - assertEquals("Unexpected startup message count.", - 2, results.size()); - - //3 - assertEquals("Startup log message is not 'Startup'.", "Startup", - getMessageString(log)); - } - } - - /** - * Description: - * Verify that when management is disabled in the configuration file the - * startup message is not logged. - * Input: - * Standard configuration with management disabled - * Output: - * NO MNG messages - * Validation Steps: - * - * 1. Validate that no MNG messages are produced. - */ - public void testManagementStartupDisabled() throws Exception - { - if (isJavaBroker()) - { - startBrokerAndCreateMonitor(false, false); - - List<String> results = findMatches(MNG_PREFIX); - // Validation - - assertEquals("MNGer messages logged", 0, results.size()); - } - } - - /** - * The two MNG-1002 messages are logged at the same time so lets test them - * at the same time. - * - * Description: - * Using the default configuration validate that the RMI Registry socket is - * correctly reported as being opened - * - * Input: - * The default configuration file - * Output: - * - * <date> MESSAGE MNG-1002 : Starting : RMI Registry : Listening on port 8999 - * - * Constraints: - * The RMI ConnectorServer and Registry log messages do not have a prescribed order - * Validation Steps: - * - * 1. The MNG ID is correct - * 2. The specified port is the correct '8999' - * - * Description: - * Using the default configuration validate that the RMI ConnectorServer - * socket is correctly reported as being opened - * - * Input: - * The default configuration file - * Output: - * - * <date> MESSAGE MNG-1002 : Starting : RMI ConnectorServer : Listening on port 9099 - * - * Constraints: - * The RMI ConnectorServer and Registry log messages do not have a prescribed order - * Validation Steps: - * - * 1. The MNG ID is correct - * 2. The specified port is the correct '9099' - */ - public void testManagementStartupRMIEntries() throws Exception - { - if (isJavaBroker()) - { - startBrokerAndCreateMonitor(true, false); - - List<String> results = waitAndFindMatches("MNG-1002"); - // Validation - - //There will be 4 startup messages (two via SystemOut, and two via Log4J) - assertEquals("Unexpected MNG-1002 message count", 4, results.size()); - - String log = getLogMessage(results, 0); - - //1 - validateMessageID("MNG-1002", log); - - //Check the RMI Registry port is as expected - int mPort = getManagementPort(getPort()); - assertTrue("RMI Registry port not as expected(" + mPort + ").:" + getMessageString(log), - getMessageString(log).endsWith(String.valueOf(mPort))); - - log = getLogMessage(results, 2); - - //1 - validateMessageID("MNG-1002", log); - - // We expect the RMI Registry port (the defined 'management port') to be - // 100 lower than the JMX RMIConnector Server Port (the actual JMX server) - int jmxPort = mPort + ServerConfiguration.JMXPORT_CONNECTORSERVER_OFFSET; - assertTrue("JMX RMIConnectorServer port not as expected(" + jmxPort + ").:" + getMessageString(log), - getMessageString(log).endsWith(String.valueOf(jmxPort))); - } - } - - /** - * Description: - * Using the default configuration with SSL enabled for the management port the SSL Keystore path should be reported via MNG-1006 - * Input: - * Management SSL enabled default configuration. - * Output: - * - * <date> MESSAGE MNG-1006 : Using SSL Keystore : test_resources/ssl/keystore.jks - * - * Validation Steps: - * - * 1. The MNG ID is correct - * 2. The keystore path is as specified in the configuration - */ - public void testManagementStartupSSLKeystore() throws Exception - { - if (isJavaBroker()) - { - startBrokerAndCreateMonitor(true, true); - - List<String> results = waitAndFindMatches("MNG-1006"); - - assertTrue("MNGer message not logged", results.size() > 0); - - String log = getLogMessage(results, 0); - - //1 - validateMessageID("MNG-1006", log); - - // Validate we only have two MNG-1002 (one via stdout, one via log4j) - results = findMatches("MNG-1006"); - assertEquals("Upexpected SSL Keystore message count", - 2, results.size()); - - // Validate the keystore path is as expected - assertTrue("SSL Keystore entry expected.:" + getMessageString(log), - getMessageString(log).endsWith(new File(getConfigurationStringProperty("management.ssl.keyStorePath")).getName())); - } - } - - /** - * Description: Tests the management connection open/close are logged correctly. - * - * Output: - * - * <date> MESSAGE MNG-1007 : Open : User <username> - * <date> MESSAGE MNG-1008 : Close : User <username> - * - * Validation Steps: - * - * 1. The MNG ID is correct - * 2. The message and username are correct - */ - public void testManagementUserOpenClose() throws Exception - { - if (isJavaBroker()) - { - startBrokerAndCreateMonitor(true, false); - - final JMXTestUtils jmxUtils = new JMXTestUtils(this); - List<String> openResults = null; - List<String> closeResults = null; - try - { - jmxUtils.setUp(); - jmxUtils.open(); - openResults = waitAndFindMatches("MNG-1007"); - } - finally - { - if (jmxUtils != null) - { - jmxUtils.close(); - closeResults = waitAndFindMatches("MNG-1008"); - } - } - - assertNotNull("Management Open results null", openResults.size()); - assertEquals("Management Open logged unexpected number of times", 1, openResults.size()); - - assertNotNull("Management Close results null", closeResults.size()); - assertEquals("Management Close logged unexpected number of times", 1, closeResults.size()); - - final String openMessage = getMessageString(getLogMessage(openResults, 0)); - assertTrue("Unexpected open message " + openMessage, openMessage.endsWith("Open : User admin")); - final String closeMessage = getMessageString(getLogMessage(closeResults, 0)); - assertTrue("Unexpected close message " + closeMessage, closeMessage.endsWith("Close : User admin")); - } - } - - private void startBrokerAndCreateMonitor(boolean managementEnabled, boolean useManagementSSL) throws Exception - { - //Ensure management is on - setConfigurationProperty("management.enabled", String.valueOf(managementEnabled)); - - if(useManagementSSL) - { - // This test requires we have an ssl connection - setConfigurationProperty("management.ssl.enabled", "true"); - } - - startBroker(); - - // Now we can create the monitor as _outputFile will now be defined - _monitor = new LogMonitor(_outputFile); - } -} diff --git a/java/systests/src/main/java/org/apache/qpid/server/queue/ModelTest.java b/java/systests/src/main/java/org/apache/qpid/server/queue/ModelTest.java index ab0d88c737..782709b24f 100644 --- a/java/systests/src/main/java/org/apache/qpid/server/queue/ModelTest.java +++ b/java/systests/src/main/java/org/apache/qpid/server/queue/ModelTest.java @@ -333,7 +333,7 @@ public class ModelTest extends QpidBrokerTestCase queueName)); assertEquals(queueName, managedQueue.getName()); - assertEquals(String.valueOf(owner), managedQueue.getOwner()); + assertEquals(owner, managedQueue.getOwner()); assertEquals(durable, managedQueue.isDurable()); assertEquals(autoDelete, managedQueue.isAutoDelete()); } diff --git a/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExternalACLJMXTest.java b/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExternalACLJMXTest.java index 6e4f12b9f3..ceff2b998a 100644 --- a/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExternalACLJMXTest.java +++ b/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExternalACLJMXTest.java @@ -19,7 +19,6 @@ package org.apache.qpid.server.security.acl; import org.apache.qpid.management.common.mbeans.ServerInformation; -import org.apache.qpid.server.management.ManagedObject; import org.apache.qpid.server.security.access.ObjectType; import org.apache.qpid.test.utils.JMXTestUtils; @@ -30,7 +29,7 @@ import java.lang.management.RuntimeMXBean; * Tests that access to the JMX interface is governed only by {@link ObjectType#METHOD}/{@link ObjectType#ALL} * rules and AMQP rights have no effect. * - * Ensures that objects outside the Qpid domain ({@link ManagedObject#DOMAIN}) are not governed by the ACL model. + * Ensures that objects outside the Qpid domain are not governed by the ACL model. */ public class ExternalACLJMXTest extends AbstractACLTestCase { diff --git a/java/systests/src/main/java/org/apache/qpid/management/jmx/MessageStatisticsReportingTest.java b/java/systests/src/main/java/org/apache/qpid/server/stats/StatisticsReportingTest.java index 786ef11956..c38fcd9199 100644 --- a/java/systests/src/main/java/org/apache/qpid/management/jmx/MessageStatisticsReportingTest.java +++ b/java/systests/src/main/java/org/apache/qpid/server/stats/StatisticsReportingTest.java @@ -18,30 +18,75 @@ * under the License. * */ -package org.apache.qpid.management.jmx; +package org.apache.qpid.server.stats; +import org.apache.qpid.AMQException; +import org.apache.qpid.client.AMQConnection; +import org.apache.qpid.client.AMQDestination; +import org.apache.qpid.client.AMQQueue; +import org.apache.qpid.client.AMQSession; +import org.apache.qpid.exchange.ExchangeDefaults; +import org.apache.qpid.framing.AMQShortString; +import org.apache.qpid.test.utils.QpidBrokerTestCase; import org.apache.qpid.util.LogMonitor; import java.util.List; +import javax.jms.Connection; +import javax.jms.Destination; +import javax.jms.JMSException; +import javax.jms.MessageProducer; +import javax.jms.Session; +import javax.jms.TextMessage; + /** - * Test generation of message statistics reporting. + * Test generation of message/data statistics reporting and the ability + * to control from the configuration file. */ -public class MessageStatisticsReportingTest extends MessageStatisticsTestCase +public class StatisticsReportingTest extends QpidBrokerTestCase { protected LogMonitor _monitor; - - public void configureStatistics() throws Exception + protected static final String USER = "admin"; + + protected Connection _test, _dev, _local; + protected String _queueName = "statistics"; + protected Destination _queue; + protected String _brokerUrl; + + @Override + public void setUp() throws Exception { setConfigurationProperty("statistics.generation.broker", "true"); setConfigurationProperty("statistics.generation.virtualhosts", "true"); - + if (getName().equals("testEnabledStatisticsReporting")) { setConfigurationProperty("statistics.reporting.period", "10"); } - + _monitor = new LogMonitor(_outputFile); + + super.setUp(); + + _brokerUrl = getBroker().toString(); + _test = new AMQConnection(_brokerUrl, USER, USER, "clientid", "test"); + _dev = new AMQConnection(_brokerUrl, USER, USER, "clientid", "development"); + _local = new AMQConnection(_brokerUrl, USER, USER, "clientid", "localhost"); + + _test.start(); + _dev.start(); + _local.start(); + + } + + @Override + public void tearDown() throws Exception + { + _test.close(); + _dev.close(); + _local.close(); + + super.tearDown(); } /** @@ -52,14 +97,14 @@ public class MessageStatisticsReportingTest extends MessageStatisticsTestCase sendUsing(_test, 10, 100); sendUsing(_dev, 20, 100); sendUsing(_local, 15, 100); - + Thread.sleep(10 * 1000); // 15s - + List<String> brokerStatsData = _monitor.findMatches("BRK-1008"); List<String> brokerStatsMessages = _monitor.findMatches("BRK-1009"); List<String> vhostStatsData = _monitor.findMatches("VHT-1003"); List<String> vhostStatsMessages = _monitor.findMatches("VHT-1004"); - + assertEquals("Incorrect number of broker data stats log messages", 2, brokerStatsData.size()); assertEquals("Incorrect number of broker message stats log messages", 2, brokerStatsMessages.size()); assertEquals("Incorrect number of virtualhost data stats log messages", 6, vhostStatsData.size()); @@ -74,17 +119,40 @@ public class MessageStatisticsReportingTest extends MessageStatisticsTestCase sendUsing(_test, 10, 100); sendUsing(_dev, 20, 100); sendUsing(_local, 15, 100); - + Thread.sleep(10 * 1000); // 15s - + List<String> brokerStatsData = _monitor.findMatches("BRK-1008"); List<String> brokerStatsMessages = _monitor.findMatches("BRK-1009"); List<String> vhostStatsData = _monitor.findMatches("VHT-1003"); List<String> vhostStatsMessages = _monitor.findMatches("VHT-1004"); - + assertEquals("Incorrect number of broker data stats log messages", 0, brokerStatsData.size()); assertEquals("Incorrect number of broker message stats log messages", 0, brokerStatsMessages.size()); assertEquals("Incorrect number of virtualhost data stats log messages", 0, vhostStatsData.size()); assertEquals("Incorrect number of virtualhost message stats log messages", 0, vhostStatsMessages.size()); } + + private void sendUsing(Connection con, int number, int size) throws Exception + { + Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE); + createQueue(session); + MessageProducer producer = session.createProducer(_queue); + String content = new String(new byte[size]); + TextMessage msg = session.createTextMessage(content); + for (int i = 0; i < number; i++) + { + producer.send(msg); + } + } + + private void createQueue(Session session) throws AMQException, JMSException + { + _queue = new AMQQueue(ExchangeDefaults.DIRECT_EXCHANGE_NAME, _queueName); + if (!((AMQSession<?,?>) session).isQueueBound((AMQDestination) _queue)) + { + ((AMQSession<?,?>) session).createQueue(new AMQShortString(_queueName), false, true, false, null); + ((AMQSession<?,?>) session).declareAndBind((AMQDestination) new AMQQueue(ExchangeDefaults.DIRECT_EXCHANGE_NAME, _queueName)); + } + } } diff --git a/java/systests/src/main/java/org/apache/qpid/server/store/QuotaMessageStore.java b/java/systests/src/main/java/org/apache/qpid/server/store/QuotaMessageStore.java index 2c029b4bf3..07965cfa95 100644 --- a/java/systests/src/main/java/org/apache/qpid/server/store/QuotaMessageStore.java +++ b/java/systests/src/main/java/org/apache/qpid/server/store/QuotaMessageStore.java @@ -171,4 +171,10 @@ public class QuotaMessageStore extends NullMessageStore } } } + + @Override + public String getStoreType() + { + return "QUOTA"; + } } diff --git a/java/systests/src/main/java/org/apache/qpid/server/store/SlowMessageStore.java b/java/systests/src/main/java/org/apache/qpid/server/store/SlowMessageStore.java index f2d4a513be..9db04b64b3 100644 --- a/java/systests/src/main/java/org/apache/qpid/server/store/SlowMessageStore.java +++ b/java/systests/src/main/java/org/apache/qpid/server/store/SlowMessageStore.java @@ -24,7 +24,6 @@ import org.apache.commons.configuration.Configuration; import org.apache.log4j.Logger; import org.apache.qpid.AMQStoreException; -import org.apache.qpid.framing.AMQShortString; import org.apache.qpid.framing.FieldTable; import org.apache.qpid.server.binding.Binding; import org.apache.qpid.server.exchange.Exchange; @@ -370,4 +369,10 @@ public class SlowMessageStore implements MessageStore return _realStore.getStoreLocation(); } + @Override + public String getStoreType() + { + return "SLOW"; + } + } diff --git a/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/BrokerClosesClientConnectionTest.java b/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/BrokerClosesClientConnectionTest.java index 5b3bca7033..2cd7520ae4 100644 --- a/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/BrokerClosesClientConnectionTest.java +++ b/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/BrokerClosesClientConnectionTest.java @@ -26,7 +26,6 @@ import java.util.concurrent.TimeUnit; import org.apache.qpid.AMQConnectionClosedException; import org.apache.qpid.AMQDisconnectedException; import org.apache.qpid.client.AMQConnection; -import org.apache.qpid.management.jmx.ManagedConnectionMBeanTest; import org.apache.qpid.test.utils.QpidBrokerTestCase; import org.apache.qpid.transport.ConnectionException; diff --git a/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java b/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java index 1ef6164db6..43b80b45fb 100644 --- a/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java +++ b/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java @@ -33,11 +33,15 @@ import org.apache.qpid.management.common.mbeans.ManagedQueue; import org.apache.qpid.management.common.mbeans.ServerInformation; import org.apache.qpid.management.common.mbeans.UserManagement; +import javax.management.InstanceNotFoundException; import javax.management.JMException; +import javax.management.ListenerNotFoundException; import javax.management.MBeanException; import javax.management.MBeanServerConnection; import javax.management.MBeanServerInvocationHandler; import javax.management.MalformedObjectNameException; +import javax.management.NotificationFilter; +import javax.management.NotificationListener; import javax.management.ObjectName; import javax.management.remote.JMXConnector; import java.io.IOException; @@ -50,8 +54,8 @@ import java.util.Set; */ public class JMXTestUtils { - private static final String DEFAULT_PASSWORD = "admin"; - private static final String DEFAULT_USERID = "admin"; + public static final String DEFAULT_PASSWORD = "admin"; + public static final String DEFAULT_USERID = "admin"; private MBeanServerConnection _mbsc; private JMXConnector _jmxc; @@ -101,6 +105,18 @@ public class JMXTestUtils } } + public void addNotificationListener(ObjectName name, NotificationListener listener, NotificationFilter filter, Object handback) + throws InstanceNotFoundException, IOException + { + _mbsc.addNotificationListener(name, listener, filter, handback); + } + + public void removeNotificationListener(ObjectName name, NotificationListener listener) + throws InstanceNotFoundException, IOException, ListenerNotFoundException + { + _mbsc.removeNotificationListener(name, listener); + } + /** * Create a non-durable exchange with the requested name * @@ -144,7 +160,6 @@ public class JMXTestUtils throws IOException, JMException, MBeanException { ManagedBroker managedBroker = getManagedBroker(virtualHostName); - managedBroker.unregisterExchange(exchange); } @@ -160,87 +175,81 @@ public class JMXTestUtils throws IOException, JMException, MBeanException { ManagedBroker managedBroker = getManagedBroker(virtualHostName); - managedBroker.deleteQueue(queueName); } - + /** - * Sets the logging level. + * Sets the logging level. * * @throws JMException * @throws IOException if there is a problem with the JMX Connection * @throws MBeanException */ public void setRuntimeLoggerLevel(String logger, String level) - throws IOException, JMException, MBeanException + throws IOException, JMException, MBeanException { LoggingManagement loggingManagement = getLoggingManagement(); - loggingManagement.setRuntimeLoggerLevel(logger, level); } - + /** - * Reload logging config file. + * Reload logging config file. * * @throws JMException * @throws IOException if there is a problem with the JMX Connection * @throws MBeanException */ public void reloadConfigFile() - throws IOException, JMException, MBeanException + throws IOException, JMException, MBeanException { LoggingManagement loggingManagement = getLoggingManagement(); - loggingManagement.reloadConfigFile(); } /** - * Get list of available logger levels. + * Get list of available logger levels. * * @throws JMException * @throws IOException if there is a problem with the JMX Connection * @throws MBeanException */ public String[] getAvailableLoggerLevels() - throws IOException, JMException, MBeanException + throws IOException, JMException, MBeanException { LoggingManagement loggingManagement = getLoggingManagement(); - return loggingManagement.getAvailableLoggerLevels(); } - + /** - * Set root logger level. + * Set root logger level. * * @throws JMException * @throws IOException if there is a problem with the JMX Connection * @throws MBeanException */ public void setRuntimeRootLoggerLevel(String level) - throws IOException, JMException, MBeanException + throws IOException, JMException, MBeanException { LoggingManagement loggingManagement = getLoggingManagement(); - loggingManagement.setRuntimeRootLoggerLevel(level); } - + /** - * Get root logger level. + * Get root logger level. * * @throws JMException * @throws IOException if there is a problem with the JMX Connection * @throws MBeanException */ public String getRuntimeRootLoggerLevel() - throws IOException, JMException, MBeanException + throws IOException, JMException, MBeanException { LoggingManagement loggingManagement = getLoggingManagement(); - return loggingManagement.getRuntimeRootLoggerLevel(); } /** - * Retrive the ObjectName for a Virtualhost. + * Retrieve the ObjectName for a Virtualhost. * * This is then used to create a proxy to the ManagedBroker MBean. * @@ -261,12 +270,12 @@ public class JMXTestUtils // We have verified we have only one value in objectNames so return it ObjectName objectName = objectNames.iterator().next(); - _test.getLogger().info("Loading: " + objectName); + _test.getLogger().info("Loading: " + objectName); return objectName; } /** - * Retrive the ObjectName for the given Queue on a Virtualhost. + * Retrieve the ObjectName for the given Queue on a Virtualhost. * * This is then used to create a proxy to the ManagedQueue MBean. * @@ -289,7 +298,7 @@ public class JMXTestUtils // We have verified we have only one value in objectNames so return it ObjectName objectName = objectNames.iterator().next(); - _test.getLogger().info("Loading: " + objectName); + _test.getLogger().info("Loading: " + objectName); return objectName; } @@ -317,7 +326,7 @@ public class JMXTestUtils // We have verified we have only one value in objectNames so return it ObjectName objectName = objectNames.iterator().next(); - _test.getLogger().info("Loading: " + objectName); + _test.getLogger().info("Loading: " + objectName); return objectName; } @@ -330,7 +339,7 @@ public class JMXTestUtils _test.assertEquals("Unexpected number of objects matching " + managedClass + " returned", 1, objectNames.size()); ObjectName objectName = objectNames.iterator().next(); - _test.getLogger().info("Loading: " + objectName); + _test.getLogger().info("Loading: " + objectName); return getManagedObject(managedClass, objectName); } @@ -363,34 +372,34 @@ public class JMXTestUtils { return getManagedObject(ManagedBroker.class, getVirtualHostManagerObjectName(virtualHost)); } - + public ManagedExchange getManagedExchange(String exchangeName) { - ObjectName objectName = getExchangeObjectName("test", exchangeName); + ObjectName objectName = getExchangeObjectName("test", exchangeName); return MBeanServerInvocationHandler.newProxyInstance(_mbsc, objectName, ManagedExchange.class, false); } - + public ManagedQueue getManagedQueue(String queueName) { ObjectName objectName = getQueueObjectName("test", queueName); return getManagedObject(ManagedQueue.class, objectName); } - public LoggingManagement getLoggingManagement() throws MalformedObjectNameException + public LoggingManagement getLoggingManagement() throws MalformedObjectNameException { - ObjectName objectName = new ObjectName("org.apache.qpid:type=LoggingManagement,name=LoggingManagement"); + ObjectName objectName = new ObjectName("org.apache.qpid:type=LoggingManagement,name=LoggingManagement"); return getManagedObject(LoggingManagement.class, objectName); } - - public ConfigurationManagement getConfigurationManagement() throws MalformedObjectNameException + + public ConfigurationManagement getConfigurationManagement() throws MalformedObjectNameException { - ObjectName objectName = new ObjectName("org.apache.qpid:type=ConfigurationManagement,name=ConfigurationManagement"); + ObjectName objectName = new ObjectName("org.apache.qpid:type=ConfigurationManagement,name=ConfigurationManagement"); return getManagedObject(ConfigurationManagement.class, objectName); } - - public UserManagement getUserManagement() throws MalformedObjectNameException + + public UserManagement getUserManagement() throws MalformedObjectNameException { - ObjectName objectName = new ObjectName("org.apache.qpid:type=UserManagement,name=UserManagement"); + ObjectName objectName = new ObjectName("org.apache.qpid:type=UserManagement,name=UserManagement"); return getManagedObject(UserManagement.class, objectName); } diff --git a/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java b/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java index c5077ccb64..056356cad7 100644 --- a/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java +++ b/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java @@ -83,6 +83,10 @@ public class QpidBrokerTestCase extends QpidTestCase INTERNAL /** Test case starts an embedded broker within this JVM */, SPAWNED /** Test case spawns a new broker as a separate process */ } + + public static final String GUEST_USERNAME = "guest"; + public static final String GUEST_PASSWORD = "guest"; + protected final static String QpidHome = System.getProperty("QPID_HOME"); protected File _configFile = new File(System.getProperty("broker.config")); @@ -1095,7 +1099,7 @@ public class QpidBrokerTestCase extends QpidTestCase public Connection getConnection() throws JMSException, NamingException { - return getConnection("guest", "guest"); + return getConnection(GUEST_USERNAME, GUEST_PASSWORD); } public Connection getConnection(ConnectionURL url) throws JMSException |
