Thread: [Httpunit-commit] SF.net SVN: httpunit:[1102] trunk/httpunit/src/main/java/com/meterware/ pseudoser
Brought to you by:
russgold
From: <wol...@us...> - 2012-10-09 10:21:53
|
Revision: 1102 http://httpunit.svn.sourceforge.net/httpunit/?rev=1102&view=rev Author: wolfgang_fahl Date: 2012-10-09 10:21:42 +0000 (Tue, 09 Oct 2012) Log Message: ----------- SocketFactory use can be switched off and is switched off by default as suggested by Kai Moritz Modified Paths: -------------- trunk/httpunit/src/main/java/com/meterware/pseudoserver/PseudoServer.java Modified: trunk/httpunit/src/main/java/com/meterware/pseudoserver/PseudoServer.java =================================================================== --- trunk/httpunit/src/main/java/com/meterware/pseudoserver/PseudoServer.java 2012-10-09 09:52:14 UTC (rev 1101) +++ trunk/httpunit/src/main/java/com/meterware/pseudoserver/PseudoServer.java 2012-10-09 10:21:42 UTC (rev 1102) @@ -34,6 +34,12 @@ **/ public class PseudoServer { + /** + * allow factory use to be switched on and off + * by default the factory is not used any more since there were problems with the test cases as of 2012-10-09 + */ + public static final boolean useFactory=false; + private static final int DEFAULT_SOCKET_TIMEOUT = 1000; private static final int INPUT_POLL_INTERVAL = 10; @@ -467,7 +473,15 @@ private ServerSocket getServerSocket() throws IOException { synchronized (this) { - if (_serverSocket == null) _serverSocket = ServerSocketFactory.newServerSocket(); + // if the socket has not been initialized yet + if (_serverSocket == null) { + // create one - either using the factory (reusing sockets) + // or with no factory - getting a new socket each time + if (useFactory) + _serverSocket = ServerSocketFactory.newServerSocket(); + else + _serverSocket = ServerSocketFactory.createNewServerSocket(); + } } return _serverSocket; } @@ -591,41 +605,79 @@ } - +/** + * Factory for Server sockets + */ class ServerSocketFactory { - static private ArrayList _sockets = new ArrayList(); + // the default timeout in millisecs + static public int DEFAULT_TIMEOUT=1000; + + // the list of sockets that have been created by the factory + static private ArrayList _sockets = new ArrayList(); - static private int _outstandingSockets; + static private int _outstandingSockets; - static private Object _releaseSemaphore = new Object(); + // synchronization object + static private Object _releaseSemaphore = new Object(); - static synchronized ServerSocket newServerSocket() throws IOException { - if (_sockets.isEmpty() && _outstandingSockets > PseudoServer.getWaitThreshhold()) { - try { synchronized( _releaseSemaphore) {_releaseSemaphore.wait( PseudoServer.getSocketReleaseWaitTime() ); } } catch (InterruptedException e) {}; - } - _outstandingSockets++; - if (!_sockets.isEmpty()) { - return (ServerSocket) _sockets.remove(0); - } else { - ServerSocket serverSocket = new ServerSocket(0); - serverSocket.setSoTimeout( 1000 ); - return serverSocket; - } - } + /** + * create a new ServerSocket + * @return a new ServerSocket + * @throws IOException + */ + static synchronized ServerSocket createNewServerSocket() throws IOException { + ServerSocket serverSocket = new ServerSocket(0); + serverSocket.setSoTimeout(DEFAULT_TIMEOUT); + return serverSocket; + } + + /** + * create a new Server Socket + * @return a Server Socket + * @throws IOException + */ + static synchronized ServerSocket newServerSocket() throws IOException { + + if (_sockets.isEmpty() + && _outstandingSockets > PseudoServer.getWaitThreshhold()) { + try { + synchronized (_releaseSemaphore) { + _releaseSemaphore.wait(PseudoServer + .getSocketReleaseWaitTime()); + } + } catch (InterruptedException e) { + } + ; + } + _outstandingSockets++; + if (!_sockets.isEmpty()) { + return (ServerSocket) _sockets.remove(0); + } else { + ServerSocket serverSocket=createNewServerSocket(); + return serverSocket; + } + } - static synchronized void release( ServerSocket serverSocket ) throws IOException { - if (_sockets.size() >= 2 * PseudoServer.getWaitThreshhold()) { - serverSocket.close(); - } else { - _sockets.add( serverSocket ); - _outstandingSockets--; - synchronized (_releaseSemaphore) { _releaseSemaphore.notify(); } - } - } -} + /** + * release the given server Socket + * @param serverSocket + * @throws IOException + */ + static synchronized void release(ServerSocket serverSocket) + throws IOException { + if (_sockets.size() >= 2 * PseudoServer.getWaitThreshhold()) { + serverSocket.close(); + } else { + _sockets.add(serverSocket); + _outstandingSockets--; + synchronized (_releaseSemaphore) { + _releaseSemaphore.notify(); + } + } + } +} // ServerSocketFactory - class RecordingOutputStream extends OutputStream { private OutputStream _nestedStream; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wol...@us...> - 2012-10-09 10:25:40
|
Revision: 1103 http://httpunit.svn.sourceforge.net/httpunit/?rev=1103&view=rev Author: wolfgang_fahl Date: 2012-10-09 10:25:31 +0000 (Tue, 09 Oct 2012) Log Message: ----------- use only one static int for the DEFAULT_SOCKET_TIMEOUT Modified Paths: -------------- trunk/httpunit/src/main/java/com/meterware/pseudoserver/PseudoServer.java Modified: trunk/httpunit/src/main/java/com/meterware/pseudoserver/PseudoServer.java =================================================================== --- trunk/httpunit/src/main/java/com/meterware/pseudoserver/PseudoServer.java 2012-10-09 10:21:42 UTC (rev 1102) +++ trunk/httpunit/src/main/java/com/meterware/pseudoserver/PseudoServer.java 2012-10-09 10:25:31 UTC (rev 1103) @@ -40,7 +40,7 @@ */ public static final boolean useFactory=false; - private static final int DEFAULT_SOCKET_TIMEOUT = 1000; + static final int DEFAULT_SOCKET_TIMEOUT = 1000; private static final int INPUT_POLL_INTERVAL = 10; @@ -610,8 +610,6 @@ */ class ServerSocketFactory { - // the default timeout in millisecs - static public int DEFAULT_TIMEOUT=1000; // the list of sockets that have been created by the factory static private ArrayList _sockets = new ArrayList(); @@ -628,7 +626,7 @@ */ static synchronized ServerSocket createNewServerSocket() throws IOException { ServerSocket serverSocket = new ServerSocket(0); - serverSocket.setSoTimeout(DEFAULT_TIMEOUT); + serverSocket.setSoTimeout(PseudoServer.DEFAULT_SOCKET_TIMEOUT); return serverSocket; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rus...@us...> - 2012-10-22 00:46:10
|
Revision: 1106 http://httpunit.svn.sourceforge.net/httpunit/?rev=1106&view=rev Author: russgold Date: 2012-10-22 00:46:04 +0000 (Mon, 22 Oct 2012) Log Message: ----------- from Kai Moritz: Remove ServerSocketFactory - PseudoServer no longer reuses sockets Modified Paths: -------------- trunk/httpunit/src/main/java/com/meterware/pseudoserver/PseudoServer.java Modified: trunk/httpunit/src/main/java/com/meterware/pseudoserver/PseudoServer.java =================================================================== --- trunk/httpunit/src/main/java/com/meterware/pseudoserver/PseudoServer.java 2012-10-09 10:35:31 UTC (rev 1105) +++ trunk/httpunit/src/main/java/com/meterware/pseudoserver/PseudoServer.java 2012-10-22 00:46:04 UTC (rev 1106) @@ -113,11 +113,19 @@ public PseudoServer( int socketTimeout ) { _socketTimeout = socketTimeout; _serverNum = ++_numServers; + + try { + _serverSocket = new ServerSocket(0); + _serverSocket.setSoTimeout(1000); + } catch( IOException e ) { + System.out.println("Error while creating socket: " + e); + throw new RuntimeException(e); + } Thread t = new Thread( "PseudoServer " + _serverNum ) { public void run() { while (_active) { try { - handleNewConnection( getServerSocket().accept() ); + handleNewConnection( _serverSocket.accept() ); Thread.sleep( 20 ); } catch (InterruptedIOException e) { } catch (IOException e) { @@ -129,9 +137,9 @@ } } try { - if (_serverSocket != null) ServerSocketFactory.release( _serverSocket ); - _serverSocket = null; + _serverSocket.close(); } catch (IOException e) { + System.out.println("Error while closing socket: " + e); } debug( "Pseudoserver shutting down" ); } @@ -156,7 +164,7 @@ private static String replaceDebugToken( String message, String token, String replacement ) { - return message.indexOf( token ) < 0 ? message : message.replaceFirst( token, replacement ); + return !message.contains(token) ? message : message.replaceFirst( token, replacement ); } @@ -169,7 +177,7 @@ * Returns the port on which this server is listening. **/ public int getConnectedPort() throws IOException { - return getServerSocket().getLocalPort(); + return _serverSocket.getLocalPort(); } @@ -471,22 +479,6 @@ } - private ServerSocket getServerSocket() throws IOException { - synchronized (this) { - // if the socket has not been initialized yet - if (_serverSocket == null) { - // create one - either using the factory (reusing sockets) - // or with no factory - getting a new socket each time - if (useFactory) - _serverSocket = ServerSocketFactory.newServerSocket(); - else - _serverSocket = ServerSocketFactory.createNewServerSocket(); - } - } - return _serverSocket; - } - - private ServerSocket _serverSocket; } @@ -605,77 +597,6 @@ } -/** - * Factory for Server sockets - */ -class ServerSocketFactory { - - - // the list of sockets that have been created by the factory - static private ArrayList _sockets = new ArrayList(); - - static private int _outstandingSockets; - - // synchronization object - static private Object _releaseSemaphore = new Object(); - - /** - * create a new ServerSocket - * @return a new ServerSocket - * @throws IOException - */ - static synchronized ServerSocket createNewServerSocket() throws IOException { - ServerSocket serverSocket = new ServerSocket(0); - serverSocket.setSoTimeout(PseudoServer.DEFAULT_SOCKET_TIMEOUT); - return serverSocket; - } - - /** - * create a new Server Socket - * @return a Server Socket - * @throws IOException - */ - static synchronized ServerSocket newServerSocket() throws IOException { - - if (_sockets.isEmpty() - && _outstandingSockets > PseudoServer.getWaitThreshhold()) { - try { - synchronized (_releaseSemaphore) { - _releaseSemaphore.wait(PseudoServer - .getSocketReleaseWaitTime()); - } - } catch (InterruptedException e) { - } - ; - } - _outstandingSockets++; - if (!_sockets.isEmpty()) { - return (ServerSocket) _sockets.remove(0); - } else { - ServerSocket serverSocket=createNewServerSocket(); - return serverSocket; - } - } - - /** - * release the given server Socket - * @param serverSocket - * @throws IOException - */ - static synchronized void release(ServerSocket serverSocket) - throws IOException { - if (_sockets.size() >= 2 * PseudoServer.getWaitThreshhold()) { - serverSocket.close(); - } else { - _sockets.add(serverSocket); - _outstandingSockets--; - synchronized (_releaseSemaphore) { - _releaseSemaphore.notify(); - } - } - } -} // ServerSocketFactory - class RecordingOutputStream extends OutputStream { private OutputStream _nestedStream; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |