1 22 package org.jboss.test.jbossmq.test; 23 24 import javax.jms.Message ; 25 import javax.jms.Queue ; 26 import javax.jms.QueueConnection ; 27 import javax.jms.QueueConnectionFactory ; 28 import javax.jms.QueueReceiver ; 29 import javax.jms.QueueSender ; 30 import javax.jms.QueueSession ; 31 import javax.jms.Session ; 32 import javax.management.Attribute ; 33 import javax.management.ObjectName ; 34 import javax.naming.Context ; 35 36 import org.jboss.mq.DestinationFullException; 37 import org.jboss.mx.util.ObjectNameFactory; 38 import org.jboss.test.JBossTestCase; 39 45 public class DestinationFullUnitTestCase extends JBossTestCase 46 { 47 static String QUEUE_FACTORY = "ConnectionFactory"; 48 static String TEST_QUEUE = "queue/testQueue"; 49 static ObjectName QUEUE_OBJECT_NAME = ObjectNameFactory.create("jboss.mq.destination:service=Queue,name=testQueue"); 50 51 QueueConnection queueConnection; 52 Queue queue; 53 54 public DestinationFullUnitTestCase(String name) throws Exception 55 { 56 super(name); 57 } 58 59 public void testQueueFull() throws Exception 60 { 61 connect(); 62 try 63 { 64 drainQueue(); 65 setMaxDepth(10); 66 67 QueueSession session = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); 68 QueueSender sender = session.createSender(queue); 69 Message message = session.createMessage(); 70 71 for (int i = 0; i < 10; ++i) 72 sender.send(message); 73 74 try 75 { 76 sender.send(message); 77 fail("Expected a destination full exception."); 78 } 79 catch (DestinationFullException expected) 80 { 81 } 82 session.close(); 83 drainQueue(); 84 } 85 finally 86 { 87 setMaxDepth(0); 88 disconnect(); 89 } 90 } 91 92 protected void setMaxDepth(int depth) 93 throws Exception 94 { 95 getServer().setAttribute(QUEUE_OBJECT_NAME, new Attribute ("MaxDepth", new Integer (depth))); 96 } 97 98 protected void connect() throws Exception 99 { 100 Context context = getInitialContext(); 101 QueueConnectionFactory queueFactory = (QueueConnectionFactory ) context.lookup(QUEUE_FACTORY); 102 queue = (Queue ) context.lookup(TEST_QUEUE); 103 queueConnection = queueFactory.createQueueConnection(); 104 queueConnection.start(); 105 106 getLog().debug("Connection established."); 107 } 108 109 protected void disconnect() 110 { 111 try 112 { 113 if (queueConnection != null) 114 queueConnection.close(); 115 } 116 catch (Exception ignored) 117 { 118 } 119 120 getLog().debug("Connection closed."); 121 } 122 123 protected void drainQueue() throws Exception 125 { 126 QueueSession session = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); 127 128 QueueReceiver receiver = session.createReceiver(queue); 129 Message message = receiver.receive(50); 130 int c = 0; 131 while (message != null) 132 { 133 c++; 134 message = receiver.receive(50); 135 } 136 137 if (c != 0) 138 getLog().debug("Drained " + c + " messages from the queue"); 139 140 session.close(); 141 } 142 143 public static junit.framework.Test suite() throws Exception 144 { 145 ClassLoader loader = Thread.currentThread().getContextClassLoader(); 146 return getDeploySetup(DestinationFullUnitTestCase.class, 147 loader.getResource("messaging/test-destinations-service.xml").toString()); 148 } 149 } 150 | Popular Tags |