public static void main(String[] args) { System.out.println("\nRegression test for bug 4115696\n"); TestLibrary.suggestSecurityManager("java.rmi.RMISecurityManager"); try { LocateRegistry.createRegistry(REGISTRY_PORT); } catch (Exception e) { TestLibrary.bomb("creating registry", e); } RMID rmid = null; try { rmid = RMID.createRMID(true); rmid.addArguments( new String[] { "-C-Djava.security.policy=" + TestParams.defaultGroupPolicy + " -C-Djava.security.manager=java.rmi.RMISecurityManager " }); rmid.start(); Echo[] echo = spawnAndTest(); reactivateAndTest(echo); } catch (IOException e) { TestLibrary.bomb("creating rmid", e); } finally { if (rmid != null) rmid.destroy(); } }
public static void main(String[] args) { RMID rmid = null; System.out.println("\nRegression test for bug 4510355\n"); try { TestLibrary.suggestSecurityManager("java.lang.SecurityManager"); /* * Install group class file in codebase. */ System.err.println("install class file in codebase"); URL groupURL = TestLibrary.installClassInCodebase("MyActivationGroupImpl", "group"); System.err.println("class file installed"); /* * Start rmid. */ RMID.removeLog(); rmid = RMID.createRMID(); String execPolicyOption = "-Dsun.rmi.activation.execPolicy=none"; rmid.addOptions(new String[] {execPolicyOption}); rmid.start(); /* * Create and register descriptors for custom group and an * activatable object in that group. */ System.err.println("register group"); Properties p = new Properties(); p.put("java.security.policy", TestParams.defaultGroupPolicy); ActivationGroupDesc groupDesc = new ActivationGroupDesc( "MyActivationGroupImpl", groupURL.toExternalForm(), null, p, null); ActivationGroupID groupID = ActivationGroup.getSystem().registerGroup(groupDesc); System.err.println("register activatable object"); ActivationDesc desc = new ActivationDesc(groupID, "DownloadActivationGroup", null, null); Ping obj = (Ping) Activatable.register(desc); /* * Start group (by calling ping). */ System.err.println("ping object (forces download of group's class)"); obj.ping(); System.err.println("TEST PASSED: group's class downloaded successfully"); System.err.println("shutdown object"); obj.shutdown(); System.err.println("TEST PASSED"); } catch (Exception e) { TestLibrary.bomb(e); } finally { rmid.cleanup(); } }
private static Echo[] spawnAndTest() { System.err.println("\nCreate Test-->"); Echo[] echo = new Echo[protocol.length]; for (int i = 0; i < protocol.length; i++) { JavaVM serverVM = new JavaVM("EchoImpl", "-Djava.security.policy=" + TestParams.defaultPolicy, protocol[i]); System.err.println("\nusing protocol: " + (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; do { try { echo[i] = (Echo) Naming.lookup("//:" + REGISTRY_PORT + "/EchoServer"); break; } catch (NotBoundException e) { try { Thread.sleep(2000); } catch (Exception ignore) { } continue; } } while (--tries > 0); if (echo[i] == null) TestLibrary.bomb("server not bound in 12 tries", null); /* invoke remote method and print result*/ System.err.println("Bound to " + echo[i]); byte[] data = ("Greetings, citizen " + System.getProperty("user.name") + "!").getBytes(); byte[] result = echo[i].echoNot(data); for (int j = 0; j < result.length; j++) result[j] = (byte) ~result[j]; System.err.println("Result: " + new String(result)); echo[i].shutdown(); } catch (Exception e) { TestLibrary.bomb("test failed", e); } finally { serverVM.destroy(); try { Naming.unbind("//:" + REGISTRY_PORT + "/EchoServer"); } catch (Exception e) { TestLibrary.bomb("unbinding EchoServer", e); } } } return echo; }
private static void reactivateAndTest(Echo[] echo) { System.err.println("\nReactivate Test-->"); for (int i = 0; i < echo.length; i++) { try { System.err.println("\nusing protocol: " + (protocol[i] == "" ? "none" : protocol[i])); byte[] data = ("Greetings, citizen " + System.getProperty("user.name") + "!").getBytes(); byte[] result = echo[i].echoNot(data); for (int j = 0; j < result.length; j++) result[j] = (byte) ~result[j]; System.err.println("Result: " + new String(result)); echo[i].shutdown(); } catch (Exception e) { TestLibrary.bomb("activating EchoServer for protocol " + protocol[i], e); } } }
public static void main(String[] args) { System.out.println("\nRegression test for bug 4095165, 4140736\n"); TestLibrary.suggestSecurityManager("java.rmi.RMISecurityManager"); RMID rmid = null; RestartCrashedService unicastObj = null; try { RMID.removeLog(); rmid = RMID.createRMID(); rmid.start(); /* Cause activation groups to have a security policy that will * allow security managers to be downloaded and installed */ final Properties p = new Properties(); // this test must always set policies/managers in its // activation groups p.put("java.security.policy", TestParams.defaultGroupPolicy); p.put("java.security.manager", TestParams.defaultSecurityManager); /* * Create unicast object to be contacted when service is activated. */ unicastObj = new RestartCrashedService(); /* * Create and register descriptors for a restartable and * non-restartable service (respectively) in a group other than * this VM's group. */ System.err.println("Creating descriptors"); Object[] stuff = new Object[] {RESTARTABLE, unicastObj}; MarshalledObject restartMobj = new MarshalledObject(stuff); ActivationGroupDesc groupDesc = new ActivationGroupDesc(p, null); stuff[0] = ACTIVATABLE; MarshalledObject activateMobj = new MarshalledObject(stuff); ActivationGroupID groupID = ActivationGroup.getSystem().registerGroup(groupDesc); ActivationDesc restartableDesc = new ActivationDesc(groupID, "RestartCrashedService", null, restartMobj, true); ActivationDesc activatableDesc = new ActivationDesc(groupID, "RestartCrashedService", null, activateMobj, false); System.err.println("Registering descriptors"); ActivateMe restartableObj = (ActivateMe) Activatable.register(restartableDesc); ActivateMe activatableObj = (ActivateMe) Activatable.register(activatableDesc); /* * Restart rmid; it should start up the restartable service */ rmid.restart(); /* * Wait for service to be automatically restarted. */ int repeat = 1; do { for (int i = 0; i < 15; i++) { synchronized (lock) { if (unicastObj.receivedPing(RESTARTABLE) != true) { lock.wait(5000); if (unicastObj.receivedPing(RESTARTABLE) == true) { System.err.println("Test1 passed: rmid " + "restarted service"); break; } } else { break; } } } if (unicastObj.receivedPing(RESTARTABLE) != true) TestLibrary.bomb("Test1 failed: service not restarted by timeout", null); /* * Make sure activatable services wasn't automatically * restarted. */ synchronized (lock) { if (unicastObj.receivedPing(ACTIVATABLE) != true) { lock.wait(5000); if (unicastObj.receivedPing(ACTIVATABLE) != true) { System.err.println("Test2 passed: rmid did not " + "restart activatable service"); } else { TestLibrary.bomb("Test2 failed: activatable service restarted", null); } } else { TestLibrary.bomb("Test2 failed: activatable service restarted!", null); } } if (repeat > 0) { try { System.err.println("\nCrash restartable object"); unicastObj.resetResponders(); restartableObj.crash(); } catch (Exception e) { } } } while (repeat-- > 0); } catch (Exception e) { TestLibrary.bomb("test failed", e); } finally { ActivationLibrary.rmidCleanup(rmid); TestLibrary.unexport(unicastObj); } }
public static void main(String[] args) { Ping obj = null; Registry registry = null; try { /* * create registry */ TestLibrary.suggestSecurityManager("java.rmi.RMISecurityManager"); System.err.println("creating Registry..."); registry = TestLibrary.createRegistryOnUnusedPort(); int port = TestLibrary.getRegistryPort(registry); /* * create object with custom ref and bind in registry */ System.err.println("creating UseCustomRef..."); UseCustomRef cr = new UseCustomRef(); RemoteRef ref = cr.getRef(); if (!(ref instanceof CustomServerRef)) { TestLibrary.bomb("test failed: reference not " + "instanceof CustomServerRef"); } String name = "//:" + port + "/UseCustomRef"; // String name = "UseCustomRef"; System.err.println("binding object in registry..."); Naming.rebind(name, cr); /* * look up object and invoke its ping method */ System.err.println("ping object..."); obj = (Ping) Naming.lookup(name); obj.ping(); /* * pass object with custom ref in remote call */ System.err.println("pass object in remote call..."); obj.receiveAndPing(cr); /* * write remote object with custom ref to output stream */ System.err.println("writing remote object to stream..."); ByteArrayOutputStream bout = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(bout); out.writeObject(cr); out.flush(); out.close(); /* * read back remote object from output stream */ System.err.println("reading remote object from stream..."); ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bout.toByteArray())); cr = (UseCustomRef) in.readObject(); /* * re-export object and ping */ System.err.println("re-export object read..."); cr.exportObject(); System.err.println("look up object again..."); Naming.rebind(name, cr); System.err.println("ping object read..."); obj = (Ping) Naming.lookup(name); obj.ping(); System.err.println("TEST PASSED"); Naming.unbind(name); cr = null; } catch (Exception e) { TestLibrary.bomb("test failed with exception: ", e); } finally { TestLibrary.unexport(obj); TestLibrary.unexport(registry); registry = null; obj = null; } }
public static void main(String args[]) { /* * The following line is required with the JDK 1.2 VM so that the * VM can exit gracefully when this test completes. Otherwise, the * conservative garbage collector will find a handle to the server * object on the native stack and not clear the weak reference to * it in the RMI runtime's object table. */ Object dummy1 = new Object(); RMID rmid = null; System.err.println("\nRegression test for bug/rfe 4109103\n"); try { // Set security manager according to the // testlibrary. TestLibrary.suggestSecurityManager(TestParams.defaultSecurityManager); // start an rmid. RMID.removeLog(); rmid = RMID.createRMID(rmidOut, rmidErr, false); rmid.start(); /* Cause activation groups to have a security policy that will * allow security managers to be downloaded and installed */ Properties p = new Properties(); // this test must always set policies/managers in its // activation groups p.put("java.security.policy", TestParams.defaultGroupPolicy); p.put("java.security.manager", TestParams.defaultSecurityManager); /* new desc - we will reuse in order to get multiple vms.*/ System.err.println("Create activation group in this VM"); ActivationGroupDesc groupDesc = new ActivationGroupDesc(p, null); ActivationSystem system = ActivationGroup.getSystem(); ActivationGroupID groupID = system.registerGroup(groupDesc); ActivationGroup.createGroup(groupID, groupDesc, 0); ActivationDesc desc = new ActivationDesc("CheckAnnotations", null, null); myRMI = (MyRMI) Activatable.register(desc); /* The test- * Loop a bunch of times to force activator to * spawn VMs (groups) */ for (int i = 0; i < 3; i++) { // object activated in annotation check via method call if (!checkAnnotations(i - 1)) { TestLibrary.bomb("Test failed: output improperly annotated."); } /* * Clean up object too. */ System.err.println("Deactivate object via method call"); myRMI.shutdown(); } System.err.println("\nsuccess: CheckAnnotations test passed "); } catch (Exception e) { TestLibrary.bomb("\nfailure: unexpected exception ", e); } finally { try { Thread.sleep(4000); } catch (InterruptedException e) { } myRMI = null; System.err.println("rmid shut down"); ActivationLibrary.rmidCleanup(rmid); } }
public static void main(String args[]) { sameGroup = true; RMID rmid = null; System.err.println("\nRegression test for bug/rfe 4179055\n"); try { TestLibrary.suggestSecurityManager("java.lang.SecurityManager"); registry = java.rmi.registry.LocateRegistry.createRegistry(TestLibrary.REGISTRY_PORT); // must run with java.lang.SecurityManager or the test // result will be nullified if running with a build where // 4180392 has not been fixed. String smClassName = System.getSecurityManager().getClass().getName(); if (!smClassName.equals("java.lang.SecurityManager")) { TestLibrary.bomb("Test must run with java.lang.SecurityManager"); } // start an rmid. RMID.removeLog(); rmid = RMID.createRMID(); rmid.start(); // rmid.addOptions(new String[] {"-C-Djava.rmi.server.logCalls=true"}); // Ensure that activation groups run with the correct // security manager. // Properties p = new Properties(); p.put("java.security.policy", TestParams.defaultGroupPolicy); p.put("java.security.manager", "java.lang.SecurityManager"); // This action causes the following classes to be created // in this VM (RMI must permit the creation of these classes): // // sun.rmi.server.Activation$ActivationSystemImpl_Stub // sun.rmi.server.Activation$ActivationMonitorImpl_Stub // System.err.println("Create activation group, in a new VM"); ActivationGroupDesc groupDesc = new ActivationGroupDesc(p, null); ActivationSystem system = ActivationGroup.getSystem(); ActivationGroupID groupID = system.registerGroup(groupDesc); System.err.println("register activatable"); // Fix for: 4271615: make sure activation group runs in a new VM ActivationDesc desc = new ActivationDesc(groupID, "StubClassesPermitted", null, null); canCreateStubs = (CanCreateStubs) Activatable.register(desc); // ensure registry stub can be passed in a remote call System.err.println("getting the registry"); registry = canCreateStubs.getRegistry(); // make sure a client cant load just any sun.* class, just // as a sanity check, try to create a class we are not // allowed to access but which was passed in a remote call try { System.err.println("accessing forbidden class"); Object secureRandom = canCreateStubs.getForbiddenClass(); TestLibrary.bomb( "test allowed to access forbidden class," + " sun.security.provider.SecureRandom"); } catch (java.security.AccessControlException e) { // Make sure we received a *local* AccessControlException ByteArrayOutputStream bout = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(bout); e.printStackTrace(ps); ps.flush(); String trace = new String(bout.toByteArray()); if ((trace.indexOf("exceptionReceivedFromServer") >= 0) || trace.equals("")) { throw e; } System.err.println("received expected local access control exception"); } // make sure that an ActivationGroupID can be passed in a // remote call; this is slightly more inclusive than // just passing a reference to the activation system System.err.println("returning group desc"); canCreateStubs.returnGroupID(); // Clean up object System.err.println("Deactivate object via method call"); canCreateStubs.shutdown(); System.err.println("\nsuccess: StubClassesPermitted test passed "); } catch (Exception e) { TestLibrary.bomb("\nfailure: unexpected exception ", e); } finally { try { Thread.sleep(4000); } catch (InterruptedException e) { } canCreateStubs = null; ActivationLibrary.rmidCleanup(rmid); System.err.println("rmid shut down"); } }