You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/09/16 13:48:43 UTC
[shardingsphere] branch master updated: following test cases added:
(#7491)
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 37321b2 following test cases added: (#7491)
37321b2 is described below
commit 37321b2362521534355d63ea9d6b4b0eda84a9d1
Author: sluk3r <sl...@qq.com>
AuthorDate: Wed Sep 16 21:48:29 2020 +0800
following test cases added: (#7491)
assertInit
assertSchemaExists
assertGetSchema
assertGetAllSchemaNames
Co-authored-by: wangxichun <wa...@jd.com>
---
.../proxy/backend/context/ProxyContextTest.java | 79 ++++++++++++++++++++++
1 file changed, 79 insertions(+)
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
index d7ce927..6efbc55 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
@@ -17,31 +17,38 @@
package org.apache.shardingsphere.proxy.backend.context;
+import com.google.common.collect.Lists;
import org.apache.shardingsphere.infra.auth.Authentication;
import org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
import org.apache.shardingsphere.infra.context.SchemaContext;
+import org.apache.shardingsphere.infra.context.SchemaContexts;
import org.apache.shardingsphere.infra.context.impl.StandardSchemaContexts;
import org.apache.shardingsphere.infra.context.runtime.RuntimeContext;
import org.apache.shardingsphere.infra.context.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
import org.apache.shardingsphere.jdbc.test.MockedDataSource;
+import org.apache.shardingsphere.transaction.context.TransactionContexts;
import org.junit.Test;
import javax.sql.DataSource;
import java.lang.reflect.Field;
import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public final class ProxyContextTest {
+ private static final String SCHEMA_PATTERN = "schema_%s";
+
@Test
public void assertGetDataSourceSample() throws NoSuchFieldException, IllegalAccessException {
Map<String, DataSource> mockDataSourceMap = new HashMap<>(2, 1);
@@ -55,6 +62,77 @@ public final class ProxyContextTest {
assertThat(actual, is(Optional.of(mockDataSourceMap.get("ds_1"))));
}
+ @Test
+ public void assertInit() {
+ SchemaContexts schemaContexts = mock(SchemaContexts.class);
+ TransactionContexts transactionContexts = mock(TransactionContexts.class);
+ ProxyContext proxyContext = ProxyContext.getInstance();
+ proxyContext.init(schemaContexts, transactionContexts);
+ assertEquals(schemaContexts, proxyContext.getSchemaContexts());
+ assertEquals(transactionContexts, proxyContext.getTransactionContexts());
+ }
+
+ @Test
+ public void assertSchemaExists() throws NoSuchFieldException, IllegalAccessException {
+ SchemaContext schemaContext = mock(SchemaContext.class);
+ ShardingSphereSchema shardingSphereSchema = mock(ShardingSphereSchema.class);
+ RuntimeContext runtimeContext = mock(RuntimeContext.class);
+ when(shardingSphereSchema.getDataSources()).thenReturn(new HashMap<String, DataSource>());
+ when(schemaContext.getName()).thenReturn("schema");
+ when(schemaContext.getSchema()).thenReturn(shardingSphereSchema);
+ when(schemaContext.getRuntimeContext()).thenReturn(runtimeContext);
+ Map<String, SchemaContext> schemaContextsMap = Collections.singletonMap("schema", schemaContext);
+ Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
+ schemaContexts.setAccessible(true);
+ schemaContexts.set(ProxyContext.getInstance(),
+ new StandardSchemaContexts(schemaContextsMap, new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ boolean exists1 = ProxyContext.getInstance().schemaExists("schema");
+ assertThat(true, is(exists1));
+ boolean exists2 = ProxyContext.getInstance().schemaExists("schema_2");
+ assertThat(false, is(exists2));
+ }
+
+ @Test
+ public void assertGetSchema() throws NoSuchFieldException, IllegalAccessException {
+ SchemaContext schemaContext = mock(SchemaContext.class);
+ ShardingSphereSchema shardingSphereSchema = mock(ShardingSphereSchema.class);
+ RuntimeContext runtimeContext = mock(RuntimeContext.class);
+ when(shardingSphereSchema.getDataSources()).thenReturn(new HashMap<String, DataSource>());
+ when(schemaContext.getName()).thenReturn("schema");
+ when(schemaContext.getSchema()).thenReturn(shardingSphereSchema);
+ when(schemaContext.getRuntimeContext()).thenReturn(runtimeContext);
+ Map<String, SchemaContext> schemaContextsMap = Collections.singletonMap("schema", schemaContext);
+ Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
+ schemaContexts.setAccessible(true);
+ schemaContexts.set(ProxyContext.getInstance(),
+ new StandardSchemaContexts(schemaContextsMap, new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ assertThat(null, is(ProxyContext.getInstance().getSchema(null)));
+ assertThat(null, is(ProxyContext.getInstance().getSchema("")));
+ assertThat(null, is(ProxyContext.getInstance().getSchema("schema1")));
+ assertThat(schemaContext, is(ProxyContext.getInstance().getSchema("schema")));
+ }
+
+ @Test
+ public void assertGetAllSchemaNames() throws NoSuchFieldException, IllegalAccessException {
+ Map<String, SchemaContext> schemaContextsMap = getSchemaContextMap();
+ Field schemaContexts = ProxyContext.getInstance().getClass().getDeclaredField("schemaContexts");
+ schemaContexts.setAccessible(true);
+ schemaContexts.set(ProxyContext.getInstance(),
+ new StandardSchemaContexts(schemaContextsMap, new Authentication(), new ConfigurationProperties(new Properties()), new MySQLDatabaseType()));
+ List<String> keyList = Lists.newArrayList(schemaContextsMap.keySet());
+ for (int i = 0; i < keyList.size(); i++) {
+ assertThat(keyList.get(i), is(ProxyContext.getInstance().getAllSchemaNames().get(i)));
+ }
+ }
+
+ private Map<String, SchemaContext> getSchemaContextMap() {
+ Map<String, SchemaContext> result = new HashMap<>(10);
+ for (int i = 0; i < 10; i++) {
+ result.put(String.format(SCHEMA_PATTERN, i), mock(SchemaContext.class));
+ }
+ return result;
+ }
+
private Map<String, SchemaContext> getSchemaContextMap(final Map<String, DataSource> mockDataSourceMap) {
SchemaContext schemaContext = mock(SchemaContext.class);
ShardingSphereSchema shardingSphereSchema = mock(ShardingSphereSchema.class);
@@ -65,4 +143,5 @@ public final class ProxyContextTest {
when(schemaContext.getRuntimeContext()).thenReturn(runtimeContext);
return Collections.singletonMap("schema", schemaContext);
}
+
}