1   package org.codehaus.spice.netserve.connection.impl;
2   
3   import java.net.ServerSocket;
4   import java.io.IOException;
5   
6   import com.mockobjects.dynamic.C;
7   import com.mockobjects.dynamic.Mock;
8   import junit.framework.TestCase;
9   import org.codehaus.dna.Logger;
10  
11  public class DNAAcceptorMonitorTestCase
12     extends TestCase
13  {
14     public void testDNAAcceptorMonitor()
15        throws Exception
16     {
17        final Mock mockLogger = new Mock( Logger.class );
18  
19        final String name = "MyName";
20        final ServerSocket serverSocket = new ServerSocket( 2023 );
21        final IOException ioe = new IOException();
22  
23        final String acceptorCreatedMessage =
24           "Creating Acceptor " + name + " on " +
25           serverSocket.getInetAddress().getHostAddress() + ":" +
26           serverSocket.getLocalPort() + ".";
27  
28        final String acceptorClosingMessage =
29           "Closing Acceptor " + name + ".";
30  
31        final String serverSocketListening =
32           "About to call accept() on ServerSocket '" + name + "'.";
33  
34        final String errorAcceptingConnectionMessage =
35           "Error Accepting connection on " + name;
36  
37        final String errorClosingServerSocketMessage =
38           "Error Closing Server Socket " + name;
39  
40        mockLogger.expect( "info", C.args( C.eq( acceptorCreatedMessage ) ) );
41        mockLogger.expect( "info", C.args( C.eq( acceptorClosingMessage ) ) );
42        mockLogger.expectAndReturn( "isDebugEnabled", C.NO_ARGS, false );
43        mockLogger.expectAndReturn( "isDebugEnabled", C.NO_ARGS, true );
44        mockLogger.expect( "debug", C.args( C.eq( serverSocketListening ) ) );
45        mockLogger.expect( "warn", C.args( C.eq( errorAcceptingConnectionMessage ), C.eq( ioe ) ) );
46        mockLogger.expect( "warn", C.args( C.eq( errorClosingServerSocketMessage ), C.eq( ioe ) ) );
47        final Logger logger = (Logger) mockLogger.proxy();
48  
49        final AcceptorMonitor monitor = new DNAAcceptorMonitor( logger );
50        monitor.acceptorCreated( name, serverSocket );
51        monitor.acceptorClosing( name, serverSocket );
52        monitor.serverSocketListening( name, serverSocket );
53        monitor.serverSocketListening( name, serverSocket );
54        monitor.errorAcceptingConnection( name, ioe );
55        monitor.errorClosingServerSocket( name, ioe );
56  
57        mockLogger.verify();
58     }
59  
60     public void testDNAAcceptorMonitorPassedNullIntoCtor()
61        throws Exception
62     {
63        try
64        {
65           new DNAAcceptorMonitor( null );
66        }
67        catch ( final NullPointerException npe )
68        {
69           assertEquals( "npe.getMessage()", "logger", npe.getMessage() );
70           return;
71        }
72        fail( "Expected to fail due to npe in ctor" );
73     }
74  }