From 82d13caac2aec71d335389fccd4cc74f8cd6295c Mon Sep 17 00:00:00 2001 From: Tristan Yan Date: Fri, 20 Dec 2013 15:10:11 -0800 Subject: [PATCH] 7168267: Cleanup of rmi regression tests Reviewed-by: smarks --- .../inactiveGroup/InactiveGroup.java | 4 +- .../reliability/juicer/ApplicationServer.java | 45 ++++++++++-------- .../activatable/UseCustomSocketFactory.java | 24 +++++----- .../unicast/UseCustomSocketFactory.java | 46 ++++++++----------- .../rmi/testlibrary/ActivationLibrary.java | 3 +- .../readTimeout/ReadTimeoutTest.java | 30 ++++++------ 6 files changed, 77 insertions(+), 75 deletions(-) diff --git a/jdk/test/java/rmi/activation/Activatable/inactiveGroup/InactiveGroup.java b/jdk/test/java/rmi/activation/Activatable/inactiveGroup/InactiveGroup.java index 238d3473a9e..4861e28a1eb 100644 --- a/jdk/test/java/rmi/activation/Activatable/inactiveGroup/InactiveGroup.java +++ b/jdk/test/java/rmi/activation/Activatable/inactiveGroup/InactiveGroup.java @@ -145,7 +145,9 @@ public class InactiveGroup * activation group's process hasn't gone away. */ System.err.println("Ping unicast object for existence"); - for (int i = 0; i < 10; i++) { + // set timeout 5 seconds + final long stopTime = System.currentTimeMillis() + 5000; + while (System.currentTimeMillis() < stopTime) { unicastObj.ping(); Thread.sleep(500); } diff --git a/jdk/test/java/rmi/reliability/juicer/ApplicationServer.java b/jdk/test/java/rmi/reliability/juicer/ApplicationServer.java index 9e4b404dd35..e35c1608cd2 100644 --- a/jdk/test/java/rmi/reliability/juicer/ApplicationServer.java +++ b/jdk/test/java/rmi/reliability/juicer/ApplicationServer.java @@ -21,6 +21,7 @@ * questions. */ +import java.rmi.NotBoundException; import java.rmi.RemoteException; import java.rmi.registry.Registry; import java.rmi.registry.LocateRegistry; @@ -60,27 +61,29 @@ public class ApplicationServer implements Runnable { * On initialization, export remote objects and register * them with server. */ + @Override public void run() { try { int i = 0; /* - * Locate apple user object in registry. The lookup will - * occur until it is successful or fails LOOKUP_ATTEMPTS times. + * Locate apple user object in registry. The lookup will occur + * every 5 seconds until it is successful or timeout 50 seconds. * These repeated attempts allow the ApplicationServer * to be started before the AppleUserImpl. */ Exception exc = null; - for (i = 0; i < LOOKUP_ATTEMPTS; i++) { + long stopTime = System.currentTimeMillis() + LOOKUP_ATTEMPTS * 10000; + while (System.currentTimeMillis() < stopTime) { try { Registry registry = LocateRegistry.getRegistry( - registryHost, registryPort); + registryHost, registryPort); user = (AppleUser) registry.lookup("AppleUser"); user.startTest(); break; //successfully obtained AppleUser - } catch (Exception e) { + } catch (RemoteException | NotBoundException e) { exc = e; - Thread.sleep(10000); //sleep 10 seconds and try again + Thread.sleep(5000); //sleep 5 seconds and try again } } if (user == null) { @@ -113,9 +116,8 @@ public class ApplicationServer implements Runnable { logger.log(Level.SEVERE, "Failed to register callbacks for " + apples[i] + ":", e); user.reportException(e); - return; } - } catch (Exception e) { + } catch (InterruptedException | RemoteException e) { logger.log(Level.SEVERE, "Unexpected exception:", e); } } @@ -143,17 +145,22 @@ public class ApplicationServer implements Runnable { try { for (int i = 0; i < args.length ; i++ ) { String arg = args[i]; - if (arg.equals("-numApples")) { - i++; - num = Integer.parseInt(args[i]); - } else if (arg.equals("-registryHost")) { - i++; - host = args[i]; - } else if (arg.equals("-registryPort")) { - i++; - port = Integer.parseInt(args[i]); - } else { - usage(); + switch (arg) { + case "-numApples": + i++; + num = Integer.parseInt(args[i]); + break; + case "-registryHost": + i++; + host = args[i]; + break; + case "-registryPort": + i++; + port = Integer.parseInt(args[i]); + break; + default: + usage(); + break; } } diff --git a/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java index 5f032ec58cf..b300e1083bb 100644 --- a/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java +++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java @@ -33,9 +33,8 @@ */ import java.io.*; +import java.net.MalformedURLException; import java.rmi.*; -import java.rmi.activation.*; -import java.rmi.server.*; import java.rmi.registry.*; public class UseCustomSocketFactory { @@ -51,7 +50,7 @@ public class UseCustomSocketFactory { try { LocateRegistry.createRegistry(REGISTRY_PORT); - } catch (Exception e) { + } catch (RemoteException e) { TestLibrary.bomb("creating registry", e); } @@ -92,15 +91,16 @@ public class UseCustomSocketFactory { protocol[i]); System.err.println("\nusing protocol: " + - (protocol[i] == "" ? "none" : protocol[i])); + ("".equals(protocol[i]) ? "none" : protocol[i])); try { /* spawn VM for EchoServer */ serverVM.start(); /* lookup server */ - int tries = 12; // need enough tries for slow machine. echo[i] = null; + // 24 seconds timeout + long stopTime = System.currentTimeMillis() + 24000; do { try { echo[i] = (Echo) Naming.lookup("//:" + REGISTRY_PORT + @@ -108,15 +108,14 @@ public class UseCustomSocketFactory { break; } catch (NotBoundException e) { try { - Thread.sleep(2000); - } catch (Exception ignore) { + Thread.sleep(200); + } catch (InterruptedException ignore) { } - continue; } - } while (--tries > 0); + } while (System.currentTimeMillis() < stopTime); if (echo[i] == null) - TestLibrary.bomb("server not bound in 12 tries", null); + TestLibrary.bomb("server not bound in 120 tries", null); /* invoke remote method and print result*/ System.err.println("Bound to " + echo[i]); @@ -135,9 +134,8 @@ public class UseCustomSocketFactory { serverVM.destroy(); try { Naming.unbind("//:" + REGISTRY_PORT + "/EchoServer"); - } catch (Exception e) { + } catch (RemoteException | NotBoundException | MalformedURLException e) { TestLibrary.bomb("unbinding EchoServer", e); - } } } @@ -152,7 +150,7 @@ public class UseCustomSocketFactory { for (int i = 0; i < echo.length; i++) { try { System.err.println("\nusing protocol: " + - (protocol[i] == "" ? "none" : protocol[i])); + ("".equals(protocol[i]) ? "none" : protocol[i])); byte[] data = ("Greetings, citizen " + System.getProperty("user.name") + "!").getBytes(); byte[] result = echo[i].echoNot(data); diff --git a/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java index 06571df79c1..8995aa3f213 100644 --- a/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java +++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java @@ -33,9 +33,9 @@ * @run main/othervm/policy=security.policy/timeout=120 UseCustomSocketFactory */ -import java.io.*; +import java.io.IOException; +import java.net.MalformedURLException; import java.rmi.*; -import java.rmi.server.*; import java.rmi.registry.*; public class UseCustomSocketFactory { @@ -44,7 +44,7 @@ public class UseCustomSocketFactory { int registryPort = -1; - String[] protocol = new String[] { "", "compress", "xor" }; + String[] protocols = new String[] { "", "compress", "xor" }; System.out.println("\nRegression test for bug 4127826\n"); @@ -53,31 +53,26 @@ public class UseCustomSocketFactory { try { Registry registry = TestLibrary.createRegistryOnUnusedPort(); registryPort = TestLibrary.getRegistryPort(registry); - } catch (Exception e) { + } catch (RemoteException e) { TestLibrary.bomb("creating registry", e); } - - for (int i = 0; i < protocol.length; i++) { - + for (String protocol : protocols) { System.err.println("test policy: " + - TestParams.defaultPolicy); - - JavaVM serverVM = new JavaVM("EchoImpl", - "-Djava.security.policy=" + - TestParams.defaultPolicy + - " -Drmi.registry.port=" + - registryPort, - protocol[i]); + TestParams.defaultPolicy); + JavaVM serverVM = new JavaVM("EchoImpl", "-Djava.security.policy=" + + TestParams.defaultPolicy + + " -Drmi.registry.port=" + + registryPort, protocol); System.err.println("\nusing protocol: " + - (protocol[i] == "" ? "none" : protocol[i])); - + ("".equals(protocol) ? "none" : protocol)); try { /* spawn VM for EchoServer */ serverVM.start(); /* lookup server */ - int tries = 8; Echo obj = null; + // 16 seconds timeout + long stopTime = System.currentTimeMillis() + 16000; do { try { obj = (Echo) Naming.lookup("//:" + registryPort + @@ -85,12 +80,11 @@ public class UseCustomSocketFactory { break; } catch (NotBoundException e) { try { - Thread.sleep(2000); - } catch (Exception ignore) { + Thread.sleep(200); + } catch (InterruptedException ignore) { } - continue; } - } while (--tries > 0); + } while (System.currentTimeMillis() < stopTime); if (obj == null) TestLibrary.bomb("server not bound in 8 tries", null); @@ -98,21 +92,21 @@ public class UseCustomSocketFactory { /* invoke remote method and print result*/ System.err.println("Bound to " + obj); byte[] data = ("Greetings, citizen " + - System.getProperty("user.name") + "!"). getBytes(); + System.getProperty("user.name") + "!"). getBytes(); byte[] result = obj.echoNot(data); for (int j = 0; j < result.length; j++) result[j] = (byte) ~result[j]; System.err.println("Result: " + new String(result)); - } catch (Exception e) { + } catch (IOException e) { TestLibrary.bomb("test failed", e); } finally { serverVM.destroy(); try { Naming.unbind("//:" + registryPort + - "/EchoServer"); - } catch (Exception e) { + "/EchoServer"); + } catch (RemoteException | NotBoundException | MalformedURLException e) { TestLibrary.bomb("unbinding EchoServer", e); } diff --git a/jdk/test/java/rmi/testlibrary/ActivationLibrary.java b/jdk/test/java/rmi/testlibrary/ActivationLibrary.java index 5d21a4a32d4..fa6af600a35 100644 --- a/jdk/test/java/rmi/testlibrary/ActivationLibrary.java +++ b/jdk/test/java/rmi/testlibrary/ActivationLibrary.java @@ -66,7 +66,8 @@ public class ActivationLibrary { // We do as much as 50 deactivation trials, each separated by // at least 100 milliseconds sleep time (max sleep time of 5 secs). final long deactivateSleepTime = 100; - for (int i = 0; i < 50; i ++) { + long stopTime = System.currentTimeMillis() + deactivateSleepTime * 50; + while (System.currentTimeMillis() < stopTime) { try { if (Activatable.inactive(id) == true) { mesg("inactive successful"); diff --git a/jdk/test/java/rmi/transport/readTimeout/ReadTimeoutTest.java b/jdk/test/java/rmi/transport/readTimeout/ReadTimeoutTest.java index 3a0bfa1cafa..8363a96609d 100644 --- a/jdk/test/java/rmi/transport/readTimeout/ReadTimeoutTest.java +++ b/jdk/test/java/rmi/transport/readTimeout/ReadTimeoutTest.java @@ -44,6 +44,8 @@ import java.rmi.*; import java.rmi.server.RMISocketFactory; import java.io.*; import java.net.*; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; public class ReadTimeoutTest { @@ -86,23 +88,18 @@ public class ReadTimeoutTest InputStream stream = DoS.getInputStream(); // Read on the socket in the background - boolean[] successful = new boolean[] { false }; - (new SomeReader(stream, successful)).start(); + CountDownLatch done = new CountDownLatch(1); + (new SomeReader(stream, done)).start(); // Wait for completion - int nretries = 4; - while (nretries-- > 0) { - if (successful[0]) - break; - Thread.sleep(DELAY); - } - - if (successful[0]) { + if (done.await(DELAY * 4, TimeUnit.SECONDS)) { System.err.println("TEST PASSED."); } else { throw new Error("TEST FAILED."); } + } catch (InterruptedException ie) { + throw new Error("Unexpected interrupt", ie); } finally { try { if (DoS != null) @@ -120,6 +117,7 @@ public class ReadTimeoutTest { private int servport = 0; + @Override public Socket createSocket(String h, int p) throws IOException { @@ -130,6 +128,7 @@ public class ReadTimeoutTest * Aborts if createServerSocket(0) is called twice, because then * it doesn't know whether to remember the first or second port. */ + @Override public ServerSocket createServerSocket(int p) throws IOException { @@ -155,22 +154,23 @@ public class ReadTimeoutTest } // end class SomeFactory protected static class SomeReader extends Thread { - private InputStream readon; - private boolean[] vec; + private final InputStream readon; + private final CountDownLatch done; - public SomeReader(InputStream s, boolean[] successvec) { + public SomeReader(InputStream s, CountDownLatch done) { super(); this.setDaemon(true); this.readon = s; - this.vec = successvec; + this.done = done; } + @Override public void run() { try { int c = this.readon.read(); if (c != -1) throw new Error ("Server returned " + c); - this.vec[0] = true; + done.countDown(); } catch (IOException e) { e.printStackTrace();