On 4/19/07, LvJimmy,Jing <[EMAIL PROTECTED]> wrote:
2007/4/19, Andrew Zhang <[EMAIL PROTECTED]>:
> On 4/19/07, Ruth Cao <[EMAIL PROTECTED]> wrote:
> >
> > Tim Ellison wrote:
> > > Ruth Cao wrote:
> > >
> > >> You are right, Vladimir.
> > >>
> > >> It is just because the 'port' variable is set to 8080 and on some
> > >> machines this port has already been occupied. The test case will
pass
> > >> if we use Support_PortManager.getNextPort() on my side.
> > >>
> > >
> > > Please don't use the PortManager, just open port 0 and let the OS
> > > allocate a free port. There are examples in the existing tests.
> > >
> > > Regards,
> > > Tim
> > >
> > >
> > Yes, I agree that we should use port 0 in almost all the test cases.
> > However, it seems that this test case is a little bit special. It
> > requires to initialize a ServerSocket to connect 0.0.0.0 after
> > connecting localhost successfully. If we use port 0 and 0.0.0.0 at
the
> > same time, the ServerSocket constructed will be invalid.
>
>
> Sorry Ruth, what did you mean here? A server socket will connect to
> somewhere?
>
> Could you please explain the scenario a bit more clearly?
>
I may explain you the interesting scenario :)
If we create a ServerSocket with localhost, port X (X is not zero),
close it, and create another ServerSocket with 0.0.0.0,port X, this
process in RI is fine, but Harmony fails.
If we create a ServerSocket with localhost, port 0, close it, and
create another ServerSocket with 0.0.0.0,port 0, this process both
fails on RI and Harmony when create the second ServerSocket.
Thanks Jimmy, interesting. But I wrote following test case which runs well
against RI:
public void test() throws Exception {
byte[] localAddress = {127,0,0,1};
byte[] anyAddress = {0,0,0,0};
InetAddress address = InetAddress.getByAddress(localAddress);
// create a server socket with localhost, port 0
ServerSocket server = new ServerSocket(0, 5, address);
// close it
server.close();
address = InetAddress.getByAddress(anyAddress);
// create another server socket with 0.0.0.0, 0
server = new ServerSocket(0, 5, address);
// close it
server.close();
}
Did I misuderstand the scenario?
You see these two process are not the same and so that we can not use
port 0 in the test.
> Thus, shall we assign a rarely-used port (e.g. 50000), or continue using
> > Support_PortManager? Any ideas? Suggestions?
> >
> > --
> > Regards,
> >
> > Ruth Cao
> > China Software Development Lab, IBM
> >
> >
> >
>
>
> --
> Best regards,
> Andrew Zhang
>
--
Best Regards!
Jimmy, Jing Lv
China Software Development Lab, IBM
--
Best regards,
Andrew Zhang