/** * global cannot be nested */ @Test public void testTransactionExclusion5() throws Exception { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, 100,false); server.start(THREAD2, XID2, XAResource.TMNOFLAGS, 100,false); server.end(THREAD2, XID2, XAResource.TMSUCCESS,false); try { server.start(THREAD1, XID2, XAResource.TMJOIN, 100,false); fail("exception expected"); //$NON-NLS-1$ } catch (XATransactionException ex) { assertEquals("TEIID30517 Client thread already involved in a transaction. Transaction nesting is not supported. The current transaction must be completed first.", //$NON-NLS-1$ ex.getMessage()); } }
/** * global can only be started once */ @Test public void testTransactionExclusion2() throws Exception { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, 100,false); try { server.start(THREAD2, XID1, XAResource.TMNOFLAGS, 100,false); fail("exception expected"); //$NON-NLS-1$ } catch (XATransactionException ex) { assertEquals("TEIID30522 Global transaction Teiid-Xid global:1 branch:null format:0 already exists.", ex.getMessage()); //$NON-NLS-1$ } }
@Test public void testConcurrentEnlistment() throws Exception { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, 100,false); try { server.start(THREAD1, XID1, XAResource.TMJOIN, 100,false); fail("exception expected"); //$NON-NLS-1$ } catch (XATransactionException ex) { assertEquals("TEIID30525 Concurrent enlistment in global transaction Teiid-Xid global:1 branch:null format:0 is not supported.", //$NON-NLS-1$ ex.getMessage()); } }
@Test public void testSuspendResume() throws Exception { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, 100,false); server.end(THREAD1, XID1, XAResource.TMSUSPEND,false); server.start(THREAD1, XID1, XAResource.TMRESUME, 100,false); server.end(THREAD1, XID1, XAResource.TMSUSPEND,false); try { server.start(THREAD2, XID1, XAResource.TMRESUME, 100,false); fail("exception expected"); //$NON-NLS-1$ } catch (XATransactionException ex) { assertEquals("TEIID30518 Cannot resume, transaction Teiid-Xid global:1 branch:null format:0 was not suspended by client abc2.", ex.getMessage()); //$NON-NLS-1$ } }
/** * global cannot be nested */ @Test public void testTransactionExclusion3() throws Exception { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, 100,false); try { server.start(THREAD1, XID2, XAResource.TMNOFLAGS, 100,false); fail("exception expected"); //$NON-NLS-1$ } catch (XATransactionException ex) { assertEquals("TEIID30517 Client thread already involved in a transaction. Transaction nesting is not supported. The current transaction must be completed first.", //$NON-NLS-1$ ex.getMessage()); } }
@Test public void testGlobalPrepareFail() throws Exception { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, TIMEOUT,false); server.end(THREAD1, XID1, XAResource.TMFAIL, false); Mockito.verify(txn).setRollbackOnly(); }
@Test public void testTwoPhaseCommit() throws Exception { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, 100,false); server.end(THREAD1, XID1, XAResource.TMSUCCESS, false); server.commit(THREAD1, XID1, false, false); Mockito.verify(xaImporter).commit(XID1, false); }
@Test public void testUnknownFlags() throws Exception { try { server.start(THREAD1, XID1, Integer.MAX_VALUE, 100,false); fail("exception expected"); //$NON-NLS-1$ } catch (XATransactionException ex) { assertEquals("TEIID30519 Unknown START flags", ex.getMessage()); //$NON-NLS-1$ } }
@Test public void testGlobalOnePhaseCommit_force_prepare() throws Exception { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, 100,false); TransactionContext tc = server.getOrCreateTransactionContext(THREAD1); server.end(THREAD1, XID1, XAResource.TMSUCCESS, false); server.commit(THREAD1, XID1, true, false); // since there are two sources the commit is not single phase Mockito.verify(xaImporter).prepare(tc.getXid()); Mockito.verify(xaImporter).commit(tc.getXid(), false); }
@Test public void testGlobalOnePhaseCommit_force_prepare_through() throws Exception { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, 100,false); TransactionContext tc = server.getOrCreateTransactionContext(THREAD1); server.end(THREAD1, XID1, XAResource.TMSUCCESS, false); server.commit(THREAD1, XID1, true, false); Mockito.verify(xaImporter).prepare(tc.getXid()); Mockito.verify(xaImporter).commit(tc.getXid(), false); }
@Test public void testGetTransactions() throws Exception { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, 100,false); server.begin(THREAD2); assertEquals(2, server.getTransactions().size()); server.commit(THREAD2); assertEquals(1, server.getTransactions().size()); Transaction t = server.getTransactions().iterator().next(); assertEquals(THREAD1, t.getAssociatedSession()); assertNotNull(t.getId()); }
@Test public void testGlobalPrepare() throws Exception { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, 100,false); TransactionContext tc = server.getOrCreateTransactionContext(THREAD1); server.end(THREAD1, XID1, XAResource.TMSUCCESS, false); server.prepare(THREAD1, XID1, false); Mockito.verify(xaImporter).prepare(tc.getXid()); server.commit(THREAD1, XID1, true, false); }
@Test public void testGlobalOnePhaseCommit() throws Exception { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, 100,false); TransactionContext tc = server.getOrCreateTransactionContext(THREAD1); server.end(THREAD1, XID1, XAResource.TMSUCCESS, false); server.prepare(THREAD1, XID1, false); server.commit(THREAD1, XID1, true, false); Mockito.verify(xaImporter).commit(tc.getXid(), false); }
@Test public void testGlobalOnePhase_teiid_multiple() throws Exception { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, 100,false); TransactionContext tc = server.getOrCreateTransactionContext(THREAD1); server.end(THREAD1, XID1, XAResource.TMSUCCESS, false); server.prepare(THREAD1, XID1, false); server.commit(THREAD1, XID1, true, false); // since there are two sources the commit is not single phase Mockito.verify(xaImporter).commit(tc.getXid(), false); }
@Test public void testGlobalOnePhaseRoolback() throws Exception { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, 100,false); TransactionContext tc = server.getOrCreateTransactionContext(THREAD1); server.end(THREAD1, XID1, XAResource.TMSUCCESS, false); server.prepare(THREAD1, XID1, false); server.rollback(THREAD1, XID1, false); // since there are two sources the commit is not single phase Mockito.verify(xaImporter).rollback(tc.getXid()); }
/** * once in a local, cannot start a global */ @Test public void testTransactionExclusion() throws Exception { server.begin(THREAD1); try { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, 100, false); fail("exception expected"); //$NON-NLS-1$ } catch (XATransactionException ex) { assertEquals("TEIID30517 Client thread already involved in a transaction. Transaction nesting is not supported. The current transaction must be completed first.", //$NON-NLS-1$ ex.getMessage()); } }
/** * once in a global, cannot start a local */ @Test public void testTransactionExclusion1() throws Exception { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, 100, false); try { server.begin(THREAD1); fail("exception expected"); //$NON-NLS-1$ } catch (XATransactionException ex) { assertEquals("TEIID30517 Client thread already involved in a transaction. Transaction nesting is not supported. The current transaction must be completed first.", //$NON-NLS-1$ ex.getMessage()); } }
@Test public void testPrepareWithSuspended() throws Exception { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, 100,false); server.end(THREAD1, XID1, XAResource.TMSUSPEND,false); try { server.prepare(THREAD1, XID1,false); fail("exception expected"); //$NON-NLS-1$ } catch (XATransactionException ex) { assertEquals("TEIID30505 Suspended work still exists on transaction Teiid-Xid global:1 branch:null format:0.", ex.getMessage()); //$NON-NLS-1$ } }
@Test public void testSuspend() throws Exception { server.start(THREAD1, XID1, XAResource.TMNOFLAGS, 100,false); server.end(THREAD1, XID1, XAResource.TMSUSPEND,false); try { server.end(THREAD1, XID1, XAResource.TMSUSPEND,false); fail("exception expected"); //$NON-NLS-1$ } catch (XATransactionException ex) { assertEquals("TEIID30524 Client is not currently enlisted in transaction Teiid-Xid global:1 branch:null format:0.", ex.getMessage()); //$NON-NLS-1$ } }