KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > test > jbossmessaging > test > MessageTypesUnitTestCase


1 /*
2   * JBoss, Home of Professional Open Source
3   * Copyright 2005, JBoss Inc., and individual contributors as indicated
4   * by the @authors tag. See the copyright.txt in the distribution for a
5   * full listing of individual contributors.
6   *
7   * This is free software; you can redistribute it and/or modify it
8   * under the terms of the GNU Lesser General Public License as
9   * published by the Free Software Foundation; either version 2.1 of
10   * the License, or (at your option) any later version.
11   *
12   * This software is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15   * Lesser General Public License for more details.
16   *
17   * You should have received a copy of the GNU Lesser General Public
18   * License along with this software; if not, write to the Free
19   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21   */

22 package org.jboss.test.jbossmessaging.test;
23
24 import java.util.Arrays JavaDoc;
25 import java.math.BigInteger JavaDoc;
26 import javax.jms.DeliveryMode JavaDoc;
27 import javax.jms.MapMessage JavaDoc;
28 import javax.jms.Message JavaDoc;
29 import javax.jms.Queue JavaDoc;
30 import javax.jms.QueueConnection JavaDoc;
31 import javax.jms.QueueConnectionFactory JavaDoc;
32 import javax.jms.QueueReceiver JavaDoc;
33 import javax.jms.QueueSender JavaDoc;
34 import javax.jms.QueueSession JavaDoc;
35 import javax.jms.Session JavaDoc;
36 import javax.jms.TextMessage JavaDoc;
37 import javax.jms.BytesMessage JavaDoc;
38 import javax.jms.ObjectMessage JavaDoc;
39 import javax.jms.StreamMessage JavaDoc;
40 import javax.naming.Context JavaDoc;
41 import javax.naming.InitialContext JavaDoc;
42
43 import org.jboss.test.jbossmessaging.JMSTestCase;
44
45 /**
46  * Tests of sending/receiving all jms message types to/from a queue
47  *
48  * @author <a HREF="mailto:richard.achmatowicz@jboss.com">Richard Achmatowicz</a>
49  * @author Scott.Stark@jboss.org
50  * @version $Revision: 37406 $
51  */

