use of javax.resource.spi.XATerminator in project teiid by teiid.
the class TestTransactionServer method setUp.
@Before
public void setUp() throws Exception {
server = new TransactionServerImpl();
xaTerminator = Mockito.mock(XATerminator.class);
tm = Mockito.mock(TransactionManager.class);
txn = Mockito.mock(javax.transaction.Transaction.class);
Mockito.stub(tm.getTransaction()).toReturn(txn);
Mockito.stub(tm.suspend()).toReturn(txn);
server.setXaTerminator(xaTerminator);
server.setTransactionManager(tm);
server.setWorkManager(new FakeWorkManager());
}
use of javax.resource.spi.XATerminator in project narayana by jbosstm.
the class SubordinateTestCase method testTwoPhaseCommitSyncWithRollbackOnlyViaXATerminatorWithSeparateSync.
@Test
public void testTwoPhaseCommitSyncWithRollbackOnlyViaXATerminatorWithSeparateSync() throws Exception {
final Xid xid = new XidImple(new Uid());
final Transaction t = SubordinationManager.getTransactionImporter().importTransaction(xid);
final TestSynchronization sync = new TestSynchronization();
t.registerSynchronization(sync);
t.setRollbackOnly();
final XATerminator xaTerminator = SubordinationManager.getXATerminator();
final XATerminatorExtensions xaTerminatorExtensions = (XATerminatorExtensions) xaTerminator;
xaTerminatorExtensions.beforeCompletion(xid);
try {
xaTerminator.prepare(xid);
} catch (XAException e) {
assertEquals(XAException.XA_RBROLLBACK, e.errorCode);
// expected - we tried to prepare a rollbackonly tx.
}
// no need to call rollback - the XA_RBROLLBACK code indicates its been done.
assertTrue(sync.isBeforeCompletionDone());
assertTrue(sync.isAfterCompletionDone());
assertEquals(javax.transaction.Status.STATUS_ROLLEDBACK, t.getStatus());
}
use of javax.resource.spi.XATerminator in project narayana by jbosstm.
the class SubordinateTestCase method testTwoPhaseCommitSyncViaXATerminatorWithSeparateSync.
@Test
public void testTwoPhaseCommitSyncViaXATerminatorWithSeparateSync() throws Exception {
final Xid xid = new XidImple(new Uid());
final Transaction t = SubordinationManager.getTransactionImporter().importTransaction(xid);
final TestSynchronization sync = new TestSynchronization();
t.registerSynchronization(sync);
final XATerminator xaTerminator = SubordinationManager.getXATerminator();
final XATerminatorExtensions xaTerminatorExtensions = (XATerminatorExtensions) xaTerminator;
xaTerminatorExtensions.beforeCompletion(xid);
assertEquals(XAResource.XA_RDONLY, xaTerminator.prepare(xid));
// don't call commit for read only case
assertTrue(sync.isBeforeCompletionDone());
assertTrue(sync.isAfterCompletionDone());
assertEquals(javax.transaction.Status.STATUS_COMMITTED, t.getStatus());
}
use of javax.resource.spi.XATerminator in project narayana by jbosstm.
the class SubordinateTestCase method testTwoPhaseCommitSyncWithRollbackOnlyViaXATerminator.
@Test
public void testTwoPhaseCommitSyncWithRollbackOnlyViaXATerminator() throws Exception {
final Xid xid = new XidImple(new Uid());
final Transaction t = SubordinationManager.getTransactionImporter().importTransaction(xid);
final TestSynchronization sync = new TestSynchronization();
t.registerSynchronization(sync);
t.setRollbackOnly();
final XATerminator xaTerminator = SubordinationManager.getXATerminator();
try {
xaTerminator.prepare(xid);
} catch (XAException e) {
assertEquals(XAException.XA_RBROLLBACK, e.errorCode);
// expected - we tried to prepare a rollbackonly tx.
}
// no need to call rollback - the XA_RBROLLBACK code indicates its been done.
assertFalse(sync.isBeforeCompletionDone());
assertTrue(sync.isAfterCompletionDone());
assertEquals(javax.transaction.Status.STATUS_ROLLEDBACK, t.getStatus());
}
use of javax.resource.spi.XATerminator in project narayana by jbosstm.
the class SubordinateTestCase method testOnePhaseCommitSyncWithRollbackOnlyViaXATerminatorWithSeparateSync.
@Test
public void testOnePhaseCommitSyncWithRollbackOnlyViaXATerminatorWithSeparateSync() throws Exception {
final Xid xid = new XidImple(new Uid());
final Transaction t = SubordinationManager.getTransactionImporter().importTransaction(xid);
final TestSynchronization sync = new TestSynchronization();
t.registerSynchronization(sync);
t.setRollbackOnly();
final XATerminator xaTerminator = SubordinationManager.getXATerminator();
final XATerminatorExtensions xaTerminatorExtensions = (XATerminatorExtensions) xaTerminator;
xaTerminatorExtensions.beforeCompletion(xid);
try {
xaTerminator.commit(xid, true);
((TransactionImple) t).doOnePhaseCommit();
fail("did not get expected rollback exception");
} catch (XAException e) {
assertEquals("javax.transaction.RollbackException", e.getCause().getClass().getName());
assertEquals(XAException.XA_RBROLLBACK, e.errorCode);
// expected - we tried to commit a rollbackonly tx.
}
assertTrue(sync.isBeforeCompletionDone());
assertTrue(sync.isAfterCompletionDone());
assertEquals(javax.transaction.Status.STATUS_ROLLEDBACK, t.getStatus());
}
Aggregations