package com.taobao.tddl.qatest.group; import java.io.File; import java.util.HashMap; import org.apache.commons.lang.StringUtils; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.springframework.jdbc.core.JdbcTemplate; import com.taobao.diamond.mockserver.MockServer; import com.taobao.tddl.common.GroupDataSourceRouteHelper; import com.taobao.tddl.group.jdbc.TGroupDataSource; import com.taobao.tddl.qatest.BaseAtomGroupTestCase; import com.taobao.tddl.qatest.util.LoadPropsUtil; public class GroupTestCase extends BaseAtomGroupTestCase { protected static JdbcTemplate tddlJT; protected static TGroupDataSource tds; @BeforeClass public static void setUp() throws Exception { setGroupMockInfo(GROUP_NORMAL_COMPLEX_PATH, GROUPKEY_COMPLEX); } @AfterClass public static void tearDown() { tds = null; tddlJT = null; } @Before public void init() throws Exception { // 清数据防止干扰 String sql = "delete from normaltbl_0001 where pk=?"; GroupDataSourceRouteHelper.executeByGroupDataSourceIndex(0); clearData(tddlJT, sql, new Object[] { RANDOM_ID }); GroupDataSourceRouteHelper.executeByGroupDataSourceIndex(1); clearData(tddlJT, sql, new Object[] { RANDOM_ID }); GroupDataSourceRouteHelper.executeByGroupDataSourceIndex(2); clearData(tddlJT, sql, new Object[] { RANDOM_ID }); } @After public void destroy() { // 清数据防止干扰 String sql = "delete from normaltbl_0001 where pk=?"; GroupDataSourceRouteHelper.executeByGroupDataSourceIndex(0); clearData(tddlJT, sql, new Object[] { RANDOM_ID }); GroupDataSourceRouteHelper.executeByGroupDataSourceIndex(1); clearData(tddlJT, sql, new Object[] { RANDOM_ID }); GroupDataSourceRouteHelper.executeByGroupDataSourceIndex(2); clearData(tddlJT, sql, new Object[] { RANDOM_ID }); } protected static void setGroupMockInfo(String groupPath, String key) throws Exception { // 获取group信息 String groupStr = LoadPropsUtil.loadProps2OneLine(groupPath, key); if (groupStr == null || StringUtils.isBlank(groupStr)) { throw new Exception("指定path = " + groupPath + ",key = " + key + "的group信息为null或者为空字符。"); } // 获取atom信息 dataMap = new HashMap<String, String>(); String[] atomArr = groupStr.split(","); for (String atom : atomArr) { atom = atom.trim(); atom = atom.substring(0, atom.indexOf(":")); initAtomConfig(ATOM_PATH + File.separator + atom, APPNAME, atom); } // 获取groupkey dataMap.put(TGroupDataSource.getFullDbGroupKey(key), groupStr); // 建立MockServer MockServer.setConfigInfos(dataMap); // 获取JdbcTemplate tddlJT = getJT(key); } protected static JdbcTemplate getJT(String dbGroupKey) { tds = new TGroupDataSource(); tds.setAppName(APPNAME); tds.setDbGroupKey(dbGroupKey); tds.init(); return new JdbcTemplate(tds); } protected void checkWeight(int total, int times, double percent) { Assert.assertTrue(1.0 * times / total >= percent - 0.1 && 1.0 * times / total <= percent + 0.1); } }