package org.teiid.embedded.samples;
import static org.junit.Assert.assertEquals;
import java.sql.Connection;
import javax.sql.DataSource;
import javax.transaction.RollbackException;
import javax.transaction.Status;
import javax.transaction.TransactionManager;
import org.junit.BeforeClass;
import org.junit.Test;
import org.teiid.embedded.samples.util.JDBCUtil;
public class TestEmbeddedHelper {
@BeforeClass
public static void init() {
System.setProperty("teiid.embedded.txStoreDir", "target/data");
}
@Test
public void commitTransactionManager() throws Exception {
TransactionManager tm = EmbeddedHelper.getTransactionManager();
tm.begin();
tm.commit();
}
@Test
public void rollbackTransaction() throws Exception {
TransactionManager tm = EmbeddedHelper.getTransactionManager();
tm.begin();
tm.rollback();
}
@Test(expected = RollbackException.class)
public void setRollbackOnly() throws Exception {
TransactionManager tm = EmbeddedHelper.getTransactionManager();
tm.begin();
tm.setRollbackOnly();
tm.commit();
}
@Test
public void transactionStatus() throws Exception {
TransactionManager tm = EmbeddedHelper.getTransactionManager();
tm.begin();
assertEquals(Status.STATUS_ACTIVE, tm.getTransaction().getStatus());
tm.setRollbackOnly();
assertEquals(Status.STATUS_MARKED_ROLLBACK, tm.getTransaction().getStatus());
tm.rollback();
}
@Test(expected=RollbackException.class)
public void transactionTimeout() throws Exception{
TransactionManager tm = EmbeddedHelper.getTransactionManager();
tm.setTransactionTimeout(3);
tm.begin();
Thread.sleep(1000 * 5);
tm.commit();
}
@Test
public void testDataSource() throws Exception {
DataSource ds = EmbeddedHelper.newDataSource("org.h2.Driver", "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1", "sa", "sa");
Connection conn = ds.getConnection();
JDBCUtil.executeQuery(conn, "SELECT CURRENT_DATE(), CURRENT_TIME()");
JDBCUtil.close(conn);
}
}