KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sapia > ubik > rmi > server > transport > nio > tcp > RmiChannelHandlerTest


1 package org.sapia.ubik.rmi.server.transport.nio.tcp;
2
3 import java.io.ByteArrayInputStream JavaDoc;
4 import java.io.ByteArrayOutputStream JavaDoc;
5 import java.io.DataInputStream JavaDoc;
6 import java.io.DataOutputStream JavaDoc;
7 import java.nio.ByteBuffer JavaDoc;
8
9 import org.sapia.ubik.net.ServerAddress;
10 import org.sapia.ubik.net.nio.TestChannelManager;
11 import org.sapia.ubik.net.nio.TestCycle;
12 import org.sapia.ubik.net.nio.TestReadChannel;
13 import org.sapia.ubik.net.nio.TestWriteChannel;
14 import org.sapia.ubik.net.nio.util.ReadHelper;
15 import org.sapia.ubik.net.nio.util.WriteHelper;
16
17 import junit.framework.TestCase;
18
19 /**
20  * @author Yanick Duchesne
21  *
22  * <dl>
23  * <dt><b>Copyright:</b><dd>Copyright &#169; 2002-2005 <a HREF="http://www.sapia-oss.org">Sapia Open Source Software</a>. All Rights Reserved.</dd></dt>
24  * <dt><b>License:</b><dd>Read the license.txt file of the jar or visit the
25  * <a HREF="http://www.sapia-oss.org/license.html">license page</a> at the Sapia OSS web site</dd></dt>
26  * </dl>
27  */

28 public class RmiChannelHandlerTest extends TestCase implements AddressProvider {
29   
30   public RmiChannelHandlerTest(String JavaDoc name){
31     super(name);
32   }
33   
34   /**
35    * @see org.sapia.ubik.rmi.server.transport.nio.tcp.AddressProvider#getAddress()
36    */

37   public ServerAddress getAddress() {
38     return new NioAddress("localhost", 0);
39   }
40   
41   public void testReadWrite() throws Exception JavaDoc{
42     ByteArrayOutputStream JavaDoc out = new ByteArrayOutputStream JavaDoc();
43     StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
44     int from = (int)'a';
45     int to = ((int)'z')+1;
46     
47     for(int i = 0; i < 5; i++){
48       for(int j = from; j < to; j++){
49         buf.append((char)j);
50       }
51     }
52     String JavaDoc dataStr = buf.toString();
53     byte[] data = dataStr.getBytes();
54     DataOutputStream JavaDoc dos = new DataOutputStream JavaDoc(out);
55     dos.writeInt(data.length);
56     dos.flush();
57     dos.close();
58     out.write(data);
59     TestReadChannel channel =
60       new TestReadChannel(out.toByteArray(), 10);
61     RmiChannelHandler handler = new RmiChannelHandler(new RmiChannelHandlerFactory(this, 15), 15);
62     TestChannelManager manager = new TestChannelManager();
63     ByteBuffer JavaDoc buffer = ByteBuffer.allocate(10);
64     TestCycle cycle = new TestCycle(channel, handler, manager);
65     cycle.setByteBuffer(buffer);
66     ReadHelper helper = new ReadHelper();
67     helper.read(cycle);
68     byte[] read = handler.getContent().toByteArray();
69     String JavaDoc readStr = new String JavaDoc(read);
70     super.assertEquals(data.length, read.length);
71     super.assertEquals(dataStr, readStr);
72     
73     //writing
74
buffer.clear();
75     WriteHelper whelper = new WriteHelper();
76     TestWriteChannel wchannel = new TestWriteChannel();
77     cycle = new TestCycle(wchannel, handler, manager);
78     cycle.setByteBuffer(buffer);
79     whelper.write(cycle);
80     byte[] written = wchannel.getBytes();
81     DataInputStream JavaDoc dis = new DataInputStream JavaDoc(new ByteArrayInputStream JavaDoc(written));
82     int expectedPayloadSize = dis.readInt();
83     super.assertEquals(data.length, expectedPayloadSize);
84     byte[] payload = new byte[data.length];
85     int payloadSize = dis.read(payload);
86     super.assertEquals(data.length, payloadSize);
87     String JavaDoc payloadStr = new String JavaDoc(payload);
88     super.assertEquals(dataStr, payloadStr);
89     
90   }
91
92
93 }
94
Popular Tags