network tests

Joe Darcy Joe.Darcy at Sun.COM
Fri May 23 16:45:45 PDT 2008

Alan Bateman wrote:
> Joe Darcy wrote:
>> Greetings.
>> Recently Mark Wielaard started an effort to run the regression tests 
>> on OpenJDK builds and publish the results 
>> (  
>> Certain tests in the nio and networking area assume Sun-internal 
>> hosts  like javaweb are available; the shell test
>>    test/java/net/InetAddress/ptr/
>> has a string for javaweb and
>>    test/java/nio/channels/
>> has the following constants used by other tests:
>>    // Test hosts used by the channels tests - change these when
>>    // executing in a different network.
>>    public static final String HOST = "";
>>    public static final String REFUSING_HOST = "";
>>    public static final String FAR_HOST = "";
>>    public static final String UNRESOLVABLE_HOST = 
>> "blah-blah.blah-blah.blah";
>> Mark observed these three hosts are needed:
>>> With daytime and echo available. The only wrinkle is that some tests
>>> expect to be able to use quick timeouts from HOST, but to need long
>>> timeouts from FAR_HOST. I think we could provide something public for
>>> this. But I might have missed some tests that need other services. Do
>>> you have a full overview?
>> ( 
>> First, is this all the networking configuration information that is 
>> used in the regression tests?  
> For the tests in the java/nio and sun/nio tree then the dependencies 
> are centralized in When we moved these tests from 
> closed->open we did talk about moving this configuration into a 
> properties/configuration file but figured there wasn't much difference 
> between editing a config file vs. a source file.

I think being able to pass in your own config file would be useful for 
this use case; it is awkward to have to edit the source to the tests to 
get them to pass :-)  If -Dnetworking.test.config.file were defined, the 
test could use those values instead of the defaults...

> For the classic networking, the dependencies are scattered. I believe 
> some of the tests weren't moved from closed->open for this reason. 
> Some of the tests uses an embedded HTTP or FTP server but there are 
> others that depend on DNS, proxy, etc. Michael or Jessie may have more 
> to say on this.

Could the classic networking tests be refactored a bit to be centralized 
like the nio tests?  Would it be natural for classic networking and nio 
to get their host information from the same place?

> BTW: I briefly scanned the summary and most of the java/nio failures 
> appear to be *HOST related. Now that folks are running these tests 
> outside Sun it is time to own up to a few intermittent/timing related 
> failures with 4 or 5 of these tests. I've been meaning to fix these 
> test issues for a while but I haven't had the cycles. I'll dig up my 
> notes on these. One other thing - I notice 
> test/java/nio/channels/DatagramChannel/ on the list - 
> that test is failing because it is missing the public modifier. The 
> test is bogus anyway so it might be best to just remove this test from 
> jdk6 and open6. For jdk7/OpenJDK I have spec clarification in the 
> works to fix the spec hole and as part of that work the test will be 
> replaced (see 6621689).

Yes, fixing the intermittent failures and removing the invalid test in 
OpenJDK 6 sounds good.

>> Second, it would be helpful is this host information could be 
>> configured without changing the sources of the test each time.  I've 
>> spoken briefly to Jon about ways this kind of information can be 
>> passed into a jtreg run.  Environment variables can be used, as can 
>> system properties.  A system property could also be used to specify a 
>> file from which the information was read.  With a bit of jtreg 
>> hacking, it is feasible portions of the jtharness interview procedure 
>> could be exposed to configure information that way too.
> I would be concerned with a solution that requires environment 
> variables or jtreg requiring configuration from somewhere other than 
> the test suite. At least in Sun (sorry for being selfish), these tests 
> are run by various teams on hundreds of machines. I don't think we'd 
> want to require the javatest interview be run or have .jti files 
> stored in various places with configuration information that will 
> quickly go stale. If you mean that the configuration can be overridden 
> via some input to jtreg that might be okay but would require the 
> distributions and others to maintain that configuration. Anyway, I'm 
> interested to hear the outcome of the discussion.

Even if the Sun-internal settings remain baked in, I think an easy way 
to  pass in a limited number of configuration settings is appropriate 
and shouldn't be too hard to accommodate in the test code.  Presumably 
an interface like "openjtreg -Dmy.config.options=foo ..." wouldn't be 
too awkward to use.


More information about the nio-dev mailing list