Source code: org/activemq/message/PacketTestSupport.java
1 /*
2 * Created on Mar 8, 2004
3 *
4 * To change the template for this generated file go to
5 * Window - Preferences - Java - Code Generation - Code and Comments
6 */
7 package org.activemq.message;
8
9 import junit.framework.TestCase;
10
11 import javax.jms.JMSException;
12 import org.activemq.io.WireFormat;
13 import org.activemq.io.impl.DefaultWireFormat;
14 import org.activemq.io.impl.PacketReader;
15 import org.activemq.io.impl.PacketWriter;
16 import java.io.ByteArrayInputStream;
17 import java.io.ByteArrayOutputStream;
18 import java.io.DataInputStream;
19 import java.io.DataOutputStream;
20 import java.io.IOException;
21
22 /**
23 * @version $Revision: 1.1.1.1 $
24 */
25 public abstract class PacketTestSupport extends TestCase {
26 protected WireFormat wireFormat = new DefaultWireFormat();
27 protected PacketWriter writer;
28 protected PacketReader reader;
29 protected int packetCount = 10;
30
31 public void testWireFormat() throws IOException, JMSException {
32 WireFormat wireFormat = new DefaultWireFormat();
33
34 Packet packet = createPacket();
35 System.out.println("Created packet: " + packet + " with type: " + packet.getPacketType());
36
37 ByteArrayOutputStream buffer = new ByteArrayOutputStream();
38 DataOutputStream dataOut = new DataOutputStream(buffer);
39 wireFormat.writePacket(packet, dataOut);
40 dataOut.close();
41 byte[] bytes = buffer.toByteArray();
42
43 DataInputStream dataIn = new DataInputStream(new ByteArrayInputStream(bytes));
44 int type = dataIn.readByte();
45 System.out.println("Read type: " + type);
46 Packet otherPacket = wireFormat.readPacket(type, dataIn);
47
48 System.out.println("Read packet: " + otherPacket);
49 assertPacket(otherPacket, packet);
50 }
51
52 /*
53 public void testReadPacket() throws IOException {
54 Packet packet = createPacket();
55 byte[] data = writer.writePacketToByteArray(packet);
56 Packet testInfo = reader.readPacketFromByteArray(data);
57 assertValidPacket(testInfo);
58 }
59 */
60
61 public void testToFromBytes() throws JMSException, IOException {
62 Packet packet = createPacket();
63 byte[] data = wireFormat.toBytes(packet);
64
65 System.out.println("Written byte array of size: " + data.length);
66
67 Packet value = wireFormat.fromBytes(data);
68 assertValidPacket(value);
69 }
70
71 public void testReadAndWriteDataInOut() throws JMSException, IOException {
72 Packet packet = createPacket();
73 ByteArrayOutputStream buffer = new ByteArrayOutputStream();
74 DataOutputStream out = new DataOutputStream(buffer);
75 wireFormat.writePacket(packet, out);
76 out.close();
77
78 byte[] data = buffer.toByteArray();
79 System.out.println("Written byte array of size: " + data.length);
80
81 DataInputStream in = new DataInputStream(new ByteArrayInputStream(data));
82 Packet value = wireFormat.readPacket(in);
83 assertValidPacket(value);
84 }
85
86
87 public void testReadAndWriteDataInOutLoop() throws JMSException, IOException {
88 Packet packet = createPacket();
89 ByteArrayOutputStream buffer = new ByteArrayOutputStream();
90 DataOutputStream out = new DataOutputStream(buffer);
91
92 for (int i = 0; i < packetCount; i++) {
93 wireFormat.writePacket(packet, out);
94 }
95
96 DataInputStream in = new DataInputStream(new ByteArrayInputStream(buffer.toByteArray()));
97 for (int i = 0; i < packetCount; i++) {
98 Packet value = wireFormat.readPacket(in);
99 assertValidPacket(value);
100 }
101 }
102
103 protected void assertPacket(Packet packet, Packet expected) {
104 assertValidPacket(packet);
105 }
106
107 protected abstract Packet createPacket();
108
109
110 protected abstract void assertValidPacket(Packet packet);
111
112 }