KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > test > jbossmq > 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.jbossmq.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.JBossTestCase;
44
45 /**
46  * Tests of sending/receiving all jms message types to/from a queue
47  *
48  * @author Scott.Stark@jboss.org
49  * @version $Revision: 37406 $
50  */

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