Author: cschneider
Date: Mon May 29 15:59:19 2017
New Revision: 1796654
URL: http://svn.apache.org/viewvc?rev=1796654&view=rev
Log:
ARIES-1690: added itests
Added:
aries/trunk/transaction/transaction-itests/src/test/java/org/apache/aries/transaction/itests/RollbackOnTest.java
aries/trunk/transaction/transaction-testbundle/src/main/java/org/apache/aries/transaction/test/RollbackOnBean.java
aries/trunk/transaction/transaction-testbundle/src/main/java/org/apache/aries/transaction/test/impl/RollbackOnBeanImpl.java
Modified:
aries/trunk/transaction/transaction-testbundle/src/main/resources/OSGI-INF/blueprint/config.xml
Added:
aries/trunk/transaction/transaction-itests/src/test/java/org/apache/aries/transaction/itests/RollbackOnTest.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-itests/src/test/java/org/apache/aries/transaction/itests/RollbackOnTest.java?rev=1796654&view=auto
==============================================================================
---
aries/trunk/transaction/transaction-itests/src/test/java/org/apache/aries/transaction/itests/RollbackOnTest.java
(added)
+++
aries/trunk/transaction/transaction-itests/src/test/java/org/apache/aries/transaction/itests/RollbackOnTest.java
Mon May 29 15:59:19 2017
@@ -0,0 +1,341 @@
+package org.apache.aries.transaction.itests;
+
+import org.apache.aries.transaction.test.RollbackOnBean;
+import org.apache.aries.transaction.test.TestBean;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.ops4j.pax.exam.util.Filter;
+
+import javax.inject.Inject;
+import javax.transaction.Status;
+import java.sql.SQLException;
+
+import static junit.framework.Assert.assertEquals;
+
+public class RollbackOnTest extends AbstractIntegrationTest {
+
+ @Inject
+ @Filter(timeout = 120000, value = "(tranAttribute=Required)")
+ TestBean rBean;
+
+ @Inject
+ RollbackOnBean rollbackOnBean;
+
+ @Before
+ public void setUp() throws Exception {
+ rollbackOnBean.setrBean(rBean);
+ }
+
+ //default behavior, doesn't rollback on application exception
+ @Test
+ public void testNoRollbackOnDefaultAppException() throws Exception {
+ tran.begin();
+ try {
+ rBean.insertRow("test", 1, new SQLException());
+ } catch (SQLException e) {
+ // Ignore expected
+ }
+ int txStatus = tran.getStatus();
+ tran.rollback();
+ Assert.assertEquals("tx was rolled back", Status.STATUS_ACTIVE,
txStatus);
+ }
+
+ //default behavior, doesn't rollback on exception
+ @Test
+ public void testNoRollbackOnDefaultException() throws Exception {
+ tran.begin();
+ try {
+ rollbackOnBean.throwException("test", 2);
+ } catch (Exception e) {
+ // Ignore expected
+ }
+ int txStatus = tran.getStatus();
+ tran.rollback();
+ Assert.assertEquals("tx was rolled back", Status.STATUS_ACTIVE,
txStatus);
+ }
+
+ @Test
+ public void testExceptionRollbackOnException() throws Exception {
+ tran.begin();
+ try {
+
rollbackOnBean.throwExceptionRollbackOnException("noAnnotationDefaultException",
-1);
+ } catch (Exception e) {
+ // Ignore expected
+ }
+ int txStatus = tran.getStatus();
+ tran.rollback();
+ Assert.assertEquals("tx was not rolled back",
Status.STATUS_MARKED_ROLLBACK, txStatus);
+ }
+
+ @Test
+ public void testNoRollbackOnDefaultRuntimeException() throws Exception {
+ tran.begin();
+ try {
+ rBean.insertRow("test", 1, new RuntimeException());
+ } catch (Exception e) {
+ // Ignore expected
+ }
+ int txStatus = tran.getStatus();
+ tran.rollback();
+ Assert.assertEquals("tx was not rolled back",
Status.STATUS_MARKED_ROLLBACK, txStatus);
+ }
+
+ //throw Runtime / handle Exception
+ @Test
+ public void testDontRollbackOnRuntimeException() throws Exception {
+ int initialRows = counter.countRows();
+ tran.begin();
+ try {
+
rollbackOnBean.throwRuntimeExceptionDontRollbackOnException("testDontRollbackOnRuntimeException",
3);
+ } catch (Exception e) {
+ //ignore
+ }
+ try {
+ tran.commit();
+ } catch (Exception e) {
+ if (Status.STATUS_ACTIVE == tran.getStatus()) {
+ tran.rollback();
+ }
+ //expected
+ }
+ int finalRows = counter.countRows();
+ assertEquals("Added rows", 0, finalRows - initialRows);
+ }
+
+ @Test
+ public void testRollbackOnRuntimeException() throws Exception {
+ int initialRows = counter.countRows();
+ tran.begin();
+ try {
+
rollbackOnBean.throwRuntimeExceptionRollbackOnException("testRollbackOnRuntimeException",
4);
+ } catch (Exception e) {
+ //ignore
+ }
+ try {
+ tran.commit();
+ } catch (Exception e) {
+ if (Status.STATUS_ACTIVE == tran.getStatus()) {
+ tran.rollback();
+ }
+ //expected
+ }
+ int finalRows = counter.countRows();
+ assertEquals("Added rows", 0, finalRows - initialRows);
+ }
+
+ //throw runtime / handle AppException
+ @Test
+ public void testThrowRuntimeDontRollbackOnAppException() throws
Exception {
+ int initialRows = counter.countRows();
+ tran.begin();
+ try {
+
rollbackOnBean.throwRuntimeExceptionDontRollbackOnAppException("testThrowRuntimeDontRollbackOnAppException",
5);
+ tran.commit();
+ } catch (Exception e) {
+ //ignore
+ }
+ try {
+ tran.commit();
+ } catch (Exception e) {
+ if (Status.STATUS_ACTIVE == tran.getStatus()) {
+ tran.rollback();
+ }
+ //expected
+ }
+ int finalRows = counter.countRows();
+ assertEquals("Added rows", 0, finalRows - initialRows);
+ }
+
+ @Test
+ public void testThrowRuntimeRollbackOnException() throws Exception {
+ int initialRows = counter.countRows();
+ tran.begin();
+ try {
+
rollbackOnBean.throwRuntimeExceptionRollbackOnAppException("testThrowRuntimeRollbackOnException",
6);
+ } catch (Exception e) {
+ //ignore
+ }
+ try {
+ tran.commit();
+ } catch (Exception e) {
+ if (Status.STATUS_ACTIVE == tran.getStatus()) {
+ tran.rollback();
+ }
+ //expected
+ }
+ int finalRows = counter.countRows();
+ assertEquals("Added rows", 0, finalRows - initialRows);
+ }
+
+
+ //throw AppException / handle Exception
+ @Test
+ public void testThrowAppExceptionRollbackOnException() throws Exception
{
+ int initialRows = counter.countRows();
+ tran.begin();
+ try {
+
rollbackOnBean.throwApplicationExceptionRollbackOnException("testThrowAppExceptionRollbackOnException",
7);
+ } catch (SQLException e) {
+ //ignore
+ }
+ try {
+ tran.commit();
+ } catch (Exception e) {
+ if (Status.STATUS_ACTIVE == tran.getStatus()) {
+ tran.rollback();
+ }
+ //expected
+ }
+ int finalRows = counter.countRows();
+ assertEquals("Added rows", 0, finalRows - initialRows);
+ }
+
+ @Test
+ public void testThrowAppExceptionDontRollbackOnException() throws
Exception {
+ int initialRows = counter.countRows();
+ tran.begin();
+ try {
+
rollbackOnBean.throwApplicationExceptionDontRollbackOnException("testThrowAppExceptionDontRollbackOnException",
8);
+ } catch (SQLException e) {
+ //ignore
+ }
+ tran.commit();
+ int finalRows = counter.countRows();
+ assertEquals("Added rows", 1, finalRows - initialRows);
+ }
+
+
+ //throw AppException / handle AppException
+ @Test
+ public void testThrowAppExceptionDontRollbackOnAppException() throws
Exception {
+ int initialRows = counter.countRows();
+ tran.begin();
+ try {
+
rollbackOnBean.throwApplicationExceptionDontRollbackOnAppException("testThrowAppExceptionDontRollbackOnAppException",
9);
+ } catch (SQLException e) {
+ //ignore
+ }
+ tran.commit();
+ int finalRows = counter.countRows();
+ assertEquals("Added rows", 1, finalRows - initialRows);
+ }
+
+ @Test
+ public void testThrowAppExceptionRollbackOnAppException() throws
Exception {
+ int initialRows = counter.countRows();
+ tran.begin();
+ try {
+
rollbackOnBean.throwApplicationExceptionRollbackOnAppException("testThrowAppExceptionRollbackOnAppException",
10);
+ } catch (SQLException e) {
+ //ignore
+ }
+ try {
+ tran.commit();
+ } catch (Exception e) {
+ if (Status.STATUS_ACTIVE == tran.getStatus()) {
+ tran.rollback();
+ }
+ //expected
+ }
+ int finalRows = counter.countRows();
+ assertEquals("Added rows", 0, finalRows - initialRows);
+ }
+
+
+ //throw Exception, handle Exception + DontRollBackOn
+ @Test
+ public void
testThrowRuntimeExceptionRollbackExceptionDontRollbackOnAppException() throws
Exception {
+ int initialRows = counter.countRows();
+ tran.begin();
+ try {
+ rollbackOnBean
+
.throwExceptionRollbackOnExceptionDontRollbackOnAppException("testThrowRuntimeExceptionRollbackExceptionDontRollbackOnAppException",
11);
+ } catch (Exception e) {
+ //ignore
+ }
+ try {
+ tran.commit();
+ } catch (Exception e) {
+ if (Status.STATUS_ACTIVE == tran.getStatus()) {
+ tran.rollback();
+ }
+ //expected
+ }
+ int finalRows = counter.countRows();
+ assertEquals("Added rows", 0, finalRows - initialRows);
+ }
+
+ @Test
+ public void
testThrowRuntimeExceptionDontRollbackExceptionRollbackOnAppException() throws
Exception {
+ int initialRows = counter.countRows();
+ tran.begin();
+ try {
+ rollbackOnBean
+
.throwExceptionRollbackOnAppExceptionDontRollbackOnException("testThrowRuntimeExceptionDontRollbackExceptionRollbackOnAppException",
12);
+ } catch (Exception e) {
+ //ignore
+ }
+ try {
+ tran.commit();
+ } catch (Exception e) {
+ if (Status.STATUS_ACTIVE == tran.getStatus()) {
+ tran.rollback();
+ }
+ //expected
+ }
+ int finalRows = counter.countRows();
+ assertEquals("Added rows", 0, finalRows - initialRows);
+ }
+
+ @Test
+ public void
testThrowAppExceptionDontRollbackExceptionRollbackOnAppException() throws
Exception {
+ int initialRows = counter.countRows();
+ tran.begin();
+ try {
+ rollbackOnBean
+
.throwAppExceptionRollbackOnAppExceptionDontRollbackOnException("testThrowAppExceptionDontRollbackExceptionRollbackOnAppException",
13);
+ } catch (SQLException e) {
+ //ignore
+ }
+ try {
+ tran.commit();
+ } catch (Exception e) {
+ //expected
+ if (Status.STATUS_ACTIVE == tran.getStatus()) {
+ tran.rollback();
+ }
+ }
+ int finalRows = counter.countRows();
+ assertEquals("Added rows", 1, finalRows - initialRows);
+ }
+
+ @Test
+ public void
testThrowAppExceptionRollbackExceptionDontRollbackOnAppException() throws
Exception {
+ int initialRows = counter.countRows();
+ tran.begin();
+ try {
+ rollbackOnBean
+
.throwAppExceptionRollbackOnExceptionDontRollbackOnAppException("testThrowAppExceptionRollbackExceptionDontRollbackOnAppException",
14);
+ } catch (Exception e) {
+ //ignore
+ }
+ try {
+ tran.commit();
+ } catch (Exception e) {
+ //expected
+ if (Status.STATUS_ACTIVE == tran.getStatus()) {
+ tran.rollback();
+ }
+ }
+ int finalRows = counter.countRows();
+ assertEquals("Added rows", 1, finalRows - initialRows);
+ }
+
+
+ @Override
+ protected TestBean getBean() {
+ return rBean;
+ }
+
+}
Added:
aries/trunk/transaction/transaction-testbundle/src/main/java/org/apache/aries/transaction/test/RollbackOnBean.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-testbundle/src/main/java/org/apache/aries/transaction/test/RollbackOnBean.java?rev=1796654&view=auto
==============================================================================
---
aries/trunk/transaction/transaction-testbundle/src/main/java/org/apache/aries/transaction/test/RollbackOnBean.java
(added)
+++
aries/trunk/transaction/transaction-testbundle/src/main/java/org/apache/aries/transaction/test/RollbackOnBean.java
Mon May 29 15:59:19 2017
@@ -0,0 +1,36 @@
+package org.apache.aries.transaction.test;
+
+import java.sql.SQLException;
+
+public interface RollbackOnBean {
+
+ void throwException(String name, int value) throws Exception;
+
+ void throwExceptionRollbackOnException(String name, int value) throws
Exception;
+
+ void throwRuntimeExceptionRollbackOnException(String name, int value)
throws SQLException;
+
+ void throwRuntimeExceptionDontRollbackOnException(String name, int
value) throws SQLException;
+
+ void throwRuntimeExceptionDontRollbackOnAppException(String name, int
value) throws SQLException;
+
+ void throwRuntimeExceptionRollbackOnAppException(String name, int
value) throws SQLException;
+
+ void throwApplicationExceptionRollbackOnException(String name, int
value) throws SQLException;
+
+ void throwApplicationExceptionRollbackOnAppException(String name, int
value) throws SQLException;
+
+ void throwApplicationExceptionDontRollbackOnException(String name, int
value) throws SQLException;
+
+ void throwApplicationExceptionDontRollbackOnAppException(String name,
int value) throws SQLException;
+
+ void throwExceptionRollbackOnExceptionDontRollbackOnAppException(String
name, int value) throws SQLException;
+
+ void throwExceptionRollbackOnAppExceptionDontRollbackOnException(String
name, int value) throws SQLException;
+
+ void
throwAppExceptionRollbackOnExceptionDontRollbackOnAppException(String name, int
value) throws SQLException;
+
+ void
throwAppExceptionRollbackOnAppExceptionDontRollbackOnException(String name, int
value) throws SQLException;
+
+ void setrBean(TestBean rBean);
+}
Added:
aries/trunk/transaction/transaction-testbundle/src/main/java/org/apache/aries/transaction/test/impl/RollbackOnBeanImpl.java
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-testbundle/src/main/java/org/apache/aries/transaction/test/impl/RollbackOnBeanImpl.java?rev=1796654&view=auto
==============================================================================
---
aries/trunk/transaction/transaction-testbundle/src/main/java/org/apache/aries/transaction/test/impl/RollbackOnBeanImpl.java
(added)
+++
aries/trunk/transaction/transaction-testbundle/src/main/java/org/apache/aries/transaction/test/impl/RollbackOnBeanImpl.java
Mon May 29 15:59:19 2017
@@ -0,0 +1,107 @@
+package org.apache.aries.transaction.test.impl;
+
+import org.apache.aries.transaction.test.RollbackOnBean;
+import org.apache.aries.transaction.test.TestBean;
+
+import javax.transaction.Transactional;
+import java.sql.SQLException;
+
+import static javax.transaction.Transactional.TxType;
+
+public class RollbackOnBeanImpl implements RollbackOnBean {
+
+ private TestBean rBean;
+
+ @Override
+ @Transactional(value = TxType.REQUIRED)
+ public void throwException(String name, int value) throws Exception {
+ rBean.insertRow(name, value, null);
+ throw new Exception("Test exception");
+ }
+
+ @Override
+ @Transactional(value = TxType.REQUIRED, rollbackOn = Exception.class)
+ public void throwExceptionRollbackOnException(String name, int value)
throws Exception {
+ rBean.insertRow(name, value, null);
+ throw new Exception("Test exception");
+ }
+
+ @Override
+ @Transactional(value = TxType.REQUIRED, rollbackOn = Exception.class)
+ public void throwRuntimeExceptionRollbackOnException(String name, int
value) throws SQLException {
+ rBean.insertRow(name, value, new RuntimeException("Test
exception"));
+ }
+
+ @Override
+ @Transactional(value = TxType.REQUIRED, rollbackOn = SQLException.class)
+ public void throwRuntimeExceptionRollbackOnAppException(String name,
int value) throws SQLException {
+ rBean.insertRow(name, value, new RuntimeException("Test
exception"));
+ }
+
+ @Override
+ @Transactional(value = TxType.REQUIRED, dontRollbackOn =
Exception.class)
+ public void throwRuntimeExceptionDontRollbackOnException(String name,
int value) throws SQLException {
+ rBean.insertRow(name, value, new RuntimeException("Test
exception"));
+ }
+
+ @Override
+ @Transactional(value = TxType.REQUIRED, dontRollbackOn =
SQLException.class)
+ public void throwRuntimeExceptionDontRollbackOnAppException(String
name, int value) throws SQLException {
+ rBean.insertRow(name, value, new RuntimeException("Test
exception"));
+ }
+
+ @Override
+ @Transactional(value = TxType.REQUIRED, rollbackOn = Exception.class)
+ public void throwApplicationExceptionRollbackOnException(String name,
int value) throws SQLException {
+ rBean.insertRow(name, value, new SQLException("Test
exception"));
+ }
+
+ @Override
+ @Transactional(value = TxType.REQUIRED, rollbackOn = SQLException.class)
+ public void throwApplicationExceptionRollbackOnAppException(String
name, int value) throws SQLException {
+ rBean.insertRow(name, value, new SQLException("Test
exception"));
+ }
+
+ @Override
+ @Transactional(value = TxType.REQUIRED, dontRollbackOn =
Exception.class)
+ public void throwApplicationExceptionDontRollbackOnException(String
name, int value) throws SQLException {
+ rBean.insertRow(name, value, new SQLException("Test
exception"));
+ }
+
+ @Override
+ @Transactional(value = TxType.REQUIRED, dontRollbackOn =
SQLException.class)
+ public void throwApplicationExceptionDontRollbackOnAppException(String
name, int value) throws SQLException {
+ rBean.insertRow(name, value, new SQLException("Test
exception"));
+ }
+
+ @Override
+ @Transactional(value = TxType.REQUIRED, dontRollbackOn =
Exception.class, rollbackOn = SQLException.class)
+ public void
throwExceptionRollbackOnExceptionDontRollbackOnAppException(String name, int
value) throws SQLException {
+ rBean.insertRow(name, value, new RuntimeException("Test
exception"));
+ }
+
+ @Override
+ @Transactional(value = TxType.REQUIRED, dontRollbackOn =
SQLException.class, rollbackOn = Exception.class)
+ public void
throwExceptionRollbackOnAppExceptionDontRollbackOnException(String name, int
value) throws SQLException {
+ rBean.insertRow(name, value, new RuntimeException("Test
exception"));
+ }
+
+ @Override
+ @Transactional(value = TxType.REQUIRED, dontRollbackOn =
SQLException.class, rollbackOn = Exception.class)
+ public void
throwAppExceptionRollbackOnExceptionDontRollbackOnAppException(String name, int
value) throws SQLException {
+ rBean.insertRow(name, value, new SQLException("Test
exception"));
+ }
+
+ @Override
+ @Transactional(value = TxType.REQUIRED, dontRollbackOn =
Exception.class, rollbackOn = SQLException.class)
+ public void
throwAppExceptionRollbackOnAppExceptionDontRollbackOnException(String name, int
value) throws SQLException {
+ rBean.insertRow(name, value, new SQLException("Test
exception"));
+ }
+
+
+ @Override
+ public void setrBean(TestBean rBean) {
+ this.rBean = rBean;
+ }
+
+}
Modified:
aries/trunk/transaction/transaction-testbundle/src/main/resources/OSGI-INF/blueprint/config.xml
URL:
http://svn.apache.org/viewvc/aries/trunk/transaction/transaction-testbundle/src/main/resources/OSGI-INF/blueprint/config.xml?rev=1796654&r1=1796653&r2=1796654&view=diff
==============================================================================
---
aries/trunk/transaction/transaction-testbundle/src/main/resources/OSGI-INF/blueprint/config.xml
(original)
+++
aries/trunk/transaction/transaction-testbundle/src/main/resources/OSGI-INF/blueprint/config.xml
Mon May 29 15:59:19 2017
@@ -50,6 +50,11 @@
</service-properties>
</service>
+ <bean id="rollbackOnBeanImpl"
class="org.apache.aries.transaction.test.impl.RollbackOnBeanImpl">
+ <property name="rBean" ref="requiredBeanImpl" />
+ </bean>
+ <service id="rollbackOnBean" ref="rollbackOnBeanImpl"
interface="org.apache.aries.transaction.test.RollbackOnBean"/>
+
<bean id="supportsBeanImpl"
class="org.apache.aries.transaction.test.impl.SupportsTestBeanImpl">
<property name="testBean" ref="mandatoryBeanImpl" />
<property name="connector" ref="connector" />