public void setUp() throws Exception { _server = new PseudoServer(); _hostPath = "http://localhost:" + _server.getConnectedPort(); }
protected void addResourceHeader( String resourceName, String header ) { _server.addResourceHeader( resourceName, header ); }
/** * Defines the contents of an expected resource. **/ public void setResource( String name, PseudoServlet servlet ) { _resources.put( asResourceName( name ), servlet ); }
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; } }
private boolean respondToRequest( HttpRequest request, HttpResponseStream response ) { debug( "Server thread handling request: " + request ); boolean keepAlive = isKeepAlive( request ); WebResource resource = null; try { response.restart(); response.setProtocol( getResponseProtocol( request ) ); resource = getResource( request ); if (resource == null) { response.setResponse( HttpURLConnection.HTTP_NOT_FOUND, "unable to find " + request.getURI() ); } else { if (resource.closesConnection()) keepAlive = false; if (resource.getResponseCode() != HttpURLConnection.HTTP_OK) { response.setResponse( resource.getResponseCode(), "" ); } String[] headers = resource.getHeaders(); for (int i = 0; i < headers.length; i++) { debug( "Server thread sending header: " + headers[i] ); response.addHeader( headers[i] ); } } } catch (UnknownMethodException e) { response.setResponse( HttpURLConnection.HTTP_BAD_METHOD, "unsupported method: " + e.getMethod() ); } catch (Throwable t) { t.printStackTrace(); response.setResponse( HttpURLConnection.HTTP_INTERNAL_ERROR, t.toString() ); } try { response.write( resource ); } catch (IOException e) { System.out.println( "*** Failed to send reply: " + e ); } return keepAlive; }
private void serveRequests( Socket socket ) throws IOException { socket.setSoTimeout( _socketTimeout ); socket.setTcpNoDelay( true ); debug( "Created server thread " + socket.getInetAddress() + ':' + socket.getPort() ); final BufferedInputStream inputStream = new BufferedInputStream( socket.getInputStream() ); final HttpResponseStream outputStream = new HttpResponseStream( socket.getOutputStream() ); try { while (_active) { HttpRequest request = new HttpRequest( inputStream ); boolean keepAlive = respondToRequest( request, outputStream ); if (!keepAlive) break; while (_active && 0 == inputStream.available()) { try { Thread.sleep( INPUT_POLL_INTERVAL ); } catch (InterruptedException e) {} } } } catch (IOException e) { outputStream.restart(); outputStream.setProtocol( "HTTP/1.0" ); outputStream.setResponse( HttpURLConnection.HTTP_BAD_REQUEST, e.toString() ); } debug( "Closing server thread" ); outputStream.close(); socket.close(); debug( "Server thread closed" ); }
private WebResource getResource( HttpRequest request ) throws IOException { Object resource = _resources.get( request.getURI() ); if (resource == null) resource = _resources.get( withoutParameters( request.getURI() ) ); return getResource( (PseudoServlet) resource, request ); } else if (request.getURI().endsWith( ".class" )) { for (Iterator iterator = _classpathDirs.iterator(); iterator.hasNext();) {
public void shutDown() { debug( "Requested shutdown of pseudoserver" ); _active = false; }
/** * Returns the port on which this server is listening. **/ public int getConnectedPort() throws IOException { return getServerSocket().getLocalPort(); }
protected int getHostPort() throws IOException { return _server.getConnectedPort(); }
private boolean respondToRequest( HttpRequest request, HttpResponseStream response ) { debug( "Server thread handling request: " + request ); boolean keepAlive = isKeepAlive( request ); WebResource resource = null; try { response.restart(); response.setProtocol( getResponseProtocol( request ) ); resource = getResource( request ); if (resource == null) { response.setResponse( HttpURLConnection.HTTP_NOT_FOUND, "unable to find " + request.getURI() ); } else { if (resource.closesConnection()) keepAlive = false; if (resource.getResponseCode() != HttpURLConnection.HTTP_OK) { response.setResponse( resource.getResponseCode(), "" ); } String[] headers = resource.getHeaders(); for (int i = 0; i < headers.length; i++) { debug( "Server thread sending header: " + headers[i] ); response.addHeader( headers[i] ); } } } catch (UnknownMethodException e) { response.setResponse( HttpURLConnection.HTTP_BAD_METHOD, "unsupported method: " + e.getMethod() ); } catch (Throwable t) { t.printStackTrace(); response.setResponse( HttpURLConnection.HTTP_INTERNAL_ERROR, t.toString() ); } try { response.write( resource ); } catch (IOException e) { System.out.println( "*** Failed to send reply: " + e ); } return keepAlive; }
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; } }
private void serveRequests( Socket socket ) throws IOException { socket.setSoTimeout( _socketTimeout ); socket.setTcpNoDelay( true ); debug( "Created server thread " + socket.getInetAddress() + ':' + socket.getPort() ); final BufferedInputStream inputStream = new BufferedInputStream( socket.getInputStream() ); final HttpResponseStream outputStream = new HttpResponseStream( socket.getOutputStream() ); try { while (_active) { HttpRequest request = new HttpRequest( inputStream ); boolean keepAlive = respondToRequest( request, outputStream ); if (!keepAlive) break; while (_active && 0 == inputStream.available()) { try { Thread.sleep( INPUT_POLL_INTERVAL ); } catch (InterruptedException e) {} } } } catch (IOException e) { outputStream.restart(); outputStream.setProtocol( "HTTP/1.0" ); outputStream.setResponse( HttpURLConnection.HTTP_BAD_REQUEST, e.toString() ); } debug( "Closing server thread" ); outputStream.close(); socket.close(); debug( "Server thread closed" ); }
private WebResource getResource( HttpRequest request ) throws IOException { Object resource = _resources.get( request.getURI() ); if (resource == null) resource = _resources.get( withoutParameters( request.getURI() ) ); return getResource( (PseudoServlet) resource, request ); } else if (request.getURI().endsWith( ".class" )) { for (Iterator iterator = _classpathDirs.iterator(); iterator.hasNext();) {
public void shutDown() { debug( "Requested shutdown of pseudoserver" ); _active = false; }
/** * Returns the port on which this server is listening. **/ public int getConnectedPort() throws IOException { return getServerSocket().getLocalPort(); }
protected int getHostPort() throws IOException { return _server.getConnectedPort(); }
private boolean respondToRequest( HttpRequest request, HttpResponseStream response ) { debug( "Server thread handling request: " + request ); boolean keepAlive = isKeepAlive( request ); WebResource resource = null; try { response.restart(); response.setProtocol( getResponseProtocol( request ) ); resource = getResource( request ); if (resource == null) { response.setResponse( HttpURLConnection.HTTP_NOT_FOUND, "unable to find " + request.getURI() ); } else { if (resource.closesConnection()) keepAlive = false; if (resource.getResponseCode() != HttpURLConnection.HTTP_OK) { response.setResponse( resource.getResponseCode(), "" ); } String[] headers = resource.getHeaders(); for (int i = 0; i < headers.length; i++) { debug( "Server thread sending header: " + headers[i] ); response.addHeader( headers[i] ); } } } catch (UnknownMethodException e) { response.setResponse( HttpURLConnection.HTTP_BAD_METHOD, "unsupported method: " + e.getMethod() ); } catch (Throwable t) { t.printStackTrace(); response.setResponse( HttpURLConnection.HTTP_INTERNAL_ERROR, t.toString() ); } try { response.write( resource ); } catch (IOException e) { System.out.println( "*** Failed to send reply: " + e ); } return keepAlive; }