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 2022/12/08 03:34:56 UTC

[shardingsphere] branch master updated: Merge 2 DatabaseOperateBackendHandlerFactoryTest (#22735)

This is an automated email from the ASF dual-hosted git repository.

zhaojinchao 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 a0662636c60 Merge 2 DatabaseOperateBackendHandlerFactoryTest (#22735)
a0662636c60 is described below

commit a0662636c60f9a4bae51abbd2b37a11397d958e0
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Thu Dec 8 11:34:49 2022 +0800

    Merge 2 DatabaseOperateBackendHandlerFactoryTest (#22735)
---
 .../DatabaseOperateBackendHandlerFactoryTest.java  | 164 ---------------------
 .../DatabaseOperateBackendHandlerFactoryTest.java  | 135 ++++++++++++++++-
 2 files changed, 134 insertions(+), 165 deletions(-)

diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseOperateBackendHandlerFactoryTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseOperateBackendHandlerFactoryTest.java
deleted file mode 100644
index 67338b9311e..00000000000
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/DatabaseOperateBackendHandlerFactoryTest.java
+++ /dev/null
@@ -1,164 +0,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.
- */
-
-package org.apache.shardingsphere.proxy.backend.handler.admin;
-
-import org.apache.shardingsphere.dialect.exception.syntax.database.DatabaseCreateExistsException;
-import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
-import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
-import org.apache.shardingsphere.mode.manager.ContextManager;
-import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
-import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.handler.database.DatabaseOperateBackendHandlerFactory;
-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.proxy.backend.util.ProxyContextRestorer;
-import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateDatabaseStatement;
-import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropDatabaseStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.ddl.MySQLCreateDatabaseStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.ddl.MySQLDropDatabaseStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.ddl.PostgreSQLCreateDatabaseStatement;
-import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.ddl.PostgreSQLDropDatabaseStatement;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Answers;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-
-import java.sql.SQLException;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertNull;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-@RunWith(MockitoJUnitRunner.class)
-public final class DatabaseOperateBackendHandlerFactoryTest extends ProxyContextRestorer {
-    
-    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
-    private ContextManager contextManager;
-    
-    @Mock
-    private ConnectionSession connectionSession;
-    
-    @Before
-    public void setUp() {
-        MetaDataContexts metaDataContexts = new MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(getDatabases(), mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new Properties())));
-        when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
-        ProxyContext.init(contextManager);
-        when(connectionSession.getDatabaseName()).thenReturn("db");
-        when(metaDataContexts.getMetaData().getGlobalRuleMetaData().getRules()).thenReturn(Collections.emptyList());
-    }
-    
-    @Test
-    public void assertExecuteMySQLCreateDatabaseContext() throws SQLException {
-        assertExecuteCreateDatabaseContext(new MySQLCreateDatabaseStatement());
-    }
-    
-    @Test
-    public void assertExecutePostgreSQLCreateDatabaseContext() throws SQLException {
-        assertExecuteCreateDatabaseContext(new PostgreSQLCreateDatabaseStatement());
-    }
-    
-    private void assertExecuteCreateDatabaseContext(final CreateDatabaseStatement sqlStatement) throws SQLException {
-        sqlStatement.setDatabaseName("new_db");
-        setGovernanceMetaDataContexts(true);
-        ResponseHeader response = DatabaseOperateBackendHandlerFactory.newInstance(sqlStatement, connectionSession).execute();
-        assertThat(response, instanceOf(UpdateResponseHeader.class));
-    }
-    
-    @Test
-    public void assertExecuteMySQLDropDatabaseContext() throws SQLException {
-        assertExecuteDropDatabaseContext(new MySQLDropDatabaseStatement());
-    }
-    
-    @Test
-    public void assertExecutePostgreSQLDropDatabaseContext() throws SQLException {
-        assertExecuteDropDatabaseContext(new PostgreSQLDropDatabaseStatement());
-    }
-    
-    private void assertExecuteDropDatabaseContext(final DropDatabaseStatement sqlStatement) throws SQLException {
-        sqlStatement.setDatabaseName("db");
-        setGovernanceMetaDataContexts(true);
-        ResponseHeader response = DatabaseOperateBackendHandlerFactory.newInstance(sqlStatement, connectionSession).execute();
-        assertThat(response, instanceOf(UpdateResponseHeader.class));
-    }
-    
-    @Test
-    public void assertExecuteMySQLCreateDatabaseContextWithException() {
-        assertExecuteCreateDatabaseContextWithException(new MySQLCreateDatabaseStatement());
-    }
-    
-    @Test
-    public void assertExecutePostgreSQLCreateDatabaseContextWithException() {
-        assertExecuteCreateDatabaseContextWithException(new PostgreSQLCreateDatabaseStatement());
-    }
-    
-    public void assertExecuteCreateDatabaseContextWithException(final CreateDatabaseStatement sqlStatement) {
-        sqlStatement.setDatabaseName("db");
-        setGovernanceMetaDataContexts(true);
-        try {
-            DatabaseOperateBackendHandlerFactory.newInstance(sqlStatement, connectionSession);
-        } catch (final DatabaseCreateExistsException ex) {
-            assertNull(ex.getMessage());
-        }
-    }
-    
-    private Map<String, ShardingSphereDatabase> getDatabases() {
-        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
-        when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
-        when(database.getRuleMetaData().getRules()).thenReturn(Collections.emptyList());
-        Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
-        result.put("db", database);
-        return result;
-    }
-    
-    private void setGovernanceMetaDataContexts(final boolean isGovernance) {
-        ContextManager contextManager = ProxyContext.getInstance().getContextManager();
-        MetaDataContexts metaDataContexts = isGovernance
-                ? mockMetaDataContexts()
-                : new MetaDataContexts(mock(MetaDataPersistService.class), new ShardingSphereMetaData());
-        when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
-    }
-    
-    private MetaDataContexts mockMetaDataContexts() {
-        MetaDataContexts result = ProxyContext.getInstance().getContextManager().getMetaDataContexts();
-        when(result.getMetaData().getDatabase("db").getResourceMetaData().getDataSources()).thenReturn(Collections.emptyMap());
-        when(result.getMetaData().getDatabase("db").getResourceMetaData().getNotExistedResources(any())).thenReturn(Collections.emptyList());
-        return result;
-    }
-    
-    @After
-    public void setDown() {
-        setGovernanceMetaDataContexts(false);
-    }
-}
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/database/DatabaseOperateBackendHandlerFactoryTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/database/DatabaseOperateBackendHandlerFactoryTest.java
index 7ccdd76d791..292e9ccfcd7 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/database/DatabaseOperateBackendHandlerFactoryTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/database/DatabaseOperateBackendHandlerFactoryTest.java
@@ -17,18 +17,146 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.database;
 
+import org.apache.shardingsphere.dialect.exception.syntax.database.DatabaseCreateExistsException;
+import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
+import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.util.exception.external.sql.type.generic.UnsupportedSQLOperationException;
+import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
+import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
+import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+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.proxy.backend.util.ProxyContextRestorer;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterDatabaseStatement;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateDatabaseStatement;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropDatabaseStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.ddl.MySQLCreateDatabaseStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.ddl.MySQLDropDatabaseStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.ddl.PostgreSQLCreateDatabaseStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.ddl.PostgreSQLDropDatabaseStatement;
+import org.junit.After;
+import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+import java.sql.SQLException;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
-public final class DatabaseOperateBackendHandlerFactoryTest {
+@RunWith(MockitoJUnitRunner.class)
+public final class DatabaseOperateBackendHandlerFactoryTest extends ProxyContextRestorer {
+    
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private ContextManager contextManager;
+    
+    @Mock
+    private ConnectionSession connectionSession;
+    
+    @Before
+    public void setUp() {
+        MetaDataContexts metaDataContexts = new MetaDataContexts(mock(MetaDataPersistService.class),
+                new ShardingSphereMetaData(getDatabases(), mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new Properties())));
+        when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
+        ProxyContext.init(contextManager);
+        when(connectionSession.getDatabaseName()).thenReturn("db");
+        when(metaDataContexts.getMetaData().getGlobalRuleMetaData().getRules()).thenReturn(Collections.emptyList());
+    }
+    
+    @Test
+    public void assertExecuteMySQLCreateDatabaseContext() throws SQLException {
+        assertExecuteCreateDatabaseContext(new MySQLCreateDatabaseStatement());
+    }
+    
+    @Test
+    public void assertExecutePostgreSQLCreateDatabaseContext() throws SQLException {
+        assertExecuteCreateDatabaseContext(new PostgreSQLCreateDatabaseStatement());
+    }
+    
+    private void assertExecuteCreateDatabaseContext(final CreateDatabaseStatement sqlStatement) throws SQLException {
+        sqlStatement.setDatabaseName("new_db");
+        setGovernanceMetaDataContexts(true);
+        ResponseHeader response = DatabaseOperateBackendHandlerFactory.newInstance(sqlStatement, connectionSession).execute();
+        assertThat(response, instanceOf(UpdateResponseHeader.class));
+    }
+    
+    @Test
+    public void assertExecuteMySQLDropDatabaseContext() throws SQLException {
+        assertExecuteDropDatabaseContext(new MySQLDropDatabaseStatement());
+    }
+    
+    @Test
+    public void assertExecutePostgreSQLDropDatabaseContext() throws SQLException {
+        assertExecuteDropDatabaseContext(new PostgreSQLDropDatabaseStatement());
+    }
+    
+    private void assertExecuteDropDatabaseContext(final DropDatabaseStatement sqlStatement) throws SQLException {
+        sqlStatement.setDatabaseName("db");
+        setGovernanceMetaDataContexts(true);
+        ResponseHeader response = DatabaseOperateBackendHandlerFactory.newInstance(sqlStatement, connectionSession).execute();
+        assertThat(response, instanceOf(UpdateResponseHeader.class));
+    }
+    
+    @Test
+    public void assertExecuteMySQLCreateDatabaseContextWithException() {
+        assertExecuteCreateDatabaseContextWithException(new MySQLCreateDatabaseStatement());
+    }
+    
+    @Test
+    public void assertExecutePostgreSQLCreateDatabaseContextWithException() {
+        assertExecuteCreateDatabaseContextWithException(new PostgreSQLCreateDatabaseStatement());
+    }
+    
+    public void assertExecuteCreateDatabaseContextWithException(final CreateDatabaseStatement sqlStatement) {
+        sqlStatement.setDatabaseName("db");
+        setGovernanceMetaDataContexts(true);
+        try {
+            DatabaseOperateBackendHandlerFactory.newInstance(sqlStatement, connectionSession);
+        } catch (final DatabaseCreateExistsException ex) {
+            assertNull(ex.getMessage());
+        }
+    }
+    
+    private Map<String, ShardingSphereDatabase> getDatabases() {
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
+        when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
+        when(database.getRuleMetaData().getRules()).thenReturn(Collections.emptyList());
+        Map<String, ShardingSphereDatabase> result = new LinkedHashMap<>(1, 1);
+        result.put("db", database);
+        return result;
+    }
+    
+    private void setGovernanceMetaDataContexts(final boolean isGovernance) {
+        ContextManager contextManager = ProxyContext.getInstance().getContextManager();
+        MetaDataContexts metaDataContexts = isGovernance
+                ? mockMetaDataContexts()
+                : new MetaDataContexts(mock(MetaDataPersistService.class), new ShardingSphereMetaData());
+        when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
+    }
+    
+    private MetaDataContexts mockMetaDataContexts() {
+        MetaDataContexts result = ProxyContext.getInstance().getContextManager().getMetaDataContexts();
+        when(result.getMetaData().getDatabase("db").getResourceMetaData().getDataSources()).thenReturn(Collections.emptyMap());
+        when(result.getMetaData().getDatabase("db").getResourceMetaData().getNotExistedResources(any())).thenReturn(Collections.emptyList());
+        return result;
+    }
     
     @Test
     public void assertDatabaseOperateBackendHandlerFactoryReturnCreateDatabaseBackendHandler() {
@@ -44,4 +172,9 @@ public final class DatabaseOperateBackendHandlerFactoryTest {
     public void assertDatabaseOperateBackendHandlerFactoryThrowUnsupportedOperationException() {
         DatabaseOperateBackendHandlerFactory.newInstance(mock(AlterDatabaseStatement.class), mock(ConnectionSession.class));
     }
+    
+    @After
+    public void setDown() {
+        setGovernanceMetaDataContexts(false);
+    }
 }