You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xmlrpc-dev@ws.apache.org by Daniel Rall <dl...@finemaltcoding.com> on 2005/05/02 22:00:17 UTC

Re: cvs commit: ws-xmlrpc/src/java/org/apache/xmlrpc WebServer.java

This is neat!  It would be even nicer if the test suite would verify
that the port was available before trying to bind the server to it, and
if not available, randomly select a different port (try 5 times or
something).

On Mon, 2005-04-11 at 14:31 +0000, jochen@apache.org wrote:
>jochen      2005/04/11 07:31:31
>
>  Modified:    src/test/org/apache/xmlrpc ClientServerRpcTest.java
>                        LocalServerRpcTest.java
>               src/java/org/apache/xmlrpc WebServer.java
>  Log:
>  The test suite is running on a random port now. It used to use port 8080, which caused problems, if the port was reused too fast, or if that port was blocked by another server.
>  
>  Revision  Changes    Path
>  1.17      +26 -26    ws-xmlrpc/src/test/org/apache/xmlrpc/ClientServerRpcTest.java
>  
>  Index: ClientServerRpcTest.java
>  ===================================================================
>  RCS file: /home/cvs/ws-xmlrpc/src/test/org/apache/xmlrpc/ClientServerRpcTest.java,v
>  retrieving revision 1.16
>  retrieving revision 1.17
>  diff -u -r1.16 -r1.17
>  --- ClientServerRpcTest.java	17 Jun 2004 01:40:14 -0000	1.16
>  +++ ClientServerRpcTest.java	11 Apr 2005 14:31:31 -0000	1.17
>  @@ -123,18 +123,6 @@
>           server = new XmlRpcServer();
>           server.addHandler(HANDLER_NAME, new TestHandler());
>   
>  -        InetAddress localhost = null;
>  -        try
>  -        {
>  -            // localhost will be a random network interface on a
>  -            // multi-homed host.
>  -            localhost = InetAddress.getLocalHost();
>  -        }
>  -        catch (UnknownHostException e)
>  -        {
>  -            fail(e.toString());
>  -        }
>  -
>           // Setup system handler
>           SystemHandler webServerSysHandler = new SystemHandler();
>           webServerSysHandler.addSystemHandler("multicall", new MultiCall());
>  @@ -142,19 +130,6 @@
>           // WebServer (contains its own XmlRpcServer instance)
>           setUpWebServer();
>           webServer.addHandler("system", webServerSysHandler);
>  -
>  -        // XML-RPC client(s)
>  -        try
>  -        {
>  -            String hostName = localhost.getHostName();
>  -            client = new XmlRpcClient(hostName, SERVER_PORT);
>  -            //liteClient = new XmlRpcClientLite(hostName, SERVER_PORT);
>  -        }
>  -        catch (Exception e)
>  -        {
>  -            e.printStackTrace();
>  -            fail(e.toString());
>  -        }
>       }
>   
>       /**
>  @@ -179,6 +154,31 @@
>               e.printStackTrace();
>               fail(e.toString());
>           }
>  +
>  +        InetAddress localhost = null;
>  +        try
>  +        {
>  +            // localhost will be a random network interface on a
>  +            // multi-homed host.
>  +            localhost = InetAddress.getLocalHost();
>  +        }
>  +        catch (UnknownHostException e)
>  +        {
>  +            fail(e.toString());
>  +        }
>  +
>  +		// XML-RPC client(s)
>  +        try
>  +        {
>  +            String hostName = localhost.getHostName();
>  +            client = new XmlRpcClient(hostName, SERVER_PORT);
>  +            //liteClient = new XmlRpcClientLite(hostName, SERVER_PORT);
>  +        }
>  +        catch (Exception e)
>  +        {
>  +            e.printStackTrace();
>  +            fail(e.toString());
>  +        }
>       }
>      
>       /**
>  
>  
>  
>  1.2       +5 -14     ws-xmlrpc/src/test/org/apache/xmlrpc/LocalServerRpcTest.java
>  
>  Index: LocalServerRpcTest.java
>  ===================================================================
>  RCS file: /home/cvs/ws-xmlrpc/src/test/org/apache/xmlrpc/LocalServerRpcTest.java,v
>  retrieving revision 1.1
>  retrieving revision 1.2
>  diff -u -r1.1 -r1.2
>  --- LocalServerRpcTest.java	26 Jan 2003 02:31:08 -0000	1.1
>  +++ LocalServerRpcTest.java	11 Apr 2005 14:31:31 -0000	1.2
>  @@ -78,7 +78,7 @@
>        */
>       protected static final String REQUEST_PARAM_VALUE = "foobar";
>   
>  -    protected static final int SERVER_PORT;
>  +	protected static int SERVER_PORT;
>   
>       /**
>        * The value to use in our request parameter.
>  @@ -100,16 +100,6 @@
>           super(message);
>       }
>       
>  -    /**
>  -     * Static constructor
>  -     * - initializes test port
>  -     * 
>  -     * TODO: can we initialize this from a properties file?
>  -     */
>  -    static {
>  -        SERVER_PORT = 8081;
>  -    }
>  -
>       protected WebServer webServer;
>   
>       /**
>  @@ -117,7 +107,7 @@
>        *
>        * @param port Port to use for the WebServer
>        */
>  -    private void setUpWebServer(int port) {
>  +	private void setUpWebServer(int port) {
>           webServer = new WebServer(port);
>           webServer.addHandler(HANDLER_NAME, new TestHandler());
>       }
>  @@ -126,7 +116,7 @@
>        * Sets up the @link WebServer with the default port.
>        */
>       protected void setUpWebServer() {
>  -        setUpWebServer(SERVER_PORT);
>  +		setUpWebServer(SERVER_PORT);
>       }
>   
>       /**
>  @@ -134,6 +124,7 @@
>        */
>       protected void startWebServer() {
>           webServer.start();
>  +		SERVER_PORT = webServer.serverSocket.getLocalPort();
>       }
>       
>       /**
>  
>  
>  
>  1.27      +11 -11    ws-xmlrpc/src/java/org/apache/xmlrpc/WebServer.java
>  
>  Index: WebServer.java
>  ===================================================================
>  RCS file: /home/cvs/ws-xmlrpc/src/java/org/apache/xmlrpc/WebServer.java,v
>  retrieving revision 1.26
>  retrieving revision 1.27
>  diff -u -r1.26 -r1.27
>  --- WebServer.java	17 Jun 2004 01:49:10 -0000	1.26
>  +++ WebServer.java	11 Apr 2005 14:31:31 -0000	1.27
>  @@ -304,6 +304,17 @@
>        */
>       public void start()
>       {
>  +        try
>  +        {
>  +            setupServerSocket(50);
>  +        }
>  +        catch (Exception e)
>  +        {
>  +            listener = null;
>  +            e.printStackTrace();
>  +            throw new RuntimeException(e.getMessage());
>  +        }
>  +
>           // The listener reference is released upon shutdown().
>           if (listener == null)
>           {
>  @@ -470,17 +481,6 @@
>       {
>           try
>           {
>  -            setupServerSocket(50);
>  -        }
>  -        catch (Exception e)
>  -        {
>  -            listener = null;
>  -            e.printStackTrace();
>  -            throw new RuntimeException(e.getMessage());
>  -        }
>  -
>  -        try
>  -        {
>               while (listener != null)
>               {
>                   try
>  
>  
>  


Re: cvs commit: ws-xmlrpc/src/java/org/apache/xmlrpc WebServer.java

Posted by Daniel Rall <dl...@finemaltcoding.com>.
On Mon, 2005-05-02 at 22:15 +0200, Jochen Wiedmann wrote:
>Daniel Rall wrote:
>> This is neat!  It would be even nicer if the test suite would verify
>> that the port was available before trying to bind the server to it, and
>> if not available, randomly select a different port (try 5 times or
>> something).
>
>No need for that. It is the operating that selects a random *and
>available* port. This is standard behaviour for port 0.

Very nice!


Re: cvs commit: ws-xmlrpc/src/java/org/apache/xmlrpc WebServer.java

Posted by Jochen Wiedmann <jo...@gmail.com>.
Daniel Rall wrote:
> This is neat!  It would be even nicer if the test suite would verify
> that the port was available before trying to bind the server to it, and
> if not available, randomly select a different port (try 5 times or
> something).

No need for that. It is the operating that selects a random *and
available* port. This is standard behaviour for port 0.


Jochen