You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by cl...@apache.org on 2006/03/08 21:02:56 UTC

svn commit: r384312 - in /db/jdo/trunk/tck20/src: conf/pm.conf java/org/apache/jdo/tck/api/persistencemanager/DataStoreCacheTest.java

Author: clr
Date: Wed Mar  8 12:02:55 2006
New Revision: 384312

URL: http://svn.apache.org/viewcvs?rev=384312&view=rev
Log:
JDO-190 Added test for DataStoreCache

Added:
    db/jdo/trunk/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/DataStoreCacheTest.java
Modified:
    db/jdo/trunk/tck20/src/conf/pm.conf

Modified: db/jdo/trunk/tck20/src/conf/pm.conf
URL: http://svn.apache.org/viewcvs/db/jdo/trunk/tck20/src/conf/pm.conf?rev=384312&r1=384311&r2=384312&view=diff
==============================================================================
--- db/jdo/trunk/tck20/src/conf/pm.conf (original)
+++ db/jdo/trunk/tck20/src/conf/pm.conf Wed Mar  8 12:02:55 2006
@@ -8,6 +8,7 @@
 org.apache.jdo.tck.api.persistencemanager.ConcurrentPersistenceManagers \
 org.apache.jdo.tck.api.persistencemanager.ConcurrentPersistenceManagersSameClasses \
 org.apache.jdo.tck.api.persistencemanager.CurrentTransaction \
+org.apache.jdo.tck.api.persistencemanager.DataStoreCacheTest \
 org.apache.jdo.tck.api.persistencemanager.DeletePersistent \
 org.apache.jdo.tck.api.persistencemanager.DeletePersistentAllFails \
 org.apache.jdo.tck.api.persistencemanager.DeletePersistentFailsIfInstanceIsTransient \

Added: db/jdo/trunk/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/DataStoreCacheTest.java
URL: http://svn.apache.org/viewcvs/db/jdo/trunk/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/DataStoreCacheTest.java?rev=384312&view=auto
==============================================================================
--- db/jdo/trunk/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/DataStoreCacheTest.java (added)
+++ db/jdo/trunk/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/DataStoreCacheTest.java Wed Mar  8 12:02:55 2006
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at 
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software 
+ * distributed under the License is distributed on an "AS IS" BASIS, 
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ */
+
+package org.apache.jdo.tck.api.persistencemanager;
+
+import java.util.Collection;
+import java.util.HashSet;
+
+import javax.jdo.datastore.DataStoreCache;
+
+import org.apache.jdo.tck.pc.mylib.PCPoint;
+
+import org.apache.jdo.tck.util.BatchTestRunner;
+
+/**
+ * <B>Title:</B> DataStoreCacheTest
+ * <BR>
+ * <B>Keywords:</B> DataStoreCache cache pin unpin evict
+ * <BR>
+ * <B>Assertion ID:</B> A11.8
+ * <BR>
+ * <B>Assertion Description: </B>
+Most JDO implementations allow instances 
+to be cached in a second-level cache, and allow 
+direct management of the cache by knowledgeable 
+applications. The second-level cache is 
+typically a single VM cache and is used for 
+persistent instances associated with a single 
+PersistenceManagerFactory. For the purpose 
+of standardizing this behavior, the 
+DataStoreCache interface is used.
+ */
+
+public class DataStoreCacheTest extends PersistenceManagerTest {
+
+    Object pointoid;
+    Collection pointoidCollection;
+    Object[] pointoidArray;
+    
+    /** */
+    private static final String ASSERTION_FAILED = 
+        "Assertion A11.8 (DataStoreCacheTest) failed: ";
+    
+    /**
+     * The <code>main</code> is called when the class
+     * is directly executed from the command line.
+     * @param args The arguments passed to the program.
+     */
+    public static void main(String[] args) {
+        BatchTestRunner.run(DataStoreCacheTest.class);
+    }
+    
+    /**
+     * In setup, create a persistent instance and get its oid.
+     * The oid is a valid parameter to the cache APIs. 
+     */
+    protected void localSetUp() {
+        addTearDownClass(PCPoint.class);
+        PCPoint point = new PCPoint(50, 100);
+        getPM().currentTransaction().begin();
+        pm.makePersistent(point);
+        pointoid = pm.getObjectId(point);
+        pointoidCollection = new HashSet();
+        pointoidCollection.add(pointoid);
+        pointoidArray = new Object[] {pointoid};
+        pm.currentTransaction().commit();
+    }
+
+    /** 
+     * There is no mandated behavior of the DataStoreCache
+     * methods. This test makes sure that the instance
+     * returned does not throw exceptions on any method.
+     */
+    public void testDataStoreCache() {
+        DataStoreCache ds = getPMF().getDataStoreCache();
+        ds.evict(pointoid);
+        ds.evictAll();
+        ds.evictAll(pointoidCollection);
+        ds.evictAll(pointoidArray);
+        ds.evictAll(PCPoint.class, true);
+        ds.pin(pointoid);
+        ds.unpin(pointoid);
+        ds.pinAll(pointoidCollection);
+        ds.unpinAll(pointoidCollection);
+        ds.pinAll(pointoidArray);
+        ds.unpinAll(pointoidArray);
+        ds.pinAll(PCPoint.class, true);
+        ds.unpinAll(PCPoint.class, true);
+    }
+}