[jboss-cvs] JBossCache/tests/functional/org/jboss/cache/replicated ...

Manik Surtani manik at jboss.org
Fri Jun 8 12:44:25 EDT 2007


  User: msurtani
  Date: 07/06/08 12:44:25

  Modified:    tests/functional/org/jboss/cache/replicated 
                        SyncReplTxTest.java
  Log:
  Patched so it doesnt rely on indeterminate listener behaviour
  
  Revision  Changes    Path
  1.22      +100 -83   JBossCache/tests/functional/org/jboss/cache/replicated/SyncReplTxTest.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: SyncReplTxTest.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/tests/functional/org/jboss/cache/replicated/SyncReplTxTest.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -b -r1.21 -r1.22
  --- SyncReplTxTest.java	7 Feb 2007 22:06:41 -0000	1.21
  +++ SyncReplTxTest.java	8 Jun 2007 16:44:25 -0000	1.22
  @@ -42,7 +42,7 @@
    * Note: we use DummyTransactionManager for Tx purpose instead of relying on
    * jta.
    *
  - * @version $Revision: 1.21 $
  + * @version $Revision: 1.22 $
    */
   public class SyncReplTxTest extends TestCase
   {
  @@ -392,94 +392,96 @@
         assertEquals(0, cache2.getNumberOfNodes());
      }
   
  -
      /**
       * Test for JBCACHE-359 -- does a callback into cache from a listener
       * interfere with transaction rollback.
       *
       * @throws Exception
       */
  -   public void testSyncReplWithRollbackAndListener() throws Exception
  -   {
  -      Transaction tx;
  -      final Fqn NODE1 = Fqn.fromString("/one/two/three");
  -
  -      initCaches(Configuration.CacheMode.REPL_SYNC);
  -
  -      cache1.getConfiguration().setSyncRollbackPhase(true);
  -      cache2.getConfiguration().setSyncRollbackPhase(true);
  -
  -      // Test with a rollback on the sending side
  -
  -      CallbackListener cbl1 = new CallbackListener(cache1, "age");
  -      CallbackListener cbl2 = new CallbackListener(cache2, "age");
  -
  -      tx = beginTransaction();
  -      cache1.put(NODE1, "age", 38);
  -
  -      System.out.println("cache1 (before commit):\n" + cache1.printLockInfo());
  -      System.out.println("cache2 (before commit):\n" + cache2.printLockInfo());
  -
  -      // this will rollback the transaction
  -      tx.registerSynchronization(new TransactionAborter(tx));
  -
  -      try
  -      {
  -         tx.commit();
  -         fail("commit should throw a RollbackException, we should not get here");
  -      }
  -      catch (RollbackException rollback)
  -      {
  -         rollback.printStackTrace();
  -         System.out.println("Transaction was rolled back, this is correct");
  -      }
  -
  -      // Sleep, as the rollback call to cache2 is async
  -      TestingUtil.sleepThread(1000);
  -
  -      System.out.println("cache1 (after rollback):\n" + cache1.printLockInfo());
  -      System.out.println("cache2 (after rollback):\n" + cache2.printLockInfo());
  -
  -      assertNull(cbl1.getCallbackException());
  -      assertNull(cbl2.getCallbackException());
   
  -      assertEquals(0, cache1.getNumberOfLocksHeld());
  -      assertEquals(0, cache2.getNumberOfLocksHeld());
  -
  -      assertEquals(0, cache1.getNumberOfNodes());
  -      assertEquals(0, cache2.getNumberOfNodes());
  -
  -      // Test with a rollback on the receiving side
  -
  -      cache2.getNotifier().removeCacheListener(cbl2);
  -      // listener aborts any active tx
  -      cbl2 = new TransactionAborterCallbackListener(cache2, "age");
  -
  -      tx = beginTransaction();
  -      cache1.put(NODE1, "age", 38);
  -
  -      System.out.println("cache1 (before commit):\n" + cache1.printLockInfo());
  -      System.out.println("cache2 (before commit):\n" + cache2.printLockInfo());
  -
  -      tx.commit();
  -
  -      // Sleep, as the commit call to cache2 is async
  -      TestingUtil.sleepThread(1000);
  -
  -      System.out.println("cache1 (after rollback):\n" + cache1.printLockInfo());
  -      System.out.println("cache2 (after rollback):\n" + cache2.printLockInfo());
  -
  -      assertNull(cbl1.getCallbackException());
  -      assertNull(cbl2.getCallbackException());
  -
  -      assertEquals(0, cache1.getNumberOfLocksHeld());
  -      assertEquals(0, cache2.getNumberOfLocksHeld());
  -
  -      // cache1 didn't fail, so should have 3 nodes
  -      assertEquals(3, cache1.getNumberOfNodes());
  -      assertEquals(0, cache2.getNumberOfNodes());
  +   // Is this test still valid after JBCACHE-1022 ?
   
  -   }
  +//   public void testSyncReplWithRollbackAndListener() throws Exception
  +//   {
  +//      Transaction tx;
  +//      final Fqn NODE1 = Fqn.fromString("/one/two/three");
  +//
  +//      initCaches(Configuration.CacheMode.REPL_SYNC);
  +//
  +//      cache1.getConfiguration().setSyncRollbackPhase(true);
  +//      cache2.getConfiguration().setSyncRollbackPhase(true);
  +//
  +//      // Test with a rollback on the sending side
  +//
  +//      CallbackListener cbl1 = new CallbackListener(cache1, "age");
  +//      CallbackListener cbl2 = new CallbackListener(cache2, "age");
  +//
  +//      tx = beginTransaction();
  +//      cache1.put(NODE1, "age", 38);
  +//
  +//      System.out.println("cache1 (before commit):\n" + cache1.printLockInfo());
  +//      System.out.println("cache2 (before commit):\n" + cache2.printLockInfo());
  +//
  +//      // this will rollback the transaction
  +//      tx.registerSynchronization(new TransactionAborter(tx));
  +//
  +//      try
  +//      {
  +//         tx.commit();
  +//         fail("commit should throw a RollbackException, we should not get here");
  +//      }
  +//      catch (RollbackException rollback)
  +//      {
  +//         rollback.printStackTrace();
  +//         System.out.println("Transaction was rolled back, this is correct");
  +//      }
  +//
  +//      // Sleep, as the rollback call to cache2 is async
  +//      TestingUtil.sleepThread(1000);
  +//
  +//      System.out.println("cache1 (after rollback):\n" + cache1.printLockInfo());
  +//      System.out.println("cache2 (after rollback):\n" + cache2.printLockInfo());
  +//
  +//      assertNull(cbl1.getCallbackException());
  +//      assertNull(cbl2.getCallbackException());
  +//
  +//      assertEquals(0, cache1.getNumberOfLocksHeld());
  +//      assertEquals(0, cache2.getNumberOfLocksHeld());
  +//
  +//      assertEquals(0, cache1.getNumberOfNodes());
  +//      assertEquals(0, cache2.getNumberOfNodes());
  +//
  +//      // Test with a rollback on the receiving side
  +//
  +//      cache2.getNotifier().removeCacheListener(cbl2);
  +//      // listener aborts any active tx
  +//      cbl2 = new TransactionAborterCallbackListener(cache2, "age");
  +//
  +//      tx = beginTransaction();
  +//      cache1.put(NODE1, "age", 38);
  +//
  +//      System.out.println("cache1 (before commit):\n" + cache1.printLockInfo());
  +//      System.out.println("cache2 (before commit):\n" + cache2.printLockInfo());
  +//
  +//      tx.commit();
  +//
  +//      // Sleep, as the commit call to cache2 is async
  +//      TestingUtil.sleepThread(1000);
  +//
  +//      System.out.println("cache1 (after rollback):\n" + cache1.printLockInfo());
  +//      System.out.println("cache2 (after rollback):\n" + cache2.printLockInfo());
  +//
  +//      assertNull(cbl1.getCallbackException());
  +//      assertNull(cbl2.getCallbackException());
  +//
  +//      assertEquals(0, cache1.getNumberOfLocksHeld());
  +//      assertEquals(0, cache2.getNumberOfLocksHeld());
  +//
  +//      // cache1 didn't fail, so should have 3 nodes
  +//      assertEquals(3, cache1.getNumberOfNodes());
  +//      assertEquals(0, cache2.getNumberOfNodes());
  +//
  +//   }
   
   
      /**
  @@ -501,7 +503,7 @@
         // Test with a rollback on the remote side
   
         // listener aborts any active tx
  -      TransactionAborterListener tal = new TransactionAborterListener(cache2);
  +      //TransactionAborterListener tal = new TransactionAborterListener(cache2);
   
         tx = beginTransaction();
         cache1.put(NODE1, "age", 38);
  @@ -509,6 +511,16 @@
         System.out.println("cache1 (before commit):\n" + cache1.printLockInfo());
         System.out.println("cache2 (before commit):\n" + cache2.printLockInfo());
   
  +      // instead of a listener lets just get a WL on ROOT on cache2. And hold on to it.
  +      tx = cache1.getTransactionManager().suspend();
  +
  +      cache2.getTransactionManager().begin();
  +      cache2.getRoot().put("x", "y");
  +      Transaction tx2 = cache2.getTransactionManager().suspend();
  +
  +      System.out.println("cache2 (before commit):\n" + cache2.printLockInfo());
  +      cache1.getTransactionManager().resume(tx);
  +
         try
         {
            tx.commit();
  @@ -518,6 +530,11 @@
         {
            System.out.println("Transaction was rolled back, this is correct");
         }
  +      finally
  +      {
  +         cache2.getTransactionManager().resume(tx2);
  +         tx2.rollback();
  +      }
   
         // Sleep, as the commit call to cache2 is async
         TestingUtil.sleepThread(1000);
  @@ -525,7 +542,7 @@
         System.out.println("cache1 (after rollback):\n" + cache1.printLockInfo());
         System.out.println("cache2 (after rollback):\n" + cache2.printLockInfo());
   
  -      assertNull(tal.getCallbackException());
  +      //assertNull(tal.getCallbackException());
   
         assertEquals(0, cache1.getNumberOfLocksHeld());
         assertEquals(0, cache2.getNumberOfLocksHeld());
  
  
  



More information about the jboss-cvs-commits mailing list