This is an automated email from the ASF dual-hosted git repository.
zhangyonglun 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 2bd321a Refactor FrontDatabaseProtocolTypeFactoryTest (#8626)
2bd321a is described below
commit 2bd321ad247fd9ef8b6f5b548faf5886dea1554e
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Dec 15 16:03:14 2020 +0800
Refactor FrontDatabaseProtocolTypeFactoryTest (#8626)
---
.../FrontDatabaseProtocolTypeFactoryTest.java | 69 +++++++++++-----------
1 file changed, 33 insertions(+), 36 deletions(-)
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/test/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactoryTest.java
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/test/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactoryTest.java
index a2f1b7d..8404be1 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/test/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactoryTest.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/test/java/org/apache/shardingsphere/proxy/frontend/protocol/FrontDatabaseProtocolTypeFactoryTest.java
@@ -23,11 +23,11 @@ import
org.apache.shardingsphere.infra.config.exception.ShardingSphereConfigurat
import
org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
import
org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
import
org.apache.shardingsphere.infra.context.metadata.impl.StandardMetaDataContexts;
+import org.apache.shardingsphere.infra.database.DefaultSchema;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
import org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import
org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.junit.Test;
@@ -38,6 +38,7 @@ import java.util.Properties;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
@@ -45,60 +46,56 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public final class FrontDatabaseProtocolTypeFactoryTest {
-
+
@Test(expected = ShardingSphereConfigurationException.class)
- public void
assertGetDatabaseTypeFromMetaDataContextsThrowShardingSphereConfigurationException()
{
- StandardMetaDataContexts standardMetaDataContexts = new
StandardMetaDataContexts(Collections.emptyMap(), mock(ExecutorEngine.class),
mock(Authentication.class),
- new ConfigurationProperties(new Properties()));
- setMetaDataContexts(standardMetaDataContexts);
- assertTrue(standardMetaDataContexts.getMetaDataMap().isEmpty());
+ public void
assertGetDatabaseTypeWhenThrowShardingSphereConfigurationException() {
+ StandardMetaDataContexts metaDataContexts = new
StandardMetaDataContexts(
+ Collections.emptyMap(), mock(ExecutorEngine.class),
mock(Authentication.class), new ConfigurationProperties(new Properties()));
+ setMetaDataContexts(metaDataContexts);
+ assertTrue(metaDataContexts.getMetaDataMap().isEmpty());
FrontDatabaseProtocolTypeFactory.getDatabaseType();
}
-
+
@Test
public void
assertGetDatabaseTypeInstanceOfMySQLDatabaseTypeFromMetaDataContextsSchemaName()
{
- StandardMetaDataContexts standardMetaDataContexts = new
StandardMetaDataContexts(getMetaDataMap(), mock(ExecutorEngine.class),
mock(Authentication.class),
- new ConfigurationProperties(new Properties()));
- setMetaDataContexts(standardMetaDataContexts);
- assertTrue(!standardMetaDataContexts.getMetaDataMap().isEmpty());
- String configuredDatabaseType =
standardMetaDataContexts.getProps().getValue(ConfigurationPropertyKey.PROXY_FRONTEND_DATABASE_PROTOCOL_TYPE);
+ StandardMetaDataContexts metaDataContexts = new
StandardMetaDataContexts(
+ mockMetaDataMap(), mock(ExecutorEngine.class),
mock(Authentication.class), new ConfigurationProperties(new Properties()));
+ setMetaDataContexts(metaDataContexts);
+ assertFalse(metaDataContexts.getMetaDataMap().isEmpty());
+ String configuredDatabaseType =
metaDataContexts.getProps().getValue(ConfigurationPropertyKey.PROXY_FRONTEND_DATABASE_PROTOCOL_TYPE);
assertTrue(configuredDatabaseType.isEmpty());
-
assertTrue(standardMetaDataContexts.getAllSchemaNames().contains("mysql"));
+
assertTrue(metaDataContexts.getAllSchemaNames().contains(DefaultSchema.LOGIC_NAME));
DatabaseType databaseType =
FrontDatabaseProtocolTypeFactory.getDatabaseType();
assertThat(databaseType, instanceOf(DatabaseType.class));
assertThat(databaseType.getName(), is("MySQL"));
}
-
+
@Test
public void
assertGetDatabaseTypeOfPostgreSQLDatabaseTypeFromMetaDataContextsProps() {
- Properties properties = new Properties();
-
properties.setProperty(ConfigurationPropertyKey.PROXY_FRONTEND_DATABASE_PROTOCOL_TYPE.getKey(),
"PostgreSQL");
- StandardMetaDataContexts standardMetaDataContexts = new
StandardMetaDataContexts(getMetaDataMap(), mock(ExecutorEngine.class),
mock(Authentication.class),
- new ConfigurationProperties(properties));
- setMetaDataContexts(standardMetaDataContexts);
- assertTrue(!standardMetaDataContexts.getMetaDataMap().isEmpty());
- String configuredDatabaseType =
standardMetaDataContexts.getProps().getValue(ConfigurationPropertyKey.PROXY_FRONTEND_DATABASE_PROTOCOL_TYPE);
+ Properties props = new Properties();
+
props.setProperty(ConfigurationPropertyKey.PROXY_FRONTEND_DATABASE_PROTOCOL_TYPE.getKey(),
"PostgreSQL");
+ StandardMetaDataContexts metaDataContexts = new
StandardMetaDataContexts(mockMetaDataMap(), mock(ExecutorEngine.class),
mock(Authentication.class), new ConfigurationProperties(props));
+ setMetaDataContexts(metaDataContexts);
+ assertFalse(metaDataContexts.getMetaDataMap().isEmpty());
+ String configuredDatabaseType =
metaDataContexts.getProps().getValue(ConfigurationPropertyKey.PROXY_FRONTEND_DATABASE_PROTOCOL_TYPE);
assertThat(configuredDatabaseType, is("PostgreSQL"));
-
assertTrue(standardMetaDataContexts.getAllSchemaNames().contains("mysql"));
+
assertTrue(metaDataContexts.getAllSchemaNames().contains(DefaultSchema.LOGIC_NAME));
DatabaseType databaseType =
FrontDatabaseProtocolTypeFactory.getDatabaseType();
assertThat(databaseType, instanceOf(DatabaseType.class));
assertThat(databaseType.getName(), is("PostgreSQL"));
-
assertThat(standardMetaDataContexts.getMetaData("mysql").getResource().getDatabaseType(),
instanceOf(MySQLDatabaseType.class));
+
assertThat(metaDataContexts.getMetaData(DefaultSchema.LOGIC_NAME).getResource().getDatabaseType(),
instanceOf(MySQLDatabaseType.class));
}
-
+
+ private Map<String, ShardingSphereMetaData> mockMetaDataMap() {
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class,
RETURNS_DEEP_STUBS);
+ when(metaData.getResource().getDatabaseType()).thenReturn(new
MySQLDatabaseType());
+ return Collections.singletonMap(DefaultSchema.LOGIC_NAME, metaData);
+ }
+
@SneakyThrows(ReflectiveOperationException.class)
- private void setMetaDataContexts(final StandardMetaDataContexts
standardMetaDataContexts) {
+ private void setMetaDataContexts(final StandardMetaDataContexts
metaDataContexts) {
Field field =
ProxyContext.getInstance().getClass().getDeclaredField("metaDataContexts");
field.setAccessible(true);
- field.set(ProxyContext.getInstance(), standardMetaDataContexts);
- }
-
- private Map<String, ShardingSphereMetaData> getMetaDataMap() {
- ShardingSphereResource shardingSphereResource =
mock(ShardingSphereResource.class);
- when(shardingSphereResource.getDatabaseType()).thenReturn(new
MySQLDatabaseType());
- ShardingSphereMetaData shardingSphereMetaData =
mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
-
when(shardingSphereMetaData.getResource()).thenReturn(shardingSphereResource);
- Map<String, ShardingSphereMetaData> metaDataMap =
Collections.singletonMap("mysql", shardingSphereMetaData);
- return metaDataMap;
+ field.set(ProxyContext.getInstance(), metaDataContexts);
}
}