You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ki...@apache.org on 2020/06/19 09:29:54 UTC

[shardingsphere-benchmark] branch 5.0.0 updated: refactor way to get db connection. (#53)

This is an automated email from the ASF dual-hosted git repository.

kimmking pushed a commit to branch 5.0.0
in repository https://gitbox.apache.org/repos/asf/shardingsphere-benchmark.git


The following commit(s) were added to refs/heads/5.0.0 by this push:
     new 5f27c8e  refactor way to get db connection. (#53)
5f27c8e is described below

commit 5f27c8e967d666edff8e05554fed0e1ce72fd0a4
Author: Peace-JingHao <wc...@163.com>
AuthorDate: Fri Jun 19 17:29:46 2020 +0800

    refactor way to get db connection. (#53)
    
    * add gitignore to skip target, *.idea, *.iml files
    
    * fix issue which incorrect way to create enrypt configuration
    
    * refactor 5.0
    
    * refactor way to create db connection
---
 .../benchmark/db/jdbc/JDBCDataSourceUtil.java      |   7 +-
 .../ShardingJDBCDataSourceFactory.java             |   9 +-
 .../jmeter/jdbc/JMeterJDBCDeleteSbTest3.java       |  58 ++++++--
 .../jmeter/jdbc/JMeterJDBCDeleteSbTest6.java       |  59 ++++++--
 .../jmeter/jdbc/JMeterJDBCDeleteSbTest99.java      |  63 ++++++---
 .../jmeter/jdbc/JMeterJDBCInsertOneSbTest99.java   |  59 ++++++--
 .../jmeter/jdbc/JMeterJDBCInsertSbTest6.java       |  63 ++++++---
 .../jmeter/jdbc/JMeterJDBCInsertSbTest99.java      |  55 +++++---
 .../jdbc/JMeterJDBCInsertUpdateDeleteSbTest6.java  |  62 ++++++---
 .../jdbc/JMeterJDBCMasterSlaveInsertSbTest6.java   |  59 ++++++--
 .../JMeterJDBCMasterSlaveInsertUpdateDelete.java   |  58 +++++---
 .../jmeter/jdbc/JMeterJDBCSelectSbTest6.java       |  60 +++++---
 .../jmeter/jdbc/JMeterJDBCSelectSbTest99.java      |  61 ++++++---
 .../proxy/JMeterProxyMasterSlaveDeleteSbTest.java  |  59 ++++++--
 ...asterSlaveEncryptAllDbAllTableSbTestDelete.java |  61 +++++++--
 ...erSlaveEncryptAllDbAllTableSbTestInsertOne.java |  55 ++++++--
 ...cryptAllDbAllTableSbTestInsertUpdateDelete.java |  68 ++++++++--
 ...asterSlaveEncryptAllDbAllTableSbTestSelect.java |  64 +++++++--
 ...ProxyMasterSlaveEncryptInsertSbTestAction.java} |  61 +++++++--
 ...erProxyMasterSlaveInsertUpdateDeleteSbTest.java |  62 +++++++--
 ...ava => JMeterProxyMasterSlaveSbTestInsert.java} |  60 ++++++--
 ...eterProxyShardingAllDbAllTableSbTestDelete.java |  60 ++++++--
 ...rdingAllDbAllTableSbTestInsertUpdateDelete.java |  64 +++++++--
 ...oxyShardingAllDbAllTableSelectSbTestSelect.java |  60 ++++++--
 ...terProxyShardingAllDbAllTabletSbTestInsert.java |  64 +++++++--
 ...ProxyShardingAllDbAllTabletSbTestInsertOne.java |  64 +++++++--
 ...gAllDbSingleTableSbTest3InsertUpdateDelete.java | 151 +++++++++++++--------
 ...ProxyShardingAllDbSingleTableSbTest4Delete.java |  60 ++++++--
 ...ProxyShardingAllDbSingleTableSbTest4Insert.java |  60 ++++++--
 ...ProxyShardingAllDbSingleTableSbTest4Select.java |  52 +++++--
 ...rdingAllDbAllTableInsertSbTestUpdateDelete.java |   5 +-
 .../JMeterShardingAllDbAllTableSbTestSelect.java   |  77 +++++++++--
 ...ShardingAllDbSingleTableInsertUpdateDelete.java |  77 ++++++++---
 ...MeterShardingAllDbSingleTableSbTest4Delete.java |  74 ++++++++--
 ...MeterShardingAllDbSingleTableSbTest4Insert.java |  66 +++++++--
 ...MeterShardingAllDbSingleTableSbTest4Select.java |  72 ++++++++--
 ...rdingMasterSlaveEncryptAllDbAllTableSelect.java |  72 ++++++++--
 ...MeterShardingMasterSlaveInsertUpdateDelete.java |  71 +++++++---
 ...cryptAllDbAllTableInsertUpdateDeleteAction.java |  73 +++++++---
 .../proxy/proxy-masterslave-encrypt-insert-1w.jmx  |   2 +-
 .../testplan/proxy/proxy-masterslave-insert.jmx    |   2 +-
 41 files changed, 1847 insertions(+), 542 deletions(-)

diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/db/jdbc/JDBCDataSourceUtil.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/db/jdbc/JDBCDataSourceUtil.java
index 17c2104..e940722 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/db/jdbc/JDBCDataSourceUtil.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/db/jdbc/JDBCDataSourceUtil.java
@@ -23,7 +23,7 @@ public class JDBCDataSourceUtil {
      * @param password
      * @return
      */
-    public static void initDb(String dataSourceName, String host, int port, String userName, String password) {
+    public static DataSource initDb(String dataSourceName, String host, int port, String userName, String password) {
         HikariConfig config = new HikariConfig();
         config.setDriverClassName("com.mysql.jdbc.Driver");
         config.setJdbcUrl(String.format("jdbc:mysql://%s:%s/%s?useSSL=false&serverTimezone=UTC", host, port, dataSourceName));
@@ -44,8 +44,9 @@ public class JDBCDataSourceUtil {
         config.addDataSourceProperty("elideSetAutoCommits", Boolean.TRUE.toString());
         config.addDataSourceProperty("maintainTimeStats", Boolean.FALSE.toString());
         config.addDataSourceProperty("netTimeoutForStreamingResults", 0);
-        DataSource dataSource = new HikariDataSource(config);
-        DATASOURCES.put(dataSourceName, dataSource);
+        return new HikariDataSource(config);
+        //DATASOURCES.put(dataSourceName, dataSource);
+        //return dataSource;
     }
 
 
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/db/shardingjdbc/ShardingJDBCDataSourceFactory.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/db/shardingjdbc/ShardingJDBCDataSourceFactory.java
index ec309be..5d241b4 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/db/shardingjdbc/ShardingJDBCDataSourceFactory.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/db/shardingjdbc/ShardingJDBCDataSourceFactory.java
@@ -5,10 +5,11 @@ import org.apache.shardingsphere.driver.api.yaml.YamlShardingSphereDataSourceFac
 import javax.sql.DataSource;
 import java.io.*;
 import java.sql.SQLException;
-import java.net.URL;
-
-import static org.junit.Assert.assertNotNull;
 
+/**
+ *  Sharding scenario which to create DataSource based on different yaml config.
+ *
+ */
 public class ShardingJDBCDataSourceFactory {
 
     private static final String ENCRYPT_CONFIG_PATH = "/yaml/shardingjdbc/encrypt-config.yaml";
@@ -84,6 +85,7 @@ public class ShardingJDBCDataSourceFactory {
         return new File(ShardingJDBCDataSourceFactory.class.getResource(fileName).getFile());
     }
 
+
     /**
      * Get yaml file content bytes by file name.
      *
@@ -104,7 +106,6 @@ public class ShardingJDBCDataSourceFactory {
                 yamlContent.append(line).append("\n");
             }
 
-            System.out.println(yamlContent);
             yamlContentBytes =  yamlContent.toString().getBytes();
         } catch (IOException e) {
             e.printStackTrace();
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCDeleteSbTest3.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCDeleteSbTest3.java
index 59b4f6c..7a4edd1 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCDeleteSbTest3.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCDeleteSbTest3.java
@@ -6,11 +6,22 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 
+/**
+ * TODO: type old case here.
+ *
+ * JDBC Scenario
+ *  truncate table to clear data.
+ */
 public class JMeterJDBCDeleteSbTest3 extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3306;
 
     public static final String DB_PASSWORD = "";
@@ -19,20 +30,25 @@ public class JMeterJDBCDeleteSbTest3 extends AbstractJavaSamplerClient {
 
     public static final String DB_HOST = "10.222.16.97";
 
-    public static final String DB_DATASOURCE_NAME = "baitiao_test";
+    public static final String DB_NAME = "baitiao_test";
 
     public static final String TABLE_NAME = "sbtest3";
 
     public static final String DELETE_SQL = "truncate table " + TABLE_NAME;
 
-    // Init mysql database.
+    // Init mysql dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB_DATASOURCE_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute truncate action to clear data.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
-        Connection conn = null;
 
         SampleResult results = new SampleResult();
         results.setSampleLabel("JdbcSingleTableDelete");
@@ -40,19 +56,13 @@ public class JMeterJDBCDeleteSbTest3 extends AbstractJavaSamplerClient {
 
         try {
 
-            conn = JDBCDataSourceUtil.getDataSource(DB_DATASOURCE_NAME).getConnection();
-            JDBCDataSourceUtil.delete(conn, DELETE_SQL, null);
+            JDBCDataSourceUtil.delete(connection, DELETE_SQL, null);
             results.setSuccessful(true);
         } catch (SQLException e) {
             results.setSuccessful(false);
             e.printStackTrace();
         } finally {
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -63,7 +73,33 @@ public class JMeterJDBCDeleteSbTest3 extends AbstractJavaSamplerClient {
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
     public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+    
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
     }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCDeleteSbTest6.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCDeleteSbTest6.java
index 0b428b9..407d5ef 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCDeleteSbTest6.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCDeleteSbTest6.java
@@ -6,6 +6,7 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -14,9 +15,16 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/new_sharding/jdbc_clean.jmx
+ *
+ * JDBC scenario:
+ *  truncate table to clear data.
  */
 public class JMeterJDBCDeleteSbTest6 extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3306;
 
     public static final String DB_PASSWORD = "";
@@ -31,25 +39,27 @@ public class JMeterJDBCDeleteSbTest6 extends AbstractJavaSamplerClient {
 
     public static final String DELETE_SQL = "truncate table " + TABLE_NAME;
 
-
-    // Init mysql database.
+    // Init mysql dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute truncate action to clear data.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("JdbcSingleTableDelete");
         results.sampleStart();
 
         try {
 
-            conn = JDBCDataSourceUtil.getDataSource(DB_NAME).getConnection();
-            JDBCDataSourceUtil.delete(conn, DELETE_SQL, null);
+            JDBCDataSourceUtil.delete(connection, DELETE_SQL, null);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -59,12 +69,6 @@ public class JMeterJDBCDeleteSbTest6 extends AbstractJavaSamplerClient {
 
         } finally {
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
-
         }
 
         return results;
@@ -77,6 +81,33 @@ public class JMeterJDBCDeleteSbTest6 extends AbstractJavaSamplerClient {
     }
 
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCDeleteSbTest99.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCDeleteSbTest99.java
index 931fce7..05f4a55 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCDeleteSbTest99.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCDeleteSbTest99.java
@@ -6,15 +6,23 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 
 
 /**
  * Refactor old case test_plan/direct/delete_all.jmx
+ *
+ * JDBC scenario:
+ *  trigger delete action.
  */
 public class JMeterJDBCDeleteSbTest99 extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3306;
 
     public static final String DB_PASSWORD = "";
@@ -29,42 +37,34 @@ public class JMeterJDBCDeleteSbTest99 extends AbstractJavaSamplerClient {
 
     public static final String DELETE_SQL = "delete from sbtest99";
 
-
-
-    // Init mysql database.
+    // Init mysql dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute delete action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("JdbcSingleTableSelect");
         results.sampleStart();
 
         try {
 
-            conn = JDBCDataSourceUtil.getDataSource(DB_NAME).getConnection();
-            JDBCDataSourceUtil.delete(conn, DELETE_SQL, null);
+            JDBCDataSourceUtil.delete(connection, DELETE_SQL, null);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
-
             results.setSuccessful(false);
             e.printStackTrace();
-
         } finally {
-
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
-
         }
 
         return results;
@@ -75,6 +75,33 @@ public class JMeterJDBCDeleteSbTest99 extends AbstractJavaSamplerClient {
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCInsertOneSbTest99.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCInsertOneSbTest99.java
index cbccdbc..2ced994 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCInsertOneSbTest99.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCInsertOneSbTest99.java
@@ -6,6 +6,7 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Arrays;
@@ -13,9 +14,16 @@ import java.util.List;
 
 /**
  * Refactor old case  test_plan/direct/insert_direct_demo.jmx
+ *
+ * JDBC Scenario:
+ *  trigger insert action.
  */
 public class JMeterJDBCInsertOneSbTest99 extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3306;
 
     public static final String DB_PASSWORD = "";
@@ -30,16 +38,20 @@ public class JMeterJDBCInsertOneSbTest99 extends AbstractJavaSamplerClient {
 
     public static final String INSERT_SQL = "INSERT INTO " + TABLE_NAME + " (id,k,c,pad) VALUES (?,?,?,?)";
 
-    // Inite mysql database
+    // Init mysql dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute insert action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("JdbcSingleTableDemo");
         results.sampleStart();
@@ -47,8 +59,7 @@ public class JMeterJDBCInsertOneSbTest99 extends AbstractJavaSamplerClient {
         try {
 
             List insertParams = Arrays.asList(1, 3, "testtest", "test");
-            conn = JDBCDataSourceUtil.getDataSource(DB_NAME).getConnection();
-            JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -57,14 +68,7 @@ public class JMeterJDBCInsertOneSbTest99 extends AbstractJavaSamplerClient {
             e.printStackTrace();
 
         } finally {
-
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
-
         }
 
         return results;
@@ -75,7 +79,34 @@ public class JMeterJDBCInsertOneSbTest99 extends AbstractJavaSamplerClient {
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCInsertSbTest6.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCInsertSbTest6.java
index ee41bfb..ad1c809 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCInsertSbTest6.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCInsertSbTest6.java
@@ -7,6 +7,7 @@ import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 import org.bouncycastle.crypto.paddings.TBCPadding;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Arrays;
@@ -14,9 +15,16 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/new_sharding/jdbc_insert_ms_test.jmx
+ *
+ * JDBC Scenario:
+ *  trigger insert action.
  */
 public class JMeterJDBCInsertSbTest6 extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3306;
 
     public static final String DB_PASSWORD = "";
@@ -25,22 +33,26 @@ public class JMeterJDBCInsertSbTest6 extends AbstractJavaSamplerClient {
 
     public static final String DB_HOST = "10.222.16.97";
 
-    public static final String DB_DATASOURCE_NAME = "baitiao_test";
+    public static final String DB_NAME = "baitiao_test";
 
     public static final String TABLE_NAME = "sbtest6";
 
     public static final String INSERT_SQL = "INSERT INTO " + TABLE_NAME + " (k,c,pad) VALUES (?,?,?)";
 
-    // Init mysql database.
+    // Init mysql dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB_DATASOURCE_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute insert action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("JdbcInsert");
         results.sampleStart();
@@ -48,24 +60,14 @@ public class JMeterJDBCInsertSbTest6 extends AbstractJavaSamplerClient {
         try {
 
             List insertParams = Arrays.asList(3, "testtest", "test");
-            conn = JDBCDataSourceUtil.getDataSource(DB_DATASOURCE_NAME).getConnection();
-            JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
-
             results.setSuccessful(false);
             e.printStackTrace();
-
         } finally {
-
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
-
         }
 
         return results;
@@ -76,6 +78,33 @@ public class JMeterJDBCInsertSbTest6 extends AbstractJavaSamplerClient {
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCInsertSbTest99.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCInsertSbTest99.java
index 90025e7..58697fe 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCInsertSbTest99.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCInsertSbTest99.java
@@ -6,6 +6,7 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Arrays;
@@ -14,8 +15,15 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/direct/insert_direct.jmx
+ *
+ * JDBC Scenario:
+ *  trigger insert action.
  */
 public class JMeterJDBCInsertSbTest99  extends AbstractJavaSamplerClient {
+
+    public Connection connection;
+
+    public static DataSource dataSource;
     
     public static final int DB_PORT = 3306;
 
@@ -31,16 +39,14 @@ public class JMeterJDBCInsertSbTest99  extends AbstractJavaSamplerClient {
 
     public static final String INSERT_SQL = "INSERT INTO " + TABLE_NAME + " (k,c,pad) VALUES (?,?,?)";
 
-    // Init mysql database.
+    // Init mysql dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("JdbcSingleTableInsert");
         results.sampleStart();
@@ -48,24 +54,14 @@ public class JMeterJDBCInsertSbTest99  extends AbstractJavaSamplerClient {
         try {
 
             List insertParams = Arrays.asList(3, "testtest", "test");
-            conn = JDBCDataSourceUtil.getDataSource(DB_NAME).getConnection();
-            JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
-
             results.setSuccessful(false);
             e.printStackTrace();
-
         } finally {
-
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
-
         }
 
         return results;
@@ -76,7 +72,34 @@ public class JMeterJDBCInsertSbTest99  extends AbstractJavaSamplerClient {
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCInsertUpdateDeleteSbTest6.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCInsertUpdateDeleteSbTest6.java
index 1f3ce23..71e83ea 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCInsertUpdateDeleteSbTest6.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCInsertUpdateDeleteSbTest6.java
@@ -6,6 +6,7 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -14,9 +15,16 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/new_sharding/jdbc_all.jmx
+ *
+ * JDBC scenario:
+ *  trigger insert, update, delete action.
  */
 public class JMeterJDBCInsertUpdateDeleteSbTest6 extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3306;
 
     public static final String DB_PASSWORD = "";
@@ -27,7 +35,7 @@ public class JMeterJDBCInsertUpdateDeleteSbTest6 extends AbstractJavaSamplerClie
 
     public static final String DB_HOST = "10.222.16.97";
 
-    public static final String DB__NAME = "baitiao_test";
+    public static final String DB_NAME = "baitiao_test";
 
     public static final String INSERT_SQL = "INSERT INTO " + TABLE_NAME + " (k,c,pad) VALUES (?,?,?)";
 
@@ -35,17 +43,19 @@ public class JMeterJDBCInsertUpdateDeleteSbTest6 extends AbstractJavaSamplerClie
 
     public static final String UPDATE_SQL = "update  " + TABLE_NAME + "  set c=?,pad =? where id=? and k=1";
 
-
-
+    // Init mysql dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB__NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute insert, update, delete action.
+     * @param javaSamplerContext
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("JdbcSingleTableSelect");
         results.sampleStart();
@@ -53,18 +63,17 @@ public class JMeterJDBCInsertUpdateDeleteSbTest6 extends AbstractJavaSamplerClie
 
             //insert a record
             List insertParams = Arrays.asList(1, "##-####", "##-####");
-            conn = JDBCDataSourceUtil.getDataSource(DB__NAME).getConnection();
-            ResultSet rs = JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            ResultSet rs = JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
             rs.next();
             Long id = rs.getLong(1);
 
             //update a record
             List updateParams = Arrays.asList("##-####", "##-####", id);
-            JDBCDataSourceUtil.update(conn, UPDATE_SQL, updateParams);
+            JDBCDataSourceUtil.update(connection, UPDATE_SQL, updateParams);
 
             //delete a record
             List deleteParams = Arrays.asList(1, id);
-            JDBCDataSourceUtil.delete(conn, DELETE_SQL, deleteParams);
+            JDBCDataSourceUtil.delete(connection, DELETE_SQL, deleteParams);
             results.setSuccessful(true);
 
         } catch (SQLException throwables) {
@@ -75,11 +84,6 @@ public class JMeterJDBCInsertUpdateDeleteSbTest6 extends AbstractJavaSamplerClie
 
         } finally {
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
         return results;
     }
@@ -89,7 +93,33 @@ public class JMeterJDBCInsertUpdateDeleteSbTest6 extends AbstractJavaSamplerClie
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
+    @Override
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCMasterSlaveInsertSbTest6.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCMasterSlaveInsertSbTest6.java
index 1f8f548..c427275 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCMasterSlaveInsertSbTest6.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCMasterSlaveInsertSbTest6.java
@@ -6,6 +6,7 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Arrays;
@@ -13,9 +14,16 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/new_sharding/jdbc_insert_ms_test.jmx
+ *
+ * JDBC scenario(master-slave):
+ *  trigger insert action
  */
 public class JMeterJDBCMasterSlaveInsertSbTest6  extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3306;
 
     public static final String DB_PASSWORD = "";
@@ -30,16 +38,20 @@ public class JMeterJDBCMasterSlaveInsertSbTest6  extends AbstractJavaSamplerClie
 
     public static final String INSERT_SQL = "INSERT INTO " + TABLE_NAME + " (k,c,pad) VALUES (?,?,?)";
 
-    // Init mysql database.
+    // Init mysql dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute insert action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("JdbcInsert");
         results.sampleStart();
@@ -47,8 +59,7 @@ public class JMeterJDBCMasterSlaveInsertSbTest6  extends AbstractJavaSamplerClie
         try {
 
             List insertParams = Arrays.asList(3, "testtest", "test");
-            conn = JDBCDataSourceUtil.getDataSource(DB_NAME).getConnection();
-            JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -57,14 +68,7 @@ public class JMeterJDBCMasterSlaveInsertSbTest6  extends AbstractJavaSamplerClie
             e.printStackTrace();
 
         } finally {
-
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
-
         }
 
         return results;
@@ -76,6 +80,33 @@ public class JMeterJDBCMasterSlaveInsertSbTest6  extends AbstractJavaSamplerClie
     }
 
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCMasterSlaveInsertUpdateDelete.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCMasterSlaveInsertUpdateDelete.java
index f193798..c9dc1d3 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCMasterSlaveInsertUpdateDelete.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCMasterSlaveInsertUpdateDelete.java
@@ -6,6 +6,7 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -14,9 +15,16 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/new_sharding/jdbc_all_ms.jmx
+ *
+ * JDBC scenario(master-slave):
+ *  trigger insert, update, delete action.
  */
 public class JMeterJDBCMasterSlaveInsertUpdateDelete  extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3306;
 
     public static final String DB_PASSWORD = "";
@@ -27,7 +35,7 @@ public class JMeterJDBCMasterSlaveInsertUpdateDelete  extends AbstractJavaSample
 
     public static final String DB_HOST = "10.222.16.97";
 
-    public static final String DB__NAME = "baitiao_test";
+    public static final String DB_NAME = "baitiao_test";
 
     public static final String INSERT_SQL = "INSERT INTO " + TABLE_NAME + " (k,c,pad) VALUES (?,?,?)";
 
@@ -35,17 +43,14 @@ public class JMeterJDBCMasterSlaveInsertUpdateDelete  extends AbstractJavaSample
 
     public static final String UPDATE_SQL = "update  " + TABLE_NAME + "  set c=?,pad =? where id=? and k=1";
 
-
-
+    // Init mysql dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB__NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
     @Override
     public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("JdbcSingleTableSelect");
         results.sampleStart();
@@ -53,18 +58,17 @@ public class JMeterJDBCMasterSlaveInsertUpdateDelete  extends AbstractJavaSample
 
             //insert a record
             List insertParams = Arrays.asList(1, "##-####", "##-####");
-            conn = JDBCDataSourceUtil.getDataSource(DB__NAME).getConnection();
-            ResultSet rs = JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            ResultSet rs = JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
             rs.next();
             Long id = rs.getLong(1);
 
             //update a record
             List updateParams = Arrays.asList("##-####", "##-####", id);
-            JDBCDataSourceUtil.update(conn, UPDATE_SQL, updateParams);
+            JDBCDataSourceUtil.update(connection, UPDATE_SQL, updateParams);
 
             //delete a record
             List deleteParams = Arrays.asList(1, id);
-            JDBCDataSourceUtil.delete(conn, DELETE_SQL, deleteParams);
+            JDBCDataSourceUtil.delete(connection, DELETE_SQL, deleteParams);
             results.setSuccessful(true);
 
         } catch (SQLException throwables) {
@@ -75,11 +79,6 @@ public class JMeterJDBCMasterSlaveInsertUpdateDelete  extends AbstractJavaSample
 
         } finally {
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
         return results;
     }
@@ -90,6 +89,33 @@ public class JMeterJDBCMasterSlaveInsertUpdateDelete  extends AbstractJavaSample
     }
 
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCSelectSbTest6.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCSelectSbTest6.java
index 809de25..d4232bb 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCSelectSbTest6.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCSelectSbTest6.java
@@ -6,14 +6,22 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 
 /**
  * Refactor old case test_plan/new_sharding/jdbc_select.jmx
+ *
+ * JDBC scenario:
+ *  trigger select action.
  */
 public class JMeterJDBCSelectSbTest6 extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3306;
 
     public static final String DB_PASSWORD = "";
@@ -28,40 +36,34 @@ public class JMeterJDBCSelectSbTest6 extends AbstractJavaSamplerClient {
 
     public static final String SELECT_SQL = "select max(id)  from " + TABLE_NAME + " where id % 4 = 1";
 
-
-    // Init mysql database.
+    // Init mysql dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute select action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("JdbcSingleTableSelect");
         results.sampleStart();
 
         try {
 
-            conn = JDBCDataSourceUtil.getDataSource(DB_NAME).getConnection();
-            JDBCDataSourceUtil.select(conn, SELECT_SQL, null);
+            JDBCDataSourceUtil.select(connection, SELECT_SQL, null);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
-
             results.setSuccessful(false);
             e.printStackTrace();
-
         } finally {
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
-
         }
 
         return results;
@@ -73,7 +75,33 @@ public class JMeterJDBCSelectSbTest6 extends AbstractJavaSamplerClient {
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
+    @Override
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCSelectSbTest99.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCSelectSbTest99.java
index c1ea597..b5cea55 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCSelectSbTest99.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/jdbc/JMeterJDBCSelectSbTest99.java
@@ -6,15 +6,23 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 
 
 /**
  * Refactor old case test_plan/direct/select_direct.jmx
+ *
+ * JDBC scenario:
+ *  trigger select action.
  */
 public class JMeterJDBCSelectSbTest99  extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3306;
 
     public static final String DB_PASSWORD = "";
@@ -29,26 +37,27 @@ public class JMeterJDBCSelectSbTest99  extends AbstractJavaSamplerClient {
 
     public static final String SELECT_SQL = "SELECT id,k from " + TABLE_NAME + " ignore index(`PRIMARY`) where id=1 and k=3";
 
-
-
-    // Init mysql database.
+    // Init mysql dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute select action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("JdbcSingleTableSelect");
         results.sampleStart();
 
         try {
 
-            conn = JDBCDataSourceUtil.getDataSource(DB_NAME).getConnection();
-            JDBCDataSourceUtil.select(conn, SELECT_SQL, null);
+            JDBCDataSourceUtil.select(connection, SELECT_SQL, null);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -57,14 +66,7 @@ public class JMeterJDBCSelectSbTest99  extends AbstractJavaSamplerClient {
             e.printStackTrace();
 
         } finally {
-
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
-
         }
 
         return results;
@@ -75,7 +77,34 @@ public class JMeterJDBCSelectSbTest99  extends AbstractJavaSamplerClient {
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveDeleteSbTest.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveDeleteSbTest.java
index 93db8c2..4eb2470 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveDeleteSbTest.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveDeleteSbTest.java
@@ -6,15 +6,25 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 
 
 /**
  * Refactor old case test_plan/master_slave_new/delete_all.jmx
+ *
+ * Proxy scenario:
+ *  Its master-slave: master_ds* -> slave_ds*
+ *  Its config: yaml/proxy/config-master_slave.yaml
+ *
  */
 public class JMeterProxyMasterSlaveDeleteSbTest extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3307;
 
     public static final String DB_PASSWORD = "root";
@@ -29,14 +39,19 @@ public class JMeterProxyMasterSlaveDeleteSbTest extends AbstractJavaSamplerClien
 
     public static final String DELETE_SQL = "truncate table " + TABLE_NAME;
 
-
+    // Init mysql dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute delete action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
-        Connection conn = null;
 
         SampleResult results = new SampleResult();
         results.setSampleLabel("SPPerformanceSingleTableClean");
@@ -44,8 +59,7 @@ public class JMeterProxyMasterSlaveDeleteSbTest extends AbstractJavaSamplerClien
 
         try {
 
-            conn = JDBCDataSourceUtil.getDataSource(DB_NAME).getConnection();
-            JDBCDataSourceUtil.delete(conn, DELETE_SQL, null);
+            JDBCDataSourceUtil.delete(connection, DELETE_SQL, null);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -53,11 +67,6 @@ public class JMeterProxyMasterSlaveDeleteSbTest extends AbstractJavaSamplerClien
             e.printStackTrace();
         } finally {
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -68,6 +77,34 @@ public class JMeterProxyMasterSlaveDeleteSbTest extends AbstractJavaSamplerClien
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
+    @Override
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestDelete.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestDelete.java
index ae94319..5935ec4 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestDelete.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestDelete.java
@@ -6,13 +6,28 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 
 /**
  * Refactor old case test_plan/ms_enc_sharding_new/delete_all.jmx
+ *
+ * Proxy scenario:
+ *  Its actualDataNodes: ms_ds_${0..3}.sbtest${0..1023}
+ *  Its database algorithm.expression: ms_ds_${id % 4}
+ *  Its table algorithm.expression: sbtest${k % 1024}
+ *  Its master-slave: ms_ds_* -> slave_ds_*
+ *  Its type: INLINE
+ *  Its config: yaml/proxy/config-master_slave_enc_sharding.yaml
+ *
  */
 public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestDelete extends AbstractJavaSamplerClient {
+
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3307;
 
     public static final String DB_PASSWORD = "root";
@@ -21,7 +36,7 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestDelete extends Abst
 
     public static final String DB_HOST = "10.222.16.178";
 
-    public static final String DB__NAME = "sharding_db";
+    public static final String DB_NAME = "sharding_db";
 
     public static final String TABLE_NAME = "sbtest";
 
@@ -29,12 +44,17 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestDelete extends Abst
 
 
     static {
-        JDBCDataSourceUtil.initDb(DB__NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute truncate action to clear data.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
-        Connection conn = null;
 
         SampleResult results = new SampleResult();
         results.setSampleLabel("SPPerformanceSingleTableClean");
@@ -42,8 +62,7 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestDelete extends Abst
 
         try {
 
-            conn = JDBCDataSourceUtil.getDataSource(DB__NAME).getConnection();
-            JDBCDataSourceUtil.delete(conn, DELETE_SQL, null);
+            JDBCDataSourceUtil.delete(connection, DELETE_SQL, null);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -51,11 +70,6 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestDelete extends Abst
             e.printStackTrace();
         } finally {
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -66,7 +80,34 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestDelete extends Abst
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
     public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
     }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertOne.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertOne.java
index b6cc001..fbb768f 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertOne.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertOne.java
@@ -6,6 +6,7 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Arrays;
@@ -13,9 +14,22 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/ms_enc_sharding/insert_demo.jmx
+ *
+ * Proxy scenario:
+ *  Its actualDataNodes: ms_ds_${0..3}.sbtest${0..1023}
+ *  Its database algorithm.expression: ms_ds_${id % 4}
+ *  Its table algorithm.expression: sbtest${k % 1024}
+ *  Its master-slave: ms_ds_* -> slave_ds_*
+ *  Its type: INLINE
+ *  Its config: yaml/proxy/config-master_slave_enc_sharding.yaml
+ *
  */
 public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertOne extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3307;
 
     public static final String DB_PASSWORD = "root";
@@ -26,18 +40,17 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertOne extends A
 
     public static final String TABLE_NAME = "sbtest";
 
-    public static final String DB_DATASOURCE_NAME = "sharding_db";
+    public static final String DB_NAME = "sharding_db";
 
     public static final String INSERT_SQL = "INSERT INTO " + TABLE_NAME + " (id,k,c,pad) VALUES (?,?,?,?)";
 
-
+    // Init dataSource
     static {
-        JDBCDataSourceUtil.initDb(DB_DATASOURCE_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
-        Connection conn = null;
 
         SampleResult results = new SampleResult();
         results.setSampleLabel("SPPerformanceSingleTableDemo");
@@ -46,8 +59,7 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertOne extends A
         try {
 
             List insertParams = Arrays.asList(1, 3, "##-####", "##-####");
-            conn = JDBCDataSourceUtil.getDataSource(DB_DATASOURCE_NAME).getConnection();
-            JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -55,11 +67,6 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertOne extends A
             e.printStackTrace();
         } finally {
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -70,8 +77,34 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertOne extends A
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
     public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+    
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
     }
 
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertUpdateDelete.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertUpdateDelete.java
index 05b5edd..8675895 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertUpdateDelete.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertUpdateDelete.java
@@ -6,6 +6,7 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -14,8 +15,22 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/ms_enc_sharding_new/sp_all.jmx
+ *
+ * Proxy scenario:
+ *  Its actualDataNodes: ms_ds_${0..3}.sbtest${0..1023}
+ *  Its database algorithm.expression: ms_ds_${id % 4}
+ *  Its table algorithm.expression: sbtest${k % 1024}
+ *  Its master-slave: ms_ds_* -> slave_ds_*
+ *  Its type: INLINE
+ *  Its config: yaml/proxy/config-master_slave_enc_sharding.yaml
+ *
  */
 public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertUpdateDelete extends AbstractJavaSamplerClient {
+
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3307;
 
     public static final String DB_PASSWORD = "root";
@@ -24,7 +39,7 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertUpdateDelete
 
     public static final String DB_HOST = "10.222.16.178";
 
-    public static final String DB_DATASOURCE_NAME = "sharding_db";
+    public static final String DB_NAME = "sharding_db";
 
     public static final String TABLE_NAME = "sbtest";
 
@@ -35,13 +50,19 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertUpdateDelete
     public static final String DELETE_SQL = "delete from " + TABLE_NAME + "  where k=? and id=?";
 
 
+    // Init dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB_DATASOURCE_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute insert, update, delete action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
-        Connection conn = null;
 
         SampleResult results = new SampleResult();
         results.setSampleLabel("SPEncryptShardingAll");
@@ -51,18 +72,17 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertUpdateDelete
 
             //Insert record
             List insertParams = Arrays.asList(3, "##-####", "##-####");
-            conn = JDBCDataSourceUtil.getDataSource(DB_DATASOURCE_NAME).getConnection();
-            ResultSet result = JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            ResultSet result = JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
             result.next();
             Long id = result.getLong(1);
 
             //update record
             List updateParams = Arrays.asList("new", "new", id);;
-            JDBCDataSourceUtil.update(conn, UPDATE_SQL, updateParams);
+            JDBCDataSourceUtil.update(connection, UPDATE_SQL, updateParams);
 
             //Delete record
             List deleteParams = Arrays.asList(3, id);
-            JDBCDataSourceUtil.delete(conn, DELETE_SQL, deleteParams);
+            JDBCDataSourceUtil.delete(connection, DELETE_SQL, deleteParams);
 
             results.setSuccessful(true);
 
@@ -71,11 +91,6 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertUpdateDelete
             e.printStackTrace();
         } finally {
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -86,6 +101,33 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestInsertUpdateDelete
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestSelect.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestSelect.java
index 26f60c1..6b1b3ba 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestSelect.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestSelect.java
@@ -7,6 +7,7 @@ import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 import service.api.entity.Iou;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -16,9 +17,22 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/ms_enc_sharding_new/select_one.jmx
+ *
+ * Proxy scenario:
+ *  Its actualDataNodes: ms_ds_${0..3}.sbtest${0..1023}
+ *  Its database algorithm.expression: ms_ds_${id % 4}
+ *  Its table algorithm.expression: sbtest${k % 1024}
+ *  Its master-slave: ms_ds_* -> slave_ds_*
+ *  Its type: INLINE
+ *  Its config: yaml/proxy/config-master_slave_enc_sharding.yaml
+ *
  */
 public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestSelect extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3307;
 
     public static final String DB_PASSWORD = "root";
@@ -29,18 +43,23 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestSelect extends Abst
 
     public static final String TABLE_NAME = "sbtest";
 
-    public static final String DB_DATASOURCE_NAME = "sharding_db";
+    public static final String DB_NAME = "sharding_db";
 
     public static final String SELECT_SQL = "SELECT id,k from " + TABLE_NAME + " ignore index(`PRIMARY`) where id=1 and k=3";
 
-
+    // Init dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB_DATASOURCE_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute select action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
-        Connection conn = null;
 
         SampleResult results = new SampleResult();
         results.setSampleLabel("SPEncryptShardingSelect");
@@ -48,8 +67,7 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestSelect extends Abst
 
         try {
 
-            conn = JDBCDataSourceUtil.getDataSource(DB_DATASOURCE_NAME).getConnection();
-            ResultSet rs = JDBCDataSourceUtil.select(conn, SELECT_SQL, null);
+            JDBCDataSourceUtil.select(connection, SELECT_SQL, null);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -57,11 +75,6 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestSelect extends Abst
             e.printStackTrace();
         } finally {
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -83,6 +96,33 @@ public class JMeterProxyMasterSlaveEncryptAllDbAllTableSbTestSelect extends Abst
         return result;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JmeterProxyMasterSlaveEncryptInsertSbtestAction.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptInsertSbTestAction.java
similarity index 57%
rename from shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JmeterProxyMasterSlaveEncryptInsertSbtestAction.java
rename to shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptInsertSbTestAction.java
index af7a6bb..2646438 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JmeterProxyMasterSlaveEncryptInsertSbtestAction.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveEncryptInsertSbTestAction.java
@@ -6,12 +6,24 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Arrays;
 import java.util.List;
 
-public class JmeterProxyMasterSlaveEncryptInsertSbtestAction extends AbstractJavaSamplerClient {
+/**
+ *
+ * Proxy scenario:
+ *  Its master-slave: master_ds* -> slave_ds*
+ *  Its config: yaml/proxy/config-master_slave.yaml
+ *
+ */
+public class JMeterProxyMasterSlaveEncryptInsertSbTestAction extends AbstractJavaSamplerClient {
+
+    public Connection connection;
+
+    public static DataSource dataSource;
 
     public static final int DB_PORT = 3307;
 
@@ -21,20 +33,25 @@ public class JmeterProxyMasterSlaveEncryptInsertSbtestAction extends AbstractJav
 
     public static final String DB_HOST = "10.222.16.178";
 
-    public static final String DB_DATASOURCE_NAME = "sharding_db";
+    public static final String DB_NAME = "sharding_db";
 
     public static final String TABLE_NAME = "sbtest";
 
     public static final String INSERT_SQL = "INSERT INTO " + TABLE_NAME +  " (k,c,pad) VALUES (?,?,?)";
 
-
+    //Init dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB_DATASOURCE_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute insert action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
-        Connection conn = null;
 
         SampleResult results = new SampleResult();
         results.setSampleLabel("SPPerformanceSingleTableInsert");
@@ -43,8 +60,7 @@ public class JmeterProxyMasterSlaveEncryptInsertSbtestAction extends AbstractJav
         try {
 
             List insertParams = Arrays.asList(3, "##-####", "##-####");
-            conn = JDBCDataSourceUtil.getDataSource(DB_DATASOURCE_NAME).getConnection();
-            JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -52,11 +68,6 @@ public class JmeterProxyMasterSlaveEncryptInsertSbtestAction extends AbstractJav
             e.printStackTrace();
         } finally {
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -67,7 +78,33 @@ public class JmeterProxyMasterSlaveEncryptInsertSbtestAction extends AbstractJav
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
     public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
     }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveInsertUpdateDeleteSbTest.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveInsertUpdateDeleteSbTest.java
index 0713fc0..dbe322e 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveInsertUpdateDeleteSbTest.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveInsertUpdateDeleteSbTest.java
@@ -6,6 +6,7 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -14,8 +15,18 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/master_slave_new/sp_all_new.jmx
+ *
+ * Proxy scenario:
+ *  Its master-slave: master_ds* -> slave_ds*
+ *  Its config: yaml/proxy/config-master_slave.yaml
+ *
  */
 public class JMeterProxyMasterSlaveInsertUpdateDeleteSbTest extends AbstractJavaSamplerClient {
+
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3307;
 
     public static final String DB_PASSWORD = "root";
@@ -24,7 +35,7 @@ public class JMeterProxyMasterSlaveInsertUpdateDeleteSbTest extends AbstractJava
 
     public static final String DB_HOST = "10.222.16.178";
 
-    public static final String DB_DATASOURCE_NAME = "sharding_db";
+    public static final String DB_NAME = "sharding_db";
 
     public static final String TABLE_NAME = "sbtest3";
 
@@ -35,13 +46,19 @@ public class JMeterProxyMasterSlaveInsertUpdateDeleteSbTest extends AbstractJava
     public static final String DELETE_SQL = "delete from " + TABLE_NAME + "  where k=? and id=?";
 
 
+    // Init dataSource
     static {
-        JDBCDataSourceUtil.initDb(DB_DATASOURCE_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute insert, update, delete action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
-        Connection conn = null;
 
         SampleResult results = new SampleResult();
         results.setSampleLabel("SPPerformanceSingleTableAllnew");
@@ -50,18 +67,17 @@ public class JMeterProxyMasterSlaveInsertUpdateDeleteSbTest extends AbstractJava
         try {
             //Insert a record
             List insertParams = Arrays.asList(3, "##-####", "##-####");
-            conn = JDBCDataSourceUtil.getDataSource(DB_DATASOURCE_NAME).getConnection();
-            ResultSet result = JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            ResultSet result = JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
             result.next();
             Long id = result.getLong(1);
 
             //Update a record
             List updateParams = Arrays.asList("new", "new", id);;
-            JDBCDataSourceUtil.update(conn, UPDATE_SQL, updateParams);
+            JDBCDataSourceUtil.update(connection, UPDATE_SQL, updateParams);
 
             //Delete a record
             List deleteParams = Arrays.asList(3, id);
-            JDBCDataSourceUtil.delete(conn, DELETE_SQL, deleteParams);
+            JDBCDataSourceUtil.delete(connection, DELETE_SQL, deleteParams);
 
             results.setSuccessful(true);
 
@@ -70,11 +86,6 @@ public class JMeterProxyMasterSlaveInsertUpdateDeleteSbTest extends AbstractJava
             e.printStackTrace();
         } finally {
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -85,7 +96,34 @@ public class JMeterProxyMasterSlaveInsertUpdateDeleteSbTest extends AbstractJava
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
     public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
     }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlavetInsertSbTest.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveSbTestInsert.java
similarity index 57%
rename from shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlavetInsertSbTest.java
rename to shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveSbTestInsert.java
index c99736d..d711453 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlavetInsertSbTest.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyMasterSlaveSbTestInsert.java
@@ -6,6 +6,7 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Arrays;
@@ -13,8 +14,17 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/master_slave_new/insert_1w.jmx
+ *
+ * Proxy scenario:
+ *  Its master-slave: master_ds* -> slave_ds*
+ *  Its config: yaml/proxy/config-master_slave.yaml
+ *
  */
-public class JMeterProxyMasterSlavetInsertSbTest extends AbstractJavaSamplerClient {
+public class JMeterProxyMasterSlaveSbTestInsert extends AbstractJavaSamplerClient {
+
+    public Connection connection;
+
+    public static DataSource dataSource;
 
     public static final int DB_PORT = 3307;
 
@@ -30,13 +40,19 @@ public class JMeterProxyMasterSlavetInsertSbTest extends AbstractJavaSamplerClie
 
     public static final String INSERT_SQL = "INSERT INTO " + TABLE_NAME + " (k,c,pad) VALUES (?,?,?)";
 
+    // Init dataSource
     static {
-        JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute inser action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
-        Connection conn = null;
 
         SampleResult results = new SampleResult();
         results.setSampleLabel("SPPerformanceSingleTableInsertNew");
@@ -45,8 +61,7 @@ public class JMeterProxyMasterSlavetInsertSbTest extends AbstractJavaSamplerClie
         try {
 
             List insertParams = Arrays.asList(3, "##-####", "##-####");
-            conn = JDBCDataSourceUtil.getDataSource(DB_NAME).getConnection();
-            JDBCDataSourceUtil.insert(conn, INSERT_SQL, null);
+            JDBCDataSourceUtil.insert(connection, INSERT_SQL, null);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -54,11 +69,6 @@ public class JMeterProxyMasterSlavetInsertSbTest extends AbstractJavaSamplerClie
             e.printStackTrace();
         } finally {
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -69,6 +79,34 @@ public class JMeterProxyMasterSlavetInsertSbTest extends AbstractJavaSamplerClie
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTableSbTestDelete.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTableSbTestDelete.java
index 1e9b53b..677c39e 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTableSbTestDelete.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTableSbTestDelete.java
@@ -6,14 +6,26 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 
 /**
  * Refactor old case test_plan/sp_single_new/delete_all.jmx
+ *
+ * Proxy scenario:
+ *  Its actualDataNodes: press_test_${0..3}.sbtest${0..1023}
+ *  Its dataSource.algorithm expression: press_test_${id % 4}
+ *  Its table.algorithm expression: sbtest${k % 1024}
+ *  Its type: INLINE
+ *  Its config: yaml/proxy/config-sharding_alldb_alltable.yaml
  */
 public class JMeterProxyShardingAllDbAllTableSbTestDelete extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3307;
 
     public static final String DB_PASSWORD = "root";
@@ -29,13 +41,19 @@ public class JMeterProxyShardingAllDbAllTableSbTestDelete extends AbstractJavaSa
     public static final String DELETE_SQL = "truncate table " + TABLE_NAME;
 
 
+    // Init dataSource
     static {
-        JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute truncate action to clear data.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
-        Connection conn = null;
 
         SampleResult results = new SampleResult();
         results.setSampleLabel("JdbcSingleTableDelete");
@@ -43,19 +61,13 @@ public class JMeterProxyShardingAllDbAllTableSbTestDelete extends AbstractJavaSa
 
         try {
 
-            conn = JDBCDataSourceUtil.getDataSource(DB_NAME).getConnection();
-            JDBCDataSourceUtil.delete(conn, DELETE_SQL, null);
+            JDBCDataSourceUtil.delete(connection, DELETE_SQL, null);
             results.setSuccessful(true);
         } catch (SQLException e) {
             results.setSuccessful(false);
             e.printStackTrace();
         } finally {
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -66,6 +78,34 @@ public class JMeterProxyShardingAllDbAllTableSbTestDelete extends AbstractJavaSa
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTableSbTestInsertUpdateDelete.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTableSbTestInsertUpdateDelete.java
index 6793001..474ee91 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTableSbTestInsertUpdateDelete.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTableSbTestInsertUpdateDelete.java
@@ -6,6 +6,7 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -14,9 +15,20 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/sp_single_new/sp_all.jmx
+ *
+ * Proxy scenario:
+ *  Its actualDataNodes: press_test_${0..3}.sbtest${0..1023}
+ *  Its dataSource.algorithm expression: press_test_${id % 4}
+ *  Its table.algorithm expression: sbtest${k % 1024}
+ *  Its type: INLINE
+ *  Its config: yaml/proxy/config-sharding_alldb_alltable.yaml
  */
 public class JMeterProxyShardingAllDbAllTableSbTestInsertUpdateDelete extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3307;
 
     public static final String DB_USER_NAME = "root";
@@ -25,7 +37,7 @@ public class JMeterProxyShardingAllDbAllTableSbTestInsertUpdateDelete extends Ab
 
     public static final String DB_HOST = "10.222.16.178";
 
-    public static final String DB_DATASOURCE_NAME = "sharding_db";
+    public static final String DB_NAME = "sharding_db";
 
     public static final String TABLE_NAME = "sbtest";
 
@@ -36,13 +48,19 @@ public class JMeterProxyShardingAllDbAllTableSbTestInsertUpdateDelete extends Ab
     public static final String UPDATE_SQL = "update " + TABLE_NAME + " set c=?,pad =? where id=? and k=3";
 
 
+    // Init dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB_DATASOURCE_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute insert, update, delete action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
-        Connection conn = null;
 
         SampleResult results = new SampleResult();
         results.setSampleLabel("JdbcSingleTableDelete");
@@ -52,18 +70,17 @@ public class JMeterProxyShardingAllDbAllTableSbTestInsertUpdateDelete extends Ab
 
             //insert an item
             List insertParams = Arrays.asList(3, "##-####", "##-####");
-            conn = JDBCDataSourceUtil.getDataSource(DB_DATASOURCE_NAME).getConnection();
-            ResultSet rs = JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            ResultSet rs = JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
             rs.next();
             Long id = rs.getLong(1);
 
             //update an item
             List updateParams = Arrays.asList("##-####", "##-####", id);
-            JDBCDataSourceUtil.update(conn, UPDATE_SQL, updateParams);
+            JDBCDataSourceUtil.update(connection, UPDATE_SQL, updateParams);
 
             //delete an item
             List deleteParams = Arrays.asList(3, id);
-            JDBCDataSourceUtil.delete(conn, DELETE_SQL, deleteParams);
+            JDBCDataSourceUtil.delete(connection, DELETE_SQL, deleteParams);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -72,13 +89,7 @@ public class JMeterProxyShardingAllDbAllTableSbTestInsertUpdateDelete extends Ab
             e.printStackTrace();
 
         } finally {
-
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -89,8 +100,35 @@ public class JMeterProxyShardingAllDbAllTableSbTestInsertUpdateDelete extends Ab
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
     public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
     }
 
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTableSelectSbTestSelect.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTableSelectSbTestSelect.java
index bccee29..c041645 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTableSelectSbTestSelect.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTableSelectSbTestSelect.java
@@ -6,14 +6,27 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
-import java.sql.ResultSet;
 import java.sql.SQLException;
-import java.util.Arrays;
-import java.util.List;
 
+
+/**
+ /**
+ * TODO: type old case path here.
+ *
+ * Proxy scenario:
+ *  Its actualDataNodes: press_test_${0..3}.sbtest${0..1023}
+ *  Its dataSource.algorithm expression: press_test_${id % 4}
+ *  Its table.algorithm expression: sbtest${k % 1024}
+ *  Its type: INLINE
+ *  Its config: yaml/proxy/config-sharding_alldb_alltable.yaml
+ */
 public class JMeterProxyShardingAllDbAllTableSelectSbTestSelect extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
 
     public static final int DB_PORT = 3307;
 
@@ -23,7 +36,7 @@ public class JMeterProxyShardingAllDbAllTableSelectSbTestSelect extends Abstract
 
     public static final String DB_HOST = "10.222.16.178";
 
-    public static final String DB_DATASOURCE_NAME = "sharding_db";
+    public static final String DB_NAME = "sharding_db";
 
     public static final String TABLE_NAME = "sbtest";
 
@@ -34,12 +47,11 @@ public class JMeterProxyShardingAllDbAllTableSelectSbTestSelect extends Abstract
     public static final String SELECT_SQL = "select id,k from sbtest ignore index(`PRIMARY`) where id=1 and k=3";
 
     static {
-        JDBCDataSourceUtil.initDb(DB_DATASOURCE_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
-        Connection conn = null;
 
         SampleResult results = new SampleResult();
         results.setSampleLabel("SPPerformanceSelect");
@@ -48,8 +60,7 @@ public class JMeterProxyShardingAllDbAllTableSelectSbTestSelect extends Abstract
         try {
 
             //select items
-            conn = JDBCDataSourceUtil.getDataSource(DB_DATASOURCE_NAME).getConnection();
-            JDBCDataSourceUtil.select(conn, SELECT_SQL, null);
+            JDBCDataSourceUtil.select(connection, SELECT_SQL, null);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -58,13 +69,7 @@ public class JMeterProxyShardingAllDbAllTableSelectSbTestSelect extends Abstract
             e.printStackTrace();
 
         } finally {
-
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -75,7 +80,34 @@ public class JMeterProxyShardingAllDbAllTableSelectSbTestSelect extends Abstract
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
     public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
     }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTabletSbTestInsert.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTabletSbTestInsert.java
index 8603140..2648a0d 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTabletSbTestInsert.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTabletSbTestInsert.java
@@ -6,6 +6,7 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -14,9 +15,20 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/sp_single_new/insert_1w.jmx
+ *
+ * Proxy scenario:
+ *  Its actualDataNodes: press_test_${0..3}.sbtest${0..1023}
+ *  Its dataSource.algorithm expression: press_test_${id % 4}
+ *  Its table.algorithm expression: sbtest${k % 1024}
+ *  Its type: INLINE
+ *  Its config: yaml/proxy/config-sharding_alldb_alltable.yaml
  */
 public class JMeterProxyShardingAllDbAllTabletSbTestInsert extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3307;
 
     public static final String DB_USER_NAME = "root";
@@ -25,20 +37,24 @@ public class JMeterProxyShardingAllDbAllTabletSbTestInsert extends AbstractJavaS
 
     public static final String DB_HOST = "10.222.16.178";
 
-    public static final String DB_DATASOURCE_NAME = "sharding_db";
+    public static final String DB_NAME = "sharding_db";
 
     public static final String TABLE_NAME = "sbtest";
 
     public static final String INSERT_SQL = "insert into " + TABLE_NAME + " (id,k,c,pad) VALUES (?,?,?,?)";
 
-
+    // Init dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB_DATASOURCE_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute insert action.
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
-        Connection conn = null;
 
         SampleResult results = new SampleResult();
         results.setSampleLabel("SPPerformanceSingleTableDemo");
@@ -48,22 +64,14 @@ public class JMeterProxyShardingAllDbAllTabletSbTestInsert extends AbstractJavaS
 
             //insert an item
             List insertParams = Arrays.asList(1, 3, "testtest", "test");
-            conn = JDBCDataSourceUtil.getDataSource(DB_DATASOURCE_NAME).getConnection();
-            JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
 
         } catch (SQLException e) {
-
             results.setSuccessful(false);
             e.printStackTrace();
 
         } finally {
-
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -74,6 +82,34 @@ public class JMeterProxyShardingAllDbAllTabletSbTestInsert extends AbstractJavaS
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
+    @Override
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTabletSbTestInsertOne.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTabletSbTestInsertOne.java
index 4792c4e..96f7849 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTabletSbTestInsertOne.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbAllTabletSbTestInsertOne.java
@@ -6,6 +6,7 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Arrays;
@@ -13,9 +14,20 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/insert_demo.jmx
+ * Proxy scenario:
+ *  Its actualDataNodes: press_test_${0..3}.sbtest${0..1023}
+ *  Its dataSource.algorithm expression: press_test_${id % 4}
+ *  Its table.algorithm expression: sbtest${k % 1024}
+ *  Its type: INLINE
+ *  Its config: yaml/proxy/config-sharding_alldb_alltable.yaml
+ *
  */
 public class JMeterProxyShardingAllDbAllTabletSbTestInsertOne  extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3307;
 
     public static final String DB_USER_NAME = "root";
@@ -24,20 +36,25 @@ public class JMeterProxyShardingAllDbAllTabletSbTestInsertOne  extends AbstractJ
 
     public static final String DB_HOST = "10.222.16.178";
 
-    public static final String DB_DATASOURCE_NAME = "sharding_db";
+    public static final String DB_NAME = "sharding_db";
 
     public static final String TABLE_NAME = "sbtest";
 
     public static final String INSERT_SQL = "insert into " + TABLE_NAME + " (id,k,c,pad) VALUES (?,?,?,?)";
 
-
+    // Init dataSource.
     static {
-        JDBCDataSourceUtil.initDb(DB_DATASOURCE_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute insert action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
-        Connection conn = null;
 
         SampleResult results = new SampleResult();
         results.setSampleLabel("SPPerformanceSingleTableDemo");
@@ -47,8 +64,7 @@ public class JMeterProxyShardingAllDbAllTabletSbTestInsertOne  extends AbstractJ
 
             //insert an item
             List insertParams = Arrays.asList(1, 3, "testtest", "test");
-            conn = JDBCDataSourceUtil.getDataSource(DB_DATASOURCE_NAME).getConnection();
-            JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
 
         } catch (SQLException e) {
 
@@ -56,13 +72,7 @@ public class JMeterProxyShardingAllDbAllTabletSbTestInsertOne  extends AbstractJ
             e.printStackTrace();
 
         } finally {
-
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -73,6 +83,34 @@ public class JMeterProxyShardingAllDbAllTabletSbTestInsertOne  extends AbstractJ
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbSingleTableSbTest3InsertUpdateDelete.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbSingleTableSbTest3InsertUpdateDelete.java
index 5a9ff23..aefa5ef 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbSingleTableSbTest3InsertUpdateDelete.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbSingleTableSbTest3InsertUpdateDelete.java
@@ -6,6 +6,7 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -14,79 +15,117 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/new_sharding/sp_all.jmx
+ *
+ * Proxy scenario:
+ *  Its actualDataNodes: press_test_${0..3}.sbtest3
+ *  Its dataSource.algorithm expression: press_test_${id % 4}
+ *  Its table.algorithm expression: sbtest3
+ *  Its type: INLINE
+ *  Its config: yaml/proxy/config-sharding_alldb_singletable.yaml
  */
 public class JMeterProxyShardingAllDbSingleTableSbTest3InsertUpdateDelete extends AbstractJavaSamplerClient {
 
-        public static final int DB_PORT = 3307;
+    public Connection connection;
 
-        public static final String DB_PASSWORD = "root";
+    public static DataSource dataSource;
 
-        public static final String DB_USER_NAME = "root";
+    public static final int DB_PORT = 3307;
 
-        public static final String DB_HOST = "10.222.16.178";
+    public static final String DB_PASSWORD = "root";
 
-        public static final String DB_NAME = "sharding_db";
+    public static final String DB_USER_NAME = "root";
 
-        public static final String TABLE_NAME = "sbtest";
+    public static final String DB_HOST = "10.222.16.178";
 
-        public static final String INSERT_SQL = "INSERT INTO " + TABLE_NAME + " (k,c,pad) VALUES (?,?,?)";
+    public static final String DB_NAME = "sharding_db";
 
-        public static final String UPDATE_SQL = "update " + TABLE_NAME + " set c=?,pad =? where id=? and k=3";
+    public static final String TABLE_NAME = "sbtest";
 
-        public static final String DELETE_SQL = "delete from " + TABLE_NAME + "  where k=? and id=?";
+    public static final String INSERT_SQL = "INSERT INTO " + TABLE_NAME + " (k,c,pad) VALUES (?,?,?)";
 
+    public static final String UPDATE_SQL = "update " + TABLE_NAME + " set c=?,pad =? where id=? and k=3";
 
-        static {
-            JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
-        }
+    public static final String DELETE_SQL = "delete from " + TABLE_NAME + "  where k=? and id=?";
+
+    // Init dataSource.
+    static {
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+    }
+
+    /**
+     * Execute insert, update, delete action.
+     *
+     * @param context
+     * @return
+     */
+    @Override
+    public SampleResult runTest(JavaSamplerContext context) {
+
+        SampleResult results = new SampleResult();
+        results.setSampleLabel("SPPerformanceSelect");
+        results.sampleStart();
+
+        try {
+
+            //Insert record
+            List insertParams = Arrays.asList(3, "##-####", "##-####");
+            ResultSet result = JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
+            result.next();
+            Long id = result.getLong(1);
+
+            //update record
+            List updateParams = Arrays.asList("##-####", "##-####", id);;
+            JDBCDataSourceUtil.update(connection, UPDATE_SQL, updateParams);
+
+            //Delete record
+            List deleteParams = Arrays.asList(3, id);
+            JDBCDataSourceUtil.delete(connection, DELETE_SQL, deleteParams);
 
-        @Override
-        public SampleResult runTest(JavaSamplerContext context) {
-            Connection conn = null;
-
-            SampleResult results = new SampleResult();
-            results.setSampleLabel("SPPerformanceSelect");
-            results.sampleStart();
-
-            try {
-
-                //Insert record
-                List insertParams = Arrays.asList(3, "##-####", "##-####");
-                conn = JDBCDataSourceUtil.getDataSource(DB_NAME).getConnection();
-                ResultSet result = JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
-                result.next();
-                Long id = result.getLong(1);
-
-                //update record
-                List updateParams = Arrays.asList("##-####", "##-####", id);;
-                JDBCDataSourceUtil.update(conn, UPDATE_SQL, updateParams);
-
-                //Delete record
-                List deleteParams = Arrays.asList(3, id);
-                JDBCDataSourceUtil.delete(conn, DELETE_SQL, deleteParams);
-
-                results.setSuccessful(true);
-
-            } catch (SQLException e) {
-                results.setSuccessful(false);
-                e.printStackTrace();
-            } finally {
-                results.sampleEnd();
-                try {
-                    JDBCDataSourceUtil.close(conn);
-                } catch (SQLException throwables) {
-                    throwables.printStackTrace();
-                }
-            }
-
-            return results;
+            results.setSuccessful(true);
+
+        } catch (SQLException e) {
+            results.setSuccessful(false);
+            e.printStackTrace();
+        } finally {
+            results.sampleEnd();
         }
 
-        @Override
-        public Arguments getDefaultParameters() {
+        return results;
+    }
+
+    @Override
+    public Arguments getDefaultParameters() {
             return null;
         }
 
-        @Override
-        public void setupTest(JavaSamplerContext context) {}
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
+    @Override
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbSingleTableSbTest4Delete.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbSingleTableSbTest4Delete.java
index bc38f2b..ea0adb5 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbSingleTableSbTest4Delete.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbSingleTableSbTest4Delete.java
@@ -6,14 +6,25 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 
 /**
  * Refactor old case test_plan/sp_single_new/delete_all.jmx
+ * Proxy scenario:
+ *  Its actualDataNodes: press_test_${0..3}.sbtest4
+ *  Its dataSource.algorithm expression: press_test_${id % 4}
+ *  Its table.algorithm expression: sbtest4
+ *  Its type: INLINE
+ *  Its config: yaml/proxy/config-sharding_alldb_singletable_new.yaml
  */
 public class JMeterProxyShardingAllDbSingleTableSbTest4Delete extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3307;
 
     public static final String DB_PASSWORD = "root";
@@ -28,14 +39,19 @@ public class JMeterProxyShardingAllDbSingleTableSbTest4Delete extends AbstractJa
 
     public static final String DELETE_SQL = "truncate table " + TABLE_NAME;
 
-
+    // Init dataSource
     static {
-        JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute delete action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
-        Connection conn = null;
 
         SampleResult results = new SampleResult();
         results.setSampleLabel("SPPerformanceSingleTableClean");
@@ -43,8 +59,7 @@ public class JMeterProxyShardingAllDbSingleTableSbTest4Delete extends AbstractJa
 
         try {
 
-            conn = JDBCDataSourceUtil.getDataSource(DB_NAME).getConnection();
-            JDBCDataSourceUtil.delete(conn, DELETE_SQL, null);
+            JDBCDataSourceUtil.delete(connection, DELETE_SQL, null);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -52,11 +67,6 @@ public class JMeterProxyShardingAllDbSingleTableSbTest4Delete extends AbstractJa
             e.printStackTrace();
         } finally {
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -67,6 +77,34 @@ public class JMeterProxyShardingAllDbSingleTableSbTest4Delete extends AbstractJa
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
+    @Override
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbSingleTableSbTest4Insert.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbSingleTableSbTest4Insert.java
index 7707e05..23aefa9 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbSingleTableSbTest4Insert.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbSingleTableSbTest4Insert.java
@@ -6,6 +6,7 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Arrays;
@@ -13,9 +14,20 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/sp_single_new/insert_1w.jmx
+ *
+ * Proxy scenario:
+ *  Its actualDataNodes: press_test_${0..3}.sbtest4
+ *  Its dataSource.algorithm expression: press_test_${id % 4}
+ *  Its table.algorithm expression: sbtest4
+ *  Its type: INLINE
+ *  Its config: yaml/proxy/config-sharding_alldb_singletable_new.yaml
  */
 public class JMeterProxyShardingAllDbSingleTableSbTest4Insert extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3307;
 
     public static final String DB_PASSWORD = "root";
@@ -30,14 +42,19 @@ public class JMeterProxyShardingAllDbSingleTableSbTest4Insert extends AbstractJa
 
     public static final String INSERT_SQL = "INSERT INTO " + TABLE_NAME + " (k,c,pad) VALUES (?,?,?)";
 
-
+    // Init dataSource
     static {
-        JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
+    /**
+     * Execute insert action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
-        Connection conn = null;
 
         SampleResult results = new SampleResult();
         results.setSampleLabel("SPPerformanceSingleTableClean");
@@ -46,8 +63,7 @@ public class JMeterProxyShardingAllDbSingleTableSbTest4Insert extends AbstractJa
         try {
 
             List insertParams = Arrays.asList(3, "testtest", "test");
-            conn = JDBCDataSourceUtil.getDataSource(DB_NAME).getConnection();
-            JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -55,11 +71,6 @@ public class JMeterProxyShardingAllDbSingleTableSbTest4Insert extends AbstractJa
             e.printStackTrace();
         } finally {
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -70,6 +81,33 @@ public class JMeterProxyShardingAllDbSingleTableSbTest4Insert extends AbstractJa
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbSingleTableSbTest4Select.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbSingleTableSbTest4Select.java
index eaa851c..c300c7a 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbSingleTableSbTest4Select.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/proxy/JMeterProxyShardingAllDbSingleTableSbTest4Select.java
@@ -6,14 +6,25 @@ import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
 import org.apache.jmeter.samplers.SampleResult;
 import org.apache.shardingsphere.benchmark.db.jdbc.JDBCDataSourceUtil;
 
+import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 
 /**
  * Refactor old case test_plan/new_sharding/sp_select.jmx
+ * Proxy scenario:
+ *  Its actualDataNodes: press_test_${0..3}.sbtest4
+ *  Its dataSource.algorithm expression: press_test_${id % 4}
+ *  Its table.algorithm expression: sbtest4
+ *  Its type: INLINE
+ *  Its config: yaml/proxy/config-sharding_alldb_singletable_new.yaml
  */
 public class JMeterProxyShardingAllDbSingleTableSbTest4Select extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final int DB_PORT = 3307;
 
     public static final String DB_PASSWORD = "root";
@@ -28,13 +39,13 @@ public class JMeterProxyShardingAllDbSingleTableSbTest4Select extends AbstractJa
 
     public static final String SELECT_SQL = "select max(id) from " + TABLE_NAME + " where id % 4 = 1";
 
+    // Init dataSource
     static {
-        JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
+        dataSource = JDBCDataSourceUtil.initDb(DB_NAME, DB_HOST, DB_PORT, DB_USER_NAME, DB_PASSWORD);
     }
 
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
-        Connection conn = null;
 
         SampleResult results = new SampleResult();
         results.setSampleLabel("SPPerformanceSingleTableClean");
@@ -42,8 +53,7 @@ public class JMeterProxyShardingAllDbSingleTableSbTest4Select extends AbstractJa
 
         try {
 
-            conn = JDBCDataSourceUtil.getDataSource(DB_NAME).getConnection();
-            JDBCDataSourceUtil.delete(conn, SELECT_SQL, null);
+            JDBCDataSourceUtil.delete(connection, SELECT_SQL, null);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -51,11 +61,6 @@ public class JMeterProxyShardingAllDbSingleTableSbTest4Select extends AbstractJa
             e.printStackTrace();
         } finally {
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -66,6 +71,33 @@ public class JMeterProxyShardingAllDbSingleTableSbTest4Select extends AbstractJa
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
+    @Override
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbAllTableInsertSbTestUpdateDelete.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbAllTableInsertSbTestUpdateDelete.java
index f7e3e5b..a14ec59 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbAllTableInsertSbTestUpdateDelete.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbAllTableInsertSbTestUpdateDelete.java
@@ -19,7 +19,7 @@ import java.util.List;
 /**
  * Refactor old case
  *
- * Sharding scenario
+ * Sharding scenario:
  *  Its actualDataNodes: {0..3}.sbtest${0..1023}
  *  Its dataSource.algorithm expression: ds_${id % 4}
  *  Its type: INLINE
@@ -38,10 +38,9 @@ public class JMeterShardingAllDbAllTableInsertSbTestUpdateDelete extends Abstrac
 
     public static final String UPDATE_SQL = "update " + TABLE_NAME + " set c=?,pad =? where id=? and k=3";
 
-     // Init mysql dataSource.
+    // Init dataSource.
     static{
         try {
-
             dataSource = ShardingJDBCDataSourceFactory.newInstance (ShardingConfigType.ALL_DATABASE_ALL_TABLE_SHARDING_CONFIG);
         } catch (IOException e) {
             e.printStackTrace();
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbAllTableSbTestSelect.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbAllTableSbTestSelect.java
index 7418622..a2ed3de 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbAllTableSbTestSelect.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbAllTableSbTestSelect.java
@@ -9,6 +9,7 @@ import org.apache.shardingsphere.benchmark.db.shardingjdbc.ShardingConfigType;
 import org.apache.shardingsphere.benchmark.db.shardingjdbc.ShardingJDBCDataSourceFactory;
 
 import javax.sql.DataSource;
+import java.io.IOException;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -17,31 +18,52 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/jdbc_sharding_new/select_one.jmx
- */
+ *
+ * Sharding scenario
+
+ *  Its actualDataNodes: ds{0..3}.sbtest${0..1023}
+ *  Its dataSource.algorithm expression: ds_${id % 4}
+ *  Its table.algorithm expression: sbtest${k % 1024}
+ *  Its type: INLINE
+ **/
+
 public class JMeterShardingAllDbAllTableSbTestSelect extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final String TABLE_NAME = "sbtest";
 
     public static final String SELECT_SQL = "select id,k from " + TABLE_NAME + " ignore index(`PRIMARY`) where id=1 and k=3";
 
+    // Init dataSource.
+    static{
+        try {
+            dataSource = ShardingJDBCDataSourceFactory.newInstance (ShardingConfigType.ALL_DATABASE_ALL_TABLE_SHARDING_CONFIG);
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 
+    /**
+     * Execute select action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("SJPerformanceNewSelect");
         results.sampleStart();
 
         try {
 
-            DataSource dataSource = ShardingJDBCDataSourceFactory.newInstance
-                    (ShardingConfigType.ALL_DATABASE_ALL_TABLE_SHARDING_CONFIG);
-
-            conn = dataSource.getConnection();
-            JDBCDataSourceUtil.select(conn, SELECT_SQL, null);
-
+            JDBCDataSourceUtil.select(connection, SELECT_SQL, null);
 
         } catch (SQLException e) {
 
@@ -56,11 +78,6 @@ public class JMeterShardingAllDbAllTableSbTestSelect extends AbstractJavaSampler
         }finally {
 
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -71,6 +88,36 @@ public class JMeterShardingAllDbAllTableSbTestSelect extends AbstractJavaSampler
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
+    @Override
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbSingleTableInsertUpdateDelete.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbSingleTableInsertUpdateDelete.java
index c291a97..cb7c0ce 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbSingleTableInsertUpdateDelete.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbSingleTableInsertUpdateDelete.java
@@ -9,6 +9,7 @@ import org.apache.shardingsphere.benchmark.db.shardingjdbc.ShardingConfigType;
 import org.apache.shardingsphere.benchmark.db.shardingjdbc.ShardingJDBCDataSourceFactory;
 
 import javax.sql.DataSource;
+import java.io.IOException;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -17,9 +18,19 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/new_sharding/sj_all.jmx
- */
+ *
+ * Sharding scenario:
+ *  Its actualDataNodes: {0..3}.sbtest3
+ *  Its dataSource.algorithm expression: ds_${id % 4}
+ *  Its table.algorithm expression: sbtest3
+ *  Its type: INLINE
+ *
+ **/
 public class JMeterShardingAllDbSingleTableInsertUpdateDelete  extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
 
     public static final String TABLE_NAME = "sbtest";
 
@@ -30,35 +41,45 @@ public class JMeterShardingAllDbSingleTableInsertUpdateDelete  extends AbstractJ
     public static final String UPDATE_SQL = "update " + TABLE_NAME + " set c=?,pad =? where id=? and k=3";
 
 
+    // Init dataSource.
+    static{
+        try {
+            dataSource = ShardingJDBCDataSourceFactory.newInstance (ShardingConfigType.ALL_DATABASE_SINGLE_TABLE_SHARDING_CONFIG);
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 
+    /**
+     * Execute insert, update, delete action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("SJPerformanceMSSelect");
         results.sampleStart();
 
         try {
 
-            DataSource dataSource = ShardingJDBCDataSourceFactory.newInstance
-                    (ShardingConfigType.ALL_DATABASE_SINGLE_TABLE_SHARDING_CONFIG);
-
             //insert an record
             List insertParams = Arrays.asList(3, "##-####", "##-####");
-            conn = dataSource.getConnection();
-            ResultSet rs = JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            ResultSet rs = JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
             rs.next();
             Long id = rs.getLong(1);
 
             //update an record
             List updateParams = Arrays.asList("new", "new", id);
-            JDBCDataSourceUtil.update(conn, UPDATE_SQL, updateParams);
+            JDBCDataSourceUtil.update(connection, UPDATE_SQL, updateParams);
 
             //delete an record
             List deleteParams = Arrays.asList(3, id);
-            JDBCDataSourceUtil.delete(conn, DELETE_SQL, deleteParams);
+            JDBCDataSourceUtil.delete(connection, DELETE_SQL, deleteParams);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -74,21 +95,41 @@ public class JMeterShardingAllDbSingleTableInsertUpdateDelete  extends AbstractJ
         }finally {
 
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
     @Override
-    public Arguments getDefaultParameters() {
-        return null;
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
     }
 
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbSingleTableSbTest4Delete.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbSingleTableSbTest4Delete.java
index f069849..5c0f4be 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbSingleTableSbTest4Delete.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbSingleTableSbTest4Delete.java
@@ -9,36 +9,57 @@ import org.apache.shardingsphere.benchmark.db.shardingjdbc.ShardingConfigType;
 import org.apache.shardingsphere.benchmark.db.shardingjdbc.ShardingJDBCDataSourceFactory;
 
 import javax.sql.DataSource;
+import java.io.IOException;
 import java.sql.Connection;
 import java.sql.SQLException;
 
 /**
  * Refactor old case test_plan/new_sharding/sj_clean_new.jmx
+ *
+ * Sharding scenario:
+ *  Its actualDataNodes: {0..3}.sbtest4
+ *  Its dataSource.algorithm expression: ds_${id % 4}
+ *  Its table.algorithm expression: sbtest4
+ *  Its type: INLINE
+ *
  */
 public class JMeterShardingAllDbSingleTableSbTest4Delete extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final String TABLE_NAME = "sbtest";
 
     public static final String DELETE_SQL = "truncate table " + TABLE_NAME;
 
+    // Init dataSource.
+    static{
+        try {
+            dataSource = ShardingJDBCDataSourceFactory.newInstance (ShardingConfigType.ALL_DATABASE_SINGLE_TABLE_SHARDING_NEW_CONFIG);
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 
+    /**
+     *Execute truncate action to clear data.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("SJPerformanceMSInsert");
         results.sampleStart();
 
         try {
 
-            DataSource dataSource = ShardingJDBCDataSourceFactory.newInstance
-                    (ShardingConfigType.ALL_DATABASE_SINGLE_TABLE_SHARDING_NEW_CONFIG);
-
-            conn = dataSource.getConnection();
-            JDBCDataSourceUtil.delete(conn, DELETE_SQL, null);
-
+            JDBCDataSourceUtil.delete(connection, DELETE_SQL, null);
 
         } catch (SQLException e) {
 
@@ -53,11 +74,6 @@ public class JMeterShardingAllDbSingleTableSbTest4Delete extends AbstractJavaSam
         }finally {
 
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -68,6 +84,36 @@ public class JMeterShardingAllDbSingleTableSbTest4Delete extends AbstractJavaSam
         return null;
     }
 
+    /**
+     * Get database connection.
+     *
+     * @param context
+     */
+    @Override
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbSingleTableSbTest4Insert.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbSingleTableSbTest4Insert.java
index 69a3efb..2c33d32 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbSingleTableSbTest4Insert.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbSingleTableSbTest4Insert.java
@@ -9,6 +9,7 @@ import org.apache.shardingsphere.benchmark.db.shardingjdbc.ShardingConfigType;
 import org.apache.shardingsphere.benchmark.db.shardingjdbc.ShardingJDBCDataSourceFactory;
 
 import javax.sql.DataSource;
+import java.io.IOException;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.util.Arrays;
@@ -16,32 +17,47 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/new_sharding/sj_insert.jmx
+ *
+ * Sharding scenario:
+ *  Its actualDataNodes: {0..3}.sbtest3
+ *  Its dataSource.algorithm expression: ds_${id % 4}
+ *  Its table.algorithm expression: sbtest3
+ *  Its type: INLINE
+ *
  */
 public class JMeterShardingAllDbSingleTableSbTest4Insert extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final String TABLE_NAME = "sbtest";
 
     public static final String INSERT_SQL = "INSERT INTO " + TABLE_NAME + " (k,c,pad) VALUES (?,?,?)";
 
+    // Init dataSource.
+    static{
+        try {
+            dataSource = ShardingJDBCDataSourceFactory.newInstance (ShardingConfigType.ALL_DATABASE_SINGLE_TABLE_SHARDING_NEW_CONFIG);
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("SJPerformancecleanclean");
         results.sampleStart();
 
         try {
 
-            DataSource dataSource = ShardingJDBCDataSourceFactory.newInstance
-                    (ShardingConfigType.ALL_DATABASE_SINGLE_TABLE_SHARDING_NEW_CONFIG);
-
             //insert an record
             List insertParams = Arrays.asList(1, "##-####", "##-####");
-            conn = dataSource.getConnection();
-            JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
 
 
         } catch (SQLException e) {
@@ -57,11 +73,6 @@ public class JMeterShardingAllDbSingleTableSbTest4Insert extends AbstractJavaSam
         }finally {
 
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -72,6 +83,35 @@ public class JMeterShardingAllDbSingleTableSbTest4Insert extends AbstractJavaSam
         return null;
     }
 
+    /**
+     * Get dataSource connection.
+     *
+     * @param context
+     */
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbSingleTableSbTest4Select.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbSingleTableSbTest4Select.java
index 20b566c..65dc401 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbSingleTableSbTest4Select.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingAllDbSingleTableSbTest4Select.java
@@ -9,35 +9,57 @@ import org.apache.shardingsphere.benchmark.db.shardingjdbc.ShardingConfigType;
 import org.apache.shardingsphere.benchmark.db.shardingjdbc.ShardingJDBCDataSourceFactory;
 
 import javax.sql.DataSource;
+import java.io.IOException;
 import java.sql.Connection;
 import java.sql.SQLException;
 
 /**
  * Refactor old case test_plan/new_sharding/sj_select.jmx
+ *
+ * Sharding scenario:
+ *  Its actualDataNodes: {0..3}.sbtest4
+ *  Its dataSource.algorithm expression: ds_${id % 4}
+ *  Its table.algorithm expression: sbtest4
+ *  Its type: INLINE
+ *
  */
 public class JMeterShardingAllDbSingleTableSbTest4Select extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final String TABLE_NAME = "sbtest";
 
     public static final String SELECT_SQL = "select max(id) from " + TABLE_NAME +  "where id %4 = 1";
 
+    // Init dataSource.
+    static{
+        try {
+            dataSource = ShardingJDBCDataSourceFactory.newInstance (ShardingConfigType.ALL_DATABASE_SINGLE_TABLE_SHARDING_NEW_CONFIG);
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 
+    /**
+     * Execute select action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("SJPerformanceMSInsert");
         results.sampleStart();
 
         try {
 
-            DataSource dataSource = ShardingJDBCDataSourceFactory.newInstance
-                    (ShardingConfigType.ALL_DATABASE_SINGLE_TABLE_SHARDING_NEW_CONFIG);
-
-            conn = dataSource.getConnection();
-            JDBCDataSourceUtil.select(conn, SELECT_SQL, null);
+            JDBCDataSourceUtil.select(connection, SELECT_SQL, null);
 
 
         } catch (SQLException e) {
@@ -53,11 +75,6 @@ public class JMeterShardingAllDbSingleTableSbTest4Select extends AbstractJavaSam
         }finally {
 
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -68,6 +85,35 @@ public class JMeterShardingAllDbSingleTableSbTest4Select extends AbstractJavaSam
         return null;
     }
 
+    /**
+     * Get dataSource connection.
+     *
+     * @param context
+     */
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingMasterSlaveEncryptAllDbAllTableSelect.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingMasterSlaveEncryptAllDbAllTableSelect.java
index 8d7cac6..a7d29ce 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingMasterSlaveEncryptAllDbAllTableSelect.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingMasterSlaveEncryptAllDbAllTableSelect.java
@@ -9,36 +9,60 @@ import org.apache.shardingsphere.benchmark.db.shardingjdbc.ShardingConfigType;
 import org.apache.shardingsphere.benchmark.db.shardingjdbc.ShardingJDBCDataSourceFactory;
 
 import javax.sql.DataSource;
+import java.io.IOException;
 import java.sql.Connection;
 import java.sql.SQLException;
 
 
 /**
  * Refactor old case test_plan/jdbc_ms_enc_sharding_new/select_one.jmx
+ *
+ * Sharding scenario:
+ *  Its actualDataNodes: ms_ds_${0..3}.sbtest${0..1023}
+ *  Its dataSource.algorithm expression: ms_ds_${id % 4}
+ *  Its table.algorithm expression: sbtest${k % 1024}
+ *  Its type: INLINE
+ *  Its encrypt: aes, md5
+ *  Its master-slave:  ms_ds_* -> ds_*_slave_*
+ *
  */
 public class JMeterShardingMasterSlaveEncryptAllDbAllTableSelect extends AbstractJavaSamplerClient {
 
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final String TABLE_NAME = "sbtest";
 
     public static final String SELECT_SQL = "SELECT id,k from " + TABLE_NAME + " where id=1 and k=1";
 
+    // Init dataSource.
+    static{
+        try {
+            dataSource = ShardingJDBCDataSourceFactory.newInstance (ShardingConfigType.MASTER_SLAVE_ENCRYPT_SHARDING_CONFIG);
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 
+    /**
+     * Execute select action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("SJPerformanceMSSelect");
         results.sampleStart();
 
         try {
 
-            DataSource dataSource = ShardingJDBCDataSourceFactory.newInstance
-                    (ShardingConfigType.MASTER_SLAVE_ENCRYPT_SHARDING_CONFIG);
-
-            conn = dataSource.getConnection();
-            JDBCDataSourceUtil.select(conn, SELECT_SQL, null);
+            JDBCDataSourceUtil.select(connection, SELECT_SQL, null);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -54,11 +78,6 @@ public class JMeterShardingMasterSlaveEncryptAllDbAllTableSelect extends Abstrac
         }finally {
 
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -69,7 +88,34 @@ public class JMeterShardingMasterSlaveEncryptAllDbAllTableSelect extends Abstrac
         return null;
     }
 
-    @Override
+    /**
+     * Get dataSource connection.
+     *
+     * @param context
+     */
     public void setupTest(JavaSamplerContext context) {
+
+        try {
+
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
+    @Override
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
     }
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingMasterSlaveInsertUpdateDelete.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingMasterSlaveInsertUpdateDelete.java
index 3b2d31c..4d8efef 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingMasterSlaveInsertUpdateDelete.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JMeterShardingMasterSlaveInsertUpdateDelete.java
@@ -9,6 +9,7 @@ import org.apache.shardingsphere.benchmark.db.shardingjdbc.ShardingConfigType;
 import org.apache.shardingsphere.benchmark.db.shardingjdbc.ShardingJDBCDataSourceFactory;
 
 import javax.sql.DataSource;
+import java.io.IOException;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -17,8 +18,15 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/jdbc_ms_new/all_test.jmx.
+ * Sharding scenario:
+ *  Its master-slave:  ds_master* -> ds_slave*
+ *
  */
-public class JMeterShardingMasterSlaveInsertUpdateDelete  extends AbstractJavaSamplerClient {
+public class JMeterShardingMasterSlaveInsertUpdateDelete extends AbstractJavaSamplerClient {
+
+    public Connection connection;
+
+    public static DataSource dataSource;
 
     public static final String TABLE_NAME = "sbtest3";
 
@@ -28,36 +36,46 @@ public class JMeterShardingMasterSlaveInsertUpdateDelete  extends AbstractJavaSa
 
     public static final String UPDATE_SQL = "update " + TABLE_NAME + " set c=?,pad =? where id=? and k=3";
 
+    // Init dataSource.
+    static{
+        try {
+            dataSource = ShardingJDBCDataSourceFactory.newInstance (ShardingConfigType.MASTER_SLAVE_CONFIG);
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 
 
+    /**
+     * Execute insert, update, delete action.
+     *
+     * @param context
+     * @return
+     */
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("SJPerformanceMSSelect");
         results.sampleStart();
 
         try {
 
-            DataSource dataSource = ShardingJDBCDataSourceFactory.newInstance
-                    (ShardingConfigType.MASTER_SLAVE_CONFIG);
-
             //insert an item
             List insertParams = Arrays.asList(3, "##-####", "##-####");
-            conn = dataSource.getConnection();
-            ResultSet rs = JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            ResultSet rs = JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
             rs.next();
             Long id = rs.getLong(1);
 
             //update an item
             List updateParams = Arrays.asList("new", "new", id);
-            JDBCDataSourceUtil.update(conn, UPDATE_SQL, updateParams);
+            JDBCDataSourceUtil.update(connection, UPDATE_SQL, updateParams);
 
             //delete an item
             List deleteParams = Arrays.asList(3, id);
-            JDBCDataSourceUtil.delete(conn, DELETE_SQL, deleteParams);
+            JDBCDataSourceUtil.delete(connection, DELETE_SQL, deleteParams);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -73,11 +91,6 @@ public class JMeterShardingMasterSlaveInsertUpdateDelete  extends AbstractJavaSa
         }finally {
 
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -88,7 +101,33 @@ public class JMeterShardingMasterSlaveInsertUpdateDelete  extends AbstractJavaSa
         return null;
     }
 
+    /**
+     * Get dataSource connection.
+     *
+     * @param context
+     */
+    public void setupTest(JavaSamplerContext context) {
+        try {
+
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void teardownTest(JavaSamplerContext context) {
+        try {
+
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 
 }
diff --git a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JmeterShardingMasterSlaveEncryptAllDbAllTableInsertUpdateDeleteAction.java b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JmeterShardingMasterSlaveEncryptAllDbAllTableInsertUpdateDeleteAction.java
index 0b2ddef..ee6c4b0 100644
--- a/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JmeterShardingMasterSlaveEncryptAllDbAllTableInsertUpdateDeleteAction.java
+++ b/shardingsphere-benchmark/src/main/java/org/apache/shardingsphere/benchmark/jmeter/sharding/JmeterShardingMasterSlaveEncryptAllDbAllTableInsertUpdateDeleteAction.java
@@ -9,6 +9,7 @@ import org.apache.shardingsphere.benchmark.db.shardingjdbc.ShardingConfigType;
 import org.apache.shardingsphere.benchmark.db.shardingjdbc.ShardingJDBCDataSourceFactory;
 
 import javax.sql.DataSource;
+import java.io.IOException;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -17,8 +18,22 @@ import java.util.List;
 
 /**
  * Refactor old case test_plan/jdbc_sharding_new/all_test.jmx
+ *
+ * Sharding scenario:
+ *  Its actualDataNodes: ms_ds_${0..3}.sbtest${0..1023}
+ *  Its dataSource.algorithm expression: ms_ds_${id % 4}
+ *  Its table.algorithm expression: sbtest${k % 1024}
+ *  Its type: INLINE
+ *  Its encrypt: aes, md5
+ *  Its master-slave:  ms_ds_* -> ds_*_slave_*
+ *
  */
 public class JmeterShardingMasterSlaveEncryptAllDbAllTableInsertUpdateDeleteAction extends AbstractJavaSamplerClient {
+
+    public Connection connection;
+
+    public static DataSource dataSource;
+
     public static final String TABLE_NAME = "sbtest";
 
     public static final String DELETE_SQL = "delete from " + TABLE_NAME + " where k=? and id=?";
@@ -27,36 +42,39 @@ public class JmeterShardingMasterSlaveEncryptAllDbAllTableInsertUpdateDeleteActi
 
     public static final String UPDATE_SQL = "update " + TABLE_NAME + " set c=?,pad =? where id=? and k=3";
 
-
+    // Init dataSource.
+    static{
+        try {
+            dataSource = ShardingJDBCDataSourceFactory.newInstance (ShardingConfigType.MASTER_SLAVE_ENCRYPT_SHARDING_CONFIG);
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 
     @Override
     public SampleResult runTest(JavaSamplerContext context) {
 
-        Connection conn = null;
-
         SampleResult results = new SampleResult();
         results.setSampleLabel("SJPerformanceMSSelect");
         results.sampleStart();
 
         try {
 
-            DataSource dataSource = ShardingJDBCDataSourceFactory.newInstance
-                    (ShardingConfigType.MASTER_SLAVE_ENCRYPT_SHARDING_CONFIG);
-
             //insert an item
             List insertParams = Arrays.asList(3, "##-####", "##-####");
-            conn = dataSource.getConnection();
-            ResultSet rs = JDBCDataSourceUtil.insert(conn, INSERT_SQL, insertParams);
+            ResultSet rs = JDBCDataSourceUtil.insert(connection, INSERT_SQL, insertParams);
             rs.next();
             Long id = rs.getLong(1);
 
            //update an item
             List updateParams = Arrays.asList("new", "new", id);
-            JDBCDataSourceUtil.update(conn, UPDATE_SQL, updateParams);
+            JDBCDataSourceUtil.update(connection, UPDATE_SQL, updateParams);
 
             //delete an item
             List deleteParams = Arrays.asList(3, id);
-            JDBCDataSourceUtil.delete(conn, DELETE_SQL, deleteParams);
+            JDBCDataSourceUtil.delete(connection, DELETE_SQL, deleteParams);
             results.setSuccessful(true);
 
         } catch (SQLException e) {
@@ -72,11 +90,6 @@ public class JmeterShardingMasterSlaveEncryptAllDbAllTableInsertUpdateDeleteActi
         }finally {
 
             results.sampleEnd();
-            try {
-                JDBCDataSourceUtil.close(conn);
-            } catch (SQLException throwables) {
-                throwables.printStackTrace();
-            }
         }
 
         return results;
@@ -87,6 +100,34 @@ public class JmeterShardingMasterSlaveEncryptAllDbAllTableInsertUpdateDeleteActi
         return null;
     }
 
+    /**
+     * Get dataSource connection.
+     *
+     * @param context
+     */
+    public void setupTest(JavaSamplerContext context) {
+
+        try {
+
+            connection = dataSource.getConnection();
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
+
+    /**
+     * Close dataSource connection.
+     *
+     * @param context
+     */
     @Override
-    public void setupTest(JavaSamplerContext context) {}
+    public void teardownTest(JavaSamplerContext context) {
+
+        try {
+
+            JDBCDataSourceUtil.close(connection);
+        } catch (SQLException throwables) {
+            throwables.printStackTrace();
+        }
+    }
 }
diff --git a/shardingsphere-benchmark/src/main/resources/testplan/proxy/proxy-masterslave-encrypt-insert-1w.jmx b/shardingsphere-benchmark/src/main/resources/testplan/proxy/proxy-masterslave-encrypt-insert-1w.jmx
index 59b1a60..2dad2d6 100644
--- a/shardingsphere-benchmark/src/main/resources/testplan/proxy/proxy-masterslave-encrypt-insert-1w.jmx
+++ b/shardingsphere-benchmark/src/main/resources/testplan/proxy/proxy-masterslave-encrypt-insert-1w.jmx
@@ -29,7 +29,7 @@
           <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
             <collectionProp name="Arguments.arguments"/>
           </elementProp>
-          <stringProp name="classname">org.apache.shardingsphere.benchmark.jmeter.proxy.JmeterProxyMasterSlaveEncryptInsertSbtestAction</stringProp>
+          <stringProp name="classname">org.apache.shardingsphere.benchmark.jmeter.proxy.JMeterProxyMasterSlaveEncryptInsertSbTestAction</stringProp>
         </JavaSampler>
         <hashTree>
           <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
diff --git a/shardingsphere-benchmark/src/main/resources/testplan/proxy/proxy-masterslave-insert.jmx b/shardingsphere-benchmark/src/main/resources/testplan/proxy/proxy-masterslave-insert.jmx
index a0f5deb..b34b79b 100644
--- a/shardingsphere-benchmark/src/main/resources/testplan/proxy/proxy-masterslave-insert.jmx
+++ b/shardingsphere-benchmark/src/main/resources/testplan/proxy/proxy-masterslave-insert.jmx
@@ -29,7 +29,7 @@
           <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
             <collectionProp name="Arguments.arguments"/>
           </elementProp>
-          <stringProp name="classname">org.apache.shardingsphere.benchmark.jmeter.proxy.JMeterProxyMasterSlaveInsertSbTest</stringProp>
+          <stringProp name="classname">org.apache.shardingsphere.benchmark.jmeter.proxy.JMeterProxyMasterSlaveSbTestInsert</stringProp>
         </JavaSampler>
         <hashTree>
           <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">