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 }