You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2004/02/25 19:05:51 UTC
cvs commit: incubator-geronimo/modules/transaction/src/test/org/apache/geronimo/transaction TransactionManagerProxyTest.java
djencks 2004/02/25 10:05:51
Modified: modules/transaction/src/java/org/apache/geronimo/transaction
TransactionManagerProxy.java
modules/transaction/src/test/org/apache/geronimo/transaction/manager
MockResource.java
Added: modules/transaction/src/test/org/apache/geronimo/transaction/manager
XidImporterTest.java
modules/transaction/src/test/org/apache/geronimo/transaction
TransactionManagerProxyTest.java
Log:
a few simple tm tests
Revision Changes Path
1.5 +2 -2 incubator-geronimo/modules/transaction/src/java/org/apache/geronimo/transaction/TransactionManagerProxy.java
Index: TransactionManagerProxy.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/transaction/src/java/org/apache/geronimo/transaction/TransactionManagerProxy.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- TransactionManagerProxy.java 25 Feb 2004 09:58:19 -0000 1.4
+++ TransactionManagerProxy.java 25 Feb 2004 18:05:51 -0000 1.5
@@ -75,7 +75,7 @@
*/
public TransactionManagerProxy() {
this.delegate = new TransactionManagerImpl();
- this.importer = null;
+ this.importer = (XidImporter)delegate;
}
public void setTransactionTimeout(int timeout) throws SystemException {
1.3 +19 -1 incubator-geronimo/modules/transaction/src/test/org/apache/geronimo/transaction/manager/MockResource.java
Index: MockResource.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/transaction/src/test/org/apache/geronimo/transaction/manager/MockResource.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- MockResource.java 25 Feb 2004 09:58:19 -0000 1.2
+++ MockResource.java 25 Feb 2004 18:05:51 -0000 1.3
@@ -30,6 +30,9 @@
private Xid xid;
private MockResourceManager manager;
private int timeout = 0;
+ private boolean prepared;
+ private boolean committed;
+ private boolean rolledback;
public MockResource(MockResourceManager manager) {
this.manager = manager;
@@ -67,13 +70,16 @@
}
public int prepare(Xid xid) throws XAException {
+ prepared = true;
return 0;
}
public void commit(Xid xid, boolean onePhase) throws XAException {
+ committed = true;
}
public void rollback(Xid xid) throws XAException {
+ rolledback = true;
manager.forget(xid, this);
}
@@ -90,6 +96,18 @@
public Xid[] recover(int flag) throws XAException {
throw new UnsupportedOperationException();
+ }
+
+ public boolean isPrepared() {
+ return prepared;
+ }
+
+ public boolean isCommitted() {
+ return committed;
+ }
+
+ public boolean isRolledback() {
+ return rolledback;
}
}
1.1 incubator-geronimo/modules/transaction/src/test/org/apache/geronimo/transaction/manager/XidImporterTest.java
Index: XidImporterTest.java
===================================================================
/**
*
* Copyright 2004 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.geronimo.transaction.manager;
import javax.transaction.xa.Xid;
import javax.transaction.xa.XAResource;
import javax.transaction.xa.XAException;
import javax.transaction.Transaction;
import javax.transaction.Status;
import junit.framework.TestCase;
/**
*
*
* @version $Revision: 1.1 $ $Date: 2004/02/25 18:05:51 $
*
* */
public class XidImporterTest extends TestCase{
MockResourceManager rm1 = new MockResourceManager(true);
MockResource r1_1 = new MockResource(rm1);
MockResource r1_2 = new MockResource(rm1);
MockResourceManager rm2 = new MockResourceManager(true);
MockResource r2_1 = new MockResource(rm2);
MockResource r2_2 = new MockResource(rm2);
XidImporter tm = new TransactionManagerImpl();
XidFactory xidFactory = new XidFactory();
public void testImportXid() throws Exception {
Xid externalXid = xidFactory.createXid();
Transaction tx = tm.importXid(externalXid);
assertNotNull(tx);
assertEquals(Status.STATUS_ACTIVE, tx.getStatus());
}
public void testNoResourcesCommitOnePhase() throws Exception {
Xid externalXid = xidFactory.createXid();
Transaction tx = tm.importXid(externalXid);
tm.commit(tx, true);
assertEquals(Status.STATUS_NO_TRANSACTION, tx.getStatus());
}
public void testNoResourcesCommitTwoPhase() throws Exception {
Xid externalXid = xidFactory.createXid();
Transaction tx = tm.importXid(externalXid);
assertEquals(XAResource.XA_RDONLY, tm.prepare(tx));
assertEquals(Status.STATUS_NO_TRANSACTION, tx.getStatus());
}
public void testNoResourcesMarkRollback() throws Exception {
Xid externalXid = xidFactory.createXid();
Transaction tx = tm.importXid(externalXid);
tx.setRollbackOnly();
try {
tm.prepare(tx);
fail("should throw rollback exception in an XAException");
} catch (XAException e) {
}
assertEquals(Status.STATUS_NO_TRANSACTION, tx.getStatus());
}
public void testNoResourcesRollback() throws Exception {
Xid externalXid = xidFactory.createXid();
Transaction tx = tm.importXid(externalXid);
tm.rollback(tx);
assertEquals(Status.STATUS_NO_TRANSACTION, tx.getStatus());
}
public void testOneResourceOnePhaseCommit() throws Exception {
Xid externalXid = xidFactory.createXid();
Transaction tx = tm.importXid(externalXid);
tx.enlistResource(r1_1);
tx.delistResource(r1_1, XAResource.TMSUCCESS);
tm.commit(tx, true);
assertEquals(Status.STATUS_NO_TRANSACTION, tx.getStatus());
}
public void testOneResourceTwoPhaseCommit() throws Exception {
Xid externalXid = xidFactory.createXid();
Transaction tx = tm.importXid(externalXid);
tx.enlistResource(r1_1);
tx.delistResource(r1_1, XAResource.TMSUCCESS);
assertEquals(XAResource.XA_OK, tm.prepare(tx));
assertTrue(!r1_1.isCommitted());
assertTrue(r1_1.isPrepared());
assertTrue(!r1_1.isRolledback());
tm.commit(tx, false);
assertEquals(Status.STATUS_NO_TRANSACTION, tx.getStatus());
assertTrue(r1_1.isCommitted());
assertTrue(r1_1.isPrepared());
assertTrue(!r1_1.isRolledback());
}
public void testFourResourceTwoPhaseCommit() throws Exception {
Xid externalXid = xidFactory.createXid();
Transaction tx = tm.importXid(externalXid);
tx.enlistResource(r1_1);
tx.enlistResource(r1_2);
tx.enlistResource(r2_1);
tx.enlistResource(r2_2);
tx.delistResource(r1_1, XAResource.TMSUCCESS);
tx.delistResource(r1_2, XAResource.TMSUCCESS);
tx.delistResource(r2_1, XAResource.TMSUCCESS);
tx.delistResource(r2_2, XAResource.TMSUCCESS);
assertEquals(XAResource.XA_OK, tm.prepare(tx));
assertTrue(!r1_1.isCommitted() & !r1_2.isCommitted());
assertTrue(r1_1.isPrepared() ^ r1_2.isPrepared());
assertTrue(!r1_1.isRolledback() & !r1_2.isRolledback());
assertTrue(!r2_1.isCommitted() & !r2_2.isCommitted());
assertTrue(r2_1.isPrepared() ^ r2_2.isPrepared());
assertTrue(!r2_1.isRolledback() & !r2_2.isRolledback());
tm.commit(tx, false);
assertEquals(Status.STATUS_NO_TRANSACTION, tx.getStatus());
assertTrue((r1_1.isCommitted() & r1_1.isPrepared()) ^ (r1_2.isCommitted() & r1_2.isPrepared()));
assertTrue(!r1_1.isRolledback() & !r1_2.isRolledback());
assertTrue((r2_1.isCommitted() & r2_1.isPrepared()) ^ (r2_2.isCommitted() & r2_2.isPrepared()));
assertTrue(!r2_1.isRolledback() & !r2_2.isRolledback());
}
}
1.1 incubator-geronimo/modules/transaction/src/test/org/apache/geronimo/transaction/TransactionManagerProxyTest.java
Index: TransactionManagerProxyTest.java
===================================================================
/**
*
* Copyright 2004 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.geronimo.transaction;
import javax.transaction.RollbackException;
import javax.transaction.Status;
import javax.transaction.Transaction;
import javax.transaction.xa.XAResource;
import junit.framework.TestCase;
import org.apache.geronimo.transaction.manager.MockResource;
import org.apache.geronimo.transaction.manager.MockResourceManager;
/**
*
*
* @version $Revision: 1.1 $ $Date: 2004/02/25 18:05:51 $
*
* */
public class TransactionManagerProxyTest extends TestCase {
MockResourceManager rm1 = new MockResourceManager(true);
MockResource r1_1 = new MockResource(rm1);
MockResource r1_2 = new MockResource(rm1);
MockResourceManager rm2 = new MockResourceManager(true);
MockResource r2_1 = new MockResource(rm2);
MockResource r2_2 = new MockResource(rm2);
TransactionManagerProxy tm = new TransactionManagerProxy();
public void testNoResourcesCommit() throws Exception {
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
tm.begin();
assertEquals(Status.STATUS_ACTIVE, tm.getStatus());
tm.commit();
assertNull(tm.getTransaction());
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
tm.begin();
assertEquals(Status.STATUS_ACTIVE, tm.getStatus());
Transaction tx = tm.getTransaction();
assertNotNull(tx);
tx.commit();
assertNotNull(tm.getTransaction());
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
}
public void testNoResourcesMarkRollbackOnly() throws Exception {
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
tm.begin();
assertEquals(Status.STATUS_ACTIVE, tm.getStatus());
tm.getTransaction().setRollbackOnly();
assertEquals(Status.STATUS_MARKED_ROLLBACK, tm.getStatus());
try {
tm.commit();
fail("tx should roll back");
} catch (RollbackException e) {
//expected
}
assertNull(tm.getTransaction());
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
tm.begin();
assertEquals(Status.STATUS_ACTIVE, tm.getStatus());
Transaction tx = tm.getTransaction();
assertNotNull(tx);
tx.setRollbackOnly();
assertEquals(Status.STATUS_MARKED_ROLLBACK, tx.getStatus());
try {
tx.commit();
fail("tx should roll back");
} catch (RollbackException e) {
//expected
}
assertNotNull(tm.getTransaction());
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
}
public void testNoResoucesRollback() throws Exception {
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
tm.begin();
assertEquals(Status.STATUS_ACTIVE, tm.getStatus());
tm.rollback();
assertNull(tm.getTransaction());
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
tm.begin();
assertEquals(Status.STATUS_ACTIVE, tm.getStatus());
Transaction tx = tm.getTransaction();
assertNotNull(tx);
tx.rollback();
assertNotNull(tm.getTransaction());
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
//check rollback when marked rollback only
tm.begin();
assertEquals(Status.STATUS_ACTIVE, tm.getStatus());
tm.getTransaction().setRollbackOnly();
assertEquals(Status.STATUS_MARKED_ROLLBACK, tm.getStatus());
tm.rollback();
assertNull(tm.getTransaction());
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
}
public void testOneResourceCommit() throws Exception {
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
tm.begin();
Transaction tx = tm.getTransaction();
tx.enlistResource(r1_1);
tx.delistResource(r1_1, XAResource.TMSUCCESS);
tx.commit();
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
assertTrue(r1_1.isCommitted());
assertTrue(!r1_1.isPrepared());
assertTrue(!r1_1.isRolledback());
}
public void testOneResourceMarkedRollback() throws Exception {
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
tm.begin();
Transaction tx = tm.getTransaction();
tx.enlistResource(r1_1);
tx.setRollbackOnly();
tx.delistResource(r1_1, XAResource.TMSUCCESS);
try {
tx.commit();
fail("tx should roll back");
} catch (RollbackException e) {
//expected
}
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
assertTrue(!r1_1.isCommitted());
assertTrue(!r1_1.isPrepared());
assertTrue(r1_1.isRolledback());
}
public void testOneResourceRollback() throws Exception {
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
tm.begin();
Transaction tx = tm.getTransaction();
tx.enlistResource(r1_1);
tx.delistResource(r1_1, XAResource.TMSUCCESS);
tx.rollback();
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
assertTrue(!r1_1.isCommitted());
assertTrue(!r1_1.isPrepared());
assertTrue(r1_1.isRolledback());
}
public void testTwoResourceOneRMCommit() throws Exception {
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
tm.begin();
Transaction tx = tm.getTransaction();
tx.enlistResource(r1_1);
tx.delistResource(r1_1, XAResource.TMSUCCESS);
tx.enlistResource(r1_2);
tx.delistResource(r1_2, XAResource.TMSUCCESS);
tx.commit();
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
assertTrue(r1_1.isCommitted() ^ r1_2.isCommitted());
assertTrue(!r1_1.isPrepared() & !r1_2.isPrepared());
assertTrue(!r1_1.isRolledback() & !r1_2.isRolledback());
}
public void testTwoResourceOneRMMarkRollback() throws Exception {
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
tm.begin();
Transaction tx = tm.getTransaction();
tx.enlistResource(r1_1);
tx.delistResource(r1_1, XAResource.TMSUCCESS);
tx.enlistResource(r1_2);
tx.delistResource(r1_2, XAResource.TMSUCCESS);
tx.setRollbackOnly();
try {
tx.commit();
fail("tx should roll back");
} catch (RollbackException e) {
//expected
}
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
assertTrue(!r1_1.isCommitted() & !r1_2.isCommitted());
assertTrue(!r1_1.isPrepared() & !r1_2.isPrepared());
assertTrue(r1_1.isRolledback() ^ r1_2.isRolledback());
}
public void testTwoResourcesOneRMRollback() throws Exception {
tm.begin();
Transaction tx = tm.getTransaction();
tx.enlistResource(r1_1);
tx.delistResource(r1_1, XAResource.TMSUCCESS);
tx.enlistResource(r1_2);
tx.delistResource(r1_2, XAResource.TMSUCCESS);
tx.setRollbackOnly();
tx.rollback();
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
assertTrue(!r1_1.isCommitted() & !r1_2.isCommitted());
assertTrue(!r1_1.isPrepared() & !r1_2.isPrepared());
assertTrue(r1_1.isRolledback() ^ r1_2.isRolledback());
}
public void testFourResourceTwoRMCommit() throws Exception {
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
tm.begin();
Transaction tx = tm.getTransaction();
tx.enlistResource(r1_1);
tx.enlistResource(r1_2);
tx.enlistResource(r2_1);
tx.enlistResource(r2_2);
tx.delistResource(r1_1, XAResource.TMSUCCESS);
tx.delistResource(r1_2, XAResource.TMSUCCESS);
tx.delistResource(r2_1, XAResource.TMSUCCESS);
tx.delistResource(r2_2, XAResource.TMSUCCESS);
tx.commit();
assertEquals(Status.STATUS_NO_TRANSACTION, tm.getStatus());
assertTrue((r1_1.isCommitted() & r1_1.isPrepared()) ^ (r1_2.isCommitted() & r1_2.isPrepared()));
assertTrue(!r1_1.isRolledback() & !r1_2.isRolledback());
assertTrue((r2_1.isCommitted() & r2_1.isPrepared()) ^ (r2_2.isCommitted() & r2_2.isPrepared()));
assertTrue(!r2_1.isRolledback() & !r2_2.isRolledback());
}
}