diff --git a/test/plugin/scenarios/shardingsphere-3.x-scenario/pom.xml b/test/plugin/scenarios/shardingsphere-3.x-scenario/pom.xml index 4fc681d6b..2955a71e1 100644 --- a/test/plugin/scenarios/shardingsphere-3.x-scenario/pom.xml +++ b/test/plugin/scenarios/shardingsphere-3.x-scenario/pom.xml @@ -45,11 +45,6 @@ sharding-jdbc-core ${test.framework.version} - - commons-dbcp - commons-dbcp - 1.4 - org.springframework.boot spring-boot-starter diff --git a/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java b/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java index 3663ead8f..b091f75d7 100644 --- a/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java +++ b/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java @@ -18,13 +18,6 @@ package org.apache.skywalking.apm.testcase.shardingsphere; -import javax.sql.DataSource; -import org.apache.skywalking.apm.testcase.shardingsphere.service.api.service.CommonService; -import org.apache.skywalking.apm.testcase.shardingsphere.service.config.ShardingDatabasesAndTablesConfigurationPrecise; -import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.jdbc.JDBCOrderItemRepositoryImpl; -import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.jdbc.JDBCOrderRepositoryImpl; -import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.service.RawPojoService; -import org.apache.skywalking.apm.testcase.shardingsphere.service.utility.config.DataSourceUtil; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.support.SpringBootServletInitializer; @@ -33,18 +26,6 @@ import org.springframework.boot.web.support.SpringBootServletInitializer; public class Application extends SpringBootServletInitializer { public static void main(String[] args) { - try { - DataSourceUtil.createDataSource(""); - DataSourceUtil.createSchema("demo_ds_0"); - DataSourceUtil.createSchema("demo_ds_1"); - DataSourceUtil.createDataSource("demo_ds_0"); - DataSourceUtil.createDataSource("demo_ds_1"); - DataSource dataSource = new ShardingDatabasesAndTablesConfigurationPrecise().createDataSource(); - CommonService commonService = new RawPojoService(new JDBCOrderRepositoryImpl(dataSource), new JDBCOrderItemRepositoryImpl(dataSource)); - commonService.initEnvironment(); - SpringApplication.run(Application.class, args); - } catch (Exception e) { - // Never do this - } + SpringApplication.run(Application.class, args); } } diff --git a/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java b/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java index bf807de4a..90a1db12f 100644 --- a/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java +++ b/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java @@ -18,32 +18,42 @@ package org.apache.skywalking.apm.testcase.shardingsphere.controller; -import java.sql.SQLException; -import javax.sql.DataSource; import org.apache.skywalking.apm.testcase.shardingsphere.service.api.service.CommonService; import org.apache.skywalking.apm.testcase.shardingsphere.service.config.ShardingDatabasesAndTablesConfigurationPrecise; import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.jdbc.JDBCOrderItemRepositoryImpl; import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.jdbc.JDBCOrderRepositoryImpl; import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.service.RawPojoService; +import org.apache.skywalking.apm.testcase.shardingsphere.service.utility.config.DataSourceUtil; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; +import javax.sql.DataSource; +import java.sql.SQLException; + @RestController @RequestMapping("/case") public class CaseController { + + private CommonService commonService = null; @RequestMapping("/healthCheck") @ResponseBody - public String healthCheck() { + public String healthCheck() throws SQLException { + DataSourceUtil.createDataSource(""); + DataSourceUtil.createSchema("demo_ds_0"); + DataSourceUtil.createSchema("demo_ds_1"); + DataSourceUtil.createDataSource("demo_ds_0"); + DataSourceUtil.createDataSource("demo_ds_1"); + DataSource dataSource = new ShardingDatabasesAndTablesConfigurationPrecise().createDataSource(); + commonService = new RawPojoService(new JDBCOrderRepositoryImpl(dataSource), new JDBCOrderItemRepositoryImpl(dataSource)); + commonService.initEnvironment(); return "Success"; } @RequestMapping("/execute") @ResponseBody - public String execute() throws SQLException { - DataSource dataSource = new ShardingDatabasesAndTablesConfigurationPrecise().getDataSource(); - CommonService commonService = new RawPojoService(new JDBCOrderRepositoryImpl(dataSource), new JDBCOrderItemRepositoryImpl(dataSource)); + public String execute() { commonService.processSuccess(false); return "Success"; } diff --git a/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java b/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java index e54486f71..b99d44057 100644 --- a/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java +++ b/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java @@ -32,15 +32,18 @@ import org.apache.skywalking.apm.testcase.shardingsphere.service.api.repository. public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { private final DataSource dataSource; + + private final Connection connection; - public JDBCOrderItemRepositoryImpl(final DataSource dataSource) { + public JDBCOrderItemRepositoryImpl(final DataSource dataSource) throws SQLException { this.dataSource = dataSource; + this.connection = dataSource.getConnection(); } @Override public void createTableIfNotExists() { String sql = "CREATE TABLE IF NOT EXISTS t_order_item " + "(order_item_id BIGINT NOT NULL AUTO_INCREMENT, order_id BIGINT NOT NULL, user_id INT NOT NULL, status VARCHAR(50), PRIMARY KEY (order_item_id))"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -49,7 +52,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public void dropTable() { String sql = "DROP TABLE t_order_item"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -58,7 +61,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public void truncateTable() { String sql = "TRUNCATE TABLE t_order_item"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -67,7 +70,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public Long insert(final OrderItem orderItem) { String sql = "INSERT INTO t_order_item (order_id, user_id, status) VALUES (?, ?, ?)"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { preparedStatement.setLong(1, orderItem.getOrderId()); preparedStatement.setInt(2, orderItem.getUserId()); preparedStatement.setString(3, orderItem.getStatus()); @@ -85,7 +88,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public void delete(final Long orderItemId) { String sql = "DELETE FROM t_order_item WHERE order_item_id=?"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setLong(1, orderItemId); preparedStatement.executeUpdate(sql); } catch (final SQLException ignored) { @@ -106,7 +109,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { private List getOrderItems(final String sql) { List result = new LinkedList<>(); - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement + try (PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement .executeQuery()) { while (resultSet.next()) { OrderItem orderItem = new OrderItem(); diff --git a/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java b/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java index 2a66c0dc7..dc4c80dd9 100644 --- a/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java +++ b/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java @@ -32,15 +32,18 @@ import org.apache.skywalking.apm.testcase.shardingsphere.service.api.repository. public final class JDBCOrderRepositoryImpl implements OrderRepository { private final DataSource dataSource; + + private final Connection connection; - public JDBCOrderRepositoryImpl(final DataSource dataSource) { + public JDBCOrderRepositoryImpl(final DataSource dataSource) throws SQLException { this.dataSource = dataSource; + this.connection = dataSource.getConnection(); } @Override public void createTableIfNotExists() { String sql = "CREATE TABLE IF NOT EXISTS t_order (order_id BIGINT NOT NULL AUTO_INCREMENT, user_id INT NOT NULL, status VARCHAR(50), PRIMARY KEY (order_id))"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -49,7 +52,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public void dropTable() { String sql = "DROP TABLE t_order"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -58,7 +61,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public void truncateTable() { String sql = "TRUNCATE TABLE t_order"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -67,7 +70,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public Long insert(final Order order) { String sql = "INSERT INTO t_order (user_id, status) VALUES (?, ?)"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { preparedStatement.setInt(1, order.getUserId()); preparedStatement.setString(2, order.getStatus()); preparedStatement.executeUpdate(); @@ -84,7 +87,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public void delete(final Long orderId) { String sql = "DELETE FROM t_order WHERE order_id=?"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setLong(1, orderId); preparedStatement.executeUpdate(); } catch (final SQLException ignored) { @@ -105,7 +108,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { private List getOrders(final String sql) { List result = new LinkedList<>(); - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement + try (PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement .executeQuery()) { while (resultSet.next()) { Order order = new Order(); diff --git a/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java b/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java index dae97c4d6..688ce00c1 100644 --- a/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java +++ b/test/plugin/scenarios/shardingsphere-3.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java @@ -24,7 +24,7 @@ import java.sql.Statement; import java.util.HashMap; import java.util.Map; import javax.sql.DataSource; -import org.apache.commons.dbcp.BasicDataSource; +import org.h2.jdbcx.JdbcDataSource; public class DataSourceUtil { @@ -33,10 +33,9 @@ public class DataSourceUtil { private static final Map datasourceMap = new HashMap<>(); public static void createDataSource(final String dataSourceName) { - BasicDataSource result = new BasicDataSource(); - result.setDriverClassName("org.h2.Driver"); - result.setUrl(String.format("jdbc:h2:mem:%s", dataSourceName)); - result.setUsername("sa"); + JdbcDataSource result = new JdbcDataSource(); + result.setUrl("jdbc:h2:mem:" + dataSourceName + ";DB_CLOSE_DELAY=-1"); + result.setUser("sa"); result.setPassword(""); datasourceMap.put(dataSourceName, result); } diff --git a/test/plugin/scenarios/shardingsphere-4.0.x-scenario/pom.xml b/test/plugin/scenarios/shardingsphere-4.0.x-scenario/pom.xml index b9a578fef..ce652a876 100644 --- a/test/plugin/scenarios/shardingsphere-4.0.x-scenario/pom.xml +++ b/test/plugin/scenarios/shardingsphere-4.0.x-scenario/pom.xml @@ -47,11 +47,6 @@ sharding-jdbc-core ${test.framework.version} - - org.apache.commons - commons-dbcp2 - 2.2.0 - org.springframework.boot spring-boot-starter diff --git a/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java b/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java index 6bda0f1f9..b091f75d7 100644 --- a/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java +++ b/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java @@ -18,34 +18,14 @@ package org.apache.skywalking.apm.testcase.shardingsphere; -import org.apache.skywalking.apm.testcase.shardingsphere.service.api.service.CommonService; -import org.apache.skywalking.apm.testcase.shardingsphere.service.config.ShardingDatabasesAndTablesConfigurationPrecise; -import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.jdbc.JDBCOrderItemRepositoryImpl; -import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.jdbc.JDBCOrderRepositoryImpl; -import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.service.RawPojoService; -import org.apache.skywalking.apm.testcase.shardingsphere.service.utility.config.DataSourceUtil; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.support.SpringBootServletInitializer; -import javax.sql.DataSource; - @SpringBootApplication public class Application extends SpringBootServletInitializer { public static void main(String[] args) { - try { - DataSourceUtil.createDataSource(""); - DataSourceUtil.createSchema("demo_ds_0"); - DataSourceUtil.createSchema("demo_ds_1"); - DataSourceUtil.createDataSource("demo_ds_0"); - DataSourceUtil.createDataSource("demo_ds_1"); - DataSource dataSource = new ShardingDatabasesAndTablesConfigurationPrecise().createDataSource(); - CommonService commonService = new RawPojoService(new JDBCOrderRepositoryImpl(dataSource), new JDBCOrderItemRepositoryImpl(dataSource)); - commonService.initEnvironment(); - SpringApplication.run(Application.class, args); - } catch (Exception e) { - // Never do this - } + SpringApplication.run(Application.class, args); } } diff --git a/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java b/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java index ebc5f002d..90a1db12f 100644 --- a/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java +++ b/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java @@ -23,27 +23,37 @@ import org.apache.skywalking.apm.testcase.shardingsphere.service.config.Sharding import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.jdbc.JDBCOrderItemRepositoryImpl; import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.jdbc.JDBCOrderRepositoryImpl; import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.service.RawPojoService; +import org.apache.skywalking.apm.testcase.shardingsphere.service.utility.config.DataSourceUtil; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import javax.sql.DataSource; +import java.sql.SQLException; @RestController @RequestMapping("/case") public class CaseController { + + private CommonService commonService = null; @RequestMapping("/healthCheck") @ResponseBody - public String healthCheck() { + public String healthCheck() throws SQLException { + DataSourceUtil.createDataSource(""); + DataSourceUtil.createSchema("demo_ds_0"); + DataSourceUtil.createSchema("demo_ds_1"); + DataSourceUtil.createDataSource("demo_ds_0"); + DataSourceUtil.createDataSource("demo_ds_1"); + DataSource dataSource = new ShardingDatabasesAndTablesConfigurationPrecise().createDataSource(); + commonService = new RawPojoService(new JDBCOrderRepositoryImpl(dataSource), new JDBCOrderItemRepositoryImpl(dataSource)); + commonService.initEnvironment(); return "Success"; } @RequestMapping("/execute") @ResponseBody public String execute() { - DataSource dataSource = new ShardingDatabasesAndTablesConfigurationPrecise().getDataSource(); - CommonService commonService = new RawPojoService(new JDBCOrderRepositoryImpl(dataSource), new JDBCOrderItemRepositoryImpl(dataSource)); commonService.processSuccess(false); return "Success"; } diff --git a/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java b/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java index 4528c6ea7..3af8846b5 100644 --- a/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java +++ b/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java @@ -22,31 +22,39 @@ import org.apache.skywalking.apm.testcase.shardingsphere.service.api.entity.Orde import org.apache.skywalking.apm.testcase.shardingsphere.service.api.repository.OrderItemRepository; import javax.sql.DataSource; -import java.sql.*; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; import java.util.LinkedList; import java.util.List; public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { private final DataSource dataSource; + + private final Connection connection; - public JDBCOrderItemRepositoryImpl(final DataSource dataSource) { + public JDBCOrderItemRepositoryImpl(final DataSource dataSource) throws SQLException { this.dataSource = dataSource; + this.connection = dataSource.getConnection(); } @Override public void createTableIfNotExists() { String sql = "CREATE TABLE IF NOT EXISTS t_order_item " + "(order_item_id BIGINT NOT NULL AUTO_INCREMENT, order_id BIGINT NOT NULL, user_id INT NOT NULL, status VARCHAR(50), PRIMARY KEY (order_item_id))"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { + ignored.printStackTrace(); } } @Override public void dropTable() { String sql = "DROP TABLE t_order_item"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -55,7 +63,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public void truncateTable() { String sql = "TRUNCATE TABLE t_order_item"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -64,7 +72,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public Long insert(final OrderItem orderItem) { String sql = "INSERT INTO t_order_item (order_id, user_id, status) VALUES (?, ?, ?)"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { preparedStatement.setLong(1, orderItem.getOrderId()); preparedStatement.setInt(2, orderItem.getUserId()); preparedStatement.setString(3, orderItem.getStatus()); @@ -82,7 +90,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public void delete(final Long orderItemId) { String sql = "DELETE FROM t_order_item WHERE order_item_id=?"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setLong(1, orderItemId); preparedStatement.executeUpdate(sql); } catch (final SQLException ignored) { @@ -103,7 +111,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { private List getOrderItems(final String sql) { List result = new LinkedList<>(); - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement + try (PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement .executeQuery()) { while (resultSet.next()) { OrderItem orderItem = new OrderItem(); @@ -114,6 +122,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { result.add(orderItem); } } catch (final SQLException ignored) { + ignored.printStackTrace(); } return result; } diff --git a/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java b/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java index befcf6b01..7be27025d 100644 --- a/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java +++ b/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java @@ -29,15 +29,18 @@ import java.util.List; public final class JDBCOrderRepositoryImpl implements OrderRepository { private final DataSource dataSource; + + private final Connection connection; - public JDBCOrderRepositoryImpl(final DataSource dataSource) { + public JDBCOrderRepositoryImpl(final DataSource dataSource) throws SQLException { this.dataSource = dataSource; + this.connection = dataSource.getConnection(); } @Override public void createTableIfNotExists() { String sql = "CREATE TABLE IF NOT EXISTS t_order (order_id BIGINT NOT NULL AUTO_INCREMENT, user_id INT NOT NULL, status VARCHAR(50), PRIMARY KEY (order_id))"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -46,7 +49,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public void dropTable() { String sql = "DROP TABLE t_order"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -55,7 +58,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public void truncateTable() { String sql = "TRUNCATE TABLE t_order"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -64,7 +67,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public Long insert(final Order order) { String sql = "INSERT INTO t_order (user_id, status) VALUES (?, ?)"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { preparedStatement.setInt(1, order.getUserId()); preparedStatement.setString(2, order.getStatus()); preparedStatement.executeUpdate(); @@ -81,7 +84,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public void delete(final Long orderId) { String sql = "DELETE FROM t_order WHERE order_id=?"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setLong(1, orderId); preparedStatement.executeUpdate(); } catch (final SQLException ignored) { @@ -102,7 +105,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { private List getOrders(final String sql) { List result = new LinkedList<>(); - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement + try (PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement .executeQuery()) { while (resultSet.next()) { Order order = new Order(); @@ -112,6 +115,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { result.add(order); } } catch (final SQLException ignored) { + ignored.printStackTrace(); } return result; } diff --git a/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java b/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java index 65b3f5357..383631469 100644 --- a/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java +++ b/test/plugin/scenarios/shardingsphere-4.0.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java @@ -18,7 +18,7 @@ package org.apache.skywalking.apm.testcase.shardingsphere.service.utility.config; -import org.apache.commons.dbcp2.BasicDataSource; +import org.h2.jdbcx.JdbcDataSource; import javax.sql.DataSource; import java.sql.Connection; @@ -34,10 +34,9 @@ public class DataSourceUtil { private static final Map datasourceMap = new HashMap<>(); public static void createDataSource(final String dataSourceName) { - BasicDataSource result = new BasicDataSource(); - result.setDriverClassName("org.h2.Driver"); - result.setUrl(String.format("jdbc:h2:mem:%s", dataSourceName)); - result.setUsername("sa"); + JdbcDataSource result = new JdbcDataSource(); + result.setUrl("jdbc:h2:mem:" + dataSourceName + ";DB_CLOSE_DELAY=-1"); + result.setUser("sa"); result.setPassword(""); datasourceMap.put(dataSourceName, result); } diff --git a/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/pom.xml b/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/pom.xml index b89520b80..8ab8f5fef 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/pom.xml +++ b/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/pom.xml @@ -48,11 +48,6 @@ sharding-jdbc-core ${test.framework.version} - - commons-dbcp - commons-dbcp - 1.4 - org.springframework.boot spring-boot-starter diff --git a/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java b/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java index 3663ead8f..213696a84 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java +++ b/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java @@ -34,14 +34,7 @@ public class Application extends SpringBootServletInitializer { public static void main(String[] args) { try { - DataSourceUtil.createDataSource(""); - DataSourceUtil.createSchema("demo_ds_0"); - DataSourceUtil.createSchema("demo_ds_1"); - DataSourceUtil.createDataSource("demo_ds_0"); - DataSourceUtil.createDataSource("demo_ds_1"); - DataSource dataSource = new ShardingDatabasesAndTablesConfigurationPrecise().createDataSource(); - CommonService commonService = new RawPojoService(new JDBCOrderRepositoryImpl(dataSource), new JDBCOrderItemRepositoryImpl(dataSource)); - commonService.initEnvironment(); + SpringApplication.run(Application.class, args); } catch (Exception e) { // Never do this diff --git a/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java b/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java index bf807de4a..33ccf6f5b 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java +++ b/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java @@ -25,6 +25,7 @@ import org.apache.skywalking.apm.testcase.shardingsphere.service.config.Sharding import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.jdbc.JDBCOrderItemRepositoryImpl; import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.jdbc.JDBCOrderRepositoryImpl; import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.service.RawPojoService; +import org.apache.skywalking.apm.testcase.shardingsphere.service.utility.config.DataSourceUtil; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; @@ -32,18 +33,26 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/case") public class CaseController { + + private CommonService commonService = null; @RequestMapping("/healthCheck") @ResponseBody - public String healthCheck() { + public String healthCheck() throws SQLException { + DataSourceUtil.createDataSource(""); + DataSourceUtil.createSchema("demo_ds_0"); + DataSourceUtil.createSchema("demo_ds_1"); + DataSourceUtil.createDataSource("demo_ds_0"); + DataSourceUtil.createDataSource("demo_ds_1"); + DataSource dataSource = new ShardingDatabasesAndTablesConfigurationPrecise().createDataSource(); + commonService = new RawPojoService(new JDBCOrderRepositoryImpl(dataSource), new JDBCOrderItemRepositoryImpl(dataSource)); + commonService.initEnvironment(); return "Success"; } @RequestMapping("/execute") @ResponseBody - public String execute() throws SQLException { - DataSource dataSource = new ShardingDatabasesAndTablesConfigurationPrecise().getDataSource(); - CommonService commonService = new RawPojoService(new JDBCOrderRepositoryImpl(dataSource), new JDBCOrderItemRepositoryImpl(dataSource)); + public String execute() { commonService.processSuccess(false); return "Success"; } diff --git a/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java b/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java index e54486f71..b99d44057 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java +++ b/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java @@ -32,15 +32,18 @@ import org.apache.skywalking.apm.testcase.shardingsphere.service.api.repository. public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { private final DataSource dataSource; + + private final Connection connection; - public JDBCOrderItemRepositoryImpl(final DataSource dataSource) { + public JDBCOrderItemRepositoryImpl(final DataSource dataSource) throws SQLException { this.dataSource = dataSource; + this.connection = dataSource.getConnection(); } @Override public void createTableIfNotExists() { String sql = "CREATE TABLE IF NOT EXISTS t_order_item " + "(order_item_id BIGINT NOT NULL AUTO_INCREMENT, order_id BIGINT NOT NULL, user_id INT NOT NULL, status VARCHAR(50), PRIMARY KEY (order_item_id))"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -49,7 +52,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public void dropTable() { String sql = "DROP TABLE t_order_item"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -58,7 +61,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public void truncateTable() { String sql = "TRUNCATE TABLE t_order_item"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -67,7 +70,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public Long insert(final OrderItem orderItem) { String sql = "INSERT INTO t_order_item (order_id, user_id, status) VALUES (?, ?, ?)"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { preparedStatement.setLong(1, orderItem.getOrderId()); preparedStatement.setInt(2, orderItem.getUserId()); preparedStatement.setString(3, orderItem.getStatus()); @@ -85,7 +88,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public void delete(final Long orderItemId) { String sql = "DELETE FROM t_order_item WHERE order_item_id=?"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setLong(1, orderItemId); preparedStatement.executeUpdate(sql); } catch (final SQLException ignored) { @@ -106,7 +109,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { private List getOrderItems(final String sql) { List result = new LinkedList<>(); - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement + try (PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement .executeQuery()) { while (resultSet.next()) { OrderItem orderItem = new OrderItem(); diff --git a/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java b/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java index 2a66c0dc7..dc4c80dd9 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java +++ b/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java @@ -32,15 +32,18 @@ import org.apache.skywalking.apm.testcase.shardingsphere.service.api.repository. public final class JDBCOrderRepositoryImpl implements OrderRepository { private final DataSource dataSource; + + private final Connection connection; - public JDBCOrderRepositoryImpl(final DataSource dataSource) { + public JDBCOrderRepositoryImpl(final DataSource dataSource) throws SQLException { this.dataSource = dataSource; + this.connection = dataSource.getConnection(); } @Override public void createTableIfNotExists() { String sql = "CREATE TABLE IF NOT EXISTS t_order (order_id BIGINT NOT NULL AUTO_INCREMENT, user_id INT NOT NULL, status VARCHAR(50), PRIMARY KEY (order_id))"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -49,7 +52,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public void dropTable() { String sql = "DROP TABLE t_order"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -58,7 +61,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public void truncateTable() { String sql = "TRUNCATE TABLE t_order"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -67,7 +70,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public Long insert(final Order order) { String sql = "INSERT INTO t_order (user_id, status) VALUES (?, ?)"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { preparedStatement.setInt(1, order.getUserId()); preparedStatement.setString(2, order.getStatus()); preparedStatement.executeUpdate(); @@ -84,7 +87,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public void delete(final Long orderId) { String sql = "DELETE FROM t_order WHERE order_id=?"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setLong(1, orderId); preparedStatement.executeUpdate(); } catch (final SQLException ignored) { @@ -105,7 +108,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { private List getOrders(final String sql) { List result = new LinkedList<>(); - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement + try (PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement .executeQuery()) { while (resultSet.next()) { Order order = new Order(); diff --git a/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java b/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java index dae97c4d6..688ce00c1 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java +++ b/test/plugin/scenarios/shardingsphere-4.x-RC1-RC2-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java @@ -24,7 +24,7 @@ import java.sql.Statement; import java.util.HashMap; import java.util.Map; import javax.sql.DataSource; -import org.apache.commons.dbcp.BasicDataSource; +import org.h2.jdbcx.JdbcDataSource; public class DataSourceUtil { @@ -33,10 +33,9 @@ public class DataSourceUtil { private static final Map datasourceMap = new HashMap<>(); public static void createDataSource(final String dataSourceName) { - BasicDataSource result = new BasicDataSource(); - result.setDriverClassName("org.h2.Driver"); - result.setUrl(String.format("jdbc:h2:mem:%s", dataSourceName)); - result.setUsername("sa"); + JdbcDataSource result = new JdbcDataSource(); + result.setUrl("jdbc:h2:mem:" + dataSourceName + ";DB_CLOSE_DELAY=-1"); + result.setUser("sa"); result.setPassword(""); datasourceMap.put(dataSourceName, result); } diff --git a/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/pom.xml b/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/pom.xml index 3954b166b..6e2615a9b 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/pom.xml +++ b/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/pom.xml @@ -48,11 +48,6 @@ sharding-jdbc-core ${test.framework.version} - - commons-dbcp - commons-dbcp - 1.4 - org.springframework.boot spring-boot-starter diff --git a/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java b/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java index 3663ead8f..213696a84 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java +++ b/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java @@ -34,14 +34,7 @@ public class Application extends SpringBootServletInitializer { public static void main(String[] args) { try { - DataSourceUtil.createDataSource(""); - DataSourceUtil.createSchema("demo_ds_0"); - DataSourceUtil.createSchema("demo_ds_1"); - DataSourceUtil.createDataSource("demo_ds_0"); - DataSourceUtil.createDataSource("demo_ds_1"); - DataSource dataSource = new ShardingDatabasesAndTablesConfigurationPrecise().createDataSource(); - CommonService commonService = new RawPojoService(new JDBCOrderRepositoryImpl(dataSource), new JDBCOrderItemRepositoryImpl(dataSource)); - commonService.initEnvironment(); + SpringApplication.run(Application.class, args); } catch (Exception e) { // Never do this diff --git a/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java b/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java index bf807de4a..33ccf6f5b 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java +++ b/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java @@ -25,6 +25,7 @@ import org.apache.skywalking.apm.testcase.shardingsphere.service.config.Sharding import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.jdbc.JDBCOrderItemRepositoryImpl; import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.jdbc.JDBCOrderRepositoryImpl; import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.service.RawPojoService; +import org.apache.skywalking.apm.testcase.shardingsphere.service.utility.config.DataSourceUtil; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; @@ -32,18 +33,26 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/case") public class CaseController { + + private CommonService commonService = null; @RequestMapping("/healthCheck") @ResponseBody - public String healthCheck() { + public String healthCheck() throws SQLException { + DataSourceUtil.createDataSource(""); + DataSourceUtil.createSchema("demo_ds_0"); + DataSourceUtil.createSchema("demo_ds_1"); + DataSourceUtil.createDataSource("demo_ds_0"); + DataSourceUtil.createDataSource("demo_ds_1"); + DataSource dataSource = new ShardingDatabasesAndTablesConfigurationPrecise().createDataSource(); + commonService = new RawPojoService(new JDBCOrderRepositoryImpl(dataSource), new JDBCOrderItemRepositoryImpl(dataSource)); + commonService.initEnvironment(); return "Success"; } @RequestMapping("/execute") @ResponseBody - public String execute() throws SQLException { - DataSource dataSource = new ShardingDatabasesAndTablesConfigurationPrecise().getDataSource(); - CommonService commonService = new RawPojoService(new JDBCOrderRepositoryImpl(dataSource), new JDBCOrderItemRepositoryImpl(dataSource)); + public String execute() { commonService.processSuccess(false); return "Success"; } diff --git a/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java b/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java index e54486f71..b99d44057 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java +++ b/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java @@ -32,15 +32,18 @@ import org.apache.skywalking.apm.testcase.shardingsphere.service.api.repository. public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { private final DataSource dataSource; + + private final Connection connection; - public JDBCOrderItemRepositoryImpl(final DataSource dataSource) { + public JDBCOrderItemRepositoryImpl(final DataSource dataSource) throws SQLException { this.dataSource = dataSource; + this.connection = dataSource.getConnection(); } @Override public void createTableIfNotExists() { String sql = "CREATE TABLE IF NOT EXISTS t_order_item " + "(order_item_id BIGINT NOT NULL AUTO_INCREMENT, order_id BIGINT NOT NULL, user_id INT NOT NULL, status VARCHAR(50), PRIMARY KEY (order_item_id))"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -49,7 +52,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public void dropTable() { String sql = "DROP TABLE t_order_item"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -58,7 +61,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public void truncateTable() { String sql = "TRUNCATE TABLE t_order_item"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -67,7 +70,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public Long insert(final OrderItem orderItem) { String sql = "INSERT INTO t_order_item (order_id, user_id, status) VALUES (?, ?, ?)"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { preparedStatement.setLong(1, orderItem.getOrderId()); preparedStatement.setInt(2, orderItem.getUserId()); preparedStatement.setString(3, orderItem.getStatus()); @@ -85,7 +88,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public void delete(final Long orderItemId) { String sql = "DELETE FROM t_order_item WHERE order_item_id=?"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setLong(1, orderItemId); preparedStatement.executeUpdate(sql); } catch (final SQLException ignored) { @@ -106,7 +109,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { private List getOrderItems(final String sql) { List result = new LinkedList<>(); - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement + try (PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement .executeQuery()) { while (resultSet.next()) { OrderItem orderItem = new OrderItem(); diff --git a/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java b/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java index 2a66c0dc7..dc4c80dd9 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java +++ b/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java @@ -32,15 +32,18 @@ import org.apache.skywalking.apm.testcase.shardingsphere.service.api.repository. public final class JDBCOrderRepositoryImpl implements OrderRepository { private final DataSource dataSource; + + private final Connection connection; - public JDBCOrderRepositoryImpl(final DataSource dataSource) { + public JDBCOrderRepositoryImpl(final DataSource dataSource) throws SQLException { this.dataSource = dataSource; + this.connection = dataSource.getConnection(); } @Override public void createTableIfNotExists() { String sql = "CREATE TABLE IF NOT EXISTS t_order (order_id BIGINT NOT NULL AUTO_INCREMENT, user_id INT NOT NULL, status VARCHAR(50), PRIMARY KEY (order_id))"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -49,7 +52,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public void dropTable() { String sql = "DROP TABLE t_order"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -58,7 +61,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public void truncateTable() { String sql = "TRUNCATE TABLE t_order"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -67,7 +70,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public Long insert(final Order order) { String sql = "INSERT INTO t_order (user_id, status) VALUES (?, ?)"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { preparedStatement.setInt(1, order.getUserId()); preparedStatement.setString(2, order.getStatus()); preparedStatement.executeUpdate(); @@ -84,7 +87,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public void delete(final Long orderId) { String sql = "DELETE FROM t_order WHERE order_id=?"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setLong(1, orderId); preparedStatement.executeUpdate(); } catch (final SQLException ignored) { @@ -105,7 +108,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { private List getOrders(final String sql) { List result = new LinkedList<>(); - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement + try (PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement .executeQuery()) { while (resultSet.next()) { Order order = new Order(); diff --git a/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java b/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java index dae97c4d6..688ce00c1 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java +++ b/test/plugin/scenarios/shardingsphere-4.x-RC3-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java @@ -24,7 +24,7 @@ import java.sql.Statement; import java.util.HashMap; import java.util.Map; import javax.sql.DataSource; -import org.apache.commons.dbcp.BasicDataSource; +import org.h2.jdbcx.JdbcDataSource; public class DataSourceUtil { @@ -33,10 +33,9 @@ public class DataSourceUtil { private static final Map datasourceMap = new HashMap<>(); public static void createDataSource(final String dataSourceName) { - BasicDataSource result = new BasicDataSource(); - result.setDriverClassName("org.h2.Driver"); - result.setUrl(String.format("jdbc:h2:mem:%s", dataSourceName)); - result.setUsername("sa"); + JdbcDataSource result = new JdbcDataSource(); + result.setUrl("jdbc:h2:mem:" + dataSourceName + ";DB_CLOSE_DELAY=-1"); + result.setUser("sa"); result.setPassword(""); datasourceMap.put(dataSourceName, result); } diff --git a/test/plugin/scenarios/shardingsphere-4.x-scenario/pom.xml b/test/plugin/scenarios/shardingsphere-4.x-scenario/pom.xml index 0aaa872bb..02ef46893 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-scenario/pom.xml +++ b/test/plugin/scenarios/shardingsphere-4.x-scenario/pom.xml @@ -47,11 +47,6 @@ sharding-jdbc-core ${test.framework.version} - - org.apache.commons - commons-dbcp2 - 2.2.0 - org.springframework.boot spring-boot-starter diff --git a/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java b/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java index 3663ead8f..f8b63de54 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java +++ b/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/Application.java @@ -34,14 +34,7 @@ public class Application extends SpringBootServletInitializer { public static void main(String[] args) { try { - DataSourceUtil.createDataSource(""); - DataSourceUtil.createSchema("demo_ds_0"); - DataSourceUtil.createSchema("demo_ds_1"); - DataSourceUtil.createDataSource("demo_ds_0"); - DataSourceUtil.createDataSource("demo_ds_1"); - DataSource dataSource = new ShardingDatabasesAndTablesConfigurationPrecise().createDataSource(); - CommonService commonService = new RawPojoService(new JDBCOrderRepositoryImpl(dataSource), new JDBCOrderItemRepositoryImpl(dataSource)); - commonService.initEnvironment(); + SpringApplication.run(Application.class, args); } catch (Exception e) { // Never do this diff --git a/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java b/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java index f9c97007c..248058c0e 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java +++ b/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/controller/CaseController.java @@ -24,25 +24,36 @@ import org.apache.skywalking.apm.testcase.shardingsphere.service.config.Sharding import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.jdbc.JDBCOrderItemRepositoryImpl; import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.jdbc.JDBCOrderRepositoryImpl; import org.apache.skywalking.apm.testcase.shardingsphere.service.repository.service.RawPojoService; +import org.apache.skywalking.apm.testcase.shardingsphere.service.utility.config.DataSourceUtil; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; +import java.sql.SQLException; + @RestController @RequestMapping("/case") public class CaseController { + + private CommonService commonService = null; @RequestMapping("/healthCheck") @ResponseBody - public String healthCheck() { + public String healthCheck() throws SQLException { + DataSourceUtil.createDataSource(""); + DataSourceUtil.createSchema("demo_ds_0"); + DataSourceUtil.createSchema("demo_ds_1"); + DataSourceUtil.createDataSource("demo_ds_0"); + DataSourceUtil.createDataSource("demo_ds_1"); + DataSource dataSource = new ShardingDatabasesAndTablesConfigurationPrecise().createDataSource(); + commonService = new RawPojoService(new JDBCOrderRepositoryImpl(dataSource), new JDBCOrderItemRepositoryImpl(dataSource)); + commonService.initEnvironment(); return "Success"; } @RequestMapping("/execute") @ResponseBody public String execute() { - DataSource dataSource = new ShardingDatabasesAndTablesConfigurationPrecise().getDataSource(); - CommonService commonService = new RawPojoService(new JDBCOrderRepositoryImpl(dataSource), new JDBCOrderItemRepositoryImpl(dataSource)); commonService.processSuccess(false); return "Success"; } diff --git a/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java b/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java index e54486f71..b99d44057 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java +++ b/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderItemRepositoryImpl.java @@ -32,15 +32,18 @@ import org.apache.skywalking.apm.testcase.shardingsphere.service.api.repository. public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { private final DataSource dataSource; + + private final Connection connection; - public JDBCOrderItemRepositoryImpl(final DataSource dataSource) { + public JDBCOrderItemRepositoryImpl(final DataSource dataSource) throws SQLException { this.dataSource = dataSource; + this.connection = dataSource.getConnection(); } @Override public void createTableIfNotExists() { String sql = "CREATE TABLE IF NOT EXISTS t_order_item " + "(order_item_id BIGINT NOT NULL AUTO_INCREMENT, order_id BIGINT NOT NULL, user_id INT NOT NULL, status VARCHAR(50), PRIMARY KEY (order_item_id))"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -49,7 +52,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public void dropTable() { String sql = "DROP TABLE t_order_item"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -58,7 +61,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public void truncateTable() { String sql = "TRUNCATE TABLE t_order_item"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -67,7 +70,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public Long insert(final OrderItem orderItem) { String sql = "INSERT INTO t_order_item (order_id, user_id, status) VALUES (?, ?, ?)"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { preparedStatement.setLong(1, orderItem.getOrderId()); preparedStatement.setInt(2, orderItem.getUserId()); preparedStatement.setString(3, orderItem.getStatus()); @@ -85,7 +88,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { @Override public void delete(final Long orderItemId) { String sql = "DELETE FROM t_order_item WHERE order_item_id=?"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setLong(1, orderItemId); preparedStatement.executeUpdate(sql); } catch (final SQLException ignored) { @@ -106,7 +109,7 @@ public final class JDBCOrderItemRepositoryImpl implements OrderItemRepository { private List getOrderItems(final String sql) { List result = new LinkedList<>(); - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement + try (PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement .executeQuery()) { while (resultSet.next()) { OrderItem orderItem = new OrderItem(); diff --git a/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java b/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java index 2a66c0dc7..dc4c80dd9 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java +++ b/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/repository/jdbc/JDBCOrderRepositoryImpl.java @@ -32,15 +32,18 @@ import org.apache.skywalking.apm.testcase.shardingsphere.service.api.repository. public final class JDBCOrderRepositoryImpl implements OrderRepository { private final DataSource dataSource; + + private final Connection connection; - public JDBCOrderRepositoryImpl(final DataSource dataSource) { + public JDBCOrderRepositoryImpl(final DataSource dataSource) throws SQLException { this.dataSource = dataSource; + this.connection = dataSource.getConnection(); } @Override public void createTableIfNotExists() { String sql = "CREATE TABLE IF NOT EXISTS t_order (order_id BIGINT NOT NULL AUTO_INCREMENT, user_id INT NOT NULL, status VARCHAR(50), PRIMARY KEY (order_id))"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -49,7 +52,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public void dropTable() { String sql = "DROP TABLE t_order"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -58,7 +61,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public void truncateTable() { String sql = "TRUNCATE TABLE t_order"; - try (Connection connection = dataSource.getConnection(); Statement statement = connection.createStatement()) { + try (Statement statement = connection.createStatement()) { statement.executeUpdate(sql); } catch (final SQLException ignored) { } @@ -67,7 +70,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public Long insert(final Order order) { String sql = "INSERT INTO t_order (user_id, status) VALUES (?, ?)"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { preparedStatement.setInt(1, order.getUserId()); preparedStatement.setString(2, order.getStatus()); preparedStatement.executeUpdate(); @@ -84,7 +87,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { @Override public void delete(final Long orderId) { String sql = "DELETE FROM t_order WHERE order_id=?"; - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { + try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setLong(1, orderId); preparedStatement.executeUpdate(); } catch (final SQLException ignored) { @@ -105,7 +108,7 @@ public final class JDBCOrderRepositoryImpl implements OrderRepository { private List getOrders(final String sql) { List result = new LinkedList<>(); - try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement + try (PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement .executeQuery()) { while (resultSet.next()) { Order order = new Order(); diff --git a/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java b/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java index 530e7b5d7..688ce00c1 100644 --- a/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java +++ b/test/plugin/scenarios/shardingsphere-4.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/shardingsphere/service/utility/config/DataSourceUtil.java @@ -18,14 +18,13 @@ package org.apache.skywalking.apm.testcase.shardingsphere.service.utility.config; -import org.apache.commons.dbcp2.BasicDataSource; - import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import java.util.HashMap; import java.util.Map; import javax.sql.DataSource; +import org.h2.jdbcx.JdbcDataSource; public class DataSourceUtil { @@ -34,10 +33,9 @@ public class DataSourceUtil { private static final Map datasourceMap = new HashMap<>(); public static void createDataSource(final String dataSourceName) { - BasicDataSource result = new BasicDataSource(); - result.setDriverClassName("org.h2.Driver"); - result.setUrl(String.format("jdbc:h2:mem:%s", dataSourceName)); - result.setUsername("sa"); + JdbcDataSource result = new JdbcDataSource(); + result.setUrl("jdbc:h2:mem:" + dataSourceName + ";DB_CLOSE_DELAY=-1"); + result.setUser("sa"); result.setPassword(""); datasourceMap.put(dataSourceName, result); }