dain        2004/04/11 22:23:56

  Modified:    modules/core/src/test/org/openejb/entity
                        BasicCMPEntityContainerTest.java MockHome.java
                        MockLocalHome.java MockRemote.java
  Log:

  Added tests that work through the remote interface and fixed related bugs
  
  Revision  Changes    Path
  1.5       +103 -6    
openejb/modules/core/src/test/org/openejb/entity/BasicCMPEntityContainerTest.java
  
  Index: BasicCMPEntityContainerTest.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/test/org/openejb/entity/BasicCMPEntityContainerTest.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- BasicCMPEntityContainerTest.java  11 Apr 2004 16:58:04 -0000      1.4
  +++ BasicCMPEntityContainerTest.java  12 Apr 2004 02:23:56 -0000      1.5
  @@ -52,6 +52,8 @@
   import java.sql.ResultSet;
   import java.util.Collections;
   import java.util.HashSet;
  +import java.rmi.NoSuchObjectException;
  +import java.rmi.RemoteException;
   import javax.management.ObjectName;
   import javax.sql.DataSource;
   import javax.ejb.NoSuchObjectLocalException;
  @@ -75,6 +77,7 @@
   import org.openejb.transaction.TransactionPolicy;
   import org.tranql.ejb.CMPField;
   import org.tranql.ejb.EJB;
  +import org.tranql.ejb.NotLoadedException;
   
   /**
    * @version $Revision$ $Date$
  @@ -107,6 +110,25 @@
           assertEquals(value, local.getValue());
       }
   
  +    public void testRemoteInvoke() throws Exception {
  +        MockHome home = (MockHome) kernel.getAttribute(CONTAINER_NAME, "EJBHome");
  +        assertEquals(2, home.intMethod(1));
  +
  +        Integer pk = new Integer(33);
  +        String value = "Thirty-Three";
  +        int number = 44;
  +
  +        MockRemote remote = home.create(pk, value);
  +        assertEquals(1 + number + pk.intValue(), remote.intMethod(number));
  +        assertEquals(pk, remote.getPrimaryKey());
  +        assertEquals(value, remote.getValue());
  +
  +        remote = home.findByPrimaryKey(pk);
  +        assertEquals(1 + number + pk.intValue(), remote.intMethod(number));
  +        assertEquals(pk, remote.getPrimaryKey());
  +        assertEquals(value, remote.getValue());
  +    }
  +
       public void testFields() throws Exception {
           MockLocalHome home = (MockLocalHome) kernel.getAttribute(CONTAINER_NAME, 
"EJBLocalHome");
           MockLocal local = home.findByPrimaryKey(new Integer(1));
  @@ -125,7 +147,7 @@
           assertEquals("World", local.getValue());
       }
   
  -    public void testLifeCycle() throws Exception {
  +    public void testLocalLifeCycle() throws Exception {
           Connection c = ds.getConnection();
           Statement s = c.createStatement();
           ResultSet rs;
  @@ -173,14 +195,15 @@
   
           try {
               local.getValue();
  -            fail("Expected NoSuchObjectLocalException, but no exception was 
thrown");
  +            // we don't have a load query so this is not an ObjectNotFoundException
  +            fail("Expected NotLoadedException, but no exception was thrown");
           } catch(AssertionFailedError e) {
               throw e;
  -        } catch(NoSuchObjectLocalException e) {
  +        } catch(NotLoadedException e) {
               // expected
           } catch(Throwable e) {
               e.printStackTrace();
  -            fail("Expected NoSuchObjectLocalException, but got " + 
e.getClass().getName());
  +            fail("Expected NotLoadedException, but got " + e.getClass().getName());
           }
   
           try {
  @@ -199,6 +222,80 @@
           c.close();
       }
   
  +    public void testRemoteLifeCycle() throws Exception {
  +        Connection c = ds.getConnection();
  +        Statement s = c.createStatement();
  +        ResultSet rs;
  +
  +        // check that it is not there
  +        rs = s.executeQuery("SELECT ID FROM MOCK WHERE ID=2");
  +        assertFalse(rs.next());
  +        rs.close();
  +
  +        // add new
  +        MockHome home = (MockHome) kernel.getAttribute(CONTAINER_NAME, "EJBHome");
  +        MockRemote remote = home.create(new Integer(2), "Hello");
  +        rs = s.executeQuery("SELECT VALUE FROM MOCK WHERE ID=2");
  +        assertTrue(rs.next());
  +        assertEquals("Hello", rs.getString(1));
  +        rs.close();
  +
  +        // find it
  +        remote = home.findByPrimaryKey(new Integer(2));
  +        assertEquals("Hello", remote.getValue());
  +
  +        // check that it is actually in the database
  +        rs = s.executeQuery("SELECT ID FROM MOCK WHERE ID=2");
  +        assertTrue(rs.next());
  +        rs.close();
  +
  +        // remove it
  +        remote.remove();
  +
  +        // verify it is really gone
  +        rs = s.executeQuery("SELECT ID FROM MOCK WHERE ID=2");
  +        assertFalse(rs.next());
  +
  +        try {
  +            remote.intMethod(33);
  +            // todo this does not throw an exception because we are not verifying 
that the row exists in ejbLoad and intMethod does not access any persistent data
  +//            fail("Expected NoSuchObjectException, but no exception was thrown");
  +        } catch(AssertionFailedError e) {
  +            throw e;
  +        } catch(NoSuchObjectException e) {
  +            // expected
  +        } catch(Throwable e) {
  +            fail("Expected NoSuchObjectException, but got " + 
e.getClass().getName());
  +        }
  +
  +        try {
  +            remote.getValue();
  +            fail("Expected RemoteException, but no exception was thrown");
  +        } catch(AssertionFailedError e) {
  +            throw e;
  +        } catch(RemoteException e) {
  +            // expected
  +        } catch(Throwable e) {
  +            e.printStackTrace();
  +            fail("Expected RemoteException, but got " + e.getClass().getName());
  +        }
  +
  +        try {
  +            remote = home.findByPrimaryKey(new Integer(2));
  +            fail("Expected ObjectNotFoundException, but no exception was thrown");
  +        } catch(AssertionFailedError e) {
  +            throw e;
  +        } catch(ObjectNotFoundException e) {
  +            // expected
  +        } catch(Throwable e) {
  +            fail("Expected ObjectNotFoundException, but got " + 
e.getClass().getName());
  +        }
  +
  +        rs.close();
  +        s.close();
  +        c.close();
  +    }
  +
       public void testSelect() throws Exception {
   //        Connection c = initDatabase();
   //        MockLocalHome home = (MockLocalHome) mbServer.invoke(CONTAINER_NAME, 
"getEJBLocalHome", null, null);
  @@ -293,8 +390,8 @@
           builder.setComponentContext(new ReadOnlyContext());
   
           EJB ejb = new EJB("MockEJB", "MOCK");
  -        ejb.addCMPField(new CMPField("id", Integer.class, true));
           ejb.addCMPField(new CMPField("value", String.class, false));
  +        ejb.addCMPField(new CMPField("id", Integer.class, true));
           builder.setEJB(ejb);
           builder.setDataSource(ds);
           container = builder.createConfiguration();
  
  
  
  1.3       +12 -2     openejb/modules/core/src/test/org/openejb/entity/MockHome.java
  
  Index: MockHome.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/test/org/openejb/entity/MockHome.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- MockHome.java     11 Apr 2004 17:12:17 -0000      1.2
  +++ MockHome.java     12 Apr 2004 02:23:56 -0000      1.3
  @@ -48,8 +48,10 @@
   package org.openejb.entity;
   
   import java.rmi.RemoteException;
  +import java.util.Collection;
   import javax.ejb.EJBHome;
   import javax.ejb.FinderException;
  +import javax.ejb.CreateException;
   
   /**
    *
  @@ -57,7 +59,15 @@
    * @version $Revision$ $Date$
    */
   public interface MockHome extends EJBHome {
  -    MockRemote findByPrimaryKey(Integer i) throws FinderException, RemoteException;
  +    MockRemote create(Integer i, String value) throws CreateException, 
RemoteException;
  +
  +    MockRemote findByPrimaryKey(Integer o) throws FinderException, RemoteException;
   
       int intMethod(int i) throws RemoteException;
  +
  +    String singleSelect(Integer i) throws FinderException, RemoteException;
  +
  +    Collection multiSelect(Integer i) throws FinderException, RemoteException;
  +
  +    Collection multiObject(Integer i) throws FinderException, RemoteException;
   }
  
  
  
  1.3       +1 -3      
openejb/modules/core/src/test/org/openejb/entity/MockLocalHome.java
  
  Index: MockLocalHome.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/test/org/openejb/entity/MockLocalHome.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- MockLocalHome.java        11 Apr 2004 16:58:04 -0000      1.2
  +++ MockLocalHome.java        12 Apr 2004 02:23:56 -0000      1.3
  @@ -53,8 +53,6 @@
   import javax.ejb.FinderException;
   
   /**
  - *
  - *
    * @version $Revision$ $Date$
    */
   public interface MockLocalHome extends EJBLocalHome {
  
  
  
  1.2       +7 -1      openejb/modules/core/src/test/org/openejb/entity/MockRemote.java
  
  Index: MockRemote.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/test/org/openejb/entity/MockRemote.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MockRemote.java   13 Mar 2004 17:09:28 -0000      1.1
  +++ MockRemote.java   12 Apr 2004 02:23:56 -0000      1.2
  @@ -57,4 +57,10 @@
    */
   public interface MockRemote extends EJBObject {
       int intMethod(int i) throws RemoteException;
  +
  +    int getIntField() throws RemoteException;
  +
  +    String getValue() throws RemoteException;
  +
  +    void setValue(String value) throws RemoteException;
   }
  
  
  

Reply via email to