提交 7c5b9c5e 编写于 作者: H haocao

Add postgresql test case and test dependencies.

上级 c49892a6
......@@ -32,6 +32,7 @@
<springframework.version>4.1.1.RELEASE</springframework.version>
<mysql-connector-java.version>5.1.30</mysql-connector-java.version>
<h2.version>1.4.184</h2.version>
<postgresql.version>9.1-901-1.jdbc4</postgresql.version>
<junit.version>4.12</junit.version>
<system-rules.version>1.16.0</system-rules.version>
<hamcrest.version>1.3</hamcrest.version>
......@@ -188,6 +189,12 @@
<version>${h2.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${postgresql.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
......
......@@ -42,6 +42,10 @@
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
......
......@@ -21,12 +21,14 @@ import com.dangdang.ddframe.rdb.sharding.constant.DatabaseType;
import org.apache.commons.dbcp.BasicDataSource;
import org.dbunit.DatabaseUnitException;
import org.dbunit.IDatabaseTester;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.ITable;
import org.dbunit.dataset.xml.FlatXmlDataSetBuilder;
import org.dbunit.ext.h2.H2Connection;
import org.dbunit.ext.mysql.MySqlConnection;
import org.dbunit.ext.oracle.OracleConnection;
import org.dbunit.operation.DatabaseOperation;
import org.h2.tools.RunScript;
import org.junit.Before;
......@@ -77,6 +79,10 @@ public abstract class AbstractDBUnitTest {
protected abstract List<String> getDataSetFiles();
protected final String currentDbType() {
return DatabaseType.H2 == CURRENT_DB_TYPE ? "mysql" : CURRENT_DB_TYPE.name().toLowerCase();
}
protected final Map<String, DataSource> createDataSourceMap(final String dataSourceNamePattern) {
Map<String, DataSource> result = new HashMap<>(getDataSetFiles().size());
for (String each : getDataSetFiles()) {
......@@ -136,6 +142,10 @@ public abstract class AbstractDBUnitTest {
return new H2Connection(connection, "PUBLIC");
case MySQL:
return new MySqlConnection(connection, "PUBLIC");
case PostgreSQL:
return new DatabaseConnection(connection);
case Oracle:
return new OracleConnection(connection, "PUBLIC");
default:
throw new UnsupportedOperationException(dbEnv.getDatabaseType().name());
}
......
......@@ -17,22 +17,23 @@
package com.dangdang.ddframe.rdb.integrate;
import java.util.HashMap;
import java.util.Map;
import com.dangdang.ddframe.rdb.sharding.constant.DatabaseType;
import lombok.Getter;
import java.util.HashMap;
import java.util.Map;
public final class DataBaseEnvironment {
private static final Map<DatabaseType, Class<?>> DRIVER_CLASS_NAME = new HashMap<>(2);
private static final int INIT_CAPACITY = 3;
private static final Map<DatabaseType, Class<?>> DRIVER_CLASS_NAME = new HashMap<>(INIT_CAPACITY);
private static final Map<DatabaseType, String> URL = new HashMap<>(2);
private static final Map<DatabaseType, String> URL = new HashMap<>(INIT_CAPACITY);
private static final Map<DatabaseType, String> USERNAME = new HashMap<>(2);
private static final Map<DatabaseType, String> USERNAME = new HashMap<>(INIT_CAPACITY);
private static final Map<DatabaseType, String> PASSWORD = new HashMap<>(2);
private static final Map<DatabaseType, String> PASSWORD = new HashMap<>(INIT_CAPACITY);
@Getter
private final DatabaseType databaseType;
......@@ -44,13 +45,19 @@ public final class DataBaseEnvironment {
private void fillData() {
DRIVER_CLASS_NAME.put(DatabaseType.H2, org.h2.Driver.class);
DRIVER_CLASS_NAME.put(DatabaseType.MySQL, com.mysql.jdbc.Driver.class);
URL.put(DatabaseType.H2, "jdbc:h2:mem:%s;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL");
URL.put(DatabaseType.MySQL, "jdbc:mysql://localhost:3306/%s");
USERNAME.put(DatabaseType.H2, "sa");
USERNAME.put(DatabaseType.MySQL, "root");
PASSWORD.put(DatabaseType.H2, "");
DRIVER_CLASS_NAME.put(DatabaseType.MySQL, com.mysql.jdbc.Driver.class);
URL.put(DatabaseType.MySQL, "jdbc:mysql://localhost:3306/%s");
USERNAME.put(DatabaseType.MySQL, "root");
PASSWORD.put(DatabaseType.MySQL, "");
DRIVER_CLASS_NAME.put(DatabaseType.PostgreSQL, org.postgresql.Driver.class);
URL.put(DatabaseType.PostgreSQL, "jdbc:postgresql://localhost:5432/%s");
USERNAME.put(DatabaseType.PostgreSQL, "postgres");
PASSWORD.put(DatabaseType.PostgreSQL, "");
}
public String getDriverClassName() {
......
......@@ -26,8 +26,8 @@ import com.dangdang.ddframe.rdb.sharding.api.rule.TableRule;
import com.dangdang.ddframe.rdb.sharding.api.strategy.database.DatabaseShardingStrategy;
import com.dangdang.ddframe.rdb.sharding.api.strategy.table.NoneTableShardingAlgorithm;
import com.dangdang.ddframe.rdb.sharding.api.strategy.table.TableShardingStrategy;
import com.dangdang.ddframe.rdb.sharding.keygen.fixture.IncrementKeyGenerator;
import com.dangdang.ddframe.rdb.sharding.jdbc.ShardingDataSource;
import com.dangdang.ddframe.rdb.sharding.keygen.fixture.IncrementKeyGenerator;
import org.junit.AfterClass;
import java.util.Arrays;
......@@ -43,16 +43,16 @@ public abstract class AbstractShardingDataBasesOnlyDBUnitTest extends AbstractDB
@Override
protected List<String> getSchemaFiles() {
return Arrays.asList(
"integrate/schema/db/db_0.sql",
"integrate/schema/db/db_1.sql",
"integrate/schema/db/db_2.sql",
"integrate/schema/db/db_3.sql",
"integrate/schema/db/db_4.sql",
"integrate/schema/db/db_5.sql",
"integrate/schema/db/db_6.sql",
"integrate/schema/db/db_7.sql",
"integrate/schema/db/db_8.sql",
"integrate/schema/db/db_9.sql");
"integrate/schema/" + currentDbType() + "/db/db_0.sql",
"integrate/schema/" + currentDbType() + "/db/db_1.sql",
"integrate/schema/" + currentDbType() + "/db/db_2.sql",
"integrate/schema/" + currentDbType() + "/db/db_3.sql",
"integrate/schema/" + currentDbType() + "/db/db_4.sql",
"integrate/schema/" + currentDbType() + "/db/db_5.sql",
"integrate/schema/" + currentDbType() + "/db/db_6.sql",
"integrate/schema/" + currentDbType() + "/db/db_7.sql",
"integrate/schema/" + currentDbType() + "/db/db_8.sql",
"integrate/schema/" + currentDbType() + "/db/db_9.sql");
}
@Override
......
......@@ -28,16 +28,16 @@ public abstract class AbstractShardingBothTest extends AbstractDBUnitTest {
@Override
protected List<String> getSchemaFiles() {
return Arrays.asList(
"integrate/schema/dbtbl/dbtbl_0.sql",
"integrate/schema/dbtbl/dbtbl_1.sql",
"integrate/schema/dbtbl/dbtbl_2.sql",
"integrate/schema/dbtbl/dbtbl_3.sql",
"integrate/schema/dbtbl/dbtbl_4.sql",
"integrate/schema/dbtbl/dbtbl_5.sql",
"integrate/schema/dbtbl/dbtbl_6.sql",
"integrate/schema/dbtbl/dbtbl_7.sql",
"integrate/schema/dbtbl/dbtbl_8.sql",
"integrate/schema/dbtbl/dbtbl_9.sql");
"integrate/schema/mysql/dbtbl/dbtbl_0.sql",
"integrate/schema/mysql/dbtbl/dbtbl_1.sql",
"integrate/schema/mysql/dbtbl/dbtbl_2.sql",
"integrate/schema/mysql/dbtbl/dbtbl_3.sql",
"integrate/schema/mysql/dbtbl/dbtbl_4.sql",
"integrate/schema/mysql/dbtbl/dbtbl_5.sql",
"integrate/schema/mysql/dbtbl/dbtbl_6.sql",
"integrate/schema/mysql/dbtbl/dbtbl_7.sql",
"integrate/schema/mysql/dbtbl/dbtbl_8.sql",
"integrate/schema/mysql/dbtbl/dbtbl_9.sql");
}
@Override
......
......@@ -50,16 +50,16 @@ public abstract class AbstractShardingDataBasesOnlyHintDBUnitTest extends Abstra
@Override
protected List<String> getSchemaFiles() {
return Arrays.asList(
"integrate/schema/db/db_0.sql",
"integrate/schema/db/db_1.sql",
"integrate/schema/db/db_2.sql",
"integrate/schema/db/db_3.sql",
"integrate/schema/db/db_4.sql",
"integrate/schema/db/db_5.sql",
"integrate/schema/db/db_6.sql",
"integrate/schema/db/db_7.sql",
"integrate/schema/db/db_8.sql",
"integrate/schema/db/db_9.sql");
"integrate/schema/" + currentDbType() + "/db/db_0.sql",
"integrate/schema/" + currentDbType() + "/db/db_1.sql",
"integrate/schema/" + currentDbType() + "/db/db_2.sql",
"integrate/schema/" + currentDbType() + "/db/db_3.sql",
"integrate/schema/" + currentDbType() + "/db/db_4.sql",
"integrate/schema/" + currentDbType() + "/db/db_5.sql",
"integrate/schema/" + currentDbType() + "/db/db_6.sql",
"integrate/schema/" + currentDbType() + "/db/db_7.sql",
"integrate/schema/" + currentDbType() + "/db/db_8.sql",
"integrate/schema/" + currentDbType() + "/db/db_9.sql");
}
@Override
......
......@@ -56,26 +56,26 @@ public abstract class AbstractShardingMasterSlaveDBUnitTest extends AbstractDBUn
@Override
protected List<String> getSchemaFiles() {
return Arrays.asList(
"integrate/schema/masterslave/master_0.sql",
"integrate/schema/masterslave/master_1.sql",
"integrate/schema/masterslave/master_2.sql",
"integrate/schema/masterslave/master_3.sql",
"integrate/schema/masterslave/master_4.sql",
"integrate/schema/masterslave/master_5.sql",
"integrate/schema/masterslave/master_6.sql",
"integrate/schema/masterslave/master_7.sql",
"integrate/schema/masterslave/master_8.sql",
"integrate/schema/masterslave/master_9.sql",
"integrate/schema/masterslave/slave_0.sql",
"integrate/schema/masterslave/slave_1.sql",
"integrate/schema/masterslave/slave_2.sql",
"integrate/schema/masterslave/slave_3.sql",
"integrate/schema/masterslave/slave_4.sql",
"integrate/schema/masterslave/slave_5.sql",
"integrate/schema/masterslave/slave_6.sql",
"integrate/schema/masterslave/slave_7.sql",
"integrate/schema/masterslave/slave_8.sql",
"integrate/schema/masterslave/slave_9.sql");
"integrate/schema/" + currentDbType() + "/masterslave/master_0.sql",
"integrate/schema/" + currentDbType() + "/masterslave/master_1.sql",
"integrate/schema/" + currentDbType() + "/masterslave/master_2.sql",
"integrate/schema/" + currentDbType() + "/masterslave/master_3.sql",
"integrate/schema/" + currentDbType() + "/masterslave/master_4.sql",
"integrate/schema/" + currentDbType() + "/masterslave/master_5.sql",
"integrate/schema/" + currentDbType() + "/masterslave/master_6.sql",
"integrate/schema/" + currentDbType() + "/masterslave/master_7.sql",
"integrate/schema/" + currentDbType() + "/masterslave/master_8.sql",
"integrate/schema/" + currentDbType() + "/masterslave/master_9.sql",
"integrate/schema/" + currentDbType() + "/masterslave/slave_0.sql",
"integrate/schema/" + currentDbType() + "/masterslave/slave_1.sql",
"integrate/schema/" + currentDbType() + "/masterslave/slave_2.sql",
"integrate/schema/" + currentDbType() + "/masterslave/slave_3.sql",
"integrate/schema/" + currentDbType() + "/masterslave/slave_4.sql",
"integrate/schema/" + currentDbType() + "/masterslave/slave_5.sql",
"integrate/schema/" + currentDbType() + "/masterslave/slave_6.sql",
"integrate/schema/" + currentDbType() + "/masterslave/slave_7.sql",
"integrate/schema/" + currentDbType() + "/masterslave/slave_8.sql",
"integrate/schema/" + currentDbType() + "/masterslave/slave_9.sql");
}
@Override
......
......@@ -42,16 +42,16 @@ public abstract class AbstractShardingNullableDBUnitTest extends AbstractDBUnitT
@Override
protected List<String> getSchemaFiles() {
return Arrays.asList(
"integrate/schema/nullable/nullable_0.sql",
"integrate/schema/nullable/nullable_1.sql",
"integrate/schema/nullable/nullable_2.sql",
"integrate/schema/nullable/nullable_3.sql",
"integrate/schema/nullable/nullable_4.sql",
"integrate/schema/nullable/nullable_5.sql",
"integrate/schema/nullable/nullable_6.sql",
"integrate/schema/nullable/nullable_7.sql",
"integrate/schema/nullable/nullable_8.sql",
"integrate/schema/nullable/nullable_9.sql");
"integrate/schema/" + currentDbType() + "/nullable/nullable_0.sql",
"integrate/schema/" + currentDbType() + "/nullable/nullable_1.sql",
"integrate/schema/" + currentDbType() + "/nullable/nullable_2.sql",
"integrate/schema/" + currentDbType() + "/nullable/nullable_3.sql",
"integrate/schema/" + currentDbType() + "/nullable/nullable_4.sql",
"integrate/schema/" + currentDbType() + "/nullable/nullable_5.sql",
"integrate/schema/" + currentDbType() + "/nullable/nullable_6.sql",
"integrate/schema/" + currentDbType() + "/nullable/nullable_7.sql",
"integrate/schema/" + currentDbType() + "/nullable/nullable_8.sql",
"integrate/schema/" + currentDbType() + "/nullable/nullable_9.sql");
}
@Override
......
......@@ -41,7 +41,7 @@ public abstract class AbstractShardingTablesOnlyDBUnitTest extends AbstractDBUni
@Override
protected List<String> getSchemaFiles() {
return Collections.singletonList("integrate/schema/tbl/db_single.sql");
return Collections.singletonList("integrate/schema/" + currentDbType() + "/tbl/db_single.sql");
}
@Override
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册