Code Review Request - Bug #6948101 & 7142596: RMI JPRT tests are failing
Alan Bateman
Alan.Bateman at oracle.com
Sat Apr 14 16:12:37 UTC 2012
On 14/04/2012 00:45, Darryl Mocek wrote:
> Hello core-libs. Please review this webrev to fix Bug #6948101 and
> #7142596. This commit fixes concurrency issues with the RMI tests.
>
> - Added TestLibrary.getUnusedRandomPort method. This attempts to
> return a random port number, which is unused, between the port ranges
> 1024 and 64000 (inclusive). It will try up to 10 times before giving up.
> - Changed almost all tests from using hard port numbers to using
> random port numbers for running the RMI Registry and RMID.
> - Removed othervm from those tests which don't need it.
> - Added parameters for tests which spawn a separate VM to pass RMI
> Registry and RMID ports in cases where needed.
> - Added PropertyPermission to security policy files where needed.
> - Removed java/rmi and sun/rmi from tests which cannot be run
> concurrently.
> - Removed java/rmi and sun/rmi from tests which must run in othervm mode.
> - Added java/rmi/Naming to list of tests which cannot be run
> concurrently.
>
> Webrev, can be found here:
> http://cr.openjdk.java.net/~dmocek/7142596/webrev.00
It's great to see this patch as the RMI tests have been just too slow
and the last area of the core libraries that can't take advantage of
multi-core machines. Also this patch should eliminate the cascading
failures that periodically arise when something goes wrong and a test
leaves a registry on the default port, causing problems for subsequent
tests.
I've looked briefly at the changes (not a full review, I assume Stuart
will do that) and if I understand correctly, then this changes don't
mean we can run the tests in agentvm mode, right? In that case I don't
think the test directory can be removed from the othervms.dir lists in
TEST.ROOT.
I see the logic in TestLibrary to choose a random port and I'm just
wondered if you considered doing LocaleRegistry.createRegistry(0) so
that the registry binds to an ephemeral port. It would mean that
TestLibrary would need to get to the transport endpoint and port but it
would avoid having to try multiple ports.
-Alan
More information about the core-libs-dev
mailing list