1 21 package com.presumo.jms.client; 22 23 import javax.jms.*; 24 import junit.framework.Test; 25 import junit.framework.TestCase; 26 import junit.framework.TestSuite; 27 28 35 public class ClientTests extends TestCase 36 { 37 private static final boolean VERBOSE = true; 38 39 public ClientTests(String name) 40 { 41 super(name); 42 } 43 44 public static Test suite() 45 { 46 TestSuite suite = new TestSuite(ClientTests.class); 47 return suite; 48 } 49 50 51 55 public void testAutoAcknowledge() throws JMSException 56 { 57 verbose("start testAutoAcknowleged"); 58 59 testSimplePubSub(Session.AUTO_ACKNOWLEDGE); 60 61 verbose("finish testAutoAcknowledge"); 62 } 63 64 public void testDupsOkAcknowledge() throws JMSException 65 { 66 verbose("start testDupsOkAcknowleged"); 67 68 testSimplePubSub(Session.DUPS_OK_ACKNOWLEDGE); 69 70 verbose("finish testDupsOkAcknowledge"); 71 } 72 73 74 public void testClientAcknowledge() throws JMSException 75 { 76 verbose("start testClientAcknowleged"); 77 78 testSimplePubSub(Session.CLIENT_ACKNOWLEDGE); 79 80 verbose("finish testClientAcknowledge"); 81 } 82 83 84 public void testSimplePubSubMultiple() throws JMSException 85 { 86 for (int i=0; i < 10; ++i) { 87 testAutoAcknowledge(); 88 testDupsOkAcknowledge(); 89 testClientAcknowledge(); 90 } 91 } 92 93 97 private void testSimplePubSub(int ackMode) throws JMSException 98 { 99 verbose("start simpleSubscriberTest()"); 100 101 verbose("Creating a session"); 102 JmsTopicConnectionFactory factory = new JmsTopicConnectionFactory(); 103 TopicConnection conn = factory.createTopicConnection(); 106 TopicSession session = conn.createTopicSession(false, ackMode); 107 108 Topic topic = session.createTopic("dan"); 109 110 TopicSubscriber sub1 = session.createSubscriber(topic); 111 verbose("Created subscriber 1"); 112 113 TopicSubscriber sub2 = session.createSubscriber(topic); 114 verbose("Created subscriber 2"); 115 116 TopicSubscriber sub3 = session.createSubscriber(topic); 117 verbose("Created subscriber 3"); 118 119 TopicPublisher pub = session.createPublisher(topic); 120 verbose("created publisher"); 121 122 TextMessage message = session.createTextMessage(); 123 message.setText("Hello World"); 124 125 126 verbose("starting connection"); 127 conn.start(); 128 sleepRandom(); 129 130 pub.setDeliveryMode(javax.jms.DeliveryMode.PERSISTENT); 131 pub.publish(message); 132 133 134 TextMessage msg1 = (TextMessage) sub1.receive(5000); 135 assertNotNull("message not received from sub 1", msg1); 136 verbose(msg1.getText()); 137 if (ackMode == Session.CLIENT_ACKNOWLEDGE) { 138 msg1.acknowledge(); 139 } 140 141 TextMessage msg2 = (TextMessage) sub2.receive(5000); 142 assertNotNull("message not received from sub 2", msg2); 143 verbose(msg2.getText()); 144 TextMessage msg3 = (TextMessage) sub3.receive(5000); 145 assertNotNull("message not received from sub 3", msg3); 146 verbose(msg3.getText()); 147 148 if (ackMode == Session.CLIENT_ACKNOWLEDGE) { 149 msg3.acknowledge(); } 151 152 sleepRandom(); 153 conn.close(); 154 } 155 156 157 private static final void verbose(String s) 158 { 159 if (VERBOSE) 160 System.out.println(s); 161 } 162 163 private static final void sleepRandom() 164 { 165 int sleep = (int) (200.0 * Math.random()); 166 try { 167 Thread.sleep(sleep); 168 } catch (InterruptedException ie) {} 169 } 170 171 public static void main(String [] args) throws Exception 175 { 176 junit.textui.TestRunner.run(ClientTests.class); 177 } 178 179 } 180 181 | Popular Tags |