You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2023/02/28 06:52:16 UTC

[shardingsphere] branch master updated: Use MockResourceAutoReleaseExtension on infra modules (#24372)

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 c62c35a0ee4 Use MockResourceAutoReleaseExtension on infra modules (#24372)
c62c35a0ee4 is described below

commit c62c35a0ee4756aeaa46ad51ead28d391ae04df8
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Tue Feb 28 14:52:00 2023 +0800

    Use MockResourceAutoReleaseExtension on infra modules (#24372)
---
 .../infra/metadata/ShardingSphereMetaDataTest.java | 43 ++++++++---------
 .../schema/builder/GenericSchemaBuilderTest.java   | 37 +++++++--------
 infra/executor/pom.xml                             |  6 +++
 .../sql/process/ExecuteProcessReporterTest.java    | 54 ++++++++--------------
 4 files changed, 64 insertions(+), 76 deletions(-)

diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
index 20c1c32a12a..b9f891fc95a 100644
--- a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
+++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
@@ -28,8 +28,12 @@ import org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphere
 import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.rule.identifier.type.ResourceHeldRule;
 import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource;
-import org.junit.Test;
-import org.mockito.MockedStatic;
+import org.apache.shardingsphere.test.mock.MockResourceAutoReleaseExtension;
+import org.apache.shardingsphere.test.mock.StaticMockSettings;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoSettings;
+import org.mockito.quality.Strictness;
 
 import javax.sql.DataSource;
 import java.sql.SQLException;
@@ -40,34 +44,31 @@ import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockStatic;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+@ExtendWith(MockResourceAutoReleaseExtension.class)
+@StaticMockSettings(ShardingSphereDatabase.class)
+@MockitoSettings(strictness = Strictness.LENIENT)
 public final class ShardingSphereMetaDataTest {
     
     @Test
     public void assertAddDatabase() {
-        ShardingSphereResourceMetaData resourceMetaData = mock(ShardingSphereResourceMetaData.class);
-        DataSource dataSource = new MockedDataSource();
-        ResourceHeldRule<?> databaseResourceHeldRule = mock(ResourceHeldRule.class);
         ResourceHeldRule<?> globalResourceHeldRule = mock(ResourceHeldRule.class);
-        ShardingSphereDatabase database = mockDatabase(resourceMetaData, dataSource, databaseResourceHeldRule);
-        try (MockedStatic<ShardingSphereDatabase> mockedStatic = mockStatic(ShardingSphereDatabase.class)) {
-            DatabaseType databaseType = mock(DatabaseType.class);
-            mockedStatic.when(() -> ShardingSphereDatabase.create("foo_db", databaseType)).thenReturn(database);
-            Map<String, ShardingSphereDatabase> databases = new HashMap<>(Collections.singletonMap("foo_db", database));
-            ShardingSphereMetaData metaData = new ShardingSphereMetaData(
-                    databases, new ShardingSphereRuleMetaData(Collections.singleton(globalResourceHeldRule)), new ConfigurationProperties(new Properties()));
-            metaData.addDatabase("foo_db", databaseType);
-            assertThat(metaData.getDatabases(), is(databases));
-            verify(globalResourceHeldRule).addResource(database);
-        }
+        ShardingSphereDatabase database = mockDatabase(mock(ShardingSphereResourceMetaData.class), new MockedDataSource(), mock(ResourceHeldRule.class));
+        DatabaseType databaseType = mock(DatabaseType.class);
+        when(ShardingSphereDatabase.create("foo_db", databaseType)).thenReturn(database);
+        Map<String, ShardingSphereDatabase> databases = new HashMap<>(Collections.singletonMap("foo_db", database));
+        ShardingSphereMetaData metaData = new ShardingSphereMetaData(
+                databases, new ShardingSphereRuleMetaData(Collections.singleton(globalResourceHeldRule)), new ConfigurationProperties(new Properties()));
+        metaData.addDatabase("foo_db", databaseType);
+        assertThat(metaData.getDatabases(), is(databases));
+        verify(globalResourceHeldRule).addResource(database);
     }
     
     @Test
diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilderTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilderTest.java
index a6a176ddb35..5e69c6927f3 100644
--- a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilderTest.java
+++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilderTest.java
@@ -20,16 +20,17 @@ package org.apache.shardingsphere.infra.metadata.database.schema.builder;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.DefaultDatabase;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import org.apache.shardingsphere.infra.metadata.database.schema.fixture.rule.TableContainedFixtureRule;
 import org.apache.shardingsphere.infra.metadata.database.schema.loader.metadata.SchemaMetaDataLoaderEngine;
 import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.SchemaMetaData;
 import org.apache.shardingsphere.infra.metadata.database.schema.loader.model.TableMetaData;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.MockedStatic;
+import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
+import org.apache.shardingsphere.test.mock.MockResourceAutoReleaseExtension;
+import org.apache.shardingsphere.test.mock.StaticMockSettings;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 
 import javax.sql.DataSource;
 import java.sql.SQLException;
@@ -42,49 +43,43 @@ import java.util.stream.Collectors;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.when;
 
+@ExtendWith(MockResourceAutoReleaseExtension.class)
+@StaticMockSettings(SchemaMetaDataLoaderEngine.class)
 public final class GenericSchemaBuilderTest {
     
     private GenericSchemaBuilderMaterial material;
     
-    private MockedStatic<SchemaMetaDataLoaderEngine> engine;
-    
-    @Before
+    @BeforeEach
     public void setUp() {
         DatabaseType databaseType = mock(DatabaseType.class);
         material = new GenericSchemaBuilderMaterial(databaseType, Collections.emptyMap(), Collections.singletonMap(DefaultDatabase.LOGIC_NAME, mock(DataSource.class)),
                 Collections.singleton(new TableContainedFixtureRule()), new ConfigurationProperties(new Properties()), DefaultDatabase.LOGIC_NAME);
-        engine = mockStatic(SchemaMetaDataLoaderEngine.class);
-    }
-    
-    @After
-    public void cleanUp() {
-        engine.close();
     }
     
     @Test
     public void assertLoadWithExistedTableName() throws SQLException {
         Collection<String> tableNames = Collections.singletonList("data_node_routed_table1");
-        engine.when(() -> SchemaMetaDataLoaderEngine.load(any())).thenReturn(createSchemaMetaDataMap(tableNames, material));
+        when(SchemaMetaDataLoaderEngine.load(any())).thenReturn(createSchemaMetaDataMap(tableNames, material));
         assertFalse(GenericSchemaBuilder.build(tableNames, material).get(DefaultDatabase.LOGIC_NAME).getTables().isEmpty());
     }
     
     @Test
     public void assertLoadWithNotExistedTableName() throws SQLException {
         Collection<String> tableNames = Collections.singletonList("invalid_table");
-        engine.when(() -> SchemaMetaDataLoaderEngine.load(any())).thenReturn(createSchemaMetaDataMap(tableNames, material));
+        when(SchemaMetaDataLoaderEngine.load(any())).thenReturn(createSchemaMetaDataMap(tableNames, material));
         assertTrue(GenericSchemaBuilder.build(tableNames, material).get(DefaultDatabase.LOGIC_NAME).getTables().isEmpty());
     }
     
     @Test
     public void assertLoadAllTables() throws SQLException {
         Collection<String> tableNames = Arrays.asList("data_node_routed_table1", "data_node_routed_table2");
-        engine.when(() -> SchemaMetaDataLoaderEngine.load(any())).thenReturn(createSchemaMetaDataMap(tableNames, material));
+        when(SchemaMetaDataLoaderEngine.load(any())).thenReturn(createSchemaMetaDataMap(tableNames, material));
         Map<String, ShardingSphereSchema> actual = GenericSchemaBuilder.build(tableNames, material);
         assertThat(actual.size(), is(1));
         assertTables(new ShardingSphereSchema(actual.values().iterator().next().getTables(), Collections.emptyMap()).getTables());
diff --git a/infra/executor/pom.xml b/infra/executor/pom.xml
index c9893c548c3..21d65e26785 100644
--- a/infra/executor/pom.xml
+++ b/infra/executor/pom.xml
@@ -45,6 +45,12 @@
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-test-util</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
         
         <dependency>
             <groupId>com.alibaba</groupId>
diff --git a/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/process/ExecuteProcessReporterTest.java b/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/process/ExecuteProcessReporterTest.java
index 9f4264fb3f5..1d0c643ba63 100644
--- a/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/process/ExecuteProcessReporterTest.java
+++ b/infra/executor/src/test/java/org/apache/shardingsphere/infra/executor/sql/process/ExecuteProcessReporterTest.java
@@ -24,43 +24,38 @@ import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
 import org.apache.shardingsphere.infra.executor.sql.execute.engine.SQLExecutionUnit;
 import org.apache.shardingsphere.infra.executor.sql.process.model.ExecuteProcessContext;
 import org.apache.shardingsphere.infra.executor.sql.process.model.ExecuteProcessStatusEnum;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.MockedStatic;
+import org.apache.shardingsphere.test.mock.MockResourceAutoReleaseExtension;
+import org.apache.shardingsphere.test.mock.StaticMockSettings;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
 
-import java.util.Collections;
 import java.util.UUID;
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockStatic;
-import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+@ExtendWith(MockResourceAutoReleaseExtension.class)
+@StaticMockSettings(ShowProcessListManager.class)
 public final class ExecuteProcessReporterTest {
     
-    private MockedStatic<ShowProcessListManager> mockedStatic;
-    
+    @Mock
     private ShowProcessListManager showProcessListManager;
     
-    private final ExecuteProcessReporter reporter = new ExecuteProcessReporter();
-    
-    @Before
+    @BeforeEach
     public void setUp() {
-        mockedStatic = mockStatic(ShowProcessListManager.class);
-        showProcessListManager = mock(ShowProcessListManager.class);
-        mockedStatic.when(ShowProcessListManager::getInstance).thenReturn(showProcessListManager);
+        when(ShowProcessListManager.getInstance()).thenReturn(showProcessListManager);
     }
     
     @Test
     public void assertReport() {
-        QueryContext queryContext = new QueryContext(null, null, null);
         ExecutionGroupContext<? extends SQLExecutionUnit> executionGroupContext = mockExecutionGroupContext();
-        reporter.report(queryContext, executionGroupContext, ExecuteProcessStatusEnum.START);
-        verify(showProcessListManager, times(1)).putProcessContext(eq(executionGroupContext.getReportContext().getExecutionID()), any());
+        new ExecuteProcessReporter().report(new QueryContext(null, null, null), executionGroupContext, ExecuteProcessStatusEnum.START);
+        verify(showProcessListManager).putProcessContext(eq(executionGroupContext.getReportContext().getExecutionID()), any());
     }
     
     @SuppressWarnings("unchecked")
@@ -75,25 +70,16 @@ public final class ExecuteProcessReporterTest {
     @Test
     public void assertReportUnit() {
         SQLExecutionUnit sqlExecutionUnit = mock(SQLExecutionUnit.class);
-        ExecutionUnit executionUnit = mock(ExecutionUnit.class);
-        when(sqlExecutionUnit.getExecutionUnit()).thenReturn(executionUnit);
-        ExecuteProcessContext executeProcessContext = mock(ExecuteProcessContext.class);
-        when(executeProcessContext.getProcessUnits()).thenReturn(Collections.emptyMap());
-        when(showProcessListManager.getProcessContext("foo_id")).thenReturn(executeProcessContext);
-        reporter.report("foo_id", sqlExecutionUnit, ExecuteProcessStatusEnum.DONE);
-        verify(showProcessListManager, times(1)).getProcessContext(eq("foo_id"));
+        when(sqlExecutionUnit.getExecutionUnit()).thenReturn(mock(ExecutionUnit.class));
+        when(showProcessListManager.getProcessContext("foo_id")).thenReturn(mock(ExecuteProcessContext.class));
+        new ExecuteProcessReporter().report("foo_id", sqlExecutionUnit, ExecuteProcessStatusEnum.DONE);
+        verify(showProcessListManager).getProcessContext("foo_id");
     }
     
     @Test
     public void assertReportClean() {
-        ExecuteProcessContext executeProcessContext = mock(ExecuteProcessContext.class);
-        when(showProcessListManager.getProcessContext("foo_id")).thenReturn(executeProcessContext);
-        reporter.reportClean("foo_id");
-        verify(showProcessListManager, times(1)).removeProcessStatement(eq("foo_id"));
-    }
-    
-    @After
-    public void tearDown() {
-        mockedStatic.close();
+        when(showProcessListManager.getProcessContext("foo_id")).thenReturn(mock(ExecuteProcessContext.class));
+        new ExecuteProcessReporter().reportClean("foo_id");
+        verify(showProcessListManager).removeProcessStatement("foo_id");
     }
 }