use of org.omg.CosTransactions.Control in project narayana by jbosstm.
the class TerminationTest method test.
@Test
public void test() {
boolean commit = true;
Control myControl = null;
ORB myORB = null;
RootOA myOA = null;
try {
myORB = ORB.getInstance("test");
myOA = OA.getRootOA(myORB);
myORB.initORB(new String[] {}, null);
myOA.initOA();
ORBManager.setORB(myORB);
ORBManager.setPOA(myOA);
TransactionFactoryImple theOTS = new TransactionFactoryImple();
System.out.println("Creating transaction with 2 second timeout.");
myControl = theOTS.create(2);
assertNotNull(myControl);
Terminator handle = myControl.get_terminator();
try {
System.out.println("Sleeping for 5 seconds.");
Thread.sleep(5000);
} catch (Exception e) {
}
if (handle != null) {
System.out.print("Attempting to ");
if (commit)
System.out.println("commit transaction. Should fail!");
else
System.out.println("rollback transaction. Should fail!.");
if (commit)
handle.commit(true);
else
handle.rollback();
assertFalse(commit);
System.out.println("\nNow attempting to destroy transaction. Should fail!");
OTSManager.destroyControl(myControl);
} else
System.err.println("No transaction terminator!");
} catch (UserException e) {
System.err.println("Caught UserException: " + e);
} catch (SystemException e) {
System.err.println("Caught SystemException: " + e);
try {
Coordinator coord = myControl.get_coordinator();
Status s = coord.get_status();
System.err.println("Transaction status: " + com.arjuna.ats.jts.utils.Utility.stringStatus(s));
coord = null;
} catch (Exception ex) {
}
}
try {
CurrentImple current = OTSImpleManager.current();
FakeCheckedAction act = new FakeCheckedAction();
current.set_timeout(2);
current.setCheckedAction(act);
assertEquals(act, current.getCheckedAction());
System.out.println("\nNow creating current transaction with 2 second timeout.");
current.begin();
myControl = current.get_control();
try {
System.out.println("Sleeping for 5 seconds.");
Thread.sleep(5000);
} catch (Exception e) {
}
System.out.print("Attempting to ");
if (commit)
System.out.println("commit transaction. Should fail!");
else
System.out.println("rollback transaction. Should fail!.");
if (commit)
current.commit(true);
else
current.rollback();
assertFalse(commit);
assertTrue(act.called);
} catch (UserException e) {
System.err.println("Caught UserException: " + e);
System.out.println("Test did not completed successfully.");
} catch (SystemException e) {
System.err.println("Caught SystemException: " + e);
try {
Coordinator coord = myControl.get_coordinator();
Status s = coord.get_status();
System.err.println("Transaction status: " + com.arjuna.ats.jts.utils.Utility.stringStatus(s));
myControl = null;
coord = null;
} catch (Exception ex) {
}
System.out.println("Test completed successfully.");
}
myOA.destroy();
myORB.shutdown();
}
use of org.omg.CosTransactions.Control in project narayana by jbosstm.
the class TransactionFactoryUnitTest method testBasic.
@Test
public void testBasic() throws Exception {
TransactionFactoryImple factory = new TransactionFactoryImple("test");
arjPropertyManager.getCoordinatorEnvironmentBean().setEnableStatistics(true);
try {
factory.numberOfTransactions(TransactionType.TransactionTypeActive);
// fail();
} catch (final Inactive ex) {
} catch (final NoTransaction ex) {
}
ControlImple tx = factory.createLocal(1000);
assertTrue(tx != null);
org.omg.CosTransactions.otid_t[] txId = null;
try {
txId = factory.numberOfTransactions(TransactionType.TransactionTypeActive);
} catch (final Throwable ex) {
fail();
}
try {
if (factory.getChildTransactions(txId[0]) != null)
fail();
} catch (final Throwable ex) {
fail();
}
org.omg.CosTransactions.Status status = factory.getCurrentStatus(txId[0]);
assertTrue(status == org.omg.CosTransactions.Status.StatusActive);
assertTrue(factory.getStatus(txId[0]) == org.omg.CosTransactions.Status.StatusActive);
Control proxy = factory.createProxy(tx.get_coordinator(), tx.get_terminator());
assertTrue(proxy != null);
Control propagated = factory.createPropagatedControl(tx.get_coordinator());
assertTrue(propagated != null);
assertTrue(Utility.getUid(proxy).equals(Utility.getUid(propagated)));
GlobalTransactionInfo info = factory.getGlobalInfo();
assertTrue(info != null);
assertEquals(info.totalNumberOfTransactions, 1);
assertEquals(info.numberOfHeuristics, 0);
factory.numberOfTransactions(TransactionType.TransactionTypeUnresolved);
try {
tx.getImplHandle().rollback();
} catch (final Throwable ex) {
}
}
use of org.omg.CosTransactions.Control in project narayana by jbosstm.
the class TransactionFactoryUnitTest method testCompare.
@Test
public void testCompare() throws Exception {
TransactionFactoryImple factory = new TransactionFactoryImple("test");
ControlImple tx = factory.createLocal(1000);
Control proxy = factory.getTransaction(Utility.uidToOtid(tx.get_uid()));
assertTrue(Utility.getUid(proxy).equals(tx.get_uid()));
try {
tx.getImplHandle().rollback();
} catch (final Throwable ex) {
}
}
use of org.omg.CosTransactions.Control in project narayana by jbosstm.
the class TransactionTest1 method test.
@Test
public void test() throws Exception {
ORB myORB = null;
RootOA myOA = null;
myORB = ORB.getInstance("test");
myOA = OA.getRootOA(myORB);
myORB.initORB(new String[] {}, null);
myOA.initOA();
ORBManager.setORB(myORB);
ORBManager.setPOA(myOA);
TransactionFactory theFactory = OTSManager.get_factory();
Control topLevelControl = null;
Control nestedControl = null;
Terminator terminator = null;
try {
org.omg.CosTransactions.Current current = OTSManager.get_current();
current.begin();
topLevelControl = current.get_control();
current.begin();
nestedControl = current.get_control();
/*
* Try to commit top-level action without terminating nested
* action.
*/
terminator = topLevelControl.get_terminator();
System.out.println("\nAttempting to terminate out of sequence 'current'. Should fail!");
try {
terminator.commit(true);
fail();
} catch (TRANSACTION_ROLLEDBACK e) {
System.err.println("Commit failed! " + e);
}
System.out.println("\nNow attempting to terminate 'current' hierarchy. Should fail!");
try {
current.commit(true);
fail();
} catch (INVALID_TRANSACTION e1) {
System.err.println("Nested commit failed! " + e1);
} catch (TRANSACTION_ROLLEDBACK e1) {
System.err.println("Nested commit failed! " + e1);
} catch (Exception e2) {
fail("Nested commit threw unexpected exception: " + e2);
}
try {
current.commit(true);
fail();
} catch (TRANSACTION_ROLLEDBACK e1) {
System.err.println("Top-level commit failed! " + e1);
} catch (INVALID_TRANSACTION e2) {
System.err.println("Top-level commit failed! " + e2);
} catch (Exception e3) {
fail("Top-level commit threw unexpected exception: " + e3);
}
/*
* Now with the factory.
*/
System.out.println("\nNow creating new top-level action.");
topLevelControl = theFactory.create(0);
nestedControl = topLevelControl.get_coordinator().create_subtransaction();
terminator = topLevelControl.get_terminator();
System.out.println("\nAttempting to terminate out of sequence 'factory' action. Should fail!");
try {
terminator.commit(true);
fail();
} catch (TRANSACTION_ROLLEDBACK e1) {
System.err.println("Commit failed! " + e1);
} catch (INVALID_TRANSACTION e2) {
System.err.println("Commit failed! " + e2);
}
terminator = nestedControl.get_terminator();
System.out.println("\nNow attempting to terminate 'factory' nested action. Should fail!");
try {
terminator.commit(true);
fail();
} catch (TRANSACTION_ROLLEDBACK e1) {
System.err.println("Commit failed! " + e1);
} catch (INVALID_TRANSACTION e2) {
System.err.println("Commit failed! " + e2);
}
System.out.println("Test completed successfully.");
} catch (Exception e) {
fail("Test failed - received unexpected exception " + e);
}
myOA.destroy();
myORB.shutdown();
}
use of org.omg.CosTransactions.Control in project narayana by jbosstm.
the class DemoSubTranResource method registerResource.
public void registerResource(boolean registerSubtran) throws Unavailable, Inactive, NotSubtransaction, SystemException {
CurrentImple current = OTSImpleManager.current();
Control myControl = current.get_control();
Coordinator coord = myControl.get_coordinator();
if (registerSubtran)
coord.register_subtran_aware(ref);
else
coord.register_resource(ref);
System.out.println("Registered DemoSubTranResource");
}
Aggregations