package com.taobao.tddl.qatest; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.apache.commons.lang.exception.ExceptionUtils; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.springframework.jdbc.core.JdbcTemplate; import com.taobao.diamond.mockserver.MockServer; import com.taobao.tddl.common.model.ExtraCmd; import com.taobao.tddl.matrix.jdbc.TDataSource; import com.taobao.tddl.qatest.util.LoadPropsUtil; import com.taobao.tddl.qatest.util.PrepareData; /** * 基本测试类 * <p/> * Author By: zhuoxue.yll Created Date: 2012-2-16 下午2:05:24 */ @Ignore(value = "提供初始化环境的实际方法") public class BaseMatrixTestCase extends PrepareData { protected static final ExecutorService pool = Executors.newCachedThreadPool(); private static String ruleFile = "V0#classpath:matrix/"; private static String rule = "rule.xml"; private static String schemaFile = "matrix/"; private static String schema = "schema.xml"; // dbType为mysql运行mysql测试,bdb值为bdb运行bdb测试,如果为空则运行bdb和mysql测试 protected static String dbType = null; protected static boolean needPerparedData = true; private static String machineTapologyFile = "matrix/server_topology.xml"; private static String typeFile = "db_type.properties"; static { dbType = LoadPropsUtil.loadProps(typeFile).getProperty("dbType"); } @BeforeClass public static void IEnvInit() throws Exception { MockServer.tearDownMockServer(); // setMatrixMockInfo(MATRIX_DBGROUPS_PATH, TDDL_DBGROUPS); if (us == null) { if (dbType.equals("bdb") || dbType == "") { JDBCClient(dbType); } else if (dbType.equals("mysql") || dbType.equals("tdhs") || dbType.equals("hbase")) { JDBCClient(dbType, false); } } } @Before public void prepareConnection() throws SQLException { con = getConnection(); andorCon = us.getConnection(); } @After public void clearDate() throws Exception { psConRcRsClose(rc, rs); } public static void JDBCClient(String dbType) throws Exception { JDBCClient(dbType, false); } public static void JDBCClient(String dbTypeStack, boolean async) throws Exception { us = new TDataSource(); // if ("tddl".equalsIgnoreCase(dbTypeStack) || // "mysql".equalsIgnoreCase(dbTypeStack)) { us.setAppName("andor_mysql_qatest"); // } else if ("tdhs".equalsIgnoreCase(dbTypeStack)) { // us.setAppName("andor_tdhs_qatest"); // } else if ("hbase".equalsIgnoreCase(dbTypeStack)) { // us.setAppName("andor_hbase_qatest"); // } us.setRuleFile(ruleFile + dbTypeStack + "_" + rule); if ((!"tddl".equalsIgnoreCase(dbTypeStack)) && (!"tdhs".equalsIgnoreCase(dbTypeStack))) { us.setTopologyFile(machineTapologyFile); us.setSchemaFile(schemaFile + dbTypeStack + "_" + schema); } Map<String, Object> cp = new HashMap<String, Object>(); if ("tdhs".equalsIgnoreCase(dbTypeStack)) { cp.put(ExtraCmd.USE_TDHS_FOR_DEFAULT, "true"); } if ("hbase".equalsIgnoreCase(dbTypeStack)) { cp.put(ExtraCmd.HBASE_MAPPING_FILE, "matrix/hbase_mapping.xml"); } us.setConnectionProperties(cp); try { us.init(); } catch (Exception e) { Assert.fail(ExceptionUtils.getFullStackTrace(e)); } } public static JdbcTemplate JdbcTemplateClient(String dbType) throws Exception { IEnvInit(); return new JdbcTemplate(us); } }