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 (http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2008-May/001921.html). Certain tests in the nio and networking area assume Sun-internal hosts like javaweb are available; the shell test

   test/java/net/InetAddress/ptr/lookup.sh

has a string for javaweb and

   test/java/nio/channels/TestUtil.java

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 = "javaweb.sfbay.sun.com";
   public static final String REFUSING_HOST = "jano.sfbay.sun.com";
   public static final String FAR_HOST = "theclub.ireland.sun.com";
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?
(http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2008-May/001972.html)

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 TestUtil.java. 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/NotBound.java 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.

-Joe

Reply via email to