This is the mail archive of the mauve-discuss@sourceware.org mailing list for the Mauve project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: tests with rmic!


Hi, Nicolas,

Nice idea, great to have at least any java.rmi rests! The current testing situation with this package is deeply tragical, the coverage being plain zero. And it is possible to find random talks on the web like "how reliable they (GNU Classpath) RMI implementation is? Does it work?".

Any tests are very welcome.

I think it would be a good idea to write Mauve tests as the independent modules that run on a single virtual machine and does call external tools. The most of the current tests are written this way. Here are several suggestions how to make an ordinary Mauve test that would not need to cross the boundaries of the current virtual machine to run:

1. Instead of starting three independent virtual machines (one for server, one for client and one for the naming service), you can just start three threads. When all cleanup problems, if any, will be restricted to the current run of the test suite.
2. Instead of invoking rmic from inside the Mauve test, run it once with the -keep key and just add the generated source code file to your path. Such test would be easier to debug.
3. When all threads are together and can share static variables, all cleanup is trivial (use try {} finally { clean }).


Nicolas Geoffray wrote:

Hi everyone,

I found what might be a bug in gnu classpath and I would like to commit a testlet in mauve. The thing is, my test involves compiling with rmic and launching two gnu classpath jvms. I never commited in mauve, but seeing other testlets, i didn't found ways to commit such a test.

I attached the files. This is how you launch the test:

gcj -C Main.java
gcj -C ReceiveObject.java
gcj -C ReceiveObjectImpl.java
rmic ReceiveObjectImpl

rmiregistry &
jamvm ReceiveObjectImpl &
jamvm Main


Any suggestions?


Thanks,
Nicolas

------------------------------------------------------------------------

import java.rmi.Naming;

public class Main{

class Foo implements java.io.Serializable{}

class Bar implements java.io.Serializable{
Foo f = new Foo();
}
public static void main(String[]args){


try{
Bar b = new Bar();
ReceiveObject ref = (ReceiveObject) Naming.lookup("rmi://localhost/ReceiveObject");
ref.receiveObject(b);
}catch(Exception e){
System.out.println("Error : " + e );
}
}
}


------------------------------------------------------------------------

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface ReceiveObject extends Remote{
public Object receiveObject(Object unknown)
throws RemoteException;
}


------------------------------------------------------------------------

import java.rmi.*;
import java.rmi.server.*;


public class ReceiveObjectImpl extends UnicastRemoteObject implements ReceiveObject{


 public ReceiveObjectImpl() throws RemoteException{
 }

 public Object receiveObject(Object unknown)
   throws RemoteException{
     System.out.println(unknown);
     return null;
   }

public static void main(String[] args){
try{
ReceiveObject ref = new ReceiveObjectImpl();
Naming.rebind("ReceiveObject", ref);
}catch(Exception e){
e.printStackTrace();
}
}
}




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]