package com.alipay.zdal.datasource.resource.adapter.jdbc.vender; import static org.junit.Assert.assertTrue; import java.sql.SQLException; import javax.sql.DataSource; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import com.alipay.zdal.common.jdbc.sorter.MySQLExceptionSorter; import com.alipay.zdal.datasource.LocalTxDataSourceDO; import com.alipay.zdal.datasource.ZDataSource; /** * MySQLExceptionSorter �������� * * @author liangjie.li * @version $Id: MySQLExceptionSorterTest.java, v 0.1 2012-8-15 ����3:06:02 liangjie.li Exp $ */ public class MySQLExceptionSorterTest { protected static DataSource dataSource = null; private final MySQLExceptionSorter sorter = new MySQLExceptionSorter(); @Test public void testIsExceptionFatal() { try { dataSource.getConnection().close(); } catch (SQLException e) { assertTrue(sorter.isExceptionFatal(e)); } } @Test public void testErrorCode() { int[] errors = new int[] { 1040, 1042, 1043, 1047, 1081, 1129, 1130, 1045, 1004, 1005, 1021, 1041, 1037, 1038 }; SQLException e = new SQLException("reason", "08S01"); Assert.assertTrue(sorter.isExceptionFatal(e)); for (int err : errors) { e = new SQLException("reason", "01XXX", err); Assert.assertTrue(sorter.isExceptionFatal(e)); } e = new SQLException("no datasource!", "01XXX"); Assert.assertTrue(sorter.isExceptionFatal(e)); e = new SQLException("no alive datasource", "01XXX"); Assert.assertTrue(sorter.isExceptionFatal(e)); } @BeforeClass public static void setUp() throws Exception { LocalTxDataSourceDO dsDo = new LocalTxDataSourceDO(); dsDo.setDsName("test"); dsDo .setConnectionURL("jdbc:mysql://10.253.34.30:3300/diamond?useUnicode=true&characterEncoding=gbk"); dsDo.setUserName("diamond"); dsDo.setPassWord("ali88"); dsDo.setDriverClass("com.mysql.jdbc.Driver"); dsDo.setMinPoolSize(0); dsDo.setMaxPoolSize(5); dsDo.setExceptionSorterClassName("com.alipay.zdal.client.jdbc.sorter.MySQLExceptionSorter"); dsDo.setPreparedStatementCacheSize(0); dataSource = new ZDataSource(dsDo); } }