Commit 7c5b9c5e authored by haocao's avatar haocao
Browse files

Add postgresql test case and test dependencies.

parent c49892a6
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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>
+4 −0
Original line number Diff line number Diff line
@@ -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>
+10 −0
Original line number Diff line number Diff line
@@ -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());
        }
+18 −11
Original line number Diff line number Diff line
@@ -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() {
+11 −11
Original line number Diff line number Diff line
@@ -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
Loading