This is an automated email from the ASF dual-hosted git repository.
panjuan 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 e2c5ce5233a Refactor usage of ContextManager (#28215)
e2c5ce5233a is described below
commit e2c5ce5233a4a4c79c02975873cfd75e379143b1
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Aug 22 21:57:08 2023 +0800
Refactor usage of ContextManager (#28215)
---
.../impl/jdbc/JDBCMetaDataInfoExporter.java | 2 +-
.../core/src/test/resources/logback-test.xml | 33 ++++
.../DriverDatabaseConnectionManager.java | 9 +-
.../core/datasource/ShardingSphereDataSource.java | 13 +-
.../batch/BatchPreparedStatementExecutorTest.java | 12 --
.../DriverDatabaseConnectionManagerTest.java | 17 +-
.../connection/ShardingSphereConnectionTest.java | 210 ++++++++++++---------
.../datasource/ShardingSphereDataSourceTest.java | 10 +-
.../ShardingSphereDatabaseMetaDataTest.java | 6 -
.../mode/manager/ContextManager.java | 10 +
.../mode/manager/ContextManagerTest.java | 2 +-
.../ral/updatable/RefreshTableMetaDataUpdater.java | 11 +-
.../unit/RegisterStorageUnitBackendHandler.java | 2 +-
.../updatable/RefreshTableMetaDataUpdaterTest.java | 9 +-
.../RegisterStorageUnitBackendHandlerTest.java | 2 +-
15 files changed, 203 insertions(+), 145 deletions(-)
diff --git
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/jdbc/JDBCMetaDataInfoExporter.java
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/jdbc/JDBCMetaDataInfoExporter.java
index 069b58353c0..957ed707294 100644
---
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/jdbc/JDBCMetaDataInfoExporter.java
+++
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/jdbc/JDBCMetaDataInfoExporter.java
@@ -59,7 +59,7 @@ public final class JDBCMetaDataInfoExporter implements
MetricsExporter {
ShardingSphereDataSource dataSource = (ShardingSphereDataSource)
entry.getValue();
String databaseName =
AgentReflectionUtils.getFieldValue(dataSource, "databaseName");
ContextManager contextManager =
AgentReflectionUtils.getFieldValue(dataSource, "contextManager");
- result.addMetric(Arrays.asList(databaseName,
"storage_unit_count"), contextManager.getDataSourceMap(databaseName).size());
+ result.addMetric(Arrays.asList(databaseName,
"storage_unit_count"), contextManager.getStorageUnits(databaseName).size());
}
return Optional.of(result);
}
diff --git a/agent/plugins/metrics/core/src/test/resources/logback-test.xml
b/agent/plugins/metrics/core/src/test/resources/logback-test.xml
new file mode 100644
index 00000000000..d90fc4a7156
--- /dev/null
+++ b/agent/plugins/metrics/core/src/test/resources/logback-test.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<configuration>
+ <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread]
%logger{36} - %msg%n</pattern>
+ </encoder>
+ </appender>
+ <logger name="org.apache.shardingsphere" level="warn" additivity="false">
+ <appender-ref ref="console" />
+ </logger>
+
+ <root>
+ <level value="error" />
+ <appender-ref ref="console" />
+ </root>
+</configuration>
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManager.java
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManager.java
index b8dba0cc885..52888a2611d 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManager.java
+++
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManager.java
@@ -33,6 +33,7 @@ import
org.apache.shardingsphere.infra.executor.sql.prepare.driver.DatabaseConne
import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
import org.apache.shardingsphere.infra.instance.metadata.InstanceType;
import
org.apache.shardingsphere.infra.instance.metadata.proxy.ProxyInstanceMetaData;
+import
org.apache.shardingsphere.infra.metadata.database.resource.storage.StorageUnit;
import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import
org.apache.shardingsphere.infra.session.connection.transaction.TransactionConnectionContext;
@@ -54,6 +55,7 @@ import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Optional;
import java.util.Random;
@@ -81,9 +83,12 @@ public final class DriverDatabaseConnectionManager
implements DatabaseConnection
private final ConnectionContext connectionContext;
public DriverDatabaseConnectionManager(final String databaseName, final
ContextManager contextManager) {
- dataSourceMap.putAll(contextManager.getDataSourceMap(databaseName));
+ for (Entry<String, StorageUnit> entry :
contextManager.getStorageUnits(databaseName).entrySet()) {
+ DataSource dataSource = entry.getValue().getDataSource();
+ dataSourceMap.put(entry.getKey(), dataSource);
+ physicalDataSourceMap.put(entry.getKey(), dataSource);
+ }
dataSourceMap.putAll(getTrafficDataSourceMap(databaseName,
contextManager));
-
physicalDataSourceMap.putAll(contextManager.getDataSourceMap(databaseName));
connectionTransaction = createConnectionTransaction(databaseName,
contextManager);
connectionContext = new ConnectionContext(cachedConnections::keySet);
}
diff --git
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
index 3257becc8d5..3cd1eef41b7 100644
---
a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
+++
b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
@@ -26,6 +26,7 @@ import
org.apache.shardingsphere.infra.config.rule.scope.GlobalRuleConfiguration
import org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
import
org.apache.shardingsphere.infra.instance.metadata.InstanceMetaDataBuilder;
import org.apache.shardingsphere.infra.instance.metadata.InstanceType;
+import
org.apache.shardingsphere.infra.metadata.database.resource.storage.StorageUnit;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -101,8 +102,8 @@ public final class ShardingSphereDataSource extends
AbstractDataSourceAdapter im
@Override
public void close() throws SQLException {
contextManagerDestroyedCallback(databaseName);
- for (DataSource each :
contextManager.getDataSourceMap(databaseName).values()) {
- close(each);
+ for (StorageUnit each :
contextManager.getStorageUnits(databaseName).values()) {
+ close(each.getDataSource());
}
contextManager.close();
}
@@ -132,14 +133,14 @@ public final class ShardingSphereDataSource extends
AbstractDataSourceAdapter im
@Override
public int getLoginTimeout() throws SQLException {
- Map<String, DataSource> dataSourceMap =
contextManager.getDataSourceMap(databaseName);
- return dataSourceMap.isEmpty() ? 0 :
dataSourceMap.values().iterator().next().getLoginTimeout();
+ Map<String, StorageUnit> storageUnits =
contextManager.getStorageUnits(databaseName);
+ return storageUnits.isEmpty() ? 0 :
storageUnits.values().iterator().next().getDataSource().getLoginTimeout();
}
@Override
public void setLoginTimeout(final int seconds) throws SQLException {
- for (DataSource each :
contextManager.getDataSourceMap(databaseName).values()) {
- each.setLoginTimeout(seconds);
+ for (StorageUnit each :
contextManager.getStorageUnits(databaseName).values()) {
+ each.getDataSource().setLoginTimeout(seconds);
}
}
}
diff --git
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutorTest.java
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutorTest.java
index 91d514857ae..4434dcacd93 100644
---
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutorTest.java
+++
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutorTest.java
@@ -50,16 +50,13 @@ import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;
-import javax.sql.DataSource;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
-import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
-import java.util.Map;
import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
@@ -97,7 +94,6 @@ class BatchPreparedStatementExecutorTest {
ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
MetaDataContexts metaDataContexts = mockMetaDataContexts();
when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
-
when(result.getDataSourceMap("foo_db")).thenReturn(mockDataSourceMap());
return result;
}
@@ -120,14 +116,6 @@ class BatchPreparedStatementExecutorTest {
return result;
}
- private Map<String, DataSource> mockDataSourceMap() {
- Map<String, DataSource> result = new LinkedHashMap<>(2, 1F);
- DataSource dataSource = mock(DataSource.class, RETURNS_DEEP_STUBS);
- result.put("ds_0", dataSource);
- result.put("ds_1", dataSource);
- return result;
- }
-
@AfterEach
void tearDown() {
executorEngine.close();
diff --git
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManagerTest.java
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManagerTest.java
index ae72690f776..893c6c4067c 100644
---
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManagerTest.java
+++
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/DriverDatabaseConnectionManagerTest.java
@@ -24,6 +24,7 @@ import
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePo
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
import org.apache.shardingsphere.infra.instance.metadata.InstanceType;
import
org.apache.shardingsphere.infra.instance.metadata.proxy.ProxyInstanceMetaData;
+import
org.apache.shardingsphere.infra.metadata.database.resource.storage.StorageUnit;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
@@ -74,8 +75,8 @@ class DriverDatabaseConnectionManagerTest {
private ContextManager mockContextManager() throws SQLException {
ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
- Map<String, DataSource> dataSourceMap = mockDataSourceMap();
-
when(result.getDataSourceMap(DefaultDatabase.LOGIC_NAME)).thenReturn(dataSourceMap);
+ Map<String, StorageUnit> storageUnits = mockStorageUnits();
+
when(result.getStorageUnits(DefaultDatabase.LOGIC_NAME)).thenReturn(storageUnits);
MetaDataPersistService persistService = mockMetaDataPersistService();
when(result.getMetaDataContexts().getPersistService()).thenReturn(persistService);
when(result.getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(
@@ -87,12 +88,16 @@ class DriverDatabaseConnectionManagerTest {
return result;
}
- private Map<String, DataSource> mockDataSourceMap() throws SQLException {
- Map<String, DataSource> result = new HashMap<>(2, 1F);
- result.put("ds", new MockedDataSource());
+ private Map<String, StorageUnit> mockStorageUnits() throws SQLException {
+ Map<String, StorageUnit> result = new HashMap<>(2, 1F);
+ StorageUnit validStorageUnit = mock(StorageUnit.class);
+ when(validStorageUnit.getDataSource()).thenReturn(new
MockedDataSource());
+ result.put("ds", validStorageUnit);
+ StorageUnit invalidStorageUnit = mock(StorageUnit.class);
DataSource invalidDataSource = mock(DataSource.class);
when(invalidDataSource.getConnection()).thenThrow(new SQLException());
- result.put("invalid_ds", invalidDataSource);
+ when(invalidStorageUnit.getDataSource()).thenReturn(invalidDataSource);
+ result.put("invalid_ds", invalidStorageUnit);
return result;
}
diff --git
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
index 2ef4191b237..b8fb0254e17 100644
---
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
+++
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.driver.jdbc.core.connection;
import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
+import
org.apache.shardingsphere.infra.metadata.database.resource.storage.StorageUnit;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -29,12 +30,9 @@ import
org.apache.shardingsphere.transaction.ConnectionTransaction.DistributedTr
import org.apache.shardingsphere.transaction.api.TransactionType;
import
org.apache.shardingsphere.transaction.config.TransactionRuleConfiguration;
import org.apache.shardingsphere.transaction.rule.TransactionRule;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.internal.configuration.plugins.Plugins;
-import javax.sql.DataSource;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
@@ -54,52 +52,33 @@ import static org.mockito.Mockito.when;
class ShardingSphereConnectionTest {
- private ShardingSphereConnection connection;
-
- @BeforeEach
- void setUp() {
- connection = new ShardingSphereConnection(DefaultDatabase.LOGIC_NAME,
mockContextManager());
- }
-
- private ContextManager mockContextManager() {
- ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
-
when(result.getDataSourceMap(DefaultDatabase.LOGIC_NAME)).thenReturn(Collections.singletonMap("ds",
mock(DataSource.class, RETURNS_DEEP_STUBS)));
-
when(result.getMetaDataContexts().getMetaData().getGlobalRuleMetaData())
- .thenReturn(new
RuleMetaData(Arrays.asList(mockTransactionRule(), mock(TrafficRule.class))));
- return result;
- }
-
- private TransactionRule mockTransactionRule() {
- return new TransactionRule(new
TransactionRuleConfiguration(TransactionType.LOCAL.name(), "", new
Properties()), Collections.emptyMap());
- }
-
- @AfterEach
- void clear() {
- try {
- connection.close();
- } catch (final SQLException ignored) {
- }
- }
-
@Test
void assertIsHoldTransaction() throws SQLException {
- connection.setAutoCommit(false);
- assertTrue(connection.isHoldTransaction());
+ try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME, mockContextManager())) {
+ connection.setAutoCommit(false);
+ assertTrue(connection.isHoldTransaction());
+ }
}
@Test
void assertIsNotHoldTransaction() throws SQLException {
- connection.setAutoCommit(true);
- assertFalse(connection.isHoldTransaction());
+ try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME, mockContextManager())) {
+ connection.setAutoCommit(true);
+ assertFalse(connection.isHoldTransaction());
+ }
+
}
@Test
void assertSetAutoCommitWithLocalTransaction() throws SQLException {
Connection physicalConnection = mock(Connection.class);
-
when(connection.getContextManager().getDataSourceMap(DefaultDatabase.LOGIC_NAME).get("ds").getConnection()).thenReturn(physicalConnection);
- connection.getDatabaseConnectionManager().getConnections("ds", 0, 1,
ConnectionMode.MEMORY_STRICTLY);
- connection.setAutoCommit(true);
- assertTrue(connection.getAutoCommit());
+ StorageUnit storageUnit = mock(StorageUnit.class, RETURNS_DEEP_STUBS);
+
when(storageUnit.getDataSource().getConnection()).thenReturn(physicalConnection);
+ try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME,
mockContextManager(storageUnit))) {
+ connection.getDatabaseConnectionManager().getConnections("ds", 0,
1, ConnectionMode.MEMORY_STRICTLY);
+ connection.setAutoCommit(true);
+ assertTrue(connection.getAutoCommit());
+ }
verify(physicalConnection).setAutoCommit(true);
}
@@ -108,24 +87,29 @@ class ShardingSphereConnectionTest {
ConnectionTransaction connectionTransaction =
mock(ConnectionTransaction.class);
when(connectionTransaction.getDistributedTransactionOperationType(true)).thenReturn(DistributedTransactionOperationType.COMMIT);
when(connectionTransaction.getTransactionType()).thenReturn(TransactionType.XA);
- mockConnectionManager(connectionTransaction);
- connection.setAutoCommit(true);
- assertTrue(connection.getAutoCommit());
+ try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME, mockContextManager())) {
+ mockConnectionManager(connection, connectionTransaction);
+ connection.setAutoCommit(true);
+ assertTrue(connection.getAutoCommit());
+ }
verify(connectionTransaction).commit();
}
@Test
void assertCommitWithLocalTransaction() throws SQLException {
Connection physicalConnection = mock(Connection.class);
-
when(connection.getContextManager().getDataSourceMap(DefaultDatabase.LOGIC_NAME).get("ds").getConnection()).thenReturn(physicalConnection);
- connection.getDatabaseConnectionManager().getConnections("ds", 0, 1,
ConnectionMode.MEMORY_STRICTLY);
- connection.setAutoCommit(false);
- assertFalse(connection.getAutoCommit());
-
assertTrue(connection.getDatabaseConnectionManager().getConnectionContext().getTransactionContext().isInTransaction());
- verify(physicalConnection).setAutoCommit(false);
- connection.commit();
-
assertFalse(connection.getDatabaseConnectionManager().getConnectionContext().getTransactionContext().isInTransaction());
- verify(physicalConnection).commit();
+ StorageUnit storageUnit = mock(StorageUnit.class, RETURNS_DEEP_STUBS);
+
when(storageUnit.getDataSource().getConnection()).thenReturn(physicalConnection);
+ try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME,
mockContextManager(storageUnit))) {
+ connection.getDatabaseConnectionManager().getConnections("ds", 0,
1, ConnectionMode.MEMORY_STRICTLY);
+ connection.setAutoCommit(false);
+ assertFalse(connection.getAutoCommit());
+
assertTrue(connection.getDatabaseConnectionManager().getConnectionContext().getTransactionContext().isInTransaction());
+ verify(physicalConnection).setAutoCommit(false);
+ connection.commit();
+
assertFalse(connection.getDatabaseConnectionManager().getConnectionContext().getTransactionContext().isInTransaction());
+ verify(physicalConnection).commit();
+ }
}
@Test
@@ -133,25 +117,30 @@ class ShardingSphereConnectionTest {
ConnectionTransaction connectionTransaction =
mock(ConnectionTransaction.class);
when(connectionTransaction.getDistributedTransactionOperationType(false)).thenReturn(DistributedTransactionOperationType.BEGIN);
when(connectionTransaction.getTransactionType()).thenReturn(TransactionType.XA);
- DriverDatabaseConnectionManager databaseConnectionManager =
mockConnectionManager(connectionTransaction);
- connection.setAutoCommit(false);
-
assertTrue(databaseConnectionManager.getConnectionContext().getTransactionContext().isInTransaction());
- assertFalse(connection.getAutoCommit());
-
assertTrue(connection.getDatabaseConnectionManager().getConnectionContext().getTransactionContext().isInTransaction());
- verify(connectionTransaction).begin();
- connection.commit();
-
assertFalse(connection.getDatabaseConnectionManager().getConnectionContext().getTransactionContext().isInTransaction());
- verify(databaseConnectionManager).commit();
+ try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME, mockContextManager())) {
+ DriverDatabaseConnectionManager databaseConnectionManager =
mockConnectionManager(connection, connectionTransaction);
+ connection.setAutoCommit(false);
+
assertTrue(databaseConnectionManager.getConnectionContext().getTransactionContext().isInTransaction());
+ assertFalse(connection.getAutoCommit());
+
assertTrue(connection.getDatabaseConnectionManager().getConnectionContext().getTransactionContext().isInTransaction());
+ verify(connectionTransaction).begin();
+ connection.commit();
+
assertFalse(connection.getDatabaseConnectionManager().getConnectionContext().getTransactionContext().isInTransaction());
+ verify(databaseConnectionManager).commit();
+ }
}
@Test
void assertRollbackWithLocalTransaction() throws SQLException {
Connection physicalConnection = mock(Connection.class);
-
when(connection.getContextManager().getDataSourceMap(DefaultDatabase.LOGIC_NAME).get("ds").getConnection()).thenReturn(physicalConnection);
- connection.getDatabaseConnectionManager().getConnections("ds", 0, 1,
ConnectionMode.MEMORY_STRICTLY);
- connection.setAutoCommit(false);
- assertFalse(connection.getAutoCommit());
- connection.rollback();
+ StorageUnit storageUnit = mock(StorageUnit.class, RETURNS_DEEP_STUBS);
+
when(storageUnit.getDataSource().getConnection()).thenReturn(physicalConnection);
+ try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME,
mockContextManager(storageUnit))) {
+ connection.getDatabaseConnectionManager().getConnections("ds", 0,
1, ConnectionMode.MEMORY_STRICTLY);
+ connection.setAutoCommit(false);
+ assertFalse(connection.getAutoCommit());
+ connection.rollback();
+ }
verify(physicalConnection).rollback();
}
@@ -160,18 +149,20 @@ class ShardingSphereConnectionTest {
ConnectionTransaction connectionTransaction =
mock(ConnectionTransaction.class);
when(connectionTransaction.getDistributedTransactionOperationType(false)).thenReturn(DistributedTransactionOperationType.BEGIN);
when(connectionTransaction.getTransactionType()).thenReturn(TransactionType.XA);
- final DriverDatabaseConnectionManager databaseConnectionManager =
mockConnectionManager(connectionTransaction);
- connection.setAutoCommit(false);
- assertFalse(connection.getAutoCommit());
-
assertTrue(connection.getDatabaseConnectionManager().getConnectionContext().getTransactionContext().isInTransaction());
- verify(connectionTransaction).begin();
- connection.rollback();
-
assertFalse(connection.getDatabaseConnectionManager().getConnectionContext().getTransactionContext().isInTransaction());
- verify(databaseConnectionManager).rollback();
+ try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME, mockContextManager())) {
+ final DriverDatabaseConnectionManager databaseConnectionManager =
mockConnectionManager(connection, connectionTransaction);
+ connection.setAutoCommit(false);
+ assertFalse(connection.getAutoCommit());
+
assertTrue(connection.getDatabaseConnectionManager().getConnectionContext().getTransactionContext().isInTransaction());
+ verify(connectionTransaction).begin();
+ connection.rollback();
+
assertFalse(connection.getDatabaseConnectionManager().getConnectionContext().getTransactionContext().isInTransaction());
+ verify(databaseConnectionManager).rollback();
+ }
}
@SneakyThrows(ReflectiveOperationException.class)
- private DriverDatabaseConnectionManager mockConnectionManager(final
ConnectionTransaction connectionTransaction) {
+ private DriverDatabaseConnectionManager mockConnectionManager(final
ShardingSphereConnection connection, final ConnectionTransaction
connectionTransaction) {
DriverDatabaseConnectionManager result =
mock(DriverDatabaseConnectionManager.class);
when(result.getConnectionTransaction()).thenReturn(connectionTransaction);
when(result.getConnectionContext()).thenReturn(new
ConnectionContext());
@@ -181,42 +172,56 @@ class ShardingSphereConnectionTest {
@Test
void assertIsValidWhenEmptyConnection() throws SQLException {
- assertTrue(connection.isValid(0));
+ try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME, mockContextManager())) {
+ assertTrue(connection.isValid(0));
+ }
}
@Test
void assertIsInvalid() throws SQLException {
- connection.getDatabaseConnectionManager().getConnections("ds", 0, 1,
ConnectionMode.MEMORY_STRICTLY);
- assertFalse(connection.isValid(0));
+ try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME, mockContextManager())) {
+ connection.getDatabaseConnectionManager().getConnections("ds", 0,
1, ConnectionMode.MEMORY_STRICTLY);
+ assertFalse(connection.isValid(0));
+ }
}
@Test
void assertSetReadOnly() throws SQLException {
- assertFalse(connection.isReadOnly());
- Connection physicalConnection =
connection.getDatabaseConnectionManager().getConnections("ds", 0, 1,
ConnectionMode.MEMORY_STRICTLY).get(0);
- connection.setReadOnly(true);
- assertTrue(connection.isReadOnly());
- verify(physicalConnection).setReadOnly(true);
+ try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME, mockContextManager())) {
+ assertFalse(connection.isReadOnly());
+ Connection physicalConnection =
connection.getDatabaseConnectionManager().getConnections("ds", 0, 1,
ConnectionMode.MEMORY_STRICTLY).get(0);
+ connection.setReadOnly(true);
+ assertTrue(connection.isReadOnly());
+ verify(physicalConnection).setReadOnly(true);
+ }
}
@Test
void assertGetTransactionIsolationWithoutCachedConnections() throws
SQLException {
- assertThat(connection.getTransactionIsolation(),
is(Connection.TRANSACTION_READ_UNCOMMITTED));
+ try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME, mockContextManager())) {
+ assertThat(connection.getTransactionIsolation(),
is(Connection.TRANSACTION_READ_UNCOMMITTED));
+ }
+
}
@Test
void assertSetTransactionIsolation() throws SQLException {
- Connection physicalConnection =
connection.getDatabaseConnectionManager().getConnections("ds", 0, 1,
ConnectionMode.MEMORY_STRICTLY).get(0);
-
connection.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
-
verify(physicalConnection).setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
+ try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME, mockContextManager())) {
+ Connection physicalConnection =
connection.getDatabaseConnectionManager().getConnections("ds", 0, 1,
ConnectionMode.MEMORY_STRICTLY).get(0);
+
connection.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
+
verify(physicalConnection).setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
+ }
}
@Test
void assertCreateArrayOf() throws SQLException {
Connection physicalConnection = mock(Connection.class);
-
when(connection.getContextManager().getDataSourceMap(DefaultDatabase.LOGIC_NAME).get("ds").getConnection()).thenReturn(physicalConnection);
- connection.getDatabaseConnectionManager().getConnections("ds", 0, 1,
ConnectionMode.MEMORY_STRICTLY);
- assertNull(connection.createArrayOf("int", null));
+ StorageUnit storageUnit = mock(StorageUnit.class, RETURNS_DEEP_STUBS);
+
when(storageUnit.getDataSource().getConnection()).thenReturn(physicalConnection);
+ try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME,
mockContextManager(storageUnit))) {
+ connection.getDatabaseConnectionManager().getConnections("ds", 0,
1, ConnectionMode.MEMORY_STRICTLY);
+ assertNull(connection.createArrayOf("int", null));
+ }
verify(physicalConnection).createArrayOf("int", null);
}
@@ -225,14 +230,33 @@ class ShardingSphereConnectionTest {
CallableStatement expected = mock(CallableStatement.class);
Connection physicalConnection = mock(Connection.class);
when(physicalConnection.prepareCall("")).thenReturn(expected);
-
when(connection.getContextManager().getDataSourceMap(DefaultDatabase.LOGIC_NAME).get("ds").getConnection()).thenReturn(physicalConnection);
- CallableStatement actual = connection.prepareCall("");
- assertThat(actual, is(expected));
+ StorageUnit storageUnit = mock(StorageUnit.class, RETURNS_DEEP_STUBS);
+
when(storageUnit.getDataSource().getConnection()).thenReturn(physicalConnection);
+ try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME,
mockContextManager(storageUnit))) {
+ assertThat(connection.prepareCall(""), is(expected));
+ }
}
@Test
void assertClose() throws SQLException {
- connection.close();
- assertTrue(connection.isClosed());
+ try (ShardingSphereConnection connection = new
ShardingSphereConnection(DefaultDatabase.LOGIC_NAME, mockContextManager())) {
+ connection.close();
+ assertTrue(connection.isClosed());
+ }
+ }
+
+ private ContextManager mockContextManager() {
+ return mockContextManager(mock(StorageUnit.class, RETURNS_DEEP_STUBS));
+ }
+
+ private ContextManager mockContextManager(final StorageUnit storageUnit) {
+ ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
+
when(result.getStorageUnits(DefaultDatabase.LOGIC_NAME)).thenReturn(Collections.singletonMap("ds",
storageUnit));
+
when(result.getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(new
RuleMetaData(Arrays.asList(mockTransactionRule(), mock(TrafficRule.class))));
+ return result;
+ }
+
+ private TransactionRule mockTransactionRule() {
+ return new TransactionRule(new
TransactionRuleConfiguration(TransactionType.LOCAL.name(), "", new
Properties()), Collections.emptyMap());
}
}
diff --git
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
index 71387956c18..380119975e8 100644
---
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
+++
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
@@ -59,7 +59,7 @@ class ShardingSphereDataSourceTest {
assertNotNull(contextManager.getMetaDataContexts().getMetaData().getDatabase(DefaultDatabase.LOGIC_NAME));
assertThat(contextManager.getClusterStateContext().getCurrentState(),
is(ClusterState.OK));
assertThat(contextManager.getInstanceContext().getInstance().getState().getCurrentState(),
is(InstanceState.OK));
-
assertTrue(contextManager.getDataSourceMap(DefaultDatabase.LOGIC_NAME).isEmpty());
+
assertTrue(contextManager.getStorageUnits(DefaultDatabase.LOGIC_NAME).isEmpty());
}
}
@@ -72,8 +72,8 @@ class ShardingSphereDataSourceTest {
assertNotNull(contextManager.getMetaDataContexts().getMetaData().getDatabase(DefaultDatabase.LOGIC_NAME));
assertThat(contextManager.getClusterStateContext().getCurrentState(),
is(ClusterState.OK));
assertThat(contextManager.getInstanceContext().getInstance().getState().getCurrentState(),
is(InstanceState.OK));
-
assertThat(contextManager.getDataSourceMap(DefaultDatabase.LOGIC_NAME).size(),
is(1));
-
assertThat(contextManager.getDataSourceMap(DefaultDatabase.LOGIC_NAME).get("ds").getConnection().getMetaData().getURL(),
is("jdbc:mock://127.0.0.1/foo_ds"));
+
assertThat(contextManager.getStorageUnits(DefaultDatabase.LOGIC_NAME).size(),
is(1));
+
assertThat(contextManager.getStorageUnits(DefaultDatabase.LOGIC_NAME).get("ds").getDataSource().getConnection().getMetaData().getURL(),
is("jdbc:mock://127.0.0.1/foo_ds"));
}
}
@@ -106,7 +106,7 @@ class ShardingSphereDataSourceTest {
@Test
void assertEmptyDataSourceMap() throws Exception {
try (ShardingSphereDataSource actual = new
ShardingSphereDataSource(DefaultDatabase.LOGIC_NAME, null)) {
-
assertTrue(getContextManager(actual).getDataSourceMap(DefaultDatabase.LOGIC_NAME).isEmpty());
+
assertTrue(getContextManager(actual).getStorageUnits(DefaultDatabase.LOGIC_NAME).isEmpty());
assertThat(actual.getLoginTimeout(), is(0));
}
}
@@ -114,7 +114,7 @@ class ShardingSphereDataSourceTest {
@Test
void assertNotEmptyDataSourceMap() throws Exception {
try (ShardingSphereDataSource actual =
createShardingSphereDataSource(createHikariDataSource())) {
-
assertThat(getContextManager(actual).getDataSourceMap(DefaultDatabase.LOGIC_NAME).size(),
is(1));
+
assertThat(getContextManager(actual).getStorageUnits(DefaultDatabase.LOGIC_NAME).size(),
is(1));
assertThat(actual.getLoginTimeout(), is(15));
}
}
diff --git
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaDataTest.java
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaDataTest.java
index 13c319343e8..8309a103d9e 100644
---
a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaDataTest.java
+++
b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/metadata/ShardingSphereDatabaseMetaDataTest.java
@@ -43,8 +43,6 @@ import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Types;
import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
@@ -80,20 +78,16 @@ class ShardingSphereDatabaseMetaDataTest {
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private MetaDataContexts metaDataContexts;
- private final Map<String, DataSource> dataSourceMap = new HashMap<>();
-
private ShardingSphereDatabaseMetaData shardingSphereDatabaseMetaData;
@BeforeEach
void setUp() throws SQLException {
- dataSourceMap.put(DATA_SOURCE_NAME, dataSource);
when(dataSource.getConnection()).thenReturn(connection);
when(connection.getMetaData()).thenReturn(databaseMetaData);
when(resultSet.getMetaData()).thenReturn(mock(ResultSetMetaData.class));
when(shardingSphereConnection.getDatabaseConnectionManager().getRandomPhysicalDataSourceName()).thenReturn(DATA_SOURCE_NAME);
when(shardingSphereConnection.getDatabaseConnectionManager().getRandomConnection()).thenReturn(connection);
when(shardingSphereConnection.getContextManager().getMetaDataContexts()).thenReturn(metaDataContexts);
-
when(shardingSphereConnection.getContextManager().getDataSourceMap(DefaultDatabase.LOGIC_NAME)).thenReturn(dataSourceMap);
when(shardingSphereConnection.getDatabaseName()).thenReturn(DefaultDatabase.LOGIC_NAME);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
when(metaDataContexts.getMetaData().getDatabase(shardingSphereConnection.getDatabaseName())).thenReturn(database);
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index 6be5893c1ca..28c07889387 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -109,6 +109,16 @@ public final class ContextManager implements AutoCloseable
{
return
metaDataContexts.get().getMetaData().getDatabase(databaseName).getResourceMetaData().getStorageUnitMetaData().getDataSources();
}
+ /**
+ * Get storage units.
+ *
+ * @param databaseName database name
+ * @return storage units
+ */
+ public Map<String, StorageUnit> getStorageUnits(final String databaseName)
{
+ return
metaDataContexts.get().getMetaData().getDatabase(databaseName).getResourceMetaData().getStorageUnitMetaData().getStorageUnits();
+ }
+
/**
* Reload database meta data from governance center.
*
diff --git
a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
index f78db7fc528..f1ef8afd9b1 100644
---
a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
+++
b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
@@ -116,7 +116,7 @@ class ContextManagerTest {
ShardingSphereDatabase database =
new ShardingSphereDatabase(DefaultDatabase.LOGIC_NAME,
mock(DatabaseType.class), resourceMetaData, mock(RuleMetaData.class),
Collections.emptyMap());
when(metaDataContexts.getMetaData().getDatabase(DefaultDatabase.LOGIC_NAME)).thenReturn(database);
-
assertThat(contextManager.getDataSourceMap(DefaultDatabase.LOGIC_NAME).size(),
is(1));
+
assertThat(contextManager.getStorageUnits(DefaultDatabase.LOGIC_NAME).size(),
is(1));
}
@Test
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdater.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdater.java
index 3815015988e..22f72c543a1 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdater.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdater.java
@@ -25,12 +25,12 @@ import
org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.NoDatabaseSelectedException;
import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.UnknownDatabaseException;
+import
org.apache.shardingsphere.infra.metadata.database.resource.storage.StorageUnit;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable.updater.ConnectionSessionRequiredRALUpdater;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import javax.sql.DataSource;
import java.util.Collections;
import java.util.Map;
@@ -43,7 +43,7 @@ public final class RefreshTableMetaDataUpdater implements
ConnectionSessionRequi
public void executeUpdate(final ConnectionSession connectionSession, final
RefreshTableMetaDataStatement sqlStatement) {
String databaseName = getDatabaseName(connectionSession);
ContextManager contextManager =
ProxyContext.getInstance().getContextManager();
- checkDataSources(databaseName,
contextManager.getDataSourceMap(databaseName), sqlStatement);
+ checkStorageUnits(databaseName,
contextManager.getStorageUnits(databaseName), sqlStatement);
String schemaName = getSchemaName(databaseName, sqlStatement,
connectionSession);
if (sqlStatement.getStorageUnitName().isPresent()) {
if (sqlStatement.getTableName().isPresent()) {
@@ -60,11 +60,12 @@ public final class RefreshTableMetaDataUpdater implements
ConnectionSessionRequi
}
}
- private void checkDataSources(final String databaseName, final Map<String,
DataSource> dataSources, final RefreshTableMetaDataStatement sqlStatement) {
- ShardingSpherePreconditions.checkState(!dataSources.isEmpty(), () ->
new EmptyStorageUnitException(databaseName));
+ private void checkStorageUnits(final String databaseName, final
Map<String, StorageUnit> storageUnits, final RefreshTableMetaDataStatement
sqlStatement) {
+ ShardingSpherePreconditions.checkState(!storageUnits.isEmpty(), () ->
new EmptyStorageUnitException(databaseName));
if (sqlStatement.getStorageUnitName().isPresent()) {
String storageUnitName = sqlStatement.getStorageUnitName().get();
-
ShardingSpherePreconditions.checkState(dataSources.containsKey(storageUnitName),
() -> new MissingRequiredStorageUnitsException(databaseName,
Collections.singletonList(storageUnitName)));
+ ShardingSpherePreconditions.checkState(
+ storageUnits.containsKey(storageUnitName), () -> new
MissingRequiredStorageUnitsException(databaseName,
Collections.singletonList(storageUnitName)));
}
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/storage/unit/RegisterStorageUnitBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/storage/unit/RegisterStorageUnitBackendHandler.java
index b89c09d950a..6aade316f1e 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/storage/unit/RegisterStorageUnitBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/storage/unit/RegisterStorageUnitBackendHandler.java
@@ -112,7 +112,7 @@ public final class RegisterStorageUnitBackendHandler
extends StorageUnitDefiniti
}
private Collection<String> getCurrentStorageUnitNames(final String
databaseName) {
- return
ProxyContext.getInstance().getContextManager().getDataSourceMap(databaseName).keySet();
+ return
ProxyContext.getInstance().getContextManager().getStorageUnits(databaseName).keySet();
}
private Collection<String> getLogicalDataSourceNames(final String
databaseName) {
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdaterTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdaterTest.java
index 9e0c5f01d4a..0e0866a33f3 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdaterTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdaterTest.java
@@ -17,12 +17,12 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable;
-import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.NoDatabaseSelectedException;
-import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.UnknownDatabaseException;
import
org.apache.shardingsphere.distsql.handler.exception.storageunit.EmptyStorageUnitException;
import
org.apache.shardingsphere.distsql.handler.exception.storageunit.MissingRequiredStorageUnitsException;
import
org.apache.shardingsphere.distsql.parser.statement.ral.updatable.RefreshTableMetaDataStatement;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.NoDatabaseSelectedException;
+import
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.UnknownDatabaseException;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
@@ -30,7 +30,6 @@ import
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.UpdatableRALB
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource;
import org.apache.shardingsphere.test.mock.AutoMockExtension;
import org.apache.shardingsphere.test.mock.StaticMockSettings;
import org.junit.jupiter.api.Test;
@@ -70,7 +69,7 @@ class RefreshTableMetaDataUpdaterTest {
@Test
void assertEmptyResource() {
ContextManager contextManager = mock(ContextManager.class,
RETURNS_DEEP_STUBS);
-
when(contextManager.getDataSourceMap("foo_db")).thenReturn(Collections.emptyMap());
+
when(contextManager.getStorageUnits("foo_db")).thenReturn(Collections.emptyMap());
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
when(ProxyContext.getInstance().databaseExists("foo_db")).thenReturn(true);
UpdatableRALBackendHandler<?> backendHandler = new
UpdatableRALBackendHandler<>(new RefreshTableMetaDataStatement(),
mockConnectionSession("foo_db"));
@@ -80,7 +79,6 @@ class RefreshTableMetaDataUpdaterTest {
@Test
void assertMissingRequiredResources() {
ContextManager contextManager = mock(ContextManager.class,
RETURNS_DEEP_STUBS);
-
when(contextManager.getDataSourceMap("foo_db")).thenReturn(Collections.singletonMap("ds_0",
new MockedDataSource()));
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
when(ProxyContext.getInstance().databaseExists("foo_db")).thenReturn(true);
UpdatableRALBackendHandler<?> backendHandler = new
UpdatableRALBackendHandler<>(new RefreshTableMetaDataStatement("t_order",
"ds_1", null), mockConnectionSession("foo_db"));
@@ -90,7 +88,6 @@ class RefreshTableMetaDataUpdaterTest {
@Test
void assertUpdate() throws SQLException {
ContextManager contextManager = mock(ContextManager.class,
RETURNS_DEEP_STUBS);
-
when(contextManager.getDataSourceMap("foo_db")).thenReturn(Collections.singletonMap("ds_0",
new MockedDataSource()));
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
when(ProxyContext.getInstance().databaseExists("foo_db")).thenReturn(true);
UpdatableRALBackendHandler<?> backendHandler = new
UpdatableRALBackendHandler<>(new RefreshTableMetaDataStatement(),
mockConnectionSession("foo_db"));
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/storage/unit/RegisterStorageUnitBackendHandlerTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/storage/unit/RegisterStorageUnitBackendHandlerTest.java
index d4e12d5c851..1fb0d6d2837 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/storage/unit/RegisterStorageUnitBackendHandlerTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/storage/unit/RegisterStorageUnitBackendHandlerTest.java
@@ -97,7 +97,7 @@ class RegisterStorageUnitBackendHandlerTest {
@Test
void assertExecuteWithDuplicateStorageUnitNamesWithResourceMetaData() {
ContextManager contextManager = mock(ContextManager.class,
RETURNS_DEEP_STUBS);
-
when(contextManager.getDataSourceMap("foo_db").keySet()).thenReturn(Collections.singleton("ds_0"));
+
when(contextManager.getStorageUnits("foo_db").keySet()).thenReturn(Collections.singleton("ds_0"));
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
assertThrows(DuplicateStorageUnitException.class, () ->
handler.execute("foo_db", createRegisterStorageUnitStatement()));
}