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