KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > codehaus > spice > netserve > sockets > impl > SocketTestCase


1 /*
2  * Copyright (C) The Spice Group. All rights reserved.
3  *
4  * This software is published under the terms of the Spice
5  * Software License version 1.1, a copy of which has been included
6  * with this distribution in the LICENSE.txt file.
7  */

8 package org.codehaus.spice.netserve.sockets.impl;
9
10 import java.io.IOException JavaDoc;
11 import java.io.InputStream JavaDoc;
12 import java.io.OutputStream JavaDoc;
13 import java.net.InetAddress JavaDoc;
14 import java.net.ServerSocket JavaDoc;
15 import java.net.Socket JavaDoc;
16 import java.net.UnknownHostException JavaDoc;
17 import junit.framework.TestCase;
18 import org.codehaus.spice.netserve.sockets.ServerSocketFactory;
19 import org.codehaus.spice.netserve.sockets.SocketFactory;
20
21 /**
22  * TestCase for {@link org.codehaus.spice.netserve.sockets.SocketFactory} and {@link org.codehaus.spice.netserve.sockets.ServerSocketFactory}.
23  *
24  * @author Peter Donald
25  * @version $Revision: 1.2 $ $Date: 2004/03/21 23:43:00 $
26  */

27 public class SocketTestCase
28     extends TestCase
29 {
30     private static final int PORT = 1977;
31     private static final InetAddress JavaDoc HOST = getLocalHost();
32     private static final byte DATA = 23;
33
34     public SocketTestCase( final String JavaDoc name )
35     {
36         super( name );
37     }
38
39     public void testDefault()
40         throws Exception JavaDoc
41     {
42         final SocketFactory csf = new DefaultSocketFactory();
43         final ServerSocketFactory ssf = new DefaultServerSocketFactory();
44
45         doSocketPairTest( csf, ssf );
46     }
47
48     private void doSocketPairTest( final SocketFactory csf, final ServerSocketFactory ssf ) throws IOException JavaDoc
49     {
50         try
51         {
52             csf.createSocket( HOST, PORT );
53             final String JavaDoc message = "Should not be able to create " +
54                 "client socket when server socket not initialized.";
55             fail( message );
56         }
57         catch( IOException JavaDoc e )
58         {
59         }
60
61         final ServerSocket JavaDoc ss1 = ssf.createServerSocket( PORT );
62         readWriteTestsOnSingleSocket( ss1, csf );
63
64         final ServerSocket JavaDoc ss2 = ssf.createServerSocket( PORT, 1 );
65         readWriteTestsOnSingleSocket( ss2, csf );
66
67         final ServerSocket JavaDoc ss3 = ssf.createServerSocket( PORT, 1, HOST );
68         readWriteTestsOnSingleSocket( ss3, csf );
69     }
70
71     private void readWriteTestsOnSingleSocket( final ServerSocket JavaDoc serverSocket,
72                                                final SocketFactory csf )
73         throws IOException JavaDoc
74     {
75         final Socket JavaDoc client = csf.createSocket( HOST, PORT );
76         final Socket JavaDoc server = serverSocket.accept();
77
78         pushPullData( "Testing single socket conn", client, server );
79
80         final Socket JavaDoc client2 = csf.createSocket( HOST, PORT, HOST, 0 );
81         final Socket JavaDoc server2 = serverSocket.accept();
82         pushPullData( "Testing single socket conn2", client2, server2 );
83
84         serverSocket.close();
85     }
86
87     private void pushPullData( final String JavaDoc prefix,
88                                final Socket JavaDoc client,
89                                final Socket JavaDoc server )
90         throws IOException JavaDoc
91     {
92         pushData( prefix + ": c2s", client, server );
93         pushData( prefix + ": s2c", server, client );
94
95         client.close();
96         server.close();
97     }
98
99     /**
100      * Push data from socket1 to socket2.
101      */

102     private void pushData( final String JavaDoc prefix,
103                            final Socket JavaDoc socket1,
104                            final Socket JavaDoc socket2 ) throws IOException JavaDoc
105     {
106         final OutputStream JavaDoc cos = socket1.getOutputStream();
107         cos.write( DATA );
108         cos.flush();
109
110         final InputStream JavaDoc sis = socket2.getInputStream();
111         assertEquals( prefix + ": Write/read byte", DATA, sis.read() );
112     }
113
114     private static InetAddress JavaDoc getLocalHost()
115     {
116         try
117         {
118             return InetAddress.getLocalHost();
119         }
120         catch( UnknownHostException JavaDoc e )
121         {
122             throw new IllegalStateException JavaDoc( e.toString() );
123         }
124     }
125 }
126
Popular Tags