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 an...@apache.org on 2015/08/26 11:19:17 UTC
svn commit: r1697862 - in /db/jdo/trunk/tck/src: conf/pm.conf
java/org/apache/jdo/tck/api/persistencemanager/close/AutoCloseable.java
java/org/apache/jdo/tck/api/persistencemanager/close/CloseWithActiveTxRollsBack.java
Author: andyj
Date: Wed Aug 26 09:19:16 2015
New Revision: 1697862
URL: http://svn.apache.org/r1697862
Log:
JDO-735 Add 2 new tests for PM close, and disabled previous JDO <= 3.1 test for PM.close
Added:
db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanager/close/AutoCloseable.java
db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanager/close/CloseWithActiveTxRollsBack.java
Modified:
db/jdo/trunk/tck/src/conf/pm.conf
Modified: db/jdo/trunk/tck/src/conf/pm.conf
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/conf/pm.conf?rev=1697862&r1=1697861&r2=1697862&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/conf/pm.conf (original)
+++ db/jdo/trunk/tck/src/conf/pm.conf Wed Aug 26 09:19:16 2015
@@ -63,10 +63,11 @@ org.apache.jdo.tck.api.persistencemanage
org.apache.jdo.tck.api.persistencemanager.cache.RefreshSideEffects \
org.apache.jdo.tck.api.persistencemanager.cache.Retrieve \
org.apache.jdo.tck.api.persistencemanager.close.AfterCloseAllMethodsThrowException \
-org.apache.jdo.tck.api.persistencemanager.close.CloseThrowsExceptionWhenActiveTx \
org.apache.jdo.tck.api.persistencemanager.close.IsClosedIsFalseUponConstruction \
org.apache.jdo.tck.api.persistencemanager.close.IsClosedIsFalseUponRetrievalFromPool \
org.apache.jdo.tck.api.persistencemanager.close.IsClosedIsTrueAfterClose \
+org.apache.jdo.tck.api.persistencemanager.close.CloseWithActiveTxRollsBack \
+org.apache.jdo.tck.api.persistencemanager.close.AutoCloseable \
org.apache.jdo.tck.api.persistencemanager.extent.GetExtentWithInstancesMadePersistentViaReachability \
org.apache.jdo.tck.api.persistencemanager.extent.GetExtentWithNoSubclasses \
org.apache.jdo.tck.api.persistencemanager.extent.GetExtentWithSubclasses \
Added: db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanager/close/AutoCloseable.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanager/close/AutoCloseable.java?rev=1697862&view=auto
==============================================================================
--- db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanager/close/AutoCloseable.java (added)
+++ db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanager/close/AutoCloseable.java Wed Aug 26 09:19:16 2015
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.close;
+
+import javax.jdo.JDOUserException;
+import javax.jdo.PersistenceManager;
+import javax.jdo.Transaction;
+
+import org.apache.jdo.tck.api.persistencemanager.PersistenceManagerTest;
+import org.apache.jdo.tck.util.BatchTestRunner;
+
+/**
+ *<B>Title:</B> AutoCloseable
+ *<BR>
+ *<B>Keywords:</B> exception
+ *<BR>
+ *<B>Assertion IDs:</B> A12.6 ?.
+ *<BR>
+ *<B>Assertion Description: </B>
+In a non-managed environment, if the PM is created with try-with-resources then it is automatically closed at the end of that block.
+ */
+
+public class AutoCloseable extends PersistenceManagerTest {
+
+ /** */
+ private static final String ASSERTION_FAILED =
+ "Assertion A12.6-? (AutoCloseable) 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(AutoCloseable.class);
+ }
+
+ /** */
+ public void test() {
+
+ try (PersistenceManager pm1 = getPM())
+ {
+ pm = pm1;
+ assertFalse(pm.isClosed());
+ }
+
+ assertTrue(pm.isClosed());
+ }
+}
Added: db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanager/close/CloseWithActiveTxRollsBack.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanager/close/CloseWithActiveTxRollsBack.java?rev=1697862&view=auto
==============================================================================
--- db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanager/close/CloseWithActiveTxRollsBack.java (added)
+++ db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/persistencemanager/close/CloseWithActiveTxRollsBack.java Wed Aug 26 09:19:16 2015
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.close;
+
+import javax.jdo.JDOObjectNotFoundException;
+import javax.jdo.JDOUserException;
+import javax.jdo.PersistenceManager;
+import javax.jdo.Transaction;
+
+import org.apache.jdo.tck.api.persistencemanager.PersistenceManagerTest;
+import org.apache.jdo.tck.pc.mylib.PCPoint;
+import org.apache.jdo.tck.util.BatchTestRunner;
+
+/**
+ *<B>Title:</B> Close Throws Exception
+ *<BR>
+ *<B>Keywords:</B> exception
+ *<BR>
+ *<B>Assertion IDs:</B> A12.6-2.
+ *<BR>
+ *<B>Assertion Description: </B>
+In a non-managed environment, if the current transaction is active, close will roll back the transaction.
+ */
+
+public class CloseWithActiveTxRollsBack extends PersistenceManagerTest {
+
+ /** */
+ private static final String ASSERTION_FAILED =
+ "Assertion A12.6-2 (CloseWithActiveTxRollsBack) 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(CloseWithActiveTxRollsBack.class);
+ }
+
+ /** */
+ public void test() {
+ pm = getPM();
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ Object id = null;
+ try {
+ PCPoint pc = new PCPoint(101, 200);
+ pm.makePersistent(pc);
+ id = pm.getObjectId(pc);
+
+ // This should rollback the transaction
+ pm.close();
+
+ assertFalse(tx.isActive());
+ assertTrue(pm.isClosed());
+ }
+ finally {
+ pm = null;
+ PersistenceManager pm2 = getPM();
+ pm2.currentTransaction().begin();
+ try {
+ try {
+ pm2.getObjectById(id);
+ fail("Object was persisted despite closing the PM. Active transaction should have rolled back");
+ }
+ catch (JDOObjectNotFoundException onfe) {
+ // Expected, since rolled back
+ }
+ }
+ finally {
+ if (pm2.currentTransaction().isActive()) {
+ pm2.currentTransaction().rollback();
+ }
+ pm2.close();
+ pm = null;
+ }
+ }
+ }
+}