You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2006/05/16 15:52:07 UTC
svn commit: r406944 [9/30] - in
/incubator/harmony/enhanced/classlib/trunk/modules/rmi2: ./ build/ doc/
doc/testing/ doc/testing/rmi http tunneling/ doc/testing/rmi http
tunneling/Results - ITC/ doc/testing/rmi http tunneling/Results - SUN/
doc/testing...
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/ITCTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/ITCTestCase.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/ITCTestCase.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/ITCTestCase.java Tue May 16 06:51:00 2006
@@ -0,0 +1,272 @@
+/*
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package ar.org.fitc.test.rmi.integration.fase2.test;
+
+import java.lang.ref.WeakReference;
+import java.lang.reflect.Method;
+import java.rmi.RemoteException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+import java.rmi.server.ExportException;
+import java.util.logging.Logger;
+
+import junit.framework.AssertionFailedError;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestListener;
+import junit.framework.TestResult;
+import ar.org.fitc.test.rmi.integration.fase2.Net;
+
+/**
+ * Generates a log.
+ *
+ * @author Jorge Rafael
+ * @author Marcelo Arcidiacono
+ *
+ * @version 1.0
+ */
+class Listener implements TestListener {
+
+
+ /**
+ * Prints a message that receive as parameter.
+ *
+ * @param msg a message
+ */
+ private void printMSG(String msg) {
+ if (msg != null && !msg.startsWith("Failed with:")) {
+ msg = "Failed with: " +msg;
+ }
+ System.out.println("\t\t" + msg);
+ }
+
+ /**
+ * Adds an error trace.
+ *
+ * @param arg a testing argument
+ * @param arg1 a throwable argument
+ */
+ public void addError(Test arg, Throwable arg1) {
+ arg1.printStackTrace();
+ printMSG(arg1.getMessage());
+ }
+
+ /**
+ * Adds a failure trace.
+ *
+ * @param arg a testing argument
+ * @param arg1 an assertion failure error
+ */
+ public void addFailure(Test arg, AssertionFailedError arg1) {
+ arg1.printStackTrace();
+ printMSG(arg1.getMessage());
+ }
+
+ /**
+ * Indicates the end of the test
+ *
+ * @param a testing argument
+ */
+ public void endTest(Test arg) {
+ }
+
+ /**
+ * Indicates the start of the test
+ *
+ * @param a testing argument
+ * */
+ public void startTest(Test arg) {
+ }
+}
+
+/**
+ * Testing class for <code>WeakReference</code>'s.
+ *
+ * @author Jorge Rafael
+ * @author Marcelo Arcidiacono
+ *
+ */
+public class ITCTestCase extends TestCase {
+
+ public static String arrayToString(Object[] arg) {
+ if (arg.length == 0) {
+ return "[]";
+ } else {
+ String result = "[" + arg[0].toString();
+ int i = 1;
+ while(i < arg.length) {
+ result += ", " + arg[i].toString();
+ }
+ result += "]";
+ return result;
+ }
+ }
+
+ /**
+ * For log purpose.
+ */
+ transient final protected static Logger log = Logger.getLogger("ar.org.fitc.test.rmi.integration.fase2.test");
+
+ /**
+ * The remote interface to a simple remote object.
+ */
+ protected static Registry registry;
+
+ /**
+ * If registry is null, creates it.
+ *
+ */
+ public synchronized static void initRegistry() {
+ if (registry == null) {
+ try {
+ try {
+ registry = LocateRegistry.createRegistry(Net.getRegistryPort());
+ } catch (ExportException e) {
+ registry = LocateRegistry.getRegistry(Net.getRegistryPort());
+ }
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * Creates a log.
+ *
+ */
+ public TestResult run() {
+ System.out.println(this.getClass() + " start");
+ TestResult r = createResult();
+ r.addListener(new Listener());
+ for (Method m : this.getClass().getMethods()) {
+ String name = m.getName();
+ if (name.startsWith("test") && m.getParameterTypes().length == 0) {
+ System.out.println("\t" + name);
+ setName(name);
+ run(r);
+ }
+ }
+ System.out.println();
+ System.out.println();
+ return r;
+ }
+ public TestResult run(String name) {
+ System.out.println(this.getClass() + " start");
+ TestResult r = createResult();
+ r.addListener(new Listener());
+ System.out.println("\t" + name);
+ setName(name);
+ run(r);
+ System.out.println();
+ System.out.println();
+ return r;
+ }
+
+ /**
+ * Default constructor.
+ *
+ */
+ public ITCTestCase() {
+ super();
+ }
+
+ /**
+ * Constructs a <code>ITCTestCase</code> with a name.
+ *
+ * @param arg0 a name.
+ */
+ public ITCTestCase(String arg0) {
+ super(arg0);
+ //TODO puesto por conveniencia temporal...
+ // permite ejecutar los test desde el plugin de eclipse.
+ //sacra cuendo el proyecto este en marcha
+ System.setProperty("java.rmi.server.codebase",
+ "ftp://proftp:1@10.100.2.230/");
+ System.setProperty("java.rmi.server.hostname", "10.100.2.230");
+ }
+
+ /**
+ * Creates a new <code>WeakReference</code> and forces the
+ * garbage collector
+ *
+ */
+ @SuppressWarnings("unchecked")
+ public static void forceGC() {
+ for (int i= 0; i < 100; i++) {
+ System.gc();
+ }
+ WeakReference ref = new WeakReference(new Integer(234523));
+ while (ref.get() != null) {
+ System.gc();
+ }
+ }
+
+ /**
+ * Creates a new <code>WeakReference</code> and forces the
+ * garbage collector.
+ *
+ * @param WeakReference the specified <code>WeakReference</code>
+ * @param times the number of executions
+ */
+ public static void forceGC(WeakReference ref, int times) {
+ for (int i = times; ref.get() != null || i ==0; i--) {
+ System.gc();
+ }
+ }
+
+ /**
+ * Verifies the <code>WeakReference</code>.
+ *
+ * @param ref the specified <code>WeakReference</code>
+ */
+ public static void assertNull(WeakReference ref) {
+ forceGC();
+ assertNull(ref.get());
+ }
+
+ /**
+ * Verifies the <code>WeakReference</code>.
+ *
+ * @param ref the specified <code>WeakReference</code>
+ * @param message if this assert fail this message'll be tell
+ */
+ public static void assertNull(String message, WeakReference ref) {
+ forceGC();
+ assertNull(message, ref.get());
+ }
+
+ /**
+ * Verifies the <code>WeakReference</code>.
+ *
+ * @param ref the specified <code>WeakReference</code>
+ */
+ public static void assertNotNull(WeakReference ref) {
+ forceGC();
+ assertNotNull(ref.get());
+ }
+
+ /**
+ * Verifies the <code>WeakReference</code>.
+ *
+ * @param ref the specified <code>WeakReference</code>
+ * @param message if this assert fail this message'll be tell
+ */
+ public static void assertNotNull(String message, WeakReference ref) {
+ forceGC();
+ assertNotNull(message, ref.get());
+ }
+}
+
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/OverheadComunicationPerformanceTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/OverheadComunicationPerformanceTestCase.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/OverheadComunicationPerformanceTestCase.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/OverheadComunicationPerformanceTestCase.java Tue May 16 06:51:00 2006
@@ -0,0 +1,29 @@
+package ar.org.fitc.test.rmi.integration.fase2.test;
+
+import java.rmi.RemoteException;
+
+import ar.org.fitc.test.rmi.integration.fase2.AbstractITCRemote;
+import ar.org.fitc.test.rmi.integration.fase2.ITCRemoteUnicast;
+
+public class OverheadComunicationPerformanceTestCase extends
+ ComunicationPerformanceTestCase {
+
+ public OverheadComunicationPerformanceTestCase() {
+ super();
+ }
+
+ public OverheadComunicationPerformanceTestCase(String arg0) {
+ super(arg0);
+ }
+
+ protected long oneTest() throws RemoteException {
+ long startTime = System.currentTimeMillis();
+ long clientTime = (Long) executor.execute(object, 1, "This overhead",
+ new AbstractITCRemote(), new ITCRemoteUnicast(),
+ "more overhead", new ITCRemoteUnicast(), object, true, 'a',
+ 2.345d, object, startTime, executor);
+ long stopTime = System.currentTimeMillis();
+ return stopTime - startTime - clientTime;
+ }
+
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/PerformanceTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/PerformanceTestCase.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/PerformanceTestCase.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/PerformanceTestCase.java Tue May 16 06:51:00 2006
@@ -0,0 +1,57 @@
+package ar.org.fitc.test.rmi.integration.fase2.test;
+
+import java.rmi.RemoteException;
+
+abstract public class PerformanceTestCase extends ExecutorTestCase {
+
+ public PerformanceTestCase() {
+ super();
+ }
+
+ public PerformanceTestCase(String arg0) {
+ super(arg0);
+ }
+
+ public static int NumberOfIteration = 10;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ oneTest();
+ oneTest();
+ }
+
+ abstract protected long oneTest() throws RemoteException;
+
+ public void testPerformance() throws RemoteException {
+ System.out.println("\t\tTime one call:" + oneTest());
+ }
+
+ public void testPerformanceAVG() throws RemoteException {
+ long avg = 0;
+
+ for (int i=0; i < NumberOfIteration; i++) {
+ long x = oneTest();
+ avg += x;
+ System.out.println("\t\tTime one call:" + x);
+ }
+ avg = avg / NumberOfIteration;
+ System.out.println("\t\tTime avenger of " + NumberOfIteration +" calls:" + avg);
+ }
+ public void testPerformanceAVGandS2() throws RemoteException {
+ long avg = 0;
+ double s2 = 0;
+ for (int i=0; i < NumberOfIteration; i++) {
+ long x = oneTest();
+ avg += x;
+ s2 += x*x;
+ System.out.println("\t\tTime one call:" + x);
+
+ }
+ avg = avg / NumberOfIteration;
+ s2 = (s2 / (NumberOfIteration-1)) - avg * avg;
+ s2 = Math.sqrt(s2);
+ System.out.println("\t\tTime avenger of " + NumberOfIteration +" calls:" + avg);
+ System.out.println("\t\tStandard deviation of this calls:" + s2);
+ }
+
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/PortableTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/PortableTestCase.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/PortableTestCase.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/PortableTestCase.java Tue May 16 06:51:00 2006
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package ar.org.fitc.test.rmi.integration.fase2.test;
+
+import java.rmi.NotBoundException;
+import java.rmi.RemoteException;
+
+import junit.framework.AssertionFailedError;
+import ar.org.fitc.test.rmi.integration.fase2.AbstractITCRemote;
+import ar.org.fitc.test.rmi.integration.fase2.executor.ClientExecutor;
+import ar.org.fitc.test.rmi.integration.fase2.executor.ServerExecutor;
+import ar.org.fitc.test.rmi.integration.fase2.interfaces.ITCRemote;
+import ar.org.fitc.test.rmi.integration.fase2.remoteexport.ExecutorGetClientHost;
+import ar.org.fitc.test.rmi.integration.fase2.remoteexport.PortableUnicastRemoteObject;
+
+/**
+ * Testing class for verifies references to exported objects.
+ *
+ * @author Jorge Rafael
+ * @author Marcelo Arcidiacono
+ *
+ * @version 1.0
+ */
+public class PortableTestCase extends ExecutorTestCase {
+
+ /**
+ * Default constructor
+ *
+ */
+ public PortableTestCase() {
+ super();
+ }
+
+ /**
+ * Constructs a <code>PortableTestCase</code> with a name.
+ *
+ * @param arg0 a name.
+ */
+ public PortableTestCase(String arg0) {
+ super(arg0);
+ }
+
+ /**
+ * Assigns an IP reported.
+ *
+ * @throws Exception if any exception occurs
+ */
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ /**
+ * Simple implementation.
+ *
+ * @throws Exception if any exception occurs
+ */
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ /**
+ * An object is exported to an external host and it is used
+ * through his reference. Then, the object is unexported and
+ * we can verify that cannot use the reference
+ *
+ * @throws RemoteException if the exportation fails
+ * @throws NotBoundException if the name is not currently bound
+ */
+
+ public void testPortar() throws RemoteException, NotBoundException {
+ ITCRemote r = new AbstractITCRemote();
+ ITCRemote stub = PortableUnicastRemoteObject.exportObject(hosts[0], r, 0);
+ r = null;
+ PortableUnicastRemoteObject.unexportObject(stub, true);
+ try {
+ stub.getString();
+ fail("object is no longer export, but i can used");
+ } catch (RemoteException e) {
+ }
+ }
+
+ /**
+ * The objects are exported in different hosts (one object per
+ * each host). In each exportation the destiny is verified.
+ *
+ * @throws RemoteException if the exportation fails
+ */
+
+ public void testExportingAndComparing() throws RemoteException {
+
+ for (final String host : hosts) {
+ ServerExecutor testObject = new ExecutorGetClientHost();
+ ServerExecutor stubTestObject = null;
+ try {
+ stubTestObject = (ServerExecutor) PortableUnicastRemoteObject.exportObject(host, (ITCRemote) testObject, 0);
+ try {
+ assertEquals("The host must be " + host, host, ClientExecutor.getExecutor(host).execute(stubTestObject, 1));
+ System.err.println(host + " OK" );
+ } catch (AssertionFailedError e) {
+ System.err.println(e);
+ }
+ } catch (NotBoundException e) {
+ log.warning("One host (" + host +") don't work anymore");
+ } finally {
+ if(stubTestObject != null && stubTestObject.clean(true)) {//PortableUnicastRemoteObject.unexportObject(stubTestObject, true)) {
+ log.warning("The ExecutorGetCliengHost can't be unexported");
+ }
+ }
+ }
+ }
+
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/PropagableTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/PropagableTestCase.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/PropagableTestCase.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/PropagableTestCase.java Tue May 16 06:51:00 2006
@@ -0,0 +1,140 @@
+/*
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package ar.org.fitc.test.rmi.integration.fase2.test;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.rmi.RemoteException;
+
+import ar.org.fitc.test.rmi.integration.fase2.PropagableTestRemote;
+import ar.org.fitc.test.rmi.integration.fase2.executor.ServerExecutor;
+
+/**
+ * Testing class for executing object on remote hosts.
+ *
+ * @author Jorge Rafael
+ * @author Marcelo Arcidiacono
+ *
+ * @version 1.0
+ */
+public class PropagableTestCase extends ExecutorTestCase {
+
+ /**
+ * A <code>ServerExecutor</code>.
+ */
+ public ServerExecutor serv;
+
+ /**
+ * Default constructor.
+ *
+ */
+ public PropagableTestCase() {
+ super();
+ }
+
+ /**
+ * Constructs a <code>PropagableTestCase</code> with a name.
+ *
+ * @param arg0 a name.
+ */
+ public PropagableTestCase(String arg0) {
+ super(arg0);
+ }
+
+ /**
+ * Creates a <code>PropagableTestRemote</code>.
+ *
+ */
+ protected void setUp() throws Exception {
+ serv = new PropagableTestRemote();
+ super.setUp();
+ }
+
+ /**
+ * Forces the garbage collector.
+ *
+ */
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ forceGC();
+ }
+
+ /**
+ * Simply executes an object on a host. This procedure is
+ * repeated on all hosts.
+ *
+ */
+ public void testPropagableOneHost001() {
+ for (final String host : hosts) {
+ try {
+ assertTrue("The execute host must be " + host,
+ (Boolean) executor.execute(host, (ServerExecutor) serv.myClone(), 1,1, host));
+ } catch (RemoteException e) {
+ fail("Non work: " + e);
+ }
+ }
+ }
+
+ /**
+ * Executes an object on a unitary list of remote hosts.
+ * This procedure is repeated on all reported hosts.
+ *
+ */
+ public void testPropagableOneHost002() {
+ for (final String host : hosts) {
+ try {
+ assertTrue("The execute host must be " + host,
+ (Boolean) executor.execute(new String[] { host }, (ServerExecutor) serv.myClone(),
+ 1,1, host));
+ } catch (RemoteException e) {
+ fail("Non work: " + e);
+
+ }
+ }
+ }
+
+ /**
+ * Simply executes an object on a list of remote hosts.
+ *
+ * @throws SecurityException if occurs a security violation
+ * @throws NoSuchMethodException if a particular method cannot
+ * be found
+ * @throws IllegalArgumentException if a method has been passed
+ * an illegal or inappropriate argument
+ * @throws IllegalAccessException if tries to reflectively create
+ * an instance
+ * @throws InvocationTargetException wraps an exception thrown
+ * by an invoked method or constructor
+ * @throws RemoteException
+ */
+ public void testPropagableAtOnes001() throws SecurityException,
+ NoSuchMethodException, IllegalArgumentException,
+ IllegalAccessException, InvocationTargetException, RemoteException {
+
+ Method m = executor.getClass().getMethod("execute", String[].class,
+ ServerExecutor.class, int.class, Object[].class);
+ Object[] hostsP = new Object[hosts.length+1];
+ hostsP[0] = hosts.length;
+ System.arraycopy(hosts, 0, hostsP, 1, hosts.length);
+ Object[] param = new Object[4];
+ param[0] = hosts;
+ param[1] = serv;
+ param[2] = 1;
+ param[3] = hostsP;
+ assertTrue("The execute hosts must be " + arrayToString(hosts),
+ (Boolean) m.invoke(executor, param));
+ }
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/PropertysTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/PropertysTestCase.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/PropertysTestCase.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/PropertysTestCase.java Tue May 16 06:51:00 2006
@@ -0,0 +1,66 @@
+package ar.org.fitc.test.rmi.integration.fase2.test;
+
+import java.net.MalformedURLException;
+import java.rmi.AlreadyBoundException;
+import java.rmi.Naming;
+import java.rmi.NotBoundException;
+import java.rmi.RemoteException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.server.UnicastRemoteObject;
+import java.util.Properties;
+
+import ar.org.fitc.test.rmi.integration.fase2.ITCRemoteUnicast;
+import ar.org.fitc.test.rmi.integration.fase2.interfaces.ITCRemote;
+
+public class PropertysTestCase extends ITCTestCase {
+
+ public PropertysTestCase() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ public PropertysTestCase(String arg0) {
+ super(arg0);
+ // TODO Auto-generated constructor stub
+ }
+
+ protected void setUp() throws Exception {
+ store = new Properties(System.getProperties());
+ super.setUp();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ restoreProperty();
+ }
+ private Properties store = new Properties(System.getProperties());
+
+ protected String setProperty(String key, String value) {
+ return System.setProperty(key, value);
+ }
+
+ protected String getProperty(String key) {
+ return System.getProperty(key);
+ }
+
+ protected void restoreProperty(String property) {
+ System.setProperty(property, store.getProperty(property));
+ }
+ protected void restoreProperty() {
+ System.setProperties(store);
+ }
+
+ public void testServerHostName() throws RemoteException, MalformedURLException, AlreadyBoundException, NotBoundException {
+ setProperty("java.rmi.server.hostname","200.200.200.200");
+ System.out.println(UnicastRemoteObject.toStub(new ITCRemoteUnicast()));
+
+ LocateRegistry.createRegistry(1099);
+
+ Naming.bind("hole", new ITCRemoteUnicast());
+ System.out.println(arrayToString(Naming.list("")));
+ ITCRemote o = (ITCRemote) Naming.lookup("hole");
+ System.out.println(o.getString());
+ System.out.println(o.toString());
+
+ }
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/RMISocketFactoryTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/RMISocketFactoryTestCase.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/RMISocketFactoryTestCase.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/RMISocketFactoryTestCase.java Tue May 16 06:51:00 2006
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ar.org.fitc.test.rmi.integration.fase2.test;
+
+import java.rmi.RemoteException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+import java.rmi.server.RMIClientSocketFactory;
+import java.rmi.server.RMIServerSocketFactory;
+import java.rmi.server.UnicastRemoteObject;
+
+import ar.org.fitc.test.rmi.integration.fase2.LogRemoteImpl;
+import ar.org.fitc.test.rmi.integration.fase2.executor.AbstractServerExecutor;
+import ar.org.fitc.test.rmi.integration.fase2.executor.ServerExecutor;
+import ar.org.fitc.test.rmi.integration.fase2.socketfactory.CipherRMISocketFactory;
+import ar.org.fitc.test.rmi.integration.fase2.socketfactory.GZipRMISocketFactory;
+
+
+/**
+ * Testing class for RMI Socket Factories.
+ *
+ * @author Osvaldo Demo
+ *
+ * @version 1.0
+ */
+public class RMISocketFactoryTestCase extends ExecutorTestCase {
+
+ /**
+ * A <code>LogRemoteImpl</code>.
+ */
+ public LogRemoteImpl remote;
+
+ public Registry reg;
+
+ public ServerExecutor exportObj;
+ public ServerExecutor stub;
+
+ public RMIClientSocketFactory crsk;
+
+ public RMIServerSocketFactory srsk;
+
+ /**
+ * Default constructor.
+ *
+ */
+ public RMISocketFactoryTestCase() {
+ super();
+ }
+
+ /**
+ * Constructs a <code>RMISocketFactoryTestCase</code> with a name.
+ *
+ * @param arg0 a name.
+ */
+ public RMISocketFactoryTestCase(String arg0) {
+ super(arg0);
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void setUp() throws Exception {
+ try {
+ reg = LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
+ } catch (RemoteException e) {
+ }
+ reg = LocateRegistry.getRegistry();
+
+ exportObj = new AbstractServerExecutor() {
+
+ private static final long serialVersionUID = 3635772699140965835L;
+
+ @Override
+ public Object execute(Object... arguments) throws RemoteException {
+ System.out.println("\t\tRuning remote object with Custom Sockets");
+ return true;
+ }
+ };
+ super.setUp();
+ }
+
+ protected void tearDown() throws Exception {
+ exportObj = null;
+ }
+
+ public void testCipherSocketFactory() throws RemoteException {
+ srsk = new CipherRMISocketFactory();
+ crsk = new CipherRMISocketFactory();
+ stub = (ServerExecutor) UnicastRemoteObject.exportObject(exportObj, 0, crsk, srsk);
+ assertTrue((Boolean)executor.execute(stub, 10));
+ }
+
+ public void testZIPSocketFactory() throws RemoteException {
+ srsk = new GZipRMISocketFactory();
+ crsk = new GZipRMISocketFactory();
+ stub = (ServerExecutor) UnicastRemoteObject.exportObject(exportObj, 0, crsk, srsk);
+ assertTrue((Boolean)executor.execute(stub, 10));
+ }
+
+ public void testZIPSocketFactoryError() throws RemoteException {
+ srsk = new GZipRMISocketFactory();
+ crsk = new GZipRMISocketFactory();
+// crsk = new CipherRMISocketFactory();
+ try {
+ stub = (ServerExecutor) UnicastRemoteObject.exportObject(exportObj, 0, crsk, srsk);
+ fail("No error reported");
+ } catch (RemoteException e) {
+
+ }
+ }
+
+}
+
+
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/RemoteRegistryTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/RemoteRegistryTestCase.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/RemoteRegistryTestCase.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/RemoteRegistryTestCase.java Tue May 16 06:51:00 2006
@@ -0,0 +1,235 @@
+/*
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package ar.org.fitc.test.rmi.integration.fase2.test;
+
+import java.net.MalformedURLException;
+import java.rmi.AccessException;
+import java.rmi.AlreadyBoundException;
+import java.rmi.NotBoundException;
+import java.rmi.RemoteException;
+import java.rmi.ServerException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+
+import ar.org.fitc.test.rmi.integration.fase2.AutoBindITCRemoteUnicast;
+import ar.org.fitc.test.rmi.integration.fase2.ITCRemoteUnicast;
+import ar.org.fitc.test.rmi.integration.fase2.Net;
+import ar.org.fitc.test.rmi.integration.fase2.executor.ReportIPServer;
+import ar.org.fitc.test.rmi.integration.fase2.interfaces.ITCRemote;
+
+/**
+ * Testing class for a remote <code>Registry</code>.
+ *
+ * @author Jorge Rafael
+ * @author Marcelo Arcidiacono
+ *
+ * @version 1.0
+ */
+public class RemoteRegistryTestCase extends ITCTestCase {
+
+ /**
+ * A simple <code>Registry</code>.
+ */
+ public Registry reg;
+
+ /**
+ * An <code>ITCRemote</code> for exporting.
+ */
+ public ITCRemote exportObj;
+
+ /**
+ * Default constructor.
+ *
+ */
+ public RemoteRegistryTestCase() {
+ super();
+ }
+
+ /**
+ * Constructs a <code>RemoteRegistryTestCase</code> with a name.
+ *
+ * @param arg0 a name.
+ */
+ public RemoteRegistryTestCase(String arg0) {
+ super(arg0);
+ }
+
+ /**
+ * Assigns a <code>Registry</code> for each reported server and
+ * exports an object on them.
+ *
+ * @throws Exception if a failure occurs during exportation
+ */
+ protected void setUp() throws Exception {
+ String[] hosts = ReportIPServer.getit();
+ for (String host: hosts) {
+ if (!Net.isOwnHost(host)) {
+ reg = LocateRegistry.getRegistry(host, Net.getRegistryPort());
+ break;
+ }
+ }
+ exportObj = new ITCRemoteUnicast();
+ super.setUp();
+ }
+
+ /**
+ * Tries to bind a remote object in a <code>Registry</code> of a
+ * non-local host.
+ *
+ * @throws RemoteException if remote communication with the
+ * registry failed
+ * @throws AlreadyBoundException if the name is already bound
+ */
+ public void testBind001() throws RemoteException, AlreadyBoundException {
+
+ try {
+ reg.bind("echo", exportObj);
+ fail("Stub of registry can't chanch registry");
+ } catch (ServerException e) {
+ }
+ }
+
+ /**
+ * This test verifies that all elements in a non-local <code>
+ * Registry</code> are functional.
+ *
+ * @throws AccessException if this registry is local and it
+ * denies the caller access to perform this operation
+ * @throws RemoteException if remote communication with the
+ * registry failed
+ * @throws NotBoundException if the name is not currently bound
+ */
+ public void testLookup001() throws AccessException, RemoteException,
+ NotBoundException {
+ try {
+ for (String bindName : reg.list() ) {
+ ITCRemote o =(ITCRemote) reg.lookup(bindName);
+ o.getString();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.exit(1);
+ }
+
+ }
+
+ /**
+ * This test tries lookup a non-bounded remote object.
+ *
+ * @throws RemoteException if remote communication with the
+ * registry failed
+ * @throws MalformedURLException if the name is not an
+ * appropriately formatted URL
+ * @throws NotBoundException if the name is not currently bound
+ */
+ public void testLookup002() throws RemoteException, MalformedURLException,
+ NotBoundException {
+ try {
+ reg.lookup("echo123413");
+ fail("Mal formed URL");
+ } catch (NotBoundException e) {
+ } catch (Throwable e) {
+ fail("Failed with:" + e);
+ }
+ }
+
+ /**
+ * This test tries lookup a remote object with a non-existing name.
+ *
+ * @throws RemoteException if remote communication with the
+ * registry failed
+ * @throws MalformedURLException if the name is not an
+ * appropriately formatted URL
+ * @throws NotBoundException if the name is not currently bound
+ */
+ public void testLookup003() {
+ try {
+ reg.lookup("#$%$%echo");
+ fail("Mal formed URL");
+ } catch (NotBoundException e) {
+ } catch (Throwable e) {
+ fail("Failed with:" + e);
+ }
+ }
+
+ /**
+ * This test tries to re-bind a remote object with a same name
+ * in a Registry.
+ *
+ * @throws RemoteException if remote communication with the
+ * registry failed
+ * @throws AlreadyBoundException if the name is already bound
+ */
+ public void testRebind001() throws RemoteException, MalformedURLException,
+ NotBoundException {
+ try {
+ reg.rebind("echo", exportObj);
+ fail("Stub of registry can't chanch registry");
+ } catch (ServerException e) {
+ }
+ }
+
+ /**
+ * This test tries to un-bind remote objects from a non-local
+ * <code>Registry</code>. The object must to be registred.
+ *
+ * @throws AccessException if this registry is local and it
+ * denies the caller access to perform this operation
+ * @throws RemoteException if remote communication with the
+ * registry failed
+ * @throws NotBoundException if the name is not currently bound
+ */
+ @SuppressWarnings("unchecked")
+ public void testUnbind() throws AccessException, RemoteException,
+ NotBoundException {
+ for (String bindName : reg.list() ) {
+ try {
+ reg.unbind(bindName);
+ fail("Stub of registry can't chanch registry");
+ } catch (ServerException e) {
+ ITCRemote o =(ITCRemote) reg.lookup(bindName);
+ o.getString();
+ }
+ }
+ }
+
+ /**
+ * This case makes a test on a non-exported object. If this
+ * object is deserialized, it is exported and bounded. This object
+ * is sent as parameter to a non-local <code>Registry</code>. The
+ * binding fails. However the object will be bounded because
+ * will be deserialized.
+ *
+ * @throws RemoteException if remote communication with the
+ * registry failed
+ */
+ public void testAutoBindAndExportionUsingRemoteRegistry() throws RemoteException {
+ exportObj = new AutoBindITCRemoteUnicast();
+ exportObj.clean(true);
+
+ try {
+ reg.rebind(AutoBindITCRemoteUnicast.BIND_NAME, exportObj);
+ fail("can't bind remotelly");
+ } catch (ServerException e) {
+ }
+
+ try {
+ reg.lookup(AutoBindITCRemoteUnicast.BIND_NAME);
+ } catch (NotBoundException e) {
+ fail("Object not binded");
+ }
+ }
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/ReportIPTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/ReportIPTestCase.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/ReportIPTestCase.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/ReportIPTestCase.java Tue May 16 06:51:00 2006
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package ar.org.fitc.test.rmi.integration.fase2.test;
+
+import java.net.InetAddress;
+import java.net.MalformedURLException;
+import java.net.UnknownHostException;
+import java.rmi.RemoteException;
+
+import ar.org.fitc.test.rmi.integration.fase2.executor.ClientExecutor;
+import ar.org.fitc.test.rmi.integration.fase2.executor.ReportIP;
+
+/**
+ * Testing class for <code>ReportIP</code>.
+ *
+ * @author Jorge Rafael
+ * @author Marcelo Arcidiacono
+ *
+ * @version 1.0
+ */
+public class ReportIPTestCase extends ITCTestCase {
+
+ /**
+ * A <code>ReportIP</code>.
+ */
+ public ReportIP reporter;
+
+ /**
+ * Default constructor.
+ *
+ */
+ public ReportIPTestCase() {
+ super();
+ }
+
+ /**
+ * Constructs a <code>ReportIPTestCase</code> with a name.
+ *
+ * @param arg0 a name.
+ */
+ public ReportIPTestCase(String arg0) {
+ super(arg0);
+ }
+
+ /**
+ * Creates a <code>ReportIP</code>
+ *
+ */
+ protected void setUp() throws Exception {
+ reporter = (ReportIP) java.rmi.Naming.lookup(ReportIP.BIND_NAME);
+ super.setUp();
+ }
+
+ /**
+ * Verifies the host name of the current <code>ReportIP</code>.
+ *
+ * @throws RemoteException if the remote operation fails
+ * @throws UnknownHostException if the IP address of a host could
+ * not be determined
+ */
+ public void testMyHostName001() throws RemoteException,
+ UnknownHostException {
+ String hostName = reporter.myHostName();
+ for (InetAddress address : InetAddress.getAllByName(hostName)) {
+ if (address.isLoopbackAddress() || address.isSiteLocalAddress()) {
+ return;
+ }
+ }
+ fail("The reporter.myHostName is not my");
+ }
+
+ /**
+ * Verifies that the <code>ReportIPServer</code> returns a string
+ * of valid IP addresses.
+ *
+ * @throws RemoteException if the remote operation fails
+ * @throws UnknownHostException if the IP address of a host could
+ * not be determined
+ */
+ public void testGetIt001() throws RemoteException, UnknownHostException {
+ String[] hosts = reporter.getIP();
+ for (String host : hosts) {
+ assertNotNull(InetAddress.getAllByName(host));
+ }
+ }
+
+ /**
+ * Reports a new host and wait that the <code>ReportIP</code> adds
+ * the host
+ *
+ * @throws RemoteException if the remote operation fails
+ * @throws MalformedURLException if the name is not an appropriately
+ * formatted URL
+ */
+ public void testReport001() throws RemoteException, MalformedURLException {
+ String hostName = reporter.myHostName();
+ ClientExecutor.exportExecutor();
+ String[] initialhosts = reporter.getIP();
+ reporter.report();
+ String[] hosts = reporter.getIP();
+ for (int i = 0, j = 0; i < hosts.length; i++, j++) {
+ if (hosts[i].equals(hostName)) {
+ j--;
+ } else if (hosts[i].equals(initialhosts[j])) {
+
+ } else {
+ fail("I report and i don't see me in the list");
+ }
+ }
+ }
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/SocketFactoryDCGTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/SocketFactoryDCGTestCase.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/SocketFactoryDCGTestCase.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/SocketFactoryDCGTestCase.java Tue May 16 06:51:00 2006
@@ -0,0 +1,42 @@
+package ar.org.fitc.test.rmi.integration.fase2.test;
+
+import java.lang.ref.WeakReference;
+import java.rmi.server.RMIClientSocketFactory;
+import java.rmi.server.RMIServerSocketFactory;
+import java.rmi.server.UnicastRemoteObject;
+
+import ar.org.fitc.test.rmi.integration.fase2.LogRemoteImpl;
+import ar.org.fitc.test.rmi.integration.fase2.MoveRemoteObject;
+import ar.org.fitc.test.rmi.integration.fase2.interfaces.LogRemote;
+import ar.org.fitc.test.rmi.integration.fase2.socketfactory.CipherRMISocketFactory;
+
+
+/**
+ * DGC Test case with Cipher Socket Factory
+ *
+ * @author Osvaldo Demo
+ *
+ * @version 1.0
+ */
+
+public class SocketFactoryDCGTestCase extends DGCTestCase {
+
+ public RMIClientSocketFactory crsk;
+
+ public RMIServerSocketFactory srsk;
+
+ @SuppressWarnings("unchecked")
+ @Override
+ protected void setUp() throws Exception {
+
+ crsk = new CipherRMISocketFactory();
+ srsk = new CipherRMISocketFactory();
+ remote = new LogRemoteImpl();
+ stub = (LogRemote) UnicastRemoteObject.exportObject(remote, 0,crsk,srsk);
+ // Container and remote execution
+ serv = new MoveRemoteObject(remote);
+ wref = new WeakReference(remote);
+ super.setUp();
+ }
+
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/TestITCRemote.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/TestITCRemote.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/TestITCRemote.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/TestITCRemote.java Tue May 16 06:51:00 2006
@@ -0,0 +1,174 @@
+/*
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package ar.org.fitc.test.rmi.integration.fase2.test;
+
+import java.lang.ref.WeakReference;
+import java.net.MalformedURLException;
+import java.rmi.Naming;
+import java.rmi.NoSuchObjectException;
+import java.rmi.NotBoundException;
+import java.rmi.RemoteException;
+import java.rmi.server.UnicastRemoteObject;
+
+import ar.org.fitc.test.rmi.integration.fase2.interfaces.ITCRemote;
+
+/**
+ * Testing class for <code>ITCRemote</code>.
+ *
+ * @author Jorge Rafael
+ * @author Marcelo Arcidiacono
+ *
+ * @version 1.0
+ */
+abstract public class TestITCRemote extends ITCTestCase {
+
+ /**
+ * A simple <code>ITCRemote</code> object.
+ */
+ protected ITCRemote ret;
+
+ /**
+ * A simple <code>ITCRemote</code> object.
+ */
+ private ITCRemote retBind;
+
+ /**
+ * Binds a copy of an <code>ITCRemote</code> object.
+ *
+ * @throw Exception if the bind operation fails
+ */
+ protected void setUp() throws Exception {
+ initRegistry();
+ retBind = ret;
+ ret = retBind.myClone();
+// ret = null;
+ Naming.bind("ITCREMOTE", retBind);
+ super.setUp();
+ }
+
+ /**
+ * Unbinds an <code>ITCRemote<code> object.
+ *
+ * @throw Exception if the unbind operation fails
+ */
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ ret = null;
+ retBind = null;
+ Naming.unbind("ITCREMOTE");
+ forceGC();
+ }
+
+ /**
+ * Forces the unexport of an <code>ITCRemote</code> object.
+ *
+ * @throws RemoteException if the unexport operation fails
+ */
+ @SuppressWarnings("unchecked")
+ public void testClean() throws RemoteException {
+ retBind.clean(true);
+ WeakReference weak = new WeakReference(retBind);
+ retBind = null;
+ assertNull(weak);
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testClean2() throws RemoteException {
+ ret.clean(true);
+ WeakReference weak = new WeakReference(ret);
+ ret = null;
+ assertNull(weak);
+ }
+
+ /**
+ * Verifies the <code>WeakReference</code>.
+ *
+ */
+ @SuppressWarnings("unchecked")
+ public void testGCBindObject() {
+ WeakReference weak = new WeakReference(retBind);
+ retBind = null;
+ assertNotNull(weak);
+ }
+
+ /**
+ * Verifies a <code>WeakReference</code> by forcing the
+ * unexport of an <code>ITCRemote</code> object.
+ *
+ * @throws RemoteException if the operation fail
+ * @throws MalformedURLException if the name is not an appropriately
+ * formatted URL
+ * @throws NotBoundException if name is not currently bound
+ */
+ @SuppressWarnings("unchecked")
+ public void testGCCleanBind() throws RemoteException, MalformedURLException, NotBoundException {
+ retBind.clean(true);
+ WeakReference weak = new WeakReference(retBind);
+ retBind = null;
+ assertNull(weak);
+ try {
+ ((ITCRemote)Naming.lookup("ITCREMOTE")).getString();
+ } catch (NoSuchObjectException e) {
+ }
+ }
+
+ /**
+ * Verifies a lookup of an <code>ITCRemote</code> object.
+ *
+ * @throws RemoteException if the lookup operation fails
+ * @throws MalformedURLException if the name is not an appropriately
+ * formatted URL
+ * @throws NotBoundException if name is not currently bound
+ */
+ public void test001() throws RemoteException, MalformedURLException, NotBoundException {
+ assertNotNull(Naming.lookup("ITCREMOTE"));
+ }
+
+ /**
+ * Verifies the <code>WeakReference</code> of an export object.
+ *
+ * @throws RemoteException if the exportation fails
+ */
+ @SuppressWarnings("unchecked")
+ public void testDGCExport() throws RemoteException {
+ UnicastRemoteObject.exportObject(ret, 10000);
+ WeakReference weak = new WeakReference(ret);
+ ret = null;
+ assertNull(weak);
+ }
+
+ /**
+ * Verifies the <code>imInServer</code> method.
+ *
+ * @throws RemoteException if the remote operation fails
+ */
+ public void testImInServer() throws RemoteException {
+ assertTrue(ret.imInServer());
+ }
+
+ /**
+ * Verifies the <code>imInServer</code> method on a remote
+ * reference.
+ *
+ * @throws RemoteException if the remote operation fails
+ * @throws MalformedURLException if the name is not an appropriately
+ * formatted URL
+ * @throws NotBoundException if name is not currently bound
+ */
+ public void testImInServerRef() throws RemoteException, MalformedURLException, NotBoundException {
+ assertTrue(((ITCRemote)Naming.lookup("ITCREMOTE")).imInServer());
+ }
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/TestITCRemoteUnicast.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/TestITCRemoteUnicast.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/TestITCRemoteUnicast.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/integration/fase2/test/TestITCRemoteUnicast.java Tue May 16 06:51:00 2006
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package ar.org.fitc.test.rmi.integration.fase2.test;
+
+import java.rmi.RemoteException;
+
+import ar.org.fitc.test.rmi.integration.fase2.ITCRemoteUnicast;
+
+/**
+ * Testing class for <code>ITCRemoteUnicast</code>.
+ *
+ * @author Jorge Rafael
+ * @author Marcelo Arcidiacono
+ *
+ * @version 1.0
+ */
+public class TestITCRemoteUnicast extends TestITCRemote {
+
+ /**
+ * Creates a new <code>ITCRemoteUnicast</code>.
+ *
+ * @throws RemoteException if failed to export object
+ */
+ protected void setUp() throws Exception {
+ ret = new ITCRemoteUnicast();
+ super.setUp();
+ }
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/Calculator.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/Calculator.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/Calculator.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/Calculator.java Tue May 16 06:51:00 2006
@@ -0,0 +1,23 @@
+package ar.org.fitc.test.rmi.tunneling.integration;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.util.Vector;
+
+public interface Calculator extends Remote {
+
+ public static final String SERVICENAME = "RemoteCalculator";
+
+ public void setVectorA(Vector data) throws RemoteException;
+
+ public void setMatrixA(int[][] data) throws RemoteException;
+
+ public void setMatrixB(int[][] data) throws RemoteException;
+
+ public int[][] sumMatrixAB() throws RemoteException;
+
+ public int[][] multiplyMatrixAB() throws RemoteException;
+
+ public double[] getDevProm() throws RemoteException;
+
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/CalculatorBI.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/CalculatorBI.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/CalculatorBI.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/CalculatorBI.java Tue May 16 06:51:00 2006
@@ -0,0 +1,27 @@
+package ar.org.fitc.test.rmi.tunneling.integration;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+import java.util.Vector;
+
+public interface CalculatorBI extends Remote {
+
+ public static final String SERVICENAME = "RemoteCalculator";
+
+ public void setVectorA(Vector data) throws RemoteException;
+
+ public void setMatrixA(BigInteger[][] data) throws RemoteException;
+
+ public void setMatrixB(BigInteger[][] data) throws RemoteException;
+
+ public BigInteger[][] sumMatrixAB() throws RemoteException;
+
+ public BigInteger[][] multiplyMatrixAB() throws RemoteException;
+
+ public BigDecimal[] getDevProm() throws RemoteException;
+
+
+
+}
\ No newline at end of file
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/CipherRMISocketFactory.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/CipherRMISocketFactory.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/CipherRMISocketFactory.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/CipherRMISocketFactory.java Tue May 16 06:51:00 2006
@@ -0,0 +1,24 @@
+package ar.org.fitc.test.rmi.tunneling.integration;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.rmi.server.RMISocketFactory;
+
+public class CipherRMISocketFactory extends RMISocketFactory {
+
+ public CipherRMISocketFactory() {
+ super();
+ }
+
+ @Override
+ public Socket createSocket(String host, int port) throws IOException {
+ return new CipherSocket(host, port);
+ }
+
+ @Override
+ public ServerSocket createServerSocket(int port) throws IOException {
+ return new CipherServerSocket(port);
+ }
+
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/CipherServerSocket.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/CipherServerSocket.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/CipherServerSocket.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/CipherServerSocket.java Tue May 16 06:51:00 2006
@@ -0,0 +1,37 @@
+package ar.org.fitc.test.rmi.tunneling.integration;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+
+
+public class CipherServerSocket extends ServerSocket {
+
+ public CipherServerSocket() throws IOException {
+ super();
+
+ }
+
+ public CipherServerSocket(int port) throws IOException {
+ super(port);
+
+ }
+
+ public CipherServerSocket(int port, int backlog) throws IOException {
+ super(port, backlog);
+
+ }
+
+ public CipherServerSocket(int port, int backlog, InetAddress bindAddr)
+ throws IOException {
+ super(port, backlog, bindAddr);
+
+ }
+ public Socket accept() throws IOException{
+ Socket s = new CipherSocket();
+ implAccept(s);
+ return s;
+ }
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/CipherSocket.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/CipherSocket.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/CipherSocket.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/CipherSocket.java Tue May 16 06:51:00 2006
@@ -0,0 +1,64 @@
+package ar.org.fitc.test.rmi.tunneling.integration;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.InetAddress;
+import java.net.Proxy;
+import java.net.Socket;
+import java.net.SocketException;
+import java.net.SocketImpl;
+import java.net.UnknownHostException;
+import javax.crypto.*;
+
+public class CipherSocket extends Socket {
+
+ public CipherSocket() {
+ super();
+ }
+
+ public CipherSocket(Proxy proxy) {
+ super(proxy);
+ }
+
+ public CipherSocket(SocketImpl impl) throws SocketException {
+ super(impl);
+ }
+
+ public CipherSocket(String host, int port) throws UnknownHostException,
+ IOException {
+ super(host, port);
+ }
+
+ public CipherSocket(InetAddress address, int port) throws IOException {
+ super(address, port);
+ }
+
+ public CipherSocket(String host, int port, InetAddress localAddr,
+ int localPort) throws IOException {
+ super(host, port, localAddr, localPort);
+ }
+
+ public CipherSocket(InetAddress address, int port, InetAddress localAddr,
+ int localPort) throws IOException {
+ super(address, port, localAddr, localPort);
+ }
+
+ public CipherSocket(String host, int port, boolean stream)
+ throws IOException {
+ super(host, port, stream);
+
+ }
+
+ public CipherSocket(InetAddress host, int port, boolean stream)
+ throws IOException {
+ super(host, port, stream);
+ }
+
+ public OutputStream getOutputStream() throws IOException {
+ return new CipherOutputStream(super.getOutputStream(), RemoteCipherImpl.getCipher(Cipher.ENCRYPT_MODE));
+ }
+ public InputStream getInputStream() throws IOException {
+ return new CipherInputStream(super.getInputStream(), RemoteCipherImpl.getCipher(Cipher.DECRYPT_MODE));
+ }
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/ProtocolTest.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/ProtocolTest.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/ProtocolTest.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/ProtocolTest.java Tue May 16 06:51:00 2006
@@ -0,0 +1,12 @@
+package ar.org.fitc.test.rmi.tunneling.integration;
+
+import java.rmi.Remote;
+import java.rmi.RemoteException;
+
+public interface ProtocolTest extends Remote {
+
+ public static final String SERVICENAME = "ProtocolTest";
+
+ public void setByte(byte data) throws RemoteException;
+
+}
\ No newline at end of file
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/ProtocolTestByte.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/ProtocolTestByte.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/ProtocolTestByte.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/ProtocolTestByte.java Tue May 16 06:51:00 2006
@@ -0,0 +1,19 @@
+package ar.org.fitc.test.rmi.tunneling.integration;
+
+import java.rmi.RemoteException;
+import java.rmi.server.UnicastRemoteObject;
+
+public class ProtocolTestByte extends UnicastRemoteObject implements ProtocolTest {
+
+ private byte myData;
+
+ public ProtocolTestByte() throws RemoteException {
+ super();
+ }
+
+ public void setByte(byte data) throws RemoteException {
+ myData = data;
+ System.out.println(data);
+ }
+
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/ProtocolTestClient.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/ProtocolTestClient.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/ProtocolTestClient.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/ProtocolTestClient.java Tue May 16 06:51:00 2006
@@ -0,0 +1,35 @@
+package ar.org.fitc.test.rmi.tunneling.integration;
+
+import java.rmi.NotBoundException;
+import java.rmi.RemoteException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+
+public class ProtocolTestClient {
+
+ public static void main(String[] args) {
+
+ String addr = "127.0.0.1";
+
+ ProtocolTest pt = null;
+ Registry remoteRegistry = null;
+
+
+ byte b = 0x43;
+
+ try {
+ remoteRegistry = LocateRegistry.getRegistry(addr);
+ pt = (ProtocolTest) remoteRegistry.lookup(ProtocolTest.SERVICENAME);
+
+ pt.setByte(b);
+ pt.setByte((byte) 0x12);
+
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ } catch (NotBoundException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/ProtocolTestServer.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/ProtocolTestServer.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/ProtocolTestServer.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/ProtocolTestServer.java Tue May 16 06:51:00 2006
@@ -0,0 +1,30 @@
+package ar.org.fitc.test.rmi.tunneling.integration;
+
+import java.rmi.RemoteException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+
+public class ProtocolTestServer {
+
+ public static void main(String[] args) {
+ Registry localRegistry = null;
+ System.setProperty("sun.rmi.transport.logLevel", "VERBOSE");
+ System.setProperty("sun.rmi.transport.tcp.logLevel", "VERBOSE");
+ System.setProperty("sun.rmi.transport.tcp.readTimeout", "1000");
+
+ try {
+ localRegistry = LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+
+ try {
+ ProtocolTestByte rc = new ProtocolTestByte();
+ localRegistry.rebind(ProtocolTest.SERVICENAME,rc);
+
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ }
+
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculator.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculator.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculator.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculator.java Tue May 16 06:51:00 2006
@@ -0,0 +1,160 @@
+package ar.org.fitc.test.rmi.tunneling.integration;
+
+import java.rmi.RemoteException;
+import java.rmi.server.ServerNotActiveException;
+import java.rmi.server.UnicastRemoteObject;
+import java.util.Arrays;
+import java.util.Enumeration;
+import java.util.Vector;
+
+public class RemoteCalculator extends UnicastRemoteObject implements Calculator {
+
+ public RemoteCalculator() throws RemoteException {
+ super();
+ }
+
+ private static final long serialVersionUID = 1L;
+
+ private Vector v1;
+
+ private int[][] m1;
+ private int[][] m2;
+
+ public void setVectorA(Vector data) {
+ if (data.size() < 1) {
+ throw new RuntimeException("Vector should not be empty!");
+ }
+ try {
+ System.out.println("Vector A entered from "+getClientHost());
+ } catch (ServerNotActiveException e) {
+ e.printStackTrace();
+ }
+ this.v1 = data;
+ System.out.println(data.toString());
+ System.out.println();
+ }
+
+ public double[] getDevProm() {
+ try {
+ System.out.println("get Standard Deviation and Average called from "+getClientHost());
+ } catch (ServerNotActiveException e) {
+ e.printStackTrace();
+ }
+ double[] result = new double[2];
+ if ((v1 == null) || (v1.size() <= 1)) {
+ result[0] = 0;
+ result[1] = 0;
+ return result;
+ }
+
+ double sumatoria = 0;
+ Enumeration e = v1.elements();
+ while (e.hasMoreElements()) {
+ Double oneValue = (Double) e.nextElement();
+ double dValue = oneValue.doubleValue();
+ sumatoria += dValue;
+ }
+
+ double promedio = sumatoria/v1.size();
+ double temp = 0;
+
+ e = v1.elements();
+
+ while (e.hasMoreElements()) {
+ Double value = (Double) e.nextElement();
+ double doubleValue = value.doubleValue();
+ temp += Math.pow(doubleValue - promedio,2.0);
+ }
+
+ double devstandard = Math.sqrt(temp/(v1.size() - 1));
+
+ System.out.println("Standard Deviation: "+devstandard);
+ System.out.println("Average: "+promedio);
+ result[0] = devstandard;
+ result[1] = promedio;
+ return result;
+ }
+
+ public void setMatrixA(int[][] data) {
+ if (data.length != data[0].length) {
+ throw new RuntimeException("Matrix should be square!");
+ }
+ try {
+ System.out.println("Matrix A entered from "+getClientHost());
+ } catch (ServerNotActiveException e) {
+ e.printStackTrace();
+ }
+ System.out.println(Arrays.toString(data[0]));
+ System.out.println(Arrays.toString(data[1]));
+ System.out.println();
+ this.m1 = data;
+ }
+
+ public void setMatrixB(int[][] data) {
+ if (data.length != data[0].length) {
+ throw new RuntimeException("Matrix should be square!");
+ }
+ try {
+ System.out.println("Matrix B entered from "+getClientHost());
+ } catch (ServerNotActiveException e) {
+ e.printStackTrace();
+ }
+ System.out.println(Arrays.toString(data[0]));
+ System.out.println(Arrays.toString(data[1]));
+ System.out.println();
+ this.m2 = data;
+ }
+
+ public int[][] sumMatrixAB() {
+ if ((m1 == null)|| (m2 == null)) {
+ throw new RuntimeException("Matrix not loaded");
+ }
+ try {
+ System.out.println("add Matrix called from "+getClientHost());
+ } catch (ServerNotActiveException e) {
+ e.printStackTrace();
+ }
+ int[][] result = new int[m1.length][m2.length];
+ int i, j;
+ for (i = 0; i < m1.length; i++) {
+ for (j = 0; j < m2.length; j++) {
+ result [i][j] = m1 [i][j] + m2 [i][j];
+ }
+ }
+ System.out.println("Result Matrix (add)");
+ System.out.println(Arrays.toString(result[0]));
+ System.out.println(Arrays.toString(result[1]));
+ System.out.println();
+ return result;
+ }
+
+ public int[][] multiplyMatrixAB() {
+ if ((m1 == null)|| (m2 == null)) {
+ throw new RuntimeException("Matrix not loaded");
+ }
+ try {
+ System.out.println("multiply Matrix called from "+getClientHost());
+ } catch (ServerNotActiveException e) {
+ e.printStackTrace();
+ }
+ int[][] result = new int[m1.length][m2.length];
+ int i, j, k;
+ int sum;
+
+ for (i = 0; i < m1.length; i++) {
+ for (j = 0; j < m2.length; j++) {
+ sum = 0;
+ for (k = 0; k < m1.length; k++) {
+ sum += m1[i][k] * m2[k][j];
+ }
+ result[i][j] = sum;
+ }
+ }
+ System.out.println("Result Matrix (multiply)");
+ System.out.println(Arrays.toString(result[0]));
+ System.out.println(Arrays.toString(result[1]));
+ System.out.println();
+ return result;
+ }
+
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculatorBI.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculatorBI.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculatorBI.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculatorBI.java Tue May 16 06:51:00 2006
@@ -0,0 +1,166 @@
+package ar.org.fitc.test.rmi.tunneling.integration;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.rmi.RemoteException;
+import java.rmi.server.ServerNotActiveException;
+import java.rmi.server.UnicastRemoteObject;
+import java.util.Arrays;
+import java.util.Enumeration;
+import java.util.Vector;
+
+public class RemoteCalculatorBI extends UnicastRemoteObject implements CalculatorBI {
+
+ public RemoteCalculatorBI() throws RemoteException {
+ super();
+ }
+
+ private static final long serialVersionUID = 1L;
+
+ private Vector v1;
+
+ private BigInteger[][] m1;
+ private BigInteger[][] m2;
+
+ public void setVectorA(Vector data) {
+ if (data.size() < 1) {
+ throw new RuntimeException("Vector should not be empty!");
+ }
+ try {
+ System.out.println("Vector A entered from "+getClientHost());
+ } catch (ServerNotActiveException e) {
+ e.printStackTrace();
+ }
+ this.v1 = data;
+ System.out.println(data.toString());
+ System.out.println();
+ }
+
+ public BigDecimal[] getDevProm() {
+ try {
+ System.out.println("get Standard Deviation and Average called from "+getClientHost());
+ } catch (ServerNotActiveException e) {
+ e.printStackTrace();
+ }
+ BigDecimal[] result = new BigDecimal[2];
+ if ((v1 == null) || (v1.size() <= 1)) {
+ result[0] = BigDecimal.ZERO;
+ result[1] = BigDecimal.ZERO;
+ return result;
+ }
+
+ BigDecimal sumatoria = BigDecimal.ZERO;
+ Enumeration e = v1.elements();
+ while (e.hasMoreElements()) {
+ BigDecimal dValue = (BigDecimal) e.nextElement();
+
+ sumatoria.add(dValue);
+ }
+
+ BigDecimal promedio = sumatoria.divide(BigDecimal.valueOf(v1.size()));
+ BigDecimal temp = BigDecimal.ZERO;
+
+
+ e = v1.elements();
+
+ while (e.hasMoreElements()) {
+ BigDecimal value = (BigDecimal) e.nextElement();
+ temp = temp.add(value.add(promedio.negate()).pow(2));
+ }
+
+ BigDecimal devstandard = temp.divide(BigDecimal.valueOf(v1.size()-1));
+
+ System.out.println("Standard Deviation: "+devstandard);
+ System.out.println("Average: "+promedio);
+ result[0] = devstandard;
+ result[1] = promedio;
+ return result;
+ }
+
+ public void setMatrixA(BigInteger[][] data) {
+ if (data.length != data[0].length) {
+ throw new RuntimeException("Matrix should be square!");
+ }
+ try {
+ System.out.println("Matrix A entered from "+getClientHost());
+ } catch (ServerNotActiveException e) {
+ e.printStackTrace();
+ }
+ System.out.println(Arrays.toString(data[0]));
+ System.out.println(Arrays.toString(data[1]));
+ System.out.println();
+ this.m1 = data;
+ }
+
+ public void setMatrixB(BigInteger[][] data) {
+ if (data.length != data[0].length) {
+ throw new RuntimeException("Matrix should be square!");
+ }
+ try {
+ System.out.println("Matrix B entered from "+getClientHost());
+ } catch (ServerNotActiveException e) {
+ e.printStackTrace();
+ }
+ System.out.println(Arrays.toString(data[0]));
+ System.out.println(Arrays.toString(data[1]));
+ System.out.println();
+ this.m2 = data;
+ }
+
+ public BigInteger[][] sumMatrixAB() {
+ if ((m1 == null)|| (m2 == null)) {
+ throw new RuntimeException("Matrix not loaded");
+ }
+
+ try {
+ System.out.println("add Matrix called from "+getClientHost());
+ } catch (ServerNotActiveException e) {
+ e.printStackTrace();
+ }
+ BigInteger[][] result = new BigInteger[m1.length][m2.length];
+
+ int i, j;
+ for (i = 0; i < m1.length; i++) {
+ for (j = 0; j < m2.length; j++) {
+ result [i][j] = m1 [i][j].add(m2 [i][j]);
+ }
+ }
+ System.out.println("Result Matrix (add)");
+ System.out.println(Arrays.toString(result[0]));
+ System.out.println(Arrays.toString(result[1]));
+ System.out.println();
+ return result;
+ }
+
+ public BigInteger[][] multiplyMatrixAB() {
+ if ((m1 == null)|| (m2 == null)) {
+ throw new RuntimeException("Matrix not loaded");
+ }
+
+ try {
+ System.out.println("multiply Matrix called from "+getClientHost());
+ } catch (ServerNotActiveException e) {
+ e.printStackTrace();
+ }
+ BigInteger[][] result = new BigInteger[m1.length][m2.length];
+
+ int i, j, k;
+ BigInteger sum;
+
+ for (i = 0; i < m1.length; i++) {
+ for (j = 0; j < m2.length; j++) {
+ sum = BigInteger.ZERO;
+ for (k = 0; k < m1.length; k++) {
+ sum = m1[i][k].multiply(m2[k][j]).add(sum);
+ }
+ result[i][j] = sum;
+ }
+ }
+ System.out.println("Result Matrix (multiply)");
+ System.out.println(Arrays.toString(result[0]));
+ System.out.println(Arrays.toString(result[1]));
+ System.out.println();
+ return result;
+ }
+
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculatorClient.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculatorClient.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculatorClient.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculatorClient.java Tue May 16 06:51:00 2006
@@ -0,0 +1,112 @@
+package ar.org.fitc.test.rmi.tunneling.integration;
+
+import java.io.IOException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+import java.rmi.server.RMISocketFactory;
+import java.util.Arrays;
+import java.util.Vector;
+import java.util.logging.Logger;
+
+import ar.org.fitc.test.rmi.tunneling.testrunner.Util;
+
+public class RemoteCalculatorClient {
+
+ protected static Logger logger = Logger.getAnonymousLogger();
+
+ /*
+ * arg[0] ---> mode
+ * arg[1] ---> proxy ip number
+ * arg[2] ---> proxy port number
+ * arg[3] ---> client ip number
+ * arg[4] ---> rmi package supplier
+ *
+ */
+
+ @SuppressWarnings({"unchecked"})
+ public static void main(String[] args) {
+
+ if (args.length != 5) {
+ System.err.println("5 Parameters needed...");
+ System.exit(1);
+ }
+
+ System.setProperty("sun.rmi.transport.logLevel", "VERBOSE");
+ System.setProperty("sun.rmi.transport.tcp.logLevel", "VERBOSE");
+ System.setProperty("sun.rmi.transport.tcp.readTimeout", "1000");
+
+ System.setProperty("http.proxyHost",args[1]);
+ System.setProperty("http.proxyPort",args[2]);
+
+ if (args[4].equalsIgnoreCase("sun")) {
+ try {
+ RMISocketFactory.setSocketFactory(Util.getSunSocketFactory(args[0]));
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ } else if (args[4].equalsIgnoreCase("itc")) {
+ Util.setITCSocketFactoryMode(args[0]);
+ }
+
+ String addr = args[3];
+ if (addr == null) {
+ addr = "10.100.2.246";
+ }
+
+ Calculator remoteCalc = null;
+ Registry remoteRegistry = null;
+
+ try {
+ logger.info("RemoteCalculatorClient locating RMI registry on remote host \""+ addr + "\".");
+ remoteRegistry = LocateRegistry.getRegistry(addr);
+
+ logger.info("RemoteCalculatorClient looking up service \""+ RemoteCalculator.SERVICENAME + "\".");
+ remoteCalc = (Calculator) remoteRegistry.lookup(RemoteCalculator.SERVICENAME);
+
+ int[][] a = new int[][] {{9,2},{6,4}};
+ int[][] b = new int[][] {{1,4},{1,5}};
+
+ remoteCalc.setMatrixA(a);
+ remoteCalc.setMatrixB(b);
+
+ System.out.println("Matrix A");
+ System.out.println(Arrays.toString(a[0]));
+ System.out.println(Arrays.toString(a[1]));
+ System.out.println();
+
+ System.out.println("Matrix B");
+ System.out.println(Arrays.toString(b[0]));
+ System.out.println(Arrays.toString(b[1]));
+ System.out.println();
+
+ System.out.println("Result Matrix (multiply)");
+ System.out.println(Arrays.toString(remoteCalc.multiplyMatrixAB()[0]));
+ System.out.println(Arrays.toString(remoteCalc.multiplyMatrixAB()[1]));
+ System.out.println();
+
+ System.out.println("Result Matrix (add)");
+ System.out.println(Arrays.toString(remoteCalc.sumMatrixAB()[0]));
+ System.out.println(Arrays.toString(remoteCalc.sumMatrixAB()[1]));
+ System.out.println();
+
+
+ System.out.println("Vector");
+ Vector v = new Vector(4);
+ v.add(new Double(50.21));
+ v.add(new Double(2000.125));
+ v.add(new Double(196.15));
+ v.add(new Double(36.95));
+
+ remoteCalc.setVectorA(v);
+
+ System.out.println(v.toString());
+ System.out.println();
+
+ System.out.println("Standard Deviation: "+remoteCalc.getDevProm()[0]);
+ System.out.println("Average: "+remoteCalc.getDevProm()[1]);
+
+ } catch (Exception e) {
+ logger.info("RemoteCalculatorClient problem with RemoteCalculator, exception:\n "+ e);
+ }
+ }
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculatorClientBI.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculatorClientBI.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculatorClientBI.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculatorClientBI.java Tue May 16 06:51:00 2006
@@ -0,0 +1,133 @@
+package ar.org.fitc.test.rmi.tunneling.integration;
+
+import java.io.IOException;
+import java.math.BigInteger;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+import java.rmi.server.RMISocketFactory;
+import java.util.Arrays;
+import java.util.Vector;
+import java.util.logging.Logger;
+
+import ar.org.fitc.test.rmi.tunneling.testrunner.Util;
+
+public class RemoteCalculatorClientBI {
+
+ private static Logger logger = Logger.getAnonymousLogger();
+
+ /*
+ * arg[0] ---> mode
+ * arg[1] ---> proxy ip number
+ * arg[2] ---> proxy port number
+ * arg[3] ---> client ip number
+ * arg[4] ---> rmi package supplier
+ *
+ */
+
+ @SuppressWarnings({"unchecked"})
+ public static void main(String[] args) {
+
+ if (args.length != 5) {
+ System.err.println("5 Parameters needed...");
+ System.exit(1);
+ }
+
+ System.setProperty("sun.rmi.transport.logLevel", "VERBOSE");
+ System.setProperty("sun.rmi.transport.tcp.logLevel", "VERBOSE");
+ System.setProperty("sun.rmi.transport.tcp.readTimeout", "1000");
+
+ System.setProperty("http.proxyHost",args[1]);
+ System.setProperty("http.proxyPort",args[2]);
+
+ try {
+ RMISocketFactory.setSocketFactory(new CipherRMISocketFactory());
+ } catch (IOException e2) {
+ e2.printStackTrace();
+ }
+
+
+ if (args[4].equalsIgnoreCase("sun")) {
+ try {
+ RMISocketFactory.setSocketFactory(Util.getSunSocketFactory(args[0]));
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ } else if (args[4].equalsIgnoreCase("itc")) {
+ Util.setITCSocketFactoryMode(args[0]);
+ }
+
+ String addr = args[3];
+ if (addr == null) {
+ addr = "10.100.2.246";
+ }
+
+ CalculatorBI remoteCalc = null;
+ Registry remoteRegistry = null;
+
+ try {
+ logger.info("RemoteCalculatorClient locating RMI registry on remote host \""+ addr + "\".");
+ remoteRegistry = LocateRegistry.getRegistry(addr);
+
+ logger.info("RemoteCalculatorClient looking up service \""+ RemoteCalculatorBI.SERVICENAME + "\".");
+ remoteCalc = (CalculatorBI) remoteRegistry.lookup(RemoteCalculatorBI.SERVICENAME);
+
+ BigInteger[][] a = new BigInteger[2][2];
+ a[0][0]=new BigInteger("9");
+ a[0][1]=new BigInteger("2");
+ a[1][0]=new BigInteger("6");
+ a[1][1]=new BigInteger("4");
+
+
+
+ BigInteger[][] b = new BigInteger[2][2];
+ b[0][0]=new BigInteger("1");
+ b[0][1]=new BigInteger("4");
+ b[1][0]=new BigInteger("1");
+ b[1][1]=new BigInteger("5");
+
+ remoteCalc.setMatrixA(a);
+ remoteCalc.setMatrixB(b);
+
+ System.out.println("Matrix A");
+ System.out.println(Arrays.toString(a[0]));
+ System.out.println(Arrays.toString(a[1]));
+ System.out.println();
+
+ System.out.println("Matrix B");
+ System.out.println(Arrays.toString(b[0]));
+ System.out.println(Arrays.toString(b[1]));
+ System.out.println();
+
+ System.out.println("Result Matrix (multiply)");
+ System.out.println(Arrays.toString(remoteCalc.multiplyMatrixAB()[0]));
+ System.out.println(Arrays.toString(remoteCalc.multiplyMatrixAB()[1]));
+ System.out.println();
+
+ System.out.println("Result Matrix (add)");
+ System.out.println(Arrays.toString(remoteCalc.sumMatrixAB()[0]));
+ System.out.println(Arrays.toString(remoteCalc.sumMatrixAB()[1]));
+ System.out.println();
+
+
+ System.out.println("Vector");
+ Vector v = new Vector(4);
+ v.add(new Double(50.21));
+ v.add(new Double(2000.125));
+ v.add(new Double(196.15));
+ v.add(new Double(36.95));
+
+ remoteCalc.setVectorA(v);
+
+ System.out.println(v.toString());
+ System.out.println();
+
+ System.out.println("Standard Deviation: "+remoteCalc.getDevProm()[0]);
+ System.out.println("Average: "+remoteCalc.getDevProm()[1]);
+
+ } catch (Exception e) {
+ logger.info("RemoteCalculatorClient problem with RemoteCalculator, exception:\n "+ e);
+ e.printStackTrace();
+
+ }
+ }
+}
Added: incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculatorServer.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculatorServer.java?rev=406944&view=auto
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculatorServer.java (added)
+++ incubator/harmony/enhanced/classlib/trunk/modules/rmi2/rmi-1.4.2/src/ar/org/fitc/test/rmi/tunneling/integration/RemoteCalculatorServer.java Tue May 16 06:51:00 2006
@@ -0,0 +1,44 @@
+package ar.org.fitc.test.rmi.tunneling.integration;
+
+import java.rmi.RemoteException;
+import java.rmi.registry.LocateRegistry;
+import java.rmi.registry.Registry;
+import java.util.logging.Logger;
+
+public class RemoteCalculatorServer {
+
+ private static Logger logger =
+ Logger.getAnonymousLogger();
+
+ public static void main(String[] args) {
+
+ System.setProperty("sun.rmi.transport.logLevel", "VERBOSE");
+ System.setProperty("sun.rmi.transport.tcp.logLevel", "VERBOSE");
+
+ Registry localRegistry = null;
+ try {
+ localRegistry = LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
+ } catch (RemoteException e) {
+ try {
+ localRegistry = LocateRegistry.getRegistry(Registry.REGISTRY_PORT);
+ } catch (RemoteException e1) {
+ e1.printStackTrace();
+ }
+ }
+
+ try {
+ RemoteCalculator rc = new RemoteCalculator();
+ localRegistry.rebind(RemoteCalculator.SERVICENAME,rc);
+ logger.info("RemoteCalculator Server Ready.");
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+
+ try {
+ Thread.sleep(3*60*6000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
+}