You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by th...@apache.org on 2003/03/14 21:07:45 UTC

cvs commit: db-ojb/src/test/org/apache/ojb/broker ObjectCacheTest.java

thma        2003/03/14 12:07:45

  Modified:    src/test/org/apache/ojb/broker ObjectCacheTest.java
  Log:
  add test for cache isolation
  
  Revision  Changes    Path
  1.2       +49 -9     db-ojb/src/test/org/apache/ojb/broker/ObjectCacheTest.java
  
  Index: ObjectCacheTest.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/ObjectCacheTest.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ObjectCacheTest.java	5 Mar 2003 23:52:08 -0000	1.1
  +++ ObjectCacheTest.java	14 Mar 2003 20:07:45 -0000	1.2
  @@ -1,27 +1,31 @@
   package org.apache.ojb.broker;
   
  +import java.io.Serializable;
  +
   import junit.framework.TestCase;
  +
  +import org.apache.ojb.broker.cache.CacheFilterClassImpl;
  +import org.apache.ojb.broker.cache.CacheFilterPackageImpl;
   import org.apache.ojb.broker.cache.MetaObjectCacheJCSImpl;
  +import org.apache.ojb.broker.cache.MetaObjectCachePerClassImpl;
   import org.apache.ojb.broker.cache.ObjectCache;
   import org.apache.ojb.broker.cache.ObjectCacheDefaultImpl;
   import org.apache.ojb.broker.cache.ObjectCacheEmptyImpl;
  +import org.apache.ojb.broker.cache.ObjectCacheFactory;
   import org.apache.ojb.broker.cache.ObjectCacheJCSImpl;
  -import org.apache.ojb.broker.cache.MetaObjectCachePerClassImpl;
   import org.apache.ojb.broker.cache.ObjectCachePerBrokerImpl;
  -import org.apache.ojb.broker.cache.ObjectCacheFactory;
  -import org.apache.ojb.broker.cache.CacheFilterPackageImpl;
  -import org.apache.ojb.broker.cache.CacheFilterClassImpl;
  -import org.apache.ojb.broker.util.configuration.impl.OjbConfiguration;
  -import org.apache.ojb.broker.util.configuration.impl.OjbConfigurator;
   import org.apache.ojb.broker.metadata.MetadataManager;
  +import org.apache.ojb.broker.query.QueryByIdentity;
   import org.apache.ojb.broker.sequence.SMKey;
  -
  -import java.io.Serializable;
  +import org.apache.ojb.broker.util.GUID;
  +import org.apache.ojb.broker.util.configuration.impl.OjbConfiguration;
  +import org.apache.ojb.broker.util.configuration.impl.OjbConfigurator;
   
   /**
    * Do some basic tests using ObjectCache implementations.
    *
    * @author <a href="mailto:armin@codeAuLait.de">Armin Waibel</a>
  + * @author <a href="mailto:thma@apache.org">Thomas Mahler</a>
    * @version $Id$
    */
   public class ObjectCacheTest extends TestCase
  @@ -138,6 +142,42 @@
                   if (broker != null) broker.close();
               }
           }
  +    }
  +
  +	/**
  +	 * This test checks if the caches of two different brokers are properly isolated.
  +	 * changes made to an object in tx1 should not be visible in tx2 !
  +	 */
  +    public void testCacheIsolation() throws Exception
  +    {
  +        Object[] pk = new Object[] { new Long(42)};
  +        Identity oid = new Identity(Article.class, pk);
  +        
  +        GUID guid = new GUID();        
  +
  +        PersistenceBroker broker1 = PersistenceBrokerFactory.defaultPersistenceBroker();
  +        broker1.beginTransaction();
  +
  +        Article a1 = (Article) broker1.getObjectByQuery(new QueryByIdentity(oid));
  +        String originalName = a1.getArticleName();
  +        a1.setArticleName(guid.toString());
  +
  +        // start a second transaction
  +        PersistenceBroker broker2 = PersistenceBrokerFactory.defaultPersistenceBroker();
  +        broker2.beginTransaction();
  +
  +        Article a2 = (Article) broker2.getObjectByQuery(new QueryByIdentity(oid));
  +        
  +        assertEquals(guid.toString(), a1.getArticleName());
  +        assertEquals(originalName, a2.getArticleName());
  +        assertNotSame(a1, a2);
  +        
  +
  +        broker1.commitTransaction();
  +		broker1.close();
  +		
  +        broker2.commitTransaction();
  +		broker2.close();
       }
   
       private void checkBaseFunctions() throws Exception