Package org.jboss.cache.transaction

Source Code of org.jboss.cache.transaction.IsolationLevelNoneTest

package org.jboss.cache.transaction;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.jboss.cache.DummyTransactionManagerLookup;
import org.jboss.cache.Fqn;
import org.jboss.cache.TreeCache;
import org.jboss.cache.lock.IsolationLevel;

import javax.transaction.NotSupportedException;
import javax.transaction.SystemException;
import javax.transaction.Transaction;

/**
* Tests whether modifications within callbacks (TreeCacheListener) are handled correctly
* @author Bela Ban
* @version $Id: IsolationLevelNoneTest.java 3100 2006-12-06 11:44:22Z msurtani $
*/
public class IsolationLevelNoneTest extends TestCase {
   TreeCache cache=null;
   final Fqn FQN=Fqn.fromString("/a/b/c");
   final String KEY="key";
   final String VALUE="value";
   Transaction tx;



   protected void setUp() throws Exception {
      super.setUp();
   }

   protected void tearDown() throws Exception {
      super.tearDown();
      if(cache != null) {
         cache.stopService();
         cache.destroyService();
         cache=null;
      }
   }



   public void testWithoutTransactions() throws Exception {
      cache=new TreeCache();
      cache.setCacheMode(TreeCache.LOCAL);
      cache.setIsolationLevel(IsolationLevel.NONE);
      cache.startService();
      cache.put(FQN, KEY, VALUE);
      cache.put(FQN + "/d", KEY, VALUE);
      assertTrue(cache.exists(FQN, KEY));
      assertEquals(VALUE, cache.get(FQN, KEY));
      System.out.println("cache: " + cache.toString(true) + ", locks: " + cache.printLockInfo());
      assertEquals(0, cache.getNumberOfLocksHeld());
   }

   public void testWithTransactions() throws Exception {
      cache=new TreeCache();
      cache.setCacheMode(TreeCache.LOCAL);
      cache.setIsolationLevel(IsolationLevel.NONE);
      cache.setTransactionManagerLookup(new DummyTransactionManagerLookup());
      cache.startService();
      tx=startTransaction();
      cache.put(FQN, KEY, VALUE);
      cache.put(FQN + "/d", KEY, VALUE);
      assertTrue(cache.exists(FQN, KEY));
      assertEquals(VALUE, cache.get(FQN, KEY));
      System.out.println("cache: " + cache.toString(true) + ", locks: " + cache.printLockInfo());
      assertEquals(0, cache.getNumberOfLocksHeld());
      tx.commit();
   }


   public void testWithTransactionsRepeatableRead() throws Exception {
      cache=new TreeCache();
      cache.setCacheMode(TreeCache.LOCAL);
      cache.setIsolationLevel(IsolationLevel.REPEATABLE_READ);
      cache.setTransactionManagerLookup(new DummyTransactionManagerLookup());
      cache.startService();
      tx=startTransaction();
      cache.put(FQN, KEY, VALUE);
      cache.put(FQN + "/d", KEY, VALUE);
      assertTrue(cache.exists(FQN, KEY));
      assertEquals(VALUE, cache.get(FQN, KEY));
      System.out.println("cache: " + cache.toString(true) + ", locks: " + cache.printLockInfo());
      assertEquals(5, cache.getNumberOfLocksHeld());
      tx.commit();
   }

   private Transaction startTransaction() throws SystemException, NotSupportedException {
      DummyTransactionManager mgr=DummyTransactionManager.getInstance();
      mgr.begin();
      return mgr.getTransaction();
   }

   public static Test suite() {
      return new TestSuite(IsolationLevelNoneTest.class);
   }



}
TOP

Related Classes of org.jboss.cache.transaction.IsolationLevelNoneTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.