+1
On 4/20/07, Ruth Cao <[EMAIL PROTECTED]> wrote:
Andrew Zhang wrote:
> On 4/19/07, Ruth Cao <[EMAIL PROTECTED]> wrote:
>>
>> 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.
>
>
> Hi Ruth,
>
> but I still don't understand why port 0 doesn't work?
> server1 = new ServerSocket(0,....);
> server2 = new ServerSocket(0,....);
> port1 = server1.getLocalPort();
> port2 = server2.getLocalPort();
> connect to port1
> connect to port2
> Where's the problem? Can't create server2? The code above runs well
> against
> RI.
>
I modified the test case a little and now it works by using port 0:
server1 = new ServerSocket(0,..., localhost);
port = server1.getLocalPort();
connect to server1
server2 = new ServerSocket(port,....);
connect to server2
If we skip step 'port = server1.getLocalPort();', both Harmony and RI
fail. If no one objects, I'll create a new patch like this. It can
reproduce the bug reported by Harmony-2503 and also avoid using
Support_PortManager.
> 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
>> >
>>
>>
>>
>> --
>> Best regards,
>>
>> Ruth Cao
>> China Software Development Lab, IBM
>>
>
>
>
--
Regards,
Ruth Cao
China Software Development Lab, IBM
--
Leo Li
China Software Development Lab, IBM