public void testDeleteMessages() throws Exception { int messageCount = 10; sendMessages(messageCount, true); assertEquals("", messageCount, _queueMBean.getMessageCount().intValue()); assertTrue(_queueMBean.getReceivedMessageCount() == messageCount); long queueDepth = (messageCount * MESSAGE_SIZE); assertTrue(_queueMBean.getQueueDepth() == queueDepth); // delete first message _queueMBean.deleteMessages(1L, 1L); assertTrue(_queueMBean.getMessageCount() == (messageCount - 1)); assertTrue(_queueMBean.getReceivedMessageCount() == messageCount); try { _queueMBean.viewMessageContent(1L); fail("Message should no longer be on the queue"); } catch (Exception e) { } // delete last message, leaving 2nd to 9th _queueMBean.deleteMessages(10L, 10L); assertTrue(_queueMBean.getMessageCount() == (messageCount - 2)); assertTrue(_queueMBean.getReceivedMessageCount() == messageCount); try { _queueMBean.viewMessageContent(10L); fail("Message should no longer be on the queue"); } catch (Exception e) { } // delete remaining messages, leaving none _queueMBean.deleteMessages(2L, 9L); assertTrue(_queueMBean.getMessageCount() == (0)); assertTrue(_queueMBean.getReceivedMessageCount() == messageCount); // Ensure that the data has been removed from the Store verifyBrokerState(); }
public void testExceptions() throws Exception { try { _queueMBean.viewMessages(0L, 3L); fail(); } catch (JMException ex) { } try { _queueMBean.viewMessages(2L, 1L); fail(); } catch (JMException ex) { } try { _queueMBean.viewMessages(-1L, 1L); fail(); } catch (JMException ex) { } try { long end = Integer.MAX_VALUE; end += 2; _queueMBean.viewMessages(1L, end); fail("Expected Exception due to oversized(> 2^31) message range"); } catch (JMException ex) { } IncomingMessage msg = message(false, false); getQueue().clearQueue(); ArrayList<AMQQueue> qs = new ArrayList<AMQQueue>(); qs.add(getQueue()); msg.enqueue(qs); MessageMetaData mmd = msg.headersReceived(); msg.setStoredMessage(getMessageStore().addMessage(mmd)); long id = msg.getMessageNumber(); msg.addContentBodyFrame( new ContentChunk() { ByteBuffer _data = ByteBuffer.allocate((int) MESSAGE_SIZE); { _data.limit((int) MESSAGE_SIZE); } public int getSize() { return (int) MESSAGE_SIZE; } public ByteBuffer getData() { return _data; } public void reduceToFit() {} }); AMQMessage m = new AMQMessage(msg.getStoredMessage()); for (BaseQueue q : msg.getDestinationQueues()) { q.enqueue(m); } // _queue.process(_storeContext, new QueueEntry(_queue, msg), false); _queueMBean.viewMessageContent(id); try { _queueMBean.viewMessageContent(id + 1); fail(); } catch (JMException ex) { } }