User: sparre  
  Date: 01/04/29 01:04:58

  Added:       src/main/org/jboss/test/cts/interfaces
                        UserTransactionTester.java
  Log:
  Another UserTransaction test.
  This will fail until stand-alone UserTransaction support is added
  to jBoss.
  
  Revision  Changes    Path
  1.1                  
jbosstest/src/main/org/jboss/test/cts/interfaces/UserTransactionTester.java
  
  Index: UserTransactionTester.java
  ===================================================================
  package org.jboss.test.cts.interfaces;
  
  
  import javax.ejb.*;
  
  import javax.transaction.Status;
  import javax.transaction.UserTransaction;
  import javax.transaction.RollbackException;
  
  import org.jboss.test.cts.keys.AccountPK;
  
  /**
   *  A utility class for testing UserTransaction in a stand-alone
   *  client, or a BMT enterprise bean.
   *  This is not part of any interface, just shared code used in
   *  client and server.
   *  This does not depend on JUnit, as JUnit is not available on the server.
   *
   *  @author <a href="mailto:[EMAIL PROTECTED]";>Ole Husgaard</a>
   *  @version $Revision: 1.1 $
   */
  public class UserTransactionTester
  {
     /**
      *  Home of entity used as a resource for testing.
      */
     private CtsBmpHome home;
  
     /**
      *  UserTransaction to test.
      */
     private UserTransaction ut;
  
     /**
      *  First resource for testing.
      */
     private CtsBmp bean1;
  
     /**
      *  Second resource for testing.
      */
     private CtsBmp bean2;
  
     /**
      *  Create a new UserTransaction test instance.
      */
     public UserTransactionTester(CtsBmpHome home,
                                  UserTransaction userTransaction)
     {
        this.home = home;
        this.ut = userTransaction;
     }
  
     /**
      *  Run all the UserTransaction tests.
      */
     public boolean runAllTests()
     {
        // No resource tests
        if (!testBeginRollback())
           return false;
        if (!testBeginCommit())
           return false;
        if (!testBeginSetrollbackonlyRollback())
           return false;
        if (!testBeginSetrollbackonlyCommit())
           return false;
  
        // Create first instance
        try {
           bean1 = home.create(new AccountPK("UT_TestBean1"), "Ole1");
        } catch (Exception ex) {
           ex.printStackTrace();
           return false;
        }
  
        // Single resource tests
        if (!testSingleRollback())
           return false;
        if (!testSingleCommit())
           return false;
        if (!testSingleSetrollbackonlyCommit())
           return false;
  
        // Can second instance be created in a tx that is rolled back?
        try {
           ut.begin();
           bean2 = home.create(new AccountPK("UT_TestBean2"), "Ole2");
           ut.rollback();
           
           // Should no longer exist
           boolean gotException = false;
           try {
              bean2.setPersonsName("Ole");
           } catch (Exception e) {
              gotException = true;
           }
           if (!gotException)
              throw new RuntimeException("Rollback didn't rollback create.");
        } catch (Exception ex) {
           ex.printStackTrace();
           return false;
        }
  
        // Create second instance
        try {
           bean2 = home.create(new AccountPK("UT_TestBean2"), "Ole2");
        } catch (Exception ex) {
           ex.printStackTrace();
           return false;
        }
  
        return true;
     }
  
     //
     //  No resource tests.
     //
  
     /**
      *  Simple begin/rollback test.
      */
     private boolean testBeginRollback()
     {
        try {
           if (ut.getStatus() != Status.STATUS_NO_TRANSACTION)
              throw new RuntimeException("No tx should be active.");
  
           ut.begin();
           if (ut.getStatus() != Status.STATUS_ACTIVE)
              throw new RuntimeException("New tx not active.");
           ut.rollback();
  
           if (ut.getStatus() != Status.STATUS_NO_TRANSACTION)
              throw new RuntimeException("No tx should be active.");
        } catch (Exception ex) {
           ex.printStackTrace();
           return false;
        }
        return true;
     }
  
     /**
      *  Simple begin/commit test.
      */
     private boolean testBeginCommit()
     {
        try {
           if (ut.getStatus() != Status.STATUS_NO_TRANSACTION)
              throw new RuntimeException("No tx should be active.");
  
           ut.begin();
           if (ut.getStatus() != Status.STATUS_ACTIVE)
              throw new RuntimeException("New tx not active.");
           ut.commit();
  
           if (ut.getStatus() != Status.STATUS_NO_TRANSACTION)
              throw new RuntimeException("No tx should be active.");
        } catch (Exception ex) {
           ex.printStackTrace();
           return false;
        }
        return true;
     }
  
     /**
      *  Simple begin/setRollbackOnly/rollback test.
      */
     private boolean testBeginSetrollbackonlyRollback()
     {
        try {
           if (ut.getStatus() != Status.STATUS_NO_TRANSACTION)
              throw new RuntimeException("No tx should be active.");
  
           ut.begin();
           if (ut.getStatus() != Status.STATUS_ACTIVE)
              throw new RuntimeException("New tx not active.");
           ut.setRollbackOnly();
           if (ut.getStatus() != Status.STATUS_MARKED_ROLLBACK)
              throw new RuntimeException("Tx not marked for rollback.");
           ut.rollback();
  
           if (ut.getStatus() != Status.STATUS_NO_TRANSACTION)
              throw new RuntimeException("No tx should be active.");
        } catch (Exception ex) {
           ex.printStackTrace();
           return false;
        }
        return true;
     }
  
     /**
      *  Simple begin/setRollbackOnly/commit test.
      */
     private boolean testBeginSetrollbackonlyCommit()
     {
        try {
           if (ut.getStatus() != Status.STATUS_NO_TRANSACTION)
              throw new RuntimeException("No tx should be active.");
  
           ut.begin();
           if (ut.getStatus() != Status.STATUS_ACTIVE)
              throw new RuntimeException("New tx not active.");
           ut.setRollbackOnly();
           if (ut.getStatus() != Status.STATUS_MARKED_ROLLBACK)
              throw new RuntimeException("Tx not marked for rollback.");
  
           boolean gotException = false;
           try {
              ut.commit();
           } catch (RollbackException rbe) {
              gotException = true;
           }
           if (!gotException)
              throw new RuntimeException("Didn't get expected RollbackException.");
  
           if (ut.getStatus() != Status.STATUS_NO_TRANSACTION)
              throw new RuntimeException("No tx should be active.");
        } catch (Exception ex) {
           ex.printStackTrace();
           return false;
        }
        return true;
     }
  
  
     //
     //  Single resource tests.
     //
  
     /**
      *  Tests if a rollback really rolls back.
      */
     private boolean testSingleRollback()
     {
        try {
           if (ut.getStatus() != Status.STATUS_NO_TRANSACTION)
              throw new RuntimeException("No tx should be active.");
  
           bean1.setPersonsName("Ole");
           if (!bean1.getPersonsName().equals("Ole"))
              throw new RuntimeException("Unable to set property.");
  
           ut.begin();
           if (ut.getStatus() != Status.STATUS_ACTIVE)
              throw new RuntimeException("New tx not active.");
           if (!bean1.getPersonsName().equals("Ole"))
              throw new RuntimeException("Property changes after begin.");
  
           bean1.setPersonsName("Peter");
           if (!bean1.getPersonsName().equals("Peter"))
               throw new RuntimeException("Unable to set property.");
  
           ut.rollback();
           if (!bean1.getPersonsName().equals("Ole"))
               throw new RuntimeException("Rollback doesn't work.");
  
  
           if (ut.getStatus() != Status.STATUS_NO_TRANSACTION)
              throw new RuntimeException("No tx should be active.");
        } catch (Exception ex) {
           ex.printStackTrace();
           return false;
        }
        return true;
     }
  
     /**
      *  Tests if a commit really commits.
      */
     private boolean testSingleCommit()
     {
        try {
           if (ut.getStatus() != Status.STATUS_NO_TRANSACTION)
              throw new RuntimeException("No tx should be active.");
  
           bean1.setPersonsName("Ole");
           if (!bean1.getPersonsName().equals("Ole"))
              throw new RuntimeException("Unable to set property.");
  
           ut.begin();
           if (ut.getStatus() != Status.STATUS_ACTIVE)
              throw new RuntimeException("New tx not active.");
           if (!bean1.getPersonsName().equals("Ole"))
              throw new RuntimeException("Property changes after begin.");
  
           bean1.setPersonsName("Peter");
           if (!bean1.getPersonsName().equals("Peter"))
               throw new RuntimeException("Unable to set property.");
  
           ut.commit();
           if (!bean1.getPersonsName().equals("Peter"))
               throw new RuntimeException("Property not set after commit.");
  
  
           if (ut.getStatus() != Status.STATUS_NO_TRANSACTION)
              throw new RuntimeException("No tx should be active.");
        } catch (Exception ex) {
           ex.printStackTrace();
           return false;
        }
        return true;
     }
  
     /**
      *  Tests if a setRollbackOnly really makes the transaction rollback.
      */
     private boolean testSingleSetrollbackonlyCommit()
     {
        try {
           if (ut.getStatus() != Status.STATUS_NO_TRANSACTION)
              throw new RuntimeException("No tx should be active.");
  
           bean1.setPersonsName("Ole");
           if (!bean1.getPersonsName().equals("Ole"))
              throw new RuntimeException("Unable to set property.");
  
           ut.begin();
           if (ut.getStatus() != Status.STATUS_ACTIVE)
              throw new RuntimeException("New tx not active.");
           if (!bean1.getPersonsName().equals("Ole"))
              throw new RuntimeException("Property changes after begin.");
  
           bean1.setPersonsName("Peter");
           if (!bean1.getPersonsName().equals("Peter"))
               throw new RuntimeException("Unable to set property.");
  
           ut.setRollbackOnly();
           if (ut.getStatus() != Status.STATUS_MARKED_ROLLBACK)
              throw new RuntimeException("Tx not marked for rollback.");
  
           boolean gotException = false;
           try {
              ut.commit();
           } catch (RollbackException rbe) {
              gotException = true;
           }
           if (!gotException)
              throw new RuntimeException("Didn't get expected RollbackException.");
  
           if (!bean1.getPersonsName().equals("Ole"))
               throw new RuntimeException("Didn't roll back.");
  
           if (ut.getStatus() != Status.STATUS_NO_TRANSACTION)
              throw new RuntimeException("No tx should be active.");
        } catch (Exception ex) {
           ex.printStackTrace();
           return false;
        }
        return true;
     }
  }
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to