1 22 package org.jboss.test.jbossmq.test; 23 24 import java.util.Enumeration ; 25 import javax.jms.DeliveryMode ; 26 import javax.jms.QueueSession ; 27 import javax.jms.Queue ; 28 import javax.jms.QueueSender ; 29 import javax.jms.Session ; 30 import javax.jms.TextMessage ; 31 import javax.jms.QueueBrowser ; 32 import javax.management.ObjectName ; 33 34 import org.jboss.mq.server.MessageCacheMBean; 35 import org.jboss.test.JBossTestSetup; 36 37 import junit.framework.TestSuite; 38 import junit.framework.Test; 39 40 41 49 public class ScheduledDeliveryUnitTestCase 50 extends JBossMQUnitTest 51 { 52 53 public ScheduledDeliveryUnitTestCase(String name) throws Exception 54 { 55 super(name); 56 } 57 58 63 public void testScheduledDelivery() throws Exception 64 { 65 getLog().debug("Starting ScheduledDelivery test"); 66 67 connect(); 68 69 queueConnection.start(); 70 71 drainQueue(); 72 73 QueueSession session = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); 74 Queue queue = (Queue )context.lookup(TEST_QUEUE); 75 QueueSender sender = session.createSender(queue); 76 77 long now = System.currentTimeMillis(); 78 79 TextMessage message = session.createTextMessage(); 80 message.setText("normal"); 81 message.setLongProperty("JMS_JBOSS_SCHEDULED_DELIVERY", 0); 82 sender.send(message); 83 84 message.setText("late"); 85 message.setLongProperty("JMS_JBOSS_SCHEDULED_DELIVERY", now + 5000); 86 sender.send(message, DeliveryMode.PERSISTENT, 10, 0); 87 88 message.setText("early"); 89 message.setLongProperty("JMS_JBOSS_SCHEDULED_DELIVERY", now + 1000); 90 sender.send(message, DeliveryMode.PERSISTENT, 7, 0); 91 92 QueueBrowser browser = session.createBrowser( queue ); 93 Enumeration enumeration = browser.getEnumeration(); 94 enumeration.nextElement(); 95 if (enumeration.hasMoreElements()) 96 fail("Should only find two messages now"); 97 98 Thread.sleep(3000); 99 100 enumeration = browser.getEnumeration(); 101 message = (TextMessage )enumeration.nextElement(); 102 if (!message.getText().equals("early")) 103 throw new Exception ("Queue is not scheduling messages correctly. Unexpected Message:"+message); 104 enumeration.nextElement(); 105 if (enumeration.hasMoreElements()) 106 fail("Should only find three messages now"); 107 108 Thread.sleep(3000); 109 110 enumeration = browser.getEnumeration(); 111 message = (TextMessage )enumeration.nextElement(); 112 if (!message.getText().equals("late")) 113 throw new Exception ("Queue is not scheduling messages correctly. Unexpected Message:"+message); 114 enumeration.nextElement(); 115 enumeration.nextElement(); 116 117 disconnect(); 118 getLog().debug("ScheduledDelivery passed"); 119 } 120 121 public void testScheduledDeliveryRemoveAll() throws Exception 122 { 123 getLog().debug("Starting ScheduledDelivery remove All test"); 124 125 getServer().invoke(new ObjectName ("jboss.mq.destination:service=Queue,name=testQueue"), "removeAllMessages", null, null); 126 Integer before = (Integer ) getServer().getAttribute(MessageCacheMBean.OBJECT_NAME, "TotalCacheSize"); 127 128 connect(); 129 try 130 { 131 132 QueueSession session = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); 133 Queue queue = (Queue )context.lookup(TEST_QUEUE); 134 QueueSender sender = session.createSender(queue); 135 136 long now = System.currentTimeMillis(); 137 138 TextMessage message = session.createTextMessage(); 139 message.setText("scheduled"); 140 message.setLongProperty("JMS_JBOSS_SCHEDULED_DELIVERY", now + 10000); 141 sender.send(message, DeliveryMode.PERSISTENT, 10, 0); 142 143 getServer().invoke(new ObjectName ("jboss.mq.destination:service=Queue,name=testQueue"), "removeAllMessages", null, null); 144 145 Integer after = (Integer ) getServer().getAttribute(MessageCacheMBean.OBJECT_NAME, "TotalCacheSize"); 146 assertEquals("Message should have been removed ", before, after); 147 } 148 finally 149 { 150 disconnect(); 151 } 152 getLog().debug("ScheduledDelivery remove All passed"); 153 } 154 155 protected void setUp() throws Exception 156 { 157 ScheduledDeliveryUnitTestCase.TOPIC_FACTORY = "ConnectionFactory"; 158 ScheduledDeliveryUnitTestCase.QUEUE_FACTORY = "ConnectionFactory"; 159 } 160 161 public static Test suite() throws Exception 162 { 163 TestSuite suite = new TestSuite(); 164 165 suite.addTest(new JBossTestSetup(new ScheduledDeliveryUnitTestCase("testScheduledDelivery"))); 166 suite.addTest(new JBossTestSetup(new ScheduledDeliveryUnitTestCase("testScheduledDeliveryRemoveAll"))); 167 168 Test wrapper = new JBossTestSetup(suite) 169 { 170 protected void setUp() throws Exception 171 { 172 super.setUp(); 173 ClassLoader loader = Thread.currentThread().getContextClassLoader(); 174 deploy (loader.getResource("messaging/test-destinations-service.xml").toString()); 175 } 176 protected void tearDown() throws Exception 177 { 178 super.tearDown(); 179 ClassLoader loader = Thread.currentThread().getContextClassLoader(); 180 undeploy (loader.getResource("messaging/test-destinations-service.xml").toString()); 181 } 182 }; 183 return wrapper; 184 } 185 186 static public void main( String []args ) 187 { 188 String newArgs[] = { "org.jboss.test.jbossmq.test.ScheduledDeliveryUnitTestCase" }; 189 junit.swingui.TestRunner.main(newArgs); 190 } 191 } 192 | Popular Tags |