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 }