1 7 package org.jboss.test.foedeployer.test; 8 9 import java.io.IOException ; 10 import java.net.InetAddress ; 11 import java.rmi.RemoteException ; 12 import java.util.Set ; 13 import javax.ejb.CreateException ; 14 import javax.ejb.Handle ; 15 import javax.management.ObjectName ; 16 import javax.naming.InitialContext ; 17 import javax.naming.NamingException ; 18 import javax.rmi.PortableRemoteObject ; 19 20 import javax.jms.JMSException ; 21 import javax.jms.Message ; 22 import javax.jms.Session ; 23 import javax.jms.ObjectMessage ; 24 import javax.jms.Topic ; 25 import javax.jms.TopicConnection ; 26 import javax.jms.TopicConnectionFactory ; 27 import javax.jms.TopicPublisher ; 28 import javax.jms.TopicSession ; 29 import javax.jms.Queue ; 30 import javax.jms.QueueConnection ; 31 import javax.jms.QueueConnectionFactory ; 32 import javax.jms.QueueReceiver ; 33 import javax.jms.QueueSession ; 34 import javax.jms.MessageListener ; 35 36 import junit.extensions.TestSetup; 37 import junit.framework.Test; 38 import junit.framework.TestCase; 39 import junit.framework.TestSuite; 40 41 import org.jboss.test.JBossTestCase; 42 import org.jboss.test.JBossTestSetup; 43 44 import org.jboss.test.foedeployer.ejb.message.QuoteMessage; 45 import org.apache.log4j.Category; 46 47 48 61 public class MessageConversionTestCase 62 extends JBossTestCase 63 { 64 public static final String FOE_DEPLOYER = "foe-deployer-3.2.sar"; 66 public static final String FOE_DEPLOYER_NAME = "jboss:service=FoeDeployer"; 67 public static final String CONVERTOR_DEPLOYER_QUERY_NAME = "jboss:service=Convertor,*"; 68 public static final String MESSAGE_APPLICATION = "foe-deployer-message-test"; 69 public static final String TOPIC = "topic/testTopic"; 70 public static final String TOPIC_FACTORY = "ConnectionFactory"; 71 public static final String QUEUE = "queue/testQueue"; 72 public static final String QUEUE_FACTORY = "ConnectionFactory"; 73 74 public static final int MESSAGES_NUMBER = 10; 75 public static final int WAIT_ITERATIONS = 3; 76 77 private static TopicConnection topicConnection; 79 private static QueueConnection queueConnection; 80 private static QueueSession queueSession; 81 private static Queue queue; 82 private static TopicSession topicSession; 83 private static Topic topic; 84 private static TopicPublisher topicPublisher; 85 private static QuoteMessageListener listener; 86 87 91 public static Test suite() throws Exception 92 { 93 TestSuite lSuite = new TestSuite(); 94 lSuite.addTest(new TestSuite(MessageConversionTestCase.class)); 95 96 TestSetup lWrapper = new JBossTestSetup(lSuite) 98 { 99 protected void setUp() throws Exception 100 { 101 super.setUp(); 102 } 103 104 protected void tearDown() throws Exception 105 { 106 super.tearDown(); 107 } 108 }; 109 return lWrapper; 110 } 111 112 public MessageConversionTestCase(String pName) 114 { 115 super(pName); 116 } 117 118 122 public void testMessageConversion() 123 throws Exception 124 { 125 try 126 { 127 log.debug("+++ testMessageConversion"); 128 129 boolean lIsInitiallyDeployed = getServer().isRegistered(new ObjectName (FOE_DEPLOYER_NAME)); 131 if(!lIsInitiallyDeployed) 132 deploy(FOE_DEPLOYER); 133 134 boolean lIsDeployed = getServer().isRegistered(new ObjectName (FOE_DEPLOYER_NAME)); 135 assertTrue("Foe-Deployer is not deployed", lIsDeployed); 136 137 int lCount = getServer().queryNames(new ObjectName (CONVERTOR_DEPLOYER_QUERY_NAME), null).size(); 139 assertTrue("No Converter found on web server", lCount > 0); 140 141 deploy(MESSAGE_APPLICATION + ".wlar"); 143 144 deploy(MESSAGE_APPLICATION + ".jar"); 147 148 log.debug("getting intial naming context"); 149 InitialContext ic = new InitialContext (); 150 151 log.debug("looking for queue connection factory"); 155 QueueConnectionFactory qcf = (QueueConnectionFactory )ic.lookup( QUEUE_FACTORY ); 156 157 log.debug("creating queue connection"); 158 queueConnection = qcf.createQueueConnection(); 159 160 log.debug("creating queue session"); 161 queueSession = queueConnection. 162 createQueueSession( false, Session.AUTO_ACKNOWLEDGE ); 163 164 log.debug("looking for queue"); 165 queue = ( Queue ) ic.lookup( QUEUE ); 166 167 log.debug( "creating queue receiver" ); 168 QueueReceiver receiver = queueSession.createReceiver( queue ); 169 170 log.debug( "creating message listener" ); 171 listener = new QuoteMessageListener(); 172 173 log.debug( "registering listener with receiver" ); 174 receiver.setMessageListener( listener ); 175 176 log.debug( "starting queue connection" ); 177 queueConnection.start(); 178 179 log.debug("looking for topic connection factory"); 183 TopicConnectionFactory cf = (TopicConnectionFactory )ic.lookup(TOPIC_FACTORY); 184 185 log.debug("creating topic connection"); 186 topicConnection = cf.createTopicConnection(); 187 188 log.debug("creating topic session"); 189 topicSession = topicConnection. 190 createTopicSession( false, Session.AUTO_ACKNOWLEDGE ); 191 192 log.debug("looking for topic"); 193 topic = (Topic )ic.lookup( TOPIC ); 194 195 log.debug("creating topic publisher"); 196 topicPublisher = topicSession.createPublisher(topic); 197 198 log.debug("starting topic connection"); 199 topicConnection.start(); 200 201 log.debug("testMessageConversion: sending " + 202 MESSAGES_NUMBER + " messages"); 203 204 for(int i = 0; i < MESSAGES_NUMBER; ++i) 205 { 206 QuoteMessage quoteMsg = new QuoteMessage("Topic message no." + i); 207 208 log.debug("publishing message: " + quoteMsg.getQuote() ); 209 210 ObjectMessage message = topicSession.createObjectMessage(); 211 message.setObject(quoteMsg); 212 topicPublisher.publish(message); 213 } 214 215 log.debug( "waiting for messages to be processed" ); 216 int i = 0; 217 while( (i++ < WAIT_ITERATIONS) 218 && (listener.getCount() < MESSAGES_NUMBER) ) 219 { 220 try 221 { 222 Thread.currentThread().sleep(1000); 223 } 224 catch(Exception e) {} 225 } 226 227 log.debug("Messages received: " + listener.getCount()); 228 assertTrue("Number of sent messages (" 229 + MESSAGES_NUMBER 230 + ") isn't equal to number of received (" 231 + listener.getCount() + ")", 232 MESSAGES_NUMBER == listener.getCount()); 233 234 if(topicConnection != null) topicConnection.close(); 236 if(queueConnection != null) queueConnection.close(); 237 238 undeploy(MESSAGE_APPLICATION + ".jar" ); 240 241 undeploy(MESSAGE_APPLICATION + ".wlar" ); 243 244 if(!lIsInitiallyDeployed) 246 { 247 undeploy(FOE_DEPLOYER); 248 } 249 } 250 catch( Exception e ) 251 { 252 e.printStackTrace(); 253 throw e; 254 } 255 } 256 257 public class QuoteMessageListener 259 implements MessageListener 260 { 261 Category log = Category.getInstance( QuoteMessageListener.class ); 263 public int count = 0; 264 265 public QuoteMessageListener() 267 { 268 log.debug( "created" ); 269 count = 0; 270 } 271 272 public int getCount() 274 { 275 return count; 276 } 277 278 public void onMessage(Message msg) 280 { 281 QuoteMessage quoteMsg = null; 282 try 283 { 284 quoteMsg = (QuoteMessage)((ObjectMessage )msg).getObject(); 285 } 286 catch(ClassCastException cce) 287 { 288 log.error("Received message isn't of type QuoteMessage: ", cce); 289 } 290 catch(JMSException jmse) 291 { 292 log.error("Couldn't fetch message: ", jmse); 293 } 294 295 log.debug("received message: " + quoteMsg.getQuote() ); 296 ++count; 297 } 298 } 299 } 300 | Popular Tags |