Search in sources :

Example 1 with TransactionManagerDelegate

use of com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate in project narayana by jbosstm.

the class TransactionListenerRegistryTest method testIllegalCommit.

@Test
public void testIllegalCommit() throws SystemException, TransactionTypeNotSupported, NotSupportedException, HeuristicRollbackException, HeuristicMixedException, RollbackException {
    TransactionManager tm = new TransactionManagerDelegate();
    runTxn(tm);
    try {
        tm.commit();
        fail("Commit finished transaction should have failed");
    } catch (IllegalStateException e) {
    }
}
Also used : TransactionManagerDelegate(com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate) TransactionManager(javax.transaction.TransactionManager) Test(org.junit.Test)

Example 2 with TransactionManagerDelegate

use of com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate in project narayana by jbosstm.

the class TransactionListenerRegistryTest method testIllegalRollback.

@Test
public void testIllegalRollback() throws SystemException, TransactionTypeNotSupported, NotSupportedException, HeuristicRollbackException, HeuristicMixedException, RollbackException {
    TransactionManager tm = new TransactionManagerDelegate();
    runTxn(tm);
    try {
        tm.rollback();
        fail("Rollback finished transaction should have failed");
    } catch (IllegalStateException e) {
    }
}
Also used : TransactionManagerDelegate(com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate) TransactionManager(javax.transaction.TransactionManager) Test(org.junit.Test)

Example 3 with TransactionManagerDelegate

use of com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate in project narayana by jbosstm.

the class TransactionListenerRegistryTest method testLifecycle.

@Test
public void testLifecycle() throws SystemException, TransactionTypeNotSupported, NotSupportedException, HeuristicRollbackException, HeuristicMixedException, RollbackException {
    TransactionManager tm = new TransactionManagerDelegate();
    EnumSet<EventType> log = runTxn(tm);
    assertTrue(log.containsAll(EnumSet.of(EventType.ASSOCIATED, EventType.DISASSOCIATING)));
}
Also used : TransactionManagerDelegate(com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate) TransactionManager(javax.transaction.TransactionManager) Test(org.junit.Test)

Example 4 with TransactionManagerDelegate

use of com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate in project narayana by jbosstm.

the class TransactionListenerRegistryTest method testResume.

@Test
public void testResume() throws SystemException, InvalidTransactionException {
    TransactionManager tm = new TransactionManagerDelegate();
    // JBTM-2385 used to cause an NPE
    tm.resume(null);
}
Also used : TransactionManagerDelegate(com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate) TransactionManager(javax.transaction.TransactionManager) Test(org.junit.Test)

Example 5 with TransactionManagerDelegate

use of com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate in project narayana by jbosstm.

the class TransactionListenerRegistryTest method test.

@Test
public void test() throws SystemException, NotSupportedException, RollbackException, TransactionTypeNotSupported, InterruptedException, InvalidTransactionException, HeuristicRollbackException, HeuristicMixedException {
    TransactionManager tm = new TransactionManagerDelegate();
    ServerVMClientUserTransaction userTransaction = new ServerVMClientUserTransaction(tm);
    userTransaction.setTransactionTimeout(1);
    for (CompletionType completionType : CompletionType.values()) {
        TransactionListenerRegistry listenerRegistration = (TransactionListenerRegistry) tm;
        userTransaction.begin();
        // The TSR for interposed synchronizations
        final TransactionSynchronizationRegistry tsr = new TransactionSynchronizationRegistryImple();
        final TxListener listener = new TxListener(listenerRegistration);
        if (completionType != CompletionType.CMTSUSPEND) {
            tsr.registerInterposedSynchronization(listener);
        } else {
            tm.getTransaction().registerSynchronization(listener);
        }
        listenerRegistration.addListener(tm.getTransaction(), listener, EnumSet.allOf(EventType.class));
        if (completionType == CompletionType.CMTSUSPEND) {
            Transaction suspended = tm.suspend();
            Thread.sleep(2000);
            assertTrue(listener.shouldDisassoc());
            tm.resume(suspended);
        } else {
            Thread.sleep(2000);
            assertFalse(listener.shouldDisassoc());
        }
        assertTrue(listener.singleCallAC());
        assertTrue(Status.STATUS_ROLLEDBACK == userTransaction.getStatus());
        // https://community.jboss.org/thread/92489
        if (completionType == CompletionType.BMTCOMMIT) {
            try {
                userTransaction.commit();
                fail("Should not have been able to commit");
            } catch (RollbackException e) {
            }
        } else if (completionType == CompletionType.BMTROLLBACK) {
            userTransaction.rollback();
        } else if (completionType == CompletionType.CMT) {
            // This is possible in CMT mode
            // If they did check the status, it is still expected that a CMT
            // calls suspend at least when a tx is marked as completed to
            // clear
            // it from the thread
            tm.suspend();
        }
        assertTrue(listener.singleCallAC());
        if (completionType == CompletionType.CMTSUSPEND) {
            assertFalse(listener.shouldDisassoc());
        } else {
            assertTrue(listener.shouldDisassoc());
        }
        assertTrue(listener.isClosed());
    }
}
Also used : ServerVMClientUserTransaction(org.jboss.tm.usertx.client.ServerVMClientUserTransaction) TransactionSynchronizationRegistryImple(com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple) TransactionManagerDelegate(com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate) Transaction(javax.transaction.Transaction) ServerVMClientUserTransaction(org.jboss.tm.usertx.client.ServerVMClientUserTransaction) TransactionManager(javax.transaction.TransactionManager) TransactionSynchronizationRegistry(javax.transaction.TransactionSynchronizationRegistry) TxListener(com.arjuna.ats.jta.distributed.spi.TxListener) HeuristicRollbackException(javax.transaction.HeuristicRollbackException) RollbackException(javax.transaction.RollbackException) Test(org.junit.Test)

Aggregations

TransactionManagerDelegate (com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate)5 TransactionManager (javax.transaction.TransactionManager)5 Test (org.junit.Test)5 TransactionSynchronizationRegistryImple (com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple)1 TxListener (com.arjuna.ats.jta.distributed.spi.TxListener)1 HeuristicRollbackException (javax.transaction.HeuristicRollbackException)1 RollbackException (javax.transaction.RollbackException)1 Transaction (javax.transaction.Transaction)1 TransactionSynchronizationRegistry (javax.transaction.TransactionSynchronizationRegistry)1 ServerVMClientUserTransaction (org.jboss.tm.usertx.client.ServerVMClientUserTransaction)1