package com.taobao.tddl.atom.common; import java.io.IOException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.List; import java.util.Map; import java.util.Properties; import javax.crypto.BadPaddingException; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import org.junit.Assert; import org.junit.Test; import com.taobao.tddl.atom.config.TAtomConfParser; import com.taobao.tddl.atom.config.TAtomDsConfDO; import com.taobao.tddl.atom.securety.impl.PasswordCoder; import com.taobao.tddl.atom.utils.ConnRestrictEntry; public class TAtomConfParserUnitTest { @Test public void parserTAtomDsConfDO_解析全局配置() throws IOException { String globaFile = "conf/oracle/globa.properties"; String globaStr = PropLoadTestUtil.loadPropFile2String(globaFile); TAtomDsConfDO tAtomDsConfDO = TAtomConfParser.parserTAtomDsConfDO(globaStr, null); Properties prop = PropLoadTestUtil.loadPropFromFile(globaFile); Assert.assertEquals(tAtomDsConfDO.getIp(), prop.get(TAtomConfParser.GLOBA_IP_KEY)); Assert.assertEquals(tAtomDsConfDO.getPort(), prop.get(TAtomConfParser.GLOBA_PORT_KEY)); Assert.assertEquals(tAtomDsConfDO.getDbName(), prop.get(TAtomConfParser.GLOBA_DB_NAME_KEY)); Assert.assertEquals(tAtomDsConfDO.getDbType(), prop.get(TAtomConfParser.GLOBA_DB_TYPE_KEY)); Assert.assertEquals(tAtomDsConfDO.getDbStatus(), prop.get(TAtomConfParser.GLOBA_DB_STATUS_KEY)); } @Test public void parserTAtomDsConfDO_解析应用配置() throws IOException { String appFile = "conf/oracle/app.properties"; String appStr = PropLoadTestUtil.loadPropFile2String(appFile); TAtomDsConfDO tAtomDsConfDO = TAtomConfParser.parserTAtomDsConfDO(null, appStr); Properties prop = PropLoadTestUtil.loadPropFromFile(appFile); Assert.assertEquals(tAtomDsConfDO.getUserName(), prop.get(TAtomConfParser.APP_USER_NAME_KEY)); Assert.assertEquals(tAtomDsConfDO.getOracleConType(), prop.get(TAtomConfParser.APP_ORACLE_CON_TYPE_KEY)); Assert.assertEquals(String.valueOf(tAtomDsConfDO.getMinPoolSize()), prop.get(TAtomConfParser.APP_MIN_POOL_SIZE_KEY)); Assert.assertEquals(String.valueOf(tAtomDsConfDO.getMaxPoolSize()), prop.get(TAtomConfParser.APP_MAX_POOL_SIZE_KEY)); Assert.assertEquals(String.valueOf(tAtomDsConfDO.getIdleTimeout()), prop.get(TAtomConfParser.APP_IDLE_TIMEOUT_KEY)); Assert.assertEquals(String.valueOf(tAtomDsConfDO.getBlockingTimeout()), prop.get(TAtomConfParser.APP_BLOCKING_TIMEOUT_KEY)); Assert.assertEquals(String.valueOf(tAtomDsConfDO.getPreparedStatementCacheSize()), prop.get(TAtomConfParser.APP_PREPARED_STATEMENT_CACHE_SIZE_KEY)); Map<String, String> connectionProperties = TAtomConfParser.parserConPropStr2Map(prop.getProperty(TAtomConfParser.APP_CON_PROP_KEY)); Assert.assertEquals(tAtomDsConfDO.getConnectionProperties(), connectionProperties); } @Test public void parserPasswd_解析密码() throws IOException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException { String passwdFile = "conf/oracle/passwd.properties"; String passwdStr = PropLoadTestUtil.loadPropFile2String(passwdFile); String passwd = TAtomConfParser.parserPasswd(passwdStr); Properties prop = PropLoadTestUtil.loadPropFromFile(passwdFile); String encPasswd = prop.getProperty(TAtomConfParser.PASSWD_ENC_PASSWD_KEY); String encPasswdKey = prop.getProperty(TAtomConfParser.PASSWD_ENC_KEY_KEY); String tmpEncPsswd = new PasswordCoder().encode(encPasswdKey, passwd); Assert.assertEquals(encPasswd, tmpEncPsswd); } @Test public void parseConnRestrictEntries_解析应用连接限制() { String connRestrictStr = "K1,K2,K3,,K4:80%; K5:60%; K6,K7,:90%; ,K8:1%; K9,:10; ,K10,K11:70%; *:16,50%; *:40%; *:,30%; ~:20;"; List<ConnRestrictEntry> connRestrictEntries = TAtomConfParser.parseConnRestrictEntries(connRestrictStr, 30); for (ConnRestrictEntry connRestrictEntry : connRestrictEntries) { System.out.println(connRestrictEntry.toString()); } Assert.assertEquals(10, connRestrictEntries.size()); Assert.assertEquals(24, connRestrictEntries.get(0).getLimits()); Assert.assertEquals(18, connRestrictEntries.get(1).getLimits()); Assert.assertEquals(27, connRestrictEntries.get(2).getLimits()); Assert.assertEquals(1, connRestrictEntries.get(3).getLimits()); Assert.assertEquals(10, connRestrictEntries.get(4).getLimits()); Assert.assertEquals(21, connRestrictEntries.get(5).getLimits()); Assert.assertEquals(16, connRestrictEntries.get(6).getHashSize()); Assert.assertEquals(15, connRestrictEntries.get(6).getLimits()); Assert.assertEquals(1, connRestrictEntries.get(7).getHashSize()); Assert.assertEquals(12, connRestrictEntries.get(7).getLimits()); Assert.assertEquals(1, connRestrictEntries.get(8).getHashSize()); Assert.assertEquals(9, connRestrictEntries.get(8).getLimits()); Assert.assertEquals(20, connRestrictEntries.get(9).getLimits()); } }