Commit 2d29a1e6 authored by haocao's avatar haocao
Browse files

Refactor integrate test cases 7th.

parent eeee52b5
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -42,11 +42,11 @@ public class ShardingDatabaseOnlyForPreparedStatementWithAggregateTest extends A
    @Test
    public void assertSelectCount() throws SQLException {
        try (Connection conn = getShardingDataSource().getConnection();
             PreparedStatement ps = conn.prepareStatement(getDatabaseTestSQL().getSelectCountSql());
             PreparedStatement ps = conn.prepareStatement(getDatabaseTestSQL().getSelectCountAliasSql());
             ResultSet rs = ps.executeQuery()) {
            assertThat(rs.next(), is(true));
            if (isAliasSupport()) {
                assertThat(rs.getInt("COUNT(*)"), is(40));
                assertThat(rs.getInt("orders_count"), is(40));
            }
            assertThat(rs.getInt(1), is(40));
            assertThat(rs.next(), is(false));
@@ -61,11 +61,11 @@ public class ShardingDatabaseOnlyForPreparedStatementWithAggregateTest extends A
    @Test
    public void assertSelectSum() throws SQLException {
        try (Connection conn = getShardingDataSource().getConnection();
             PreparedStatement ps = conn.prepareStatement(getDatabaseTestSQL().getSelectSumSql());
             PreparedStatement ps = conn.prepareStatement(getDatabaseTestSQL().getSelectSumAliasSql());
             ResultSet rs = ps.executeQuery()) {
            assertThat(rs.next(), is(true));
            if (isAliasSupport()) {
                assertThat(rs.getLong("SUM(`user_id`)"), is(780L));
                assertThat(rs.getLong("user_id_sum"), is(780L));
            }
            assertThat(rs.getLong(1), is(780L));
            assertThat(rs.next(), is(false));
@@ -80,11 +80,11 @@ public class ShardingDatabaseOnlyForPreparedStatementWithAggregateTest extends A
    @Test
    public void assertSelectMax() throws SQLException {
        try (Connection conn = getShardingDataSource().getConnection();
             PreparedStatement ps = conn.prepareStatement(getDatabaseTestSQL().getSelectMaxSql());
             PreparedStatement ps = conn.prepareStatement(getDatabaseTestSQL().getSelectMaxAliasSql());
             ResultSet rs = ps.executeQuery()) {
            assertThat(rs.next(), is(true));
            if (isAliasSupport()) {
                assertThat(rs.getDouble("MAX(`user_id`)"), is(29D));
                assertThat(rs.getDouble("max_user_id"), is(29D));
            }
            assertThat(rs.getDouble(1), is(29D));
            assertThat(rs.next(), is(false));
@@ -99,11 +99,11 @@ public class ShardingDatabaseOnlyForPreparedStatementWithAggregateTest extends A
    @Test
    public void assertSelectMin() throws SQLException {
        try (Connection conn = getShardingDataSource().getConnection();
             PreparedStatement ps = conn.prepareStatement(getDatabaseTestSQL().getSelectMinSql());
             PreparedStatement ps = conn.prepareStatement(getDatabaseTestSQL().getSelectMinAliasSql());
             ResultSet rs = ps.executeQuery()) {
            assertThat(rs.next(), is(true));
            if (isAliasSupport()) {
                assertThat(rs.getFloat("MIN(`user_id`)"), is(10F));
                assertThat(rs.getFloat("mIN_user_id"), is(10F));
            }
            assertThat(rs.getFloat(1), is(10F));
            assertThat(rs.next(), is(false));
@@ -120,11 +120,11 @@ public class ShardingDatabaseOnlyForPreparedStatementWithAggregateTest extends A
    @Test
    public void assertSelectAvgByName() throws SQLException {
        try (Connection conn = getShardingDataSource().getConnection();
             PreparedStatement ps = conn.prepareStatement(getDatabaseTestSQL().getSelectAvgSql());
             PreparedStatement ps = conn.prepareStatement(getDatabaseTestSQL().getSelectAvgAliasSql());
             ResultSet rs = ps.executeQuery()) {
            assertThat(rs.next(), is(true));
            if (isAliasSupport()) {
                assertThat(rs.getObject("AVG(`user_id`)"), Is.<Object>is(new BigDecimal("19.5000")));
                assertThat(rs.getObject("user_id_avg"), Is.<Object>is(new BigDecimal("19.5000")));
            }
            assertThat(rs.getBigDecimal(1), Is.<Object>is(new BigDecimal("19.5000")));
            assertThat(rs.next(), is(false));
+6 −10
Original line number Diff line number Diff line
@@ -47,35 +47,31 @@ public final class StaticShardingBothForStatementWithSelectTest extends Abstract
    
    @Test
    public void assertSelectLimitWithBindingTable() throws SQLException, DatabaseUnitException {
        String sql = "SELECT i.* FROM `t_order` o JOIN `t_order_item` i ON o.user_id = i.user_id AND o.order_id = i.order_id"
                + " WHERE o.`user_id` IN (%s, %s) AND o.`order_id` BETWEEN %s AND %s ORDER BY i.item_id DESC LIMIT %s, %s";
        String sql = getDatabaseTestSQL().getSelectLimitWithBindingTableSql();
        assertDataSet("integrate/dataset/dbtbl/expect/select/SelectLimitWithBindingTable.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909, 2, 2));
        assertDataSet("integrate/dataset/Empty.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909, 10000, 2));
    }
    
    @Test
    public void assertSelectGroupByWithBindingTable() throws SQLException, DatabaseUnitException {
        String sql = "SELECT count(*) as items_count, o.`user_id` FROM `t_order` o JOIN `t_order_item` i ON o.user_id = i.user_id AND o.order_id = i.order_id"
                + " WHERE o.`user_id` IN (%s, %s) AND o.`order_id` BETWEEN %s AND %s GROUP BY o.`user_id`";
        String sql = getDatabaseTestSQL().getSelectGroupWithBindingTableSql();
        assertDataSet("integrate/dataset/dbtbl/expect/select/SelectGroupByWithBindingTable.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909));
        assertDataSet("integrate/dataset/Empty.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 1, 9, 1000, 1909));
    }
    
    @Test
    public void assertSelectGroupByWithoutGroupedColumn() throws SQLException, DatabaseUnitException {
        String sql = "SELECT count(*) as items_count FROM `t_order` o JOIN `t_order_item` i ON o.user_id = i.user_id AND o.order_id = i.order_id"
                + " WHERE o.`user_id` IN (%s, %s) AND o.`order_id` BETWEEN %s AND %s GROUP BY o.`user_id`";
        String sql = getDatabaseTestSQL().getSelectGroupWithoutGroupedColumnSql();
        assertDataSet("integrate/dataset/dbtbl/expect/select/SelectGroupByWithoutGroupedColumn.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 19, 1000, 1909));
        assertDataSet("integrate/dataset/Empty.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 1, 9, 1000, 1909));
    }
    
    @Test
    public void assertSelectWithBindingTableAndConfigTable() throws SQLException, DatabaseUnitException {
        String sql = "SELECT i.* FROM `t_order` o JOIN `t_order_item` i ON o.user_id = i.user_id AND o.order_id = i.order_id JOIN t_config c ON o.status = c.status"
                + " WHERE o.`user_id` IN (%s, %s) AND o.`order_id` BETWEEN %s AND %s AND c.status = '%s' ORDER BY i.item_id";
        String sql = getDatabaseTestSQL().getSelectGroupWithBindingTableAndConfigSql();
        assertDataSet("integrate/dataset/dbtbl/expect/select/SelectWithBindingTableAndConfigTable.xml",
                getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 11, 1009, 1108, "init"));
        assertDataSet("integrate/dataset/Empty.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 11, 1009, 1108, "none"));
                getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 11, 1009, 1108, "'init'"));
        assertDataSet("integrate/dataset/Empty.xml", getShardingDataSource().getConnection(), "t_order_item", String.format(sql, 10, 11, 1009, 1108, "'none'"));
    }
    
    @Test
+14 −11
Original line number Diff line number Diff line
@@ -99,6 +99,7 @@ public class RoutingDatabaseOnlyWithHintForDMLTest extends AbstractRoutingDataba
    
    @Test
    public void assertUpdateWithAlias() throws SQLException, DatabaseUnitException {
        if (isAliasSupport()) {
            for (int i = 10; i < 30; i++) {
                for (int j = 0; j < 2; j++) {
                    try (DynamicShardingValueHelper helper = new DynamicDatabaseShardingValueHelper(i);
@@ -113,6 +114,7 @@ public class RoutingDatabaseOnlyWithHintForDMLTest extends AbstractRoutingDataba
            }
            assertDataSet("update", "updated"); 
        }
    }
    
    @Test
    public void assertDeleteWithoutAlias() throws SQLException, DatabaseUnitException {
@@ -134,7 +136,8 @@ public class RoutingDatabaseOnlyWithHintForDMLTest extends AbstractRoutingDataba
    private void assertDataSet(final String expectedDataSetPattern, final String status) throws SQLException, DatabaseUnitException {
        for (int i = 0; i < 10; i++) {
            assertDataSet(String.format("integrate/dataset/db/expect/%s/db_%s.xml", expectedDataSetPattern, i),
                    shardingDataSource.getConnection().getConnection(String.format("dataSource_db_%s", i), SQLType.SELECT), "t_order", getDatabaseTestSQL().getAssertSelectWithStatusSql(), status);
                    shardingDataSource.getConnection().getConnection(String.format("dataSource_db_%s", i), SQLType.SELECT), 
                    "t_order", replacePreparedStatement(getDatabaseTestSQL().getAssertSelectWithStatusSql()), status);
        }
    }
}
+14 −11
Original line number Diff line number Diff line
@@ -99,6 +99,7 @@ public final class ShardingDatabaseOnlyWithHintForDMLTest extends AbstractShardi
    
    @Test
    public void assertUpdateWithAlias() throws SQLException, DatabaseUnitException {
        if (isAliasSupport()) {
            for (int i = 10; i < 30; i++) {
                for (int j = 0; j < 2; j++) {
                    try (DynamicShardingValueHelper helper = new DynamicShardingValueHelper(i, i * 100 + j);
@@ -113,6 +114,7 @@ public final class ShardingDatabaseOnlyWithHintForDMLTest extends AbstractShardi
            }
            assertDataSet("update", "updated");
        }
    }
    
    @Test
    public void assertDeleteWithoutAlias() throws SQLException, DatabaseUnitException {
@@ -134,7 +136,8 @@ public final class ShardingDatabaseOnlyWithHintForDMLTest extends AbstractShardi
    private void assertDataSet(final String expectedDataSetPattern, final String status) throws SQLException, DatabaseUnitException {
        for (int i = 0; i < 10; i++) {
            assertDataSet(String.format("integrate/dataset/db/expect/%s/db_%s.xml", expectedDataSetPattern, i),
                    shardingDataSource.getConnection().getConnection(String.format("dataSource_db_%s", i), SQLType.SELECT), "t_order", getDatabaseTestSQL().getAssertSelectWithStatusSql(), status);
                    shardingDataSource.getConnection().getConnection(String.format("dataSource_db_%s", i), SQLType.SELECT), 
                    "t_order", replacePreparedStatement(getDatabaseTestSQL().getAssertSelectWithStatusSql()), status);
        }
    }
}
+20 −37
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import static com.dangdang.ddframe.rdb.integrate.util.SqlPlaceholderUtil.replacePreparedStatement;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;

@@ -43,11 +44,10 @@ public final class ShardingMasterSlaveForPStatementWithDMLTest extends AbstractS
    
    @Test
    public void assertInsertWithAllPlaceholders() throws SQLException, DatabaseUnitException {
        String sql = "INSERT INTO `t_order` (`order_id`, `user_id`, `status`) VALUES (?, ?, ?)";
        for (int i = 1; i <= 10; i++) {
            for (int j = 1; j <= 10; j++) {
                try (Connection connection = shardingDataSource.getConnection()) {
                    PreparedStatement preparedStatement = connection.prepareStatement(sql);
                    PreparedStatement preparedStatement = connection.prepareStatement(getDatabaseTestSQL().getInsertWithAllPlaceholdersSql());
                    preparedStatement.setInt(1, i);
                    preparedStatement.setInt(2, j);
                    preparedStatement.setString(3, "insert");
@@ -60,7 +60,6 @@ public final class ShardingMasterSlaveForPStatementWithDMLTest extends AbstractS
    
    @Test
    public void assertInsertWithHint() throws SQLException, DatabaseUnitException {
        String sql = "INSERT INTO `t_order` (`order_id`, `user_id`, `status`) VALUES (?, ?, ?)";
        for (int i = 1; i <= 10; i++) {
            for (int j = 1; j <= 10; j++) {
                try (
@@ -69,7 +68,7 @@ public final class ShardingMasterSlaveForPStatementWithDMLTest extends AbstractS
                ) {
                    hintManager.addDatabaseShardingValue("t_order", "user_id", j);
                    hintManager.addTableShardingValue("t_order", "order_id", i);
                    PreparedStatement preparedStatement = connection.prepareStatement(sql);
                    PreparedStatement preparedStatement = connection.prepareStatement(getDatabaseTestSQL().getInsertWithAllPlaceholdersSql());
                    preparedStatement.setInt(1, i);
                    preparedStatement.setInt(2, j);
                    preparedStatement.setString(3, "insert");
@@ -85,11 +84,10 @@ public final class ShardingMasterSlaveForPStatementWithDMLTest extends AbstractS
    
    @Test
    public void assertInsertWithoutPlaceholder() throws SQLException, DatabaseUnitException {
        String sql = "INSERT INTO `t_order` (`order_id`, `user_id`, `status`) VALUES (%s, %s, 'insert')";
        for (int i = 1; i <= 10; i++) {
            for (int j = 1; j <= 10; j++) {
                try (Connection connection = shardingDataSource.getConnection()) {
                    PreparedStatement preparedStatement = connection.prepareStatement(String.format(sql, i, j));
                    PreparedStatement preparedStatement = connection.prepareStatement(String.format(getDatabaseTestSQL().getInsertWithoutPlaceholderSql(), i, j));
                    preparedStatement.executeUpdate();
                }
            }
@@ -103,22 +101,7 @@ public final class ShardingMasterSlaveForPStatementWithDMLTest extends AbstractS
        for (int i = 1; i <= 10; i++) {
            for (int j = 1; j <= 10; j++) {
                try (Connection connection = shardingDataSource.getConnection()) {
                    PreparedStatement preparedStatement = connection.prepareStatement(String.format(sql, i, j));
                    preparedStatement.setString(1, "insert");
                    preparedStatement.executeUpdate();
                }
            }
        }
        assertDataSet("insert", "insert");
    }
    
    @Test
    public void assertInsertWithPlaceholdersForNotShardingKeys() throws SQLException, DatabaseUnitException {
        String sql = "INSERT INTO `t_order` (`order_id`, `user_id`, `status`) VALUES (%s, %s, ?)";
        for (int i = 1; i <= 10; i++) {
            for (int j = 1; j <= 10; j++) {
                try (Connection connection = shardingDataSource.getConnection()) {
                    PreparedStatement preparedStatement = connection.prepareStatement(String.format(sql, i, j));
                    PreparedStatement preparedStatement = connection.prepareStatement(String.format(getDatabaseTestSQL().getInsertWithPartialPlaceholdersSql(), i, j));
                    preparedStatement.setString(1, "insert");
                    preparedStatement.executeUpdate();
                }
@@ -129,11 +112,10 @@ public final class ShardingMasterSlaveForPStatementWithDMLTest extends AbstractS
    
    @Test
    public void assertUpdateWithoutAlias() throws SQLException, DatabaseUnitException {
        String sql = "UPDATE `t_order` SET `status` = ? WHERE `order_id` = ? AND `user_id` = ?";
        for (int i = 10; i < 20; i++) {
            for (int j = 0; j < 10; j++) {
                try (Connection connection = shardingDataSource.getConnection()) {
                    PreparedStatement preparedStatement = connection.prepareStatement(sql);
                    PreparedStatement preparedStatement = connection.prepareStatement(replacePreparedStatement(getDatabaseTestSQL().getUpdateWithoutAliasSql()));
                    preparedStatement.setString(1, "updated");
                    preparedStatement.setInt(2, i * 100 + j);
                    preparedStatement.setInt(3, i);
@@ -146,11 +128,11 @@ public final class ShardingMasterSlaveForPStatementWithDMLTest extends AbstractS
    
    @Test
    public void assertUpdateWithAlias() throws SQLException, DatabaseUnitException {
        String sql = "UPDATE `t_order` AS o SET o.`status` = ? WHERE o.`order_id` = ? AND o.`user_id` = ?";
        if (isAliasSupport()) {
            for (int i = 10; i < 20; i++) {
                for (int j = 0; j < 10; j++) {
                    try (Connection connection = shardingDataSource.getConnection()) {
                    PreparedStatement preparedStatement = connection.prepareStatement(sql);
                        PreparedStatement preparedStatement = connection.prepareStatement(getDatabaseTestSQL().getUpdateWithAliasSql());
                        preparedStatement.setString(1, "updated");
                        preparedStatement.setInt(2, i * 100 + j);
                        preparedStatement.setInt(3, i);
@@ -160,16 +142,17 @@ public final class ShardingMasterSlaveForPStatementWithDMLTest extends AbstractS
            }
            assertDataSet("update", "updated");
        }
    }
    
    @Test
    public void assertDeleteWithoutAlias() throws SQLException, DatabaseUnitException {
        String sql = "DELETE FROM `t_order` WHERE `order_id` = ? AND `user_id` = ?";
        for (int i = 10; i < 20; i++) {
            for (int j = 0; j < 10; j++) {
                try (Connection connection = shardingDataSource.getConnection()) {
                    PreparedStatement preparedStatement = connection.prepareStatement(sql);
                    PreparedStatement preparedStatement = connection.prepareStatement(replacePreparedStatement(getDatabaseTestSQL().getDeleteWithoutAliasSql()));
                    preparedStatement.setInt(1, i * 100 + j);
                    preparedStatement.setInt(2, i);
                    preparedStatement.setString(3, "init_master");
                    assertThat(preparedStatement.executeUpdate(), is(1));
                }
            }
@@ -182,7 +165,7 @@ public final class ShardingMasterSlaveForPStatementWithDMLTest extends AbstractS
            for (int j = 0; j < 10; j++) {
                assertDataSet(String.format("integrate/dataset/masterslave/expect/%s/master_%s.xml", expectedDataSetPattern, i),
                        shardingDataSource.getConnection().getConnection(String.format("ms_%s", i), SQLType.INSERT), 
                        String.format("t_order_%s", j), String.format("SELECT * FROM `t_order_%s` WHERE `status`=?", j), status);
                        String.format("t_order_%s", j), String.format(getDatabaseTestSQL().getAssertSelectShardingTablesWithStatusSql(), j), status);
            }
        }
    }
Loading