2007/4/19, Andrew Zhang <[EMAIL PROTECTED]>:
>
> 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.0at
> > 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?
It is just the scenario on the ServerSocket side. Another part of the
story
is that the test case creates a Socket as a client to connect the above
two
ServerSockets. RI connects both successfully while Harmony fails to
connect
the second one.