package com.alipay.zdal.test.rw; import static com.alipay.ats.internal.domain.ATS.Step; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.TransactionCallback; import org.springframework.transaction.support.TransactionTemplate; import com.alipay.ats.annotation.Feature; import com.alipay.ats.annotation.Priority; import com.alipay.ats.annotation.Subject; import com.alipay.ats.assertion.TestAssertion; import com.alipay.ats.enums.PriorityLevel; import com.alipay.ats.junit.ATSJUnitRunner; import com.alipay.zdal.test.common.ConstantsTest; import com.alipay.zdal.test.common.ZdalTestCommon; import com.ibatis.sqlmap.client.SqlMapClient; @RunWith(ATSJUnitRunner.class) @Feature("rw����Դds0:r10w10��ʹ������ģ�壺������Դ����") public class SR952110 { public TestAssertion Assert = new TestAssertion(); private TransactionTemplate tt; private SqlMapClient sqlMap; String url; String user; String psd; @Before public void beforeTestCase() { url = ConstantsTest.mysq112UrlFail0; user = ConstantsTest.mysq112User; psd = ConstantsTest.mysq112Psd; sqlMap = (SqlMapClient) ZdalRwSuite.context .getBean("zdalTransactionManager"); tt = (TransactionTemplate) ZdalRwSuite.context .getBean("transactionTemplate1"); } @Subject("��������:��select��delete") @Priority(PriorityLevel.HIGHEST) @Test public void TC952111() { Step(" ����׼��"); ZdalTestCommon.dataPrepareForFail0(); try { tt.execute(new TransactionCallback() { @SuppressWarnings("unchecked") public Object doInTransaction(TransactionStatus status) { String querySql = "rw-Select"; String deleteSql = "rw-Delete"; try { List<Object> res_1 = sqlMap.queryForList(querySql); Assert.areEqual(1, res_1.size(), "��֤select����ǿ�"); Step("������ɾ������"); int res_2 = sqlMap.delete(deleteSql); Assert.areEqual(1, res_2, "��֤delete�ɹ�"); } catch (SQLException e) { throw new RuntimeException(e); } return null; } }); } catch (Exception ex) { ex.printStackTrace(); } Step("��֤Ŀǰ������"); String sqlStr = "select count(*) from master_0 where user_id =20"; ResultSet rs = ZdalTestCommon.dataCheckFromJDBC(sqlStr, url, psd, user); try { Assert.areEqual(true, rs.next(), "���ݳɹ�"); Assert.areEqual(0, rs.getInt(1), "��֤������"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Subject("��������:��insert��select") @Priority(PriorityLevel.HIGHEST) @Test public void TC952112() { try { Step("��������:��insert��select"); tt.execute(new TransactionCallback() { @SuppressWarnings("unchecked") public Object doInTransaction(TransactionStatus status) { String insertSql = "rw-insert"; String selectSql = "rw-Select"; try { sqlMap.insert(insertSql); List<Object> res_1 =sqlMap.queryForList(selectSql); Assert.areEqual(1, res_1.size(), "��֤select����ǿ�"); } catch (SQLException e) { throw new RuntimeException(e); } return null; } }); } catch (Exception ex) { ex.printStackTrace(); } Step("��֤Ŀǰ������"); String sqlStr = "select count(*) from master_0 where user_id =20"; ResultSet rs = ZdalTestCommon.dataCheckFromJDBC(sqlStr, url, psd, user); try { Assert.areEqual(true, rs.next(), "���ݳɹ�"); Assert.areEqual(1, rs.getInt(1), "��֤������"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } String delStr="delete from master_0 where user_id=20"; ZdalTestCommon.dataUpdateJDBC(delStr, url, psd, user); } @Subject("�쳣����;��������������ͻ��sql���ع�") @Priority(PriorityLevel.HIGHEST) @Test public void TC952113() { Step("�쳣����;��������������ͻ��sql���ع�"); try { tt.execute(new TransactionCallback() { public Object doInTransaction(TransactionStatus status) { String insertSql = "rw-insert"; try { sqlMap.insert(insertSql); sqlMap.insert(insertSql); } catch (SQLException e) { Step("��Ҫ�ع���ȥ������һ�䣬���ύһ�����ݵ�db"); status.setRollbackOnly(); e.printStackTrace(); } return 0; } }); } catch (Exception ex) { ex.printStackTrace(); } Step("��֤Ŀǰ������"); String sqlStr = "select count(*) from master_0 where user_id =20"; ResultSet rs = ZdalTestCommon.dataCheckFromJDBC(sqlStr, url, psd, user); try { Assert.areEqual(true, rs.next(), "���ݳɹ�"); Assert.areEqual(0, rs.getInt(1), "��֤������"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Subject("��������:��insert��delete") @Priority(PriorityLevel.HIGHEST) @Test public void TC952114() { Step("��������:��insert��delete"); try { tt.execute(new TransactionCallback() { public Object doInTransaction(TransactionStatus status) { String insertSql = "rw-insert"; String deleteSql = "rw-Delete"; try { sqlMap.insert(insertSql); sqlMap.delete(deleteSql); } catch (SQLException e) { status.setRollbackOnly(); throw new RuntimeException(e); } return null; } }); } catch (Exception ex) { ex.printStackTrace(); } } }