This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 55f98f8 For #12874, Add more test cases of ShardingSphereDataSource
(#12968)
55f98f8 is described below
commit 55f98f8473314ca56edb120659787a5a03399a6b
Author: yx9o <[email protected]>
AuthorDate: Sat Oct 9 23:52:45 2021 +0800
For #12874, Add more test cases of ShardingSphereDataSource (#12968)
---
.../datasource/ShardingSphereDataSourceTest.java | 70 +++++++++++++++++++++-
1 file changed, 68 insertions(+), 2 deletions(-)
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
index 8aa830b..41c7913 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
@@ -17,9 +17,11 @@
package org.apache.shardingsphere.driver.jdbc.core.datasource;
+import com.zaxxer.hikari.HikariDataSource;
import
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection;
import org.apache.shardingsphere.infra.config.RuleConfiguration;
import org.apache.shardingsphere.infra.database.DefaultSchema;
+import org.apache.shardingsphere.infra.state.StateType;
import org.apache.shardingsphere.transaction.core.TransactionTypeHolder;
import org.junit.After;
import org.junit.Test;
@@ -31,11 +33,15 @@ import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
+import java.util.Arrays;
import java.util.Collections;
+import java.util.Map;
import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -51,14 +57,25 @@ public final class ShardingSphereDataSourceTest {
public void assertNewConstructorWithModeConfigurationOnly() throws
SQLException {
ShardingSphereDataSource actual = new
ShardingSphereDataSource(DefaultSchema.LOGIC_NAME, null);
assertThat(actual.getSchemaName(), is(DefaultSchema.LOGIC_NAME));
- // TODO assert actual.getContextManager()
+ assertNotNull(actual.getContextManager());
+
assertTrue(actual.getContextManager().getMetaDataContexts().getMetaDataMap().containsKey(DefaultSchema.LOGIC_NAME));
+
assertTrue(actual.getContextManager().getTransactionContexts().getEngines().containsKey(DefaultSchema.LOGIC_NAME));
+
assertThat(actual.getContextManager().getStateContext().getCurrentState(),
is(StateType.OK));
+
assertThat(actual.getContextManager().getDataSourceMap(DefaultSchema.LOGIC_NAME).size(),
is(0));
}
@Test
public void assertNewConstructorWithAllArguments() throws SQLException {
ShardingSphereDataSource actual =
createShardingSphereDataSource(mockDataSource());
assertThat(actual.getSchemaName(), is(DefaultSchema.LOGIC_NAME));
- // TODO assert actual.getContextManager()
+ assertNotNull(actual.getContextManager());
+
assertTrue(actual.getContextManager().getMetaDataContexts().getMetaDataMap().containsKey(DefaultSchema.LOGIC_NAME));
+
assertTrue(actual.getContextManager().getTransactionContexts().getEngines().containsKey(DefaultSchema.LOGIC_NAME));
+
assertThat(actual.getContextManager().getStateContext().getCurrentState(),
is(StateType.OK));
+
assertThat(actual.getContextManager().getDataSourceMap(DefaultSchema.LOGIC_NAME).size(),
is(1));
+ DataSource ds =
actual.getContextManager().getDataSourceMap(DefaultSchema.LOGIC_NAME).get("ds");
+ assertNotNull(ds);
+ assertThat(ds.getConnection().getMetaData().getURL(),
is("jdbc:h2:mem:demo_ds;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MySQL"));
}
@Test
@@ -102,4 +119,53 @@ public final class ShardingSphereDataSourceTest {
private ShardingSphereDataSource createShardingSphereDataSource(final
DataSource dataSource) throws SQLException {
return new ShardingSphereDataSource(DefaultSchema.LOGIC_NAME, null,
Collections.singletonMap("ds", dataSource),
Collections.singleton(mock(RuleConfiguration.class)), new Properties());
}
+
+ @Test
+ public void assertEmptyDataSourceMap() throws SQLException {
+ ShardingSphereDataSource actual = new
ShardingSphereDataSource(DefaultSchema.LOGIC_NAME, null);
+
assertThat(actual.getContextManager().getDataSourceMap(DefaultSchema.LOGIC_NAME).size(),
is(0));
+ assertThat(actual.getLoginTimeout(), is(0));
+ }
+
+ @Test
+ public void assertNotEmptyDataSourceMap() throws SQLException {
+ ShardingSphereDataSource actual =
createShardingSphereDataSource(createHikariDataSource());
+
assertThat(actual.getContextManager().getDataSourceMap(DefaultSchema.LOGIC_NAME).size(),
is(1));
+ assertThat(actual.getLoginTimeout(), is(15));
+ }
+
+ @Test
+ public void assertSetLoginTimeout() throws SQLException {
+ ShardingSphereDataSource actual =
createShardingSphereDataSource(createHikariDataSource());
+ actual.setLoginTimeout(30);
+ assertThat(actual.getLoginTimeout(), is(30));
+ }
+
+ @Test
+ public void assertClose() throws Exception {
+ ShardingSphereDataSource actual =
createShardingSphereDataSource(createHikariDataSource());
+ actual.close();
+ Map<String, DataSource> dataSourceMap =
actual.getContextManager().getDataSourceMap(DefaultSchema.LOGIC_NAME);
+ assertThat(((HikariDataSource) dataSourceMap.get("ds")).isClosed(),
is(true));
+ }
+
+ @Test
+ public void assertCloseWithDataSourceNames() throws Exception {
+ ShardingSphereDataSource actual =
createShardingSphereDataSource(createHikariDataSource());
+ actual.close(Arrays.asList("ds"));
+ Map<String, DataSource> dataSourceMap =
actual.getContextManager().getDataSourceMap(DefaultSchema.LOGIC_NAME);
+ assertThat(((HikariDataSource) dataSourceMap.get("ds")).isClosed(),
is(true));
+ }
+
+ private DataSource createHikariDataSource() {
+ HikariDataSource result = new HikariDataSource();
+
result.setJdbcUrl("jdbc:h2:mem:demo_ds;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MySQL");
+ result.setUsername("root");
+ result.setPassword("root");
+ result.setMaximumPoolSize(10);
+ result.setMinimumIdle(2);
+ result.setConnectionTimeout(15 * 1000);
+ result.setIdleTimeout(40 * 1000);
+ return result;
+ }
}