package com.taobao.tddl.group; import java.sql.Connection; import java.sql.Statement; import javax.sql.DataSource; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import com.alibaba.druid.pool.DruidDataSource; import com.taobao.diamond.mockserver.MockServer; import com.taobao.tddl.atom.common.TAtomConstants; import com.taobao.tddl.atom.config.TAtomConfParser; import com.taobao.tddl.atom.config.TAtomDsConfDO; import com.taobao.tddl.common.model.DBType; import com.taobao.tddl.group.jdbc.DataSourceWrapper; import com.taobao.tddl.group.jdbc.TGroupDataSource; import com.taobao.tddl.group.utils.PropLoadTestUtil; @Ignore("测试基类") public class BaseGroupTest { protected static final String APPNAME = "tddl_sample"; protected static final String GROUP0 = "tddl_sample_group_0"; protected static final String GROUP1 = "tddl_sample_group_1"; protected static final String GROUP2 = "tddl_sample_group_2"; protected static final String DSKEY0 = "tddl_sample_0"; protected static final String DSKEY1 = "tddl_sample_1"; protected static final String DSKEY2 = "tddl_sample_2"; @BeforeClass public static void beforeClass() { MockServer.setUpMockServer(); // 初始化一些配置 mockConfig("group0", APPNAME, GROUP0, DSKEY0); mockConfig("group1", APPNAME, GROUP1, DSKEY1); mockConfig("group2", APPNAME, GROUP2, DSKEY2); } @AfterClass public static void after() { MockServer.tearDownMockServer(); } @Before public void setUp() throws Exception { deleteAll(); } private static void mockConfig(String dir, String appName, String groupName, String dbKey) { String globaStr = PropLoadTestUtil.loadPropFile2String("conf/" + dir + "/globa.properties"); MockServer.setConfigInfo(TAtomConstants.getGlobalDataId(dbKey), globaStr); String appStr = PropLoadTestUtil.loadPropFile2String("conf/" + dir + "/app.properties"); MockServer.setConfigInfo(TAtomConstants.getAppDataId(appName, dbKey), appStr); String passwdStr = PropLoadTestUtil.loadPropFile2String("conf/" + dir + "/passwd.properties"); // 解析配置 TAtomDsConfDO tAtomDsConfDO = TAtomConfParser.parserTAtomDsConfDO(globaStr, appStr); String passwdDataId = TAtomConstants.getPasswdDataId(tAtomDsConfDO.getDbName(), tAtomDsConfDO.getDbType(), tAtomDsConfDO.getUserName()); MockServer.setConfigInfo(passwdDataId, passwdStr); } public static DataSource getMySQLDataSource() { return getMySQLDataSource(0); } public static DataSource getMySQLDataSource(int num) { if (num > 2) { num = 2; } DruidDataSource ds = new DruidDataSource(); ds.setDriverClassName("com.mysql.jdbc.Driver"); ds.setUsername("tddl"); ds.setPassword("tddl"); ds.setUrl("jdbc:mysql://10.232.31.154/tddl_sample_" + num); return ds; } // 删除三个库中crud表的所有记录 public static void deleteAll() throws Exception { DataSource ds1 = getMySQLDataSource(0); DataSource ds2 = getMySQLDataSource(1); DataSource ds3 = getMySQLDataSource(2); Connection conn = null; Statement stmt = null; TGroupDataSource ds = new TGroupDataSource(); DataSourceWrapper dsw = new DataSourceWrapper("tddl_sample_0", "rw", ds1, DBType.MYSQL); ds.init(dsw); conn = ds.getConnection(); stmt = conn.createStatement(); stmt.executeUpdate("delete from tddl_test_0000"); stmt.close(); conn.close(); ds = new TGroupDataSource(); dsw = new DataSourceWrapper("tddl_sample_1", "rw", ds2, DBType.MYSQL); ds.init(dsw); conn = ds.getConnection(); stmt = conn.createStatement(); stmt.executeUpdate("delete from tddl_test_0000"); stmt.close(); conn.close(); ds = new TGroupDataSource(); dsw = new DataSourceWrapper("tddl_sample_2", "rw", ds3, DBType.MYSQL); ds.init(dsw); conn = ds.getConnection(); stmt = conn.createStatement(); stmt.executeUpdate("delete from tddl_test_0000"); stmt.close(); conn.close(); } }