package com.taobao.yugong.common; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.SQLException; import javax.sql.DataSource; import junit.framework.Assert; import org.junit.Test; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.ConnectionCallback; import org.springframework.jdbc.core.JdbcTemplate; import com.taobao.yugong.BaseDbTest; import com.taobao.yugong.common.db.DataSourceFactory; /** * @author agapple 2014年2月25日 下午11:38:06 * @since 1.0.0 */ public class DataSourceFactoryTest extends BaseDbTest { @Test public void testOracle() { DataSourceFactory dataSourceFactory = new DataSourceFactory(); dataSourceFactory.start(); DataSource oracle1 = dataSourceFactory.getDataSource(getOracleConfig()); DataSource oracle2 = dataSourceFactory.getDataSource(getOracleConfig()); Assert.assertTrue(oracle1 == oracle2); testConnection(oracle1); dataSourceFactory.stop(); } @Test public void testMysql() { DataSourceFactory dataSourceFactory = new DataSourceFactory(); dataSourceFactory.start(); DataSource mysql1 = dataSourceFactory.getDataSource(getMysqlConfig()); DataSource mysql2 = dataSourceFactory.getDataSource(getMysqlConfig()); Assert.assertTrue(mysql1 == mysql2); testConnection(mysql1); dataSourceFactory.stop(); } private void testConnection(DataSource dataSource) { JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); String version = (String) jdbcTemplate.execute(new ConnectionCallback() { public Object doInConnection(Connection con) throws SQLException, DataAccessException { DatabaseMetaData metaData = con.getMetaData(); return metaData.getDatabaseProductName() + "-" + metaData.getDatabaseProductVersion(); } }); System.out.println(version); Assert.assertNotNull(version); } }