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 164718c68b8 Add test cases for ContextManager (#32907)
164718c68b8 is described below
commit 164718c68b8adfd6c9dab49b6d4e66248df5c940
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Sep 17 00:29:47 2024 +0800
Add test cases for ContextManager (#32907)
---
.../mode/manager/ContextManagerTest.java | 33 ++++++++++++++++------
1 file changed, 24 insertions(+), 9 deletions(-)
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 cc137afb480..8a3fd8d987c 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
@@ -17,21 +17,19 @@
package org.apache.shardingsphere.mode.manager;
-import org.apache.groovy.util.Maps;
import org.apache.shardingsphere.infra.config.mode.ModeConfiguration;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.datanode.DataNode;
-import
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
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.instance.ComputeNodeInstance;
import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext;
+import
org.apache.shardingsphere.infra.instance.metadata.jdbc.JDBCInstanceMetaData;
import
org.apache.shardingsphere.infra.instance.metadata.proxy.ProxyInstanceMetaData;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
-import
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
import
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
@@ -54,13 +52,13 @@ import org.mockito.quality.Strictness;
import java.util.Collections;
import java.util.HashMap;
-import java.util.Map;
import java.util.Optional;
import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
@@ -75,6 +73,9 @@ class ContextManagerTest {
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private MetaDataContexts metaDataContexts;
+ @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+ private ComputeNodeInstanceContext computeNodeInstanceContext;
+
private ContextManager contextManager;
@BeforeEach
@@ -84,7 +85,6 @@ class ContextManagerTest {
when(metaDataContexts.getMetaData().containsDatabase("foo_db")).thenReturn(true);
when(metaDataContexts.getMetaData().getDatabase("foo_db")).thenReturn(database);
when(metaDataContexts.getMetaData().getDatabases().values()).thenReturn(Collections.singleton(database));
- ComputeNodeInstanceContext computeNodeInstanceContext =
mock(ComputeNodeInstanceContext.class);
when(computeNodeInstanceContext.getInstance()).thenReturn(new
ComputeNodeInstance(new ProxyInstanceMetaData("foo_id", 3307),
Collections.emptyList()));
when(computeNodeInstanceContext.getModeConfiguration()).thenReturn(mock(ModeConfiguration.class));
contextManager = new ContextManager(metaDataContexts,
computeNodeInstanceContext, mock(PersistRepository.class));
@@ -104,10 +104,6 @@ class ContextManagerTest {
StorageUnit storageUnit = mock(StorageUnit.class, RETURNS_DEEP_STUBS);
when(storageUnit.getStorageType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"FIXTURE"));
when(result.getResourceMetaData().getStorageUnits()).thenReturn(Collections.singletonMap("foo_ds",
storageUnit));
- DataSourcePoolProperties dataSourcePoolProps =
mock(DataSourcePoolProperties.class, RETURNS_DEEP_STUBS);
-
when(dataSourcePoolProps.getConnectionPropertySynonyms().getStandardProperties()).thenReturn(Maps.of("url",
"jdbc:mock://127.0.0.1/foo_db", "username", "test"));
- Map<String, StorageUnit> storageUnits =
Collections.singletonMap("foo_ds", new StorageUnit(mock(StorageNode.class),
dataSourcePoolProps, new MockedDataSource()));
-
when(result.getResourceMetaData().getStorageUnits()).thenReturn(storageUnits);
return result;
}
@@ -157,6 +153,25 @@ class ContextManagerTest {
assertTrue(contextManager.getMetaDataContexts().getMetaData().getDatabase("foo_db").getResourceMetaData().getStorageUnits().containsKey("foo_ds"));
}
+ @Test
+ void assertReloadTableWithDataSourceName() {
+ ShardingSphereDatabase database = mockDatabase();
+ contextManager.reloadTable(database, "foo_schema", "foo_ds",
"foo_table");
+
assertTrue(contextManager.getMetaDataContexts().getMetaData().getDatabase("foo_db").getResourceMetaData().getStorageUnits().containsKey("foo_ds"));
+ }
+
+ @Test
+ void assertGetPreSelectedDatabaseNameWithJDBC() {
+ when(computeNodeInstanceContext.getInstance()).thenReturn(new
ComputeNodeInstance(new JDBCInstanceMetaData("foo_id"),
Collections.emptyList()));
+
when(metaDataContexts.getMetaData().getDatabases()).thenReturn(Collections.singletonMap("foo_db",
mock(ShardingSphereDatabase.class)));
+ assertThat(contextManager.getPreSelectedDatabaseName(), is("foo_db"));
+ }
+
+ @Test
+ void assertGetPreSelectedDatabaseNameWithProxy() {
+ assertNull(contextManager.getPreSelectedDatabaseName());
+ }
+
@Test
void assertClose() {
contextManager.close();