52 public class MessageTypesUnitTestCase extends JMSTestCase
53 {
54    static String JavaDoc QUEUE_FACTORY = "ConnectionFactory";
55    static String JavaDoc TEST_QUEUE = "queue/testQueue";
56
57    private Context JavaDoc context;
58    private QueueConnection JavaDoc queueConnection;
59    private QueueSession JavaDoc session;
60    private QueueSender JavaDoc sender;
61    private QueueReceiver JavaDoc receiver;
62
63    public MessageTypesUnitTestCase(String JavaDoc name) throws Exception JavaDoc
64    {
65       super(name);
66    }
67
68    public void testMapMessage() throws Exception JavaDoc
69    {
70       log.info("+++ testMapMessage");
71       MapMessage JavaDoc sent = session.createMapMessage();
72       sent.setBoolean("Boolean", true);
73       sent.setByte("Byte", (byte) 1);
74       sent.setBytes("Bytes", "Bytes".getBytes());
75       sent.setChar("Char", 'c');
76       sent.setShort("Short", (short) 31415);
77       sent.setInt("Int", 314159);
78       sent.setLong("Long", 3141592653589793238L);
79       sent.setDouble("Double", 3.1415926535897932384626433832795);
80       sent.setFloat("Float", 3.141f);
81       sent.setObject("Object", "31415926535897932384626433832795");
82       sent.setString("String", "31415926535897932384626433832795");
83
84       MapMessage JavaDoc recv = (MapMessage JavaDoc) sendRecMsg(sent);
85       log.debug("recv: "+recv);
86       assertTrue("Boolean == true", recv.getBoolean("Boolean") == true);
87       assertTrue("Byte == 1", recv.getByte("Byte") == 1);
88       assertTrue("Bytes == Bytes[]",
89          Arrays.equals(recv.getBytes("Bytes"), "Bytes".getBytes()));
90       assertTrue("Char == c", recv.getChar("Char") == 'c');
91       assertTrue("Short == 314159", recv.getShort("Short") == 31415);
92       assertTrue("Int == 314159", recv.getInt("Int") == 314159);
93       assertTrue("Long == 3141592653589793238L",
94          recv.getLong("Long") == 3141592653589793238L);
95       assertTrue("Double == 3.1415926535897932384626433832795",
96          recv.getDouble("Double") == 3.1415926535897932384626433832795);
97       assertTrue("Float == true", recv.getFloat("Float") == 3.141f);
98       assertTrue("Object == 31415926535897932384626433832795",
99          recv.getObject("Object").equals("31415926535897932384626433832795"));
100       assertTrue("String == 31415926535897932384626433832795",
101          recv.getString("String").equals("31415926535897932384626433832795"));
102    }
103    public void testTextMessage() throws Exception JavaDoc
104    {
105       log.info("+++ testTextMessage");
106       String JavaDoc text = "A multiline text msg.\nSecond line.\n";
107       TextMessage JavaDoc sent = session.createTextMessage(text);
108       TextMessage JavaDoc recv = (TextMessage JavaDoc) sendRecMsg(sent);
109       log.debug("recv: "+recv);
110       assertTrue(recv.getText().equals(text));
111    }
112    public void testMessage() throws Exception JavaDoc
113    {
114       log.info("+++ testMessage");
115       Message JavaDoc sent = session.createMessage();
116       sent.setBooleanProperty("Boolean", true);
117       sent.setByteProperty("Byte", (byte) 1);
118       sent.setShortProperty("Short", (short) 31415);
119       sent.setIntProperty("Int", 314159);
120       sent.setLongProperty("Long", 3141592653589793238L);
121       sent.setDoubleProperty("Double", 3.1415926535897932384626433832795);
122       sent.setFloatProperty("Float", 3.141f);
123       sent.setObjectProperty("Object", "31415926535897932384626433832795");
124       sent.setStringProperty("String", "31415926535897932384626433832795");
125
126       Message JavaDoc recv = sendRecMsg(sent);
127       log.debug("recv: "+recv);
128       assertTrue("Boolean == true", recv.getBooleanProperty("Boolean") == true);
129       assertTrue("Byte == 1", recv.getByteProperty("Byte") == 1);
130       assertTrue("Short == 314159", recv.getShortProperty("Short") == 31415);
131       assertTrue("Int == 314159", recv.getIntProperty("Int") == 314159);
132       assertTrue("Long == 3141592653589793238L",
133          recv.getLongProperty("Long") == 3141592653589793238L);
134       assertTrue("Double == 3.1415926535897932384626433832795",
135          recv.getDoubleProperty("Double") == 3.1415926535897932384626433832795);
136       assertTrue("Float == true", recv.getFloatProperty("Float") == 3.141f);
137       assertTrue("Object == 31415926535897932384626433832795",
138          recv.getObjectProperty("Object").equals("31415926535897932384626433832795"));
139       assertTrue("String == 31415926535897932384626433832795",
140          recv.getStringProperty("String").equals("31415926535897932384626433832795"));
141    }
142    public void testBytesMessage() throws Exception JavaDoc
143    {
144       log.info("+++ testBytesMessage");
145       BytesMessage JavaDoc sent = session.createBytesMessage();
146       sent.writeBoolean(true);
147       sent.writeByte((byte) 1);
148       byte[] testBytes = "Bytes".getBytes();
149       sent.writeBytes(testBytes);
150       sent.writeChar('c');
151       sent.writeShort((short) 31415);
152       sent.writeInt(314159);
153       sent.writeLong(3141592653589793238L);
154       sent.writeDouble(3.1415926535897932384626433832795);
155       sent.writeFloat(3.141f);
156       sent.writeObject("31415926535897932384626433832795");
157       sent.writeUTF("31415926535897932384626433832795");
158
159       BytesMessage JavaDoc recv = (BytesMessage JavaDoc) sendRecMsg(sent);
160       log.debug("recv: "+recv);
161       assertTrue("Boolean == true", recv.readBoolean() == true);
162       assertTrue("Byte == 1", recv.readByte() == 1);
163       byte[] bytes = new byte[testBytes.length];
164       recv.readBytes(bytes);
165       assertTrue("Bytes == Bytes[]",
166          Arrays.equals(bytes, testBytes));
167       assertTrue("Char == c", recv.readChar() == 'c');
168       assertTrue("Short == 314159", recv.readShort() == 31415);
169       assertTrue("Int == 314159", recv.readInt() == 314159);
170       assertTrue("Long == 3141592653589793238L",
171          recv.readLong() == 3141592653589793238L);
172       assertTrue("Double == 3.1415926535897932384626433832795",
173          recv.readDouble() == 3.1415926535897932384626433832795);
174       assertTrue("Float == true", recv.readFloat() == 3.141f);
175       assertTrue("Object == 31415926535897932384626433832795",
176          recv.readUTF().equals("31415926535897932384626433832795"));
177       assertTrue("String == 31415926535897932384626433832795",
178          recv.readUTF().equals("31415926535897932384626433832795"));
179    }
180    public void testObjectMessage() throws Exception JavaDoc
181    {
182       log.info("+++ testObjectMessage");
183       BigInteger JavaDoc data = new BigInteger JavaDoc("31415926535897932384626433832795", 10);
184       ObjectMessage JavaDoc sent = session.createObjectMessage(data);
185       ObjectMessage JavaDoc recv = (ObjectMessage JavaDoc) sendRecMsg(sent);
186       log.debug("recv: "+recv);
187       BigInteger JavaDoc data2 = (BigInteger JavaDoc) recv.getObject();
188       assertTrue("BigInteger == BigInteger2", data2.equals(data));
189    }
190    public void testStreamMessage() throws Exception JavaDoc
191    {
192       log.info("+++ testStreamMessage");
193       StreamMessage JavaDoc sent = session.createStreamMessage();
194       sent.writeBoolean(true);
195       sent.writeByte((byte) 1);
196       byte[] testBytes = "Bytes".getBytes();
197       sent.writeBytes(testBytes);
198       sent.writeChar('c');
199       sent.writeShort((short) 31415);
200       sent.writeInt(314159);
201       sent.writeLong(3141592653589793238L);
202       sent.writeDouble(3.1415926535897932384626433832795);
203       sent.writeFloat(3.141f);
204       sent.writeObject("31415926535897932384626433832795");
205       sent.writeString("31415926535897932384626433832795");
206
207       StreamMessage JavaDoc recv = (StreamMessage JavaDoc) sendRecMsg(sent);
208       log.debug("recv: "+recv);
209       assertTrue("Boolean == true", recv.readBoolean() == true);
210       assertTrue("Byte == 1", recv.readByte() == 1);
211       // Quirky spec behavior requires a read past the end of the byte[] field
212
byte[] bytes = new byte[testBytes.length];
213       recv.readBytes(bytes);
214       assertTrue(recv.readBytes(bytes) < 0);
215       assertTrue("Bytes == Bytes[]",
216          Arrays.equals(bytes, testBytes));
217       char c = recv.readChar();
218       assertTrue("Char == c", c == 'c');
219       assertTrue("Short == 314159", recv.readShort() == 31415);
220       assertTrue("Int == 314159", recv.readInt() == 314159);
221       assertTrue("Long == 3141592653589793238L",
222          recv.readLong() == 3141592653589793238L);
223       assertTrue("Double == 3.1415926535897932384626433832795",
224          recv.readDouble() == 3.1415926535897932384626433832795);
225       assertTrue("Float == true", recv.readFloat() == 3.141f);
226       assertTrue("Object == 31415926535897932384626433832795",
227          recv.readObject().equals("31415926535897932384626433832795"));
228       assertTrue("String == 31415926535897932384626433832795",
229          recv.readString().equals("31415926535897932384626433832795"));
230    }
231
232    protected void setUp() throws Exception JavaDoc
233    {
234        // call setUp() in superclass
235
super.setUp() ;
236
237       context = new InitialContext JavaDoc();
238       QueueConnectionFactory JavaDoc queueFactory = (QueueConnectionFactory JavaDoc) context.lookup(QUEUE_FACTORY);
239       queueConnection = queueFactory.createQueueConnection();
240       queueConnection.start();
241       session = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
242       Queue JavaDoc queue = (Queue JavaDoc) context.lookup(TEST_QUEUE);
243       sender = session.createSender(queue);
244       receiver = session.createReceiver(queue);
245
246       log.debug("Connection to jms established.");
247    }
248
249    protected void tearDown() throws Exception JavaDoc
250    {
251       sender.close();
252       receiver.close();
253       session.close();
254       queueConnection.close();
255
256       // call tearDown() in superclass
257
super.tearDown() ;
258    }
259
260    private Message JavaDoc sendRecMsg(Message JavaDoc in) throws Exception JavaDoc
261    {
262       sender.send(in, DeliveryMode.NON_PERSISTENT, 4, 0);
263       Message JavaDoc out = receiver.receive(5000);
264       return out;
265    }
266
267    public static junit.framework.Test suite() throws Exception JavaDoc
268    {
269        ClassLoader JavaDoc loader = Thread.currentThread().getContextClassLoader();
270        String JavaDoc resourceName = getJMSResourceRelativePathname("test-destinations-service.xml") ;
271
272        return getDeploySetup(MessageTypesUnitTestCase.class,
273                loader.getResource(resourceName).toString());
274    }
275
276 }
277
Popular Tags