mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-15 21:05:11 +00:00
7168267: Cleanup of rmi regression tests
Reviewed-by: smarks
This commit is contained in:
parent
b11efe2e62
commit
82d13caac2
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
}
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user