harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mikhail Markov" <mikhail.a.mar...@gmail.com>
Subject Re: [classlib][luni] java.net.ServerSocketTest fails - need help
Date Sat, 23 Dec 2006 19:40:30 GMT
I still don't like using fixed port numbers. Moreover, some tests might
require several ports for testing.
I did not see any objections against using 0 as a port number, except that
some functionality should be tested with fixed port numbers.
How about the following scheme for *finding* non-busy port:
1) invoke ServerSocket(0) constructor
2) get the port where ServerSocket opened the socket
3) close ServerSocket
4) use the stored port from 2-nd step for further testing (it could be
Socket/ServerSocket/nio tests etc.)

What do you think?

Thanks,
Mikhail

On 12/8/06, Andrew Zhang <zhanghuangzhu@gmail.com> wrote:
>
> On 12/8/06, Zakharov, Vasily M <vasily.m.zakharov@intel.com> wrote:
> >
> > Andrew,
> >
> > Sure, we can reserve some port, but it means that we would experience
> > occasional fails of the test from time to time, that's not very good.
>
>
> why would we experience occasional fails? because of port conflict?
> If so, I think it doesn't happen on our build system since we know some
> fixed ports should be reserved.
> And we'll document it in "how to run Harmony test" tutorial. I think most
> developers are willing to reserve some unknown ports for running Harmony
> test (don't tell them to close msn/gtalk/ie/firefox... :))
>
> Probably we may check the port using ServerSocket before testing?
> > It's acceptance, not compliance testing, look like it's not a big
> > problem.
> >
> > Also, for all tests except the test_setReuseAddressZ(),
> > we way check the port by using Socket, not ServerSocket.
>
>
> Then how to verify Socket functionality? :)
>
> So, I'd suggest the following measures:
> >
> > - For all tests, that could use port 0, use port 0.
> > By the way, is there a chance that asking port 0 would return a
> > TIME_WAIT port
> > that cannot be reused?
>
>
> It's complicated... even if some java api returns a TIME_WAIT port, how
> can
> we guarantee that the port is still  TIME_WAIT when running
> setReuseAddress
> code?
>
> - For all tests except test_setReuseAddressZ() use Socket to verify if
> > the port is free.
>
>
> theoretically, it doesn't 100% solve port confliction either. What if a
> port
> is occupied by other application after Socket test and before test code?
> :)
>
>
> - For test_setReuseAddressZ() test, use ServerSocket to verify the port
> > is free
> > or use the fixed port number from the end of port space (6xxxx).
>
>
> Since we have to use some fixed port, why not use it for simplicity?
>
> Andrew, what do you think?
>
>
> To sum up, IMHO, reversing some ports for running test is acceptable and
> simple. :)
>
> Vasily
> >
> >
> >
> > -----Original Message-----
> > From: Andrew Zhang [mailto:zhanghuangzhu@gmail.com]
> > Sent: Wednesday, December 06, 2006 12:59 PM
> > To: dev@harmony.apache.org
> > Subject: Re: [classlib][luni] java.net.ServerSocketTest fails - need
> > help
> >
> > On 12/6/06, Alexey Petrenko <alexey.a.petrenko@gmail.com> wrote:
> > >
> > > I do not think that reserving one of widely used ports for tests is a
> > good
> > > idea.
> > > Since user can run http server on his machine for example. And I do
> > > not think that he will be happy to switch it off each time.
> > >
> > > I think that we can reserve some port near the end of the port space.
> > > Somethong like 63527 or so.
> >
> >
> > Exactly! Does Harmony have lucky number? :)
> >
> > Another approach is to try another port if ServerSocket reports that
> > > the port is busy (I do not remember does ServerSocket throw different
> > > exception for busy port or not...)
> >
> >
> > But it's a test for ServerSocket. We have to know whether this port is
> > used
> > before testing ServerSocket.
> >
> > For other tests, we've agreed to use port 0 to get a 100% free port.
> > Sounds
> > reasonable?
> >
> > SY, Alexey
> >
> > 2006/12/6, Tony Wu <wuyuehao@gmail.com>:
> > > > I think it is reasonable if some essential configuration should be
> > > > done at first when running harmony tests, especially in java.net. My
> > > > opinion is to fix some regular used port, like 80, 8080, etc. Users
> > > > should guarantee that these ports are available when running
> > testcases
> > > > (we could document this in our instruction for running test).
> > > >
> > > >
> > > > On 12/6/06, Andrew Zhang <zhanghuangzhu@gmail.com> wrote:
> > > > > On 12/6/06, Zakharov, Vasily M <vasily.m.zakharov@intel.com>
> > wrote:
> > > > > >
> > > > > >
> > > > > > > oh... Interesting. It's the test for ServerSocket. Some
tests
> > like
> > > > > > > constructor test have to test not only 0, but also specified
> > port.
> > > > > > > Nevertheless, I think it's ok to use port 0 for the case
> > described
> > > in
> > > > > > > Harmony-2338. Comments?
> > > > > >
> > > > > > That's exactly the problem - you should test how the
> > constructors
> > > > > > (and methods like bind()) handle the specified port numbers,
but
> > for
> > > > > > that you have to get those numbers fronm somewhere.
> > > > >
> > > > >
> > > > > So shall we reserve a port for running Harmony test and document
> > it?
> > > > >
> > > > > Using port 0 makes the test running, but reduces it's testing
> > value.
> > > > > > So it's a give&take solution.
> > > > >
> > > > >
> > > > > Agree.
> > > > >
> > > > > Vasily
> > > > > >
> > > > > > -----Original Message-----
> > > > > > From: Andrew Zhang [mailto:zhanghuangzhu@gmail.com]
> > > > > > Sent: Wednesday, December 06, 2006 7:33 AM
> > > > > > To: dev@harmony.apache.org
> > > > > > Subject: Re: [classlib][luni] java.net.ServerSocketTest fails
-
> > need
> > > > > > help
> > > > > >
> > > > > > On 12/6/06, Andrew Zhang <zhanghuangzhu@gmail.com> wrote:
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On 12/6/06, Zakharov, Vasily M <vasily.m.zakharov@intel.com>
> > > wrote:
> > > > > > > >
> > > > > > > >
> > > > > > > > I've investigated the
> > > > > > http://issues.apache.org/jira/browse/HARMONY-2338
> > > > > > > > issue,
> > > > > > > > the detailed description of the problem is available
at the
> > JIRA
> > > > > > page.
> > > > > > > >
> > > > > > > > Could anyone qualified in java.net please look into
it and
> > > suggest
> > > > > > how
> > > > > > > > this should be fixed?
> > > > > > > >
> > > > > > > > There's a problem with tests.api.java.net.ServerSocketTest
> > test
> > > > > > design
> > > > > > > > that uses "random" ports for testing and fails when
those
> > ports
> > > > > > happen
> > > > > > > > to be occupied by other applications.
> > > > > > >
> > > > > > >
> > > > > > > Hi Zakharov, I think we've agreed to use port 0 to select
a
> > free
> > > port
> > > > > > in
> > > > > > > test case.
> > > > > > >
> > > > > > > But we're doing this lazily. I'll fix ServerSocketTest
soon.
> > > Thanks!
> > > > > > >
> > > > > >
> > > > > > oh... Interesting. It's the test for ServerSocket. Some tests
> > like
> > > > > > constructor test have to test not only 0, but also specified
> > port.
> > > > > > Nevertheless, I think it's ok to use port 0 for the case
> > described
> > > in
> > > > > > Harmony-2338. Comments?
> > > > > >
> > > > > > I see many apparent possible fixes for the problem, but none
of
> > them
> > > > > > > > looks good enough to implement immediately - they
all have
> > > drawbacks
> > > > > > and
> > > > > > > >
> > > > > > > > I'm not a java.net guru to judge which of those drawbacks
> > are
> > > > > > essential
> > > > > > > > and which are not.
> > > > > > > >
> > > > > > > > Thank you!
> > > > > > > >
> > > > > > > > Vasily Zakharov
> > > > > > > > Intel Enterprise Solutions Software Division
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > Best regards,
> > > > > > > Andrew Zhang
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Best regards,
> > > > > > Andrew Zhang
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Best regards,
> > > > > Andrew Zhang
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > Tony Wu
> > > > China Software Development Lab, IBM
> > > >
> > >
> >
> >
> >
> > --
> > Best regards,
> > Andrew Zhang
> >
>
>
>
> --
> Best regards,
> Andrew Zhang
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message