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

duanzhengqiang 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 b043275499c Use MockResourceAutoReleaseExtension on feature modules 
(#24370)
b043275499c is described below

commit b043275499ce08ae0da55e6144f8aa67f6e3140e
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Feb 28 12:31:21 2023 +0800

    Use MockResourceAutoReleaseExtension on feature modules (#24370)
    
    * Use junit 5 on mysql protocol module
    
    * Add MockResourceAutoReleaseExtension
    
    * Add MockResourceAutoReleaseExtension
    
    * Add MockResourceAutoReleaseExtension
    
    * Use MockResourceAutoReleaseExtension on agent modules
    
    * Use MockResourceAutoReleaseExtension on feature modules
---
 .../EncryptAssignmentTokenGeneratorTest.java       | 67 +++++++++----------
 ...ReadwriteSplittingRuleStatementUpdaterTest.java | 76 +++++++++++-----------
 2 files changed, 73 insertions(+), 70 deletions(-)

diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGeneratorTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGeneratorTest.java
index 5e6469ff407..f2edf82fa11 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGeneratorTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGeneratorTest.java
@@ -26,55 +26,60 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.Se
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.LiteralExpressionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.ParameterMarkerExpressionSegment;
 import 
org.apache.shardingsphere.sql.parser.sql.dialect.handler.dml.InsertStatementHandler;
-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.Answers;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoSettings;
+import org.mockito.quality.Strictness;
 
 import java.util.Collections;
 import java.util.Optional;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockStatic;
 import static org.mockito.Mockito.when;
 
+@ExtendWith(MockResourceAutoReleaseExtension.class)
+@StaticMockSettings(InsertStatementHandler.class)
+@MockitoSettings(strictness = Strictness.LENIENT)
 public final class EncryptAssignmentTokenGeneratorTest {
     
     private final EncryptAssignmentTokenGenerator tokenGenerator = new 
EncryptAssignmentTokenGenerator();
     
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private UpdateStatementContext updateStatement;
     
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private InsertStatementContext insertStatement;
     
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private AssignmentSegment assignmentSegment;
     
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private SetAssignmentSegment setAssignmentSegment;
     
-    private LiteralExpressionSegment literalExpression;
-    
-    private ParameterMarkerExpressionSegment parameterMarkerExpression;
-    
-    @Before
+    @BeforeEach
     public void setup() {
-        updateStatement = mock(UpdateStatementContext.class, 
RETURNS_DEEP_STUBS);
-        insertStatement = mock(InsertStatementContext.class, 
RETURNS_DEEP_STUBS);
-        assignmentSegment = mock(AssignmentSegment.class, RETURNS_DEEP_STUBS);
-        setAssignmentSegment = mock(SetAssignmentSegment.class, 
RETURNS_DEEP_STUBS);
-        literalExpression = mock(LiteralExpressionSegment.class, 
RETURNS_DEEP_STUBS);
-        parameterMarkerExpression = 
mock(ParameterMarkerExpressionSegment.class, RETURNS_DEEP_STUBS);
-        EncryptRule encryptRule = mock(EncryptRule.class, RETURNS_DEEP_STUBS);
-        tokenGenerator.setEncryptRule(encryptRule);
+        tokenGenerator.setEncryptRule(mockEncryptRule());
         
when(updateStatement.getAllTables().iterator().next().getTableName().getIdentifier().getValue()).thenReturn("table");
-        
when(updateStatement.getSqlStatement().getSetAssignment().getAssignments()).thenReturn(Collections.singletonList(assignmentSegment));
+        
when(updateStatement.getSqlStatement().getSetAssignment().getAssignments()).thenReturn(Collections.singleton(assignmentSegment));
         
when(assignmentSegment.getColumns().get(0).getIdentifier().getValue()).thenReturn("columns");
-        when(encryptRule.findEncryptor(eq("table"), 
eq("columns"))).thenReturn(Optional.of(mock(StandardEncryptAlgorithm.class)));
         
when(insertStatement.getAllTables().iterator().next().getTableName().getIdentifier().getValue()).thenReturn("table");
-        
when(setAssignmentSegment.getAssignments()).thenReturn(Collections.singletonList(assignmentSegment));
+        
when(setAssignmentSegment.getAssignments()).thenReturn(Collections.singleton(assignmentSegment));
+    }
+    
+    private EncryptRule mockEncryptRule() {
+        EncryptRule result = mock(EncryptRule.class, RETURNS_DEEP_STUBS);
+        when(result.findEncryptor("table", 
"columns")).thenReturn(Optional.of(mock(StandardEncryptAlgorithm.class)));
+        return result;
     }
     
     @Test
@@ -84,21 +89,19 @@ public final class EncryptAssignmentTokenGeneratorTest {
     
     @Test
     public void assertIsGenerateSQLTokenUpdateSQLFail() {
-        try (MockedStatic<InsertStatementHandler> 
insertStatementHandlerMockedStatic = mockStatic(InsertStatementHandler.class)) {
-            insertStatementHandlerMockedStatic.when(() -> 
InsertStatementHandler.getSetAssignmentSegment(any())).thenReturn(Optional.of(setAssignmentSegment));
-            assertTrue(tokenGenerator.isGenerateSQLToken(insertStatement));
-        }
+        
when(InsertStatementHandler.getSetAssignmentSegment(any())).thenReturn(Optional.of(setAssignmentSegment));
+        assertTrue(tokenGenerator.isGenerateSQLToken(insertStatement));
     }
     
     @Test
     public void 
assertGenerateSQLTokenWithUpdateParameterMarkerExpressionSegment() {
-        
when(assignmentSegment.getValue()).thenReturn(parameterMarkerExpression);
+        
when(assignmentSegment.getValue()).thenReturn(mock(ParameterMarkerExpressionSegment.class));
         assertThat(tokenGenerator.generateSQLTokens(updateStatement).size(), 
is(1));
     }
     
     @Test
     public void assertGenerateSQLTokenWithUpdateLiteralExpressionSegment() {
-        when(assignmentSegment.getValue()).thenReturn(literalExpression);
+        
when(assignmentSegment.getValue()).thenReturn(mock(LiteralExpressionSegment.class));
         assertThat(tokenGenerator.generateSQLTokens(updateStatement).size(), 
is(1));
     }
     
@@ -110,10 +113,8 @@ public final class EncryptAssignmentTokenGeneratorTest {
     
     @Test
     public void assertGenerateSQLTokenWithInsertLiteralExpressionSegment() {
-        try (MockedStatic<InsertStatementHandler> 
insertStatementHandlerMockedStatic = mockStatic(InsertStatementHandler.class)) {
-            insertStatementHandlerMockedStatic.when(() -> 
InsertStatementHandler.getSetAssignmentSegment(any())).thenReturn(Optional.of(setAssignmentSegment));
-            when(assignmentSegment.getValue()).thenReturn(literalExpression);
-            
assertThat(tokenGenerator.generateSQLTokens(insertStatement).size(), is(1));
-        }
+        
when(InsertStatementHandler.getSetAssignmentSegment(any())).thenReturn(Optional.of(setAssignmentSegment));
+        
when(assignmentSegment.getValue()).thenReturn(mock(LiteralExpressionSegment.class));
+        assertThat(tokenGenerator.generateSQLTokens(insertStatement).size(), 
is(1));
     }
 }
diff --git 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdaterTest.java
 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdaterTest.java
index 59aa8f998ac..27a22312079 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdaterTest.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdaterTest.java
@@ -32,13 +32,13 @@ import 
org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwrite
 import 
org.apache.shardingsphere.readwritesplitting.distsql.parser.segment.ReadwriteSplittingRuleSegment;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.CreateReadwriteSplittingRuleStatement;
 import 
org.apache.shardingsphere.readwritesplitting.spi.ReadQueryLoadBalanceAlgorithm;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+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.Answers;
 import org.mockito.Mock;
-import org.mockito.MockedStatic;
-import org.mockito.junit.MockitoJUnitRunner;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -50,12 +50,13 @@ import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockStatic;
 import static org.mockito.Mockito.when;
 
-@RunWith(MockitoJUnitRunner.class)
+@ExtendWith(MockResourceAutoReleaseExtension.class)
+@StaticMockSettings(TypedSPILoader.class)
 public final class CreateReadwriteSplittingRuleStatementUpdaterTest {
     
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
@@ -66,62 +67,65 @@ public final class 
CreateReadwriteSplittingRuleStatementUpdaterTest {
     
     private final CreateReadwriteSplittingRuleStatementUpdater updater = new 
CreateReadwriteSplittingRuleStatementUpdater();
     
-    @Before
+    @BeforeEach
     public void before() {
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
     }
     
-    @Test(expected = DuplicateRuleException.class)
+    @Test
     public void assertCheckSQLStatementWithDuplicateRuleNames() {
         
when(resourceMetaData.getDataSources()).thenReturn(Collections.emptyMap());
-        updater.checkSQLStatement(database, createSQLStatement("TEST"), 
createCurrentRuleConfiguration());
+        assertThrows(DuplicateRuleException.class, () -> 
updater.checkSQLStatement(database, createSQLStatement("TEST"), 
createCurrentRuleConfiguration()));
     }
     
-    @Test(expected = InvalidRuleConfigurationException.class)
+    @Test
     public void assertCheckSQLStatementWithDuplicateResource() {
         
when(resourceMetaData.getDataSources()).thenReturn(Collections.singletonMap("write_ds",
 null));
-        updater.checkSQLStatement(database, createSQLStatement("write_ds", 
"TEST"), createCurrentRuleConfiguration());
+        assertThrows(InvalidRuleConfigurationException.class, () -> 
updater.checkSQLStatement(database, createSQLStatement("write_ds", "TEST"), 
createCurrentRuleConfiguration()));
     }
     
-    @Test(expected = MissingRequiredStorageUnitsException.class)
+    @Test
     public void assertCheckSQLStatementWithoutExistedResources() {
         
when(resourceMetaData.getNotExistedDataSources(any())).thenReturn(Arrays.asList("read_ds_0",
 "read_ds_1"));
-        updater.checkSQLStatement(database, createSQLStatement("TEST"), null);
+        assertThrows(MissingRequiredStorageUnitsException.class, () -> 
updater.checkSQLStatement(database, createSQLStatement("TEST"), null));
     }
     
-    @Test(expected = MissingRequiredStorageUnitsException.class)
+    @Test
     public void assertCheckSQLStatementWithoutExistedAutoAwareResources() {
         ExportableRule exportableRule = mock(ExportableRule.class);
         
when(exportableRule.getExportData()).thenReturn(Collections.singletonMap(ExportableConstants.EXPORT_DB_DISCOVERY_PRIMARY_DATA_SOURCES,
 Collections.singletonMap("ms_group", "ds_0")));
         
when(database.getRuleMetaData().findRules(ExportableRule.class)).thenReturn(Collections.singleton(exportableRule));
         ReadwriteSplittingRuleSegment ruleSegment = new 
ReadwriteSplittingRuleSegment("dynamic_rule", "ha_group", "false", "TEST", new 
Properties());
-        updater.checkSQLStatement(database, createSQLStatement(false, 
ruleSegment), null);
+        assertThrows(MissingRequiredStorageUnitsException.class, () -> 
updater.checkSQLStatement(database, createSQLStatement(false, ruleSegment), 
null));
     }
     
-    @Test(expected = InvalidAlgorithmConfigurationException.class)
+    @Test
     public void assertCheckSQLStatementWithoutToBeCreatedLoadBalancers() {
         
when(database.getRuleMetaData().findRules(any())).thenReturn(Collections.emptyList());
-        updater.checkSQLStatement(database, 
createSQLStatement("INVALID_TYPE"), null);
+        assertThrows(InvalidAlgorithmConfigurationException.class, () -> 
updater.checkSQLStatement(database, createSQLStatement("INVALID_TYPE"), null));
     }
     
-    @Test(expected = InvalidRuleConfigurationException.class)
+    @Test
     public void 
assertCheckSQLStatementWithDuplicateWriteResourceNamesInStatement() {
-        updater.checkSQLStatement(database, 
createSQLStatementWithDuplicateWriteResourceNames("write_ds_0", "write_ds_1", 
"TEST"), null);
+        assertThrows(InvalidRuleConfigurationException.class,
+                () -> updater.checkSQLStatement(database, 
createSQLStatementWithDuplicateWriteResourceNames("write_ds_0", "write_ds_1", 
"TEST"), null));
     }
     
-    @Test(expected = InvalidRuleConfigurationException.class)
+    @Test
     public void assertCheckSQLStatementWithDuplicateWriteResourceNames() {
-        updater.checkSQLStatement(database, 
createSQLStatement("readwrite_ds_1", "ds_write", Arrays.asList("read_ds_0", 
"read_ds_1"), "TEST"), createCurrentRuleConfiguration());
+        assertThrows(InvalidRuleConfigurationException.class,
+                () -> updater.checkSQLStatement(database, 
createSQLStatement("readwrite_ds_1", "ds_write", Arrays.asList("read_ds_0", 
"read_ds_1"), "TEST"), createCurrentRuleConfiguration()));
     }
     
-    @Test(expected = InvalidRuleConfigurationException.class)
+    @Test
     public void 
assertCheckSQLStatementWithDuplicateReadResourceNamesInStatement() {
-        updater.checkSQLStatement(database, 
createSQLStatementWithDuplicateReadResourceNames("write_ds_0", "write_ds_1", 
"TEST"), null);
+        assertThrows(InvalidRuleConfigurationException.class, () -> 
updater.checkSQLStatement(database, 
createSQLStatementWithDuplicateReadResourceNames("write_ds_0", "write_ds_1", 
"TEST"), null));
     }
     
-    @Test(expected = InvalidRuleConfigurationException.class)
+    @Test
     public void assertCheckSQLStatementWithDuplicateReadResourceNames() {
-        updater.checkSQLStatement(database, 
createSQLStatement("readwrite_ds_1", "write_ds_1", Arrays.asList("read_ds_0", 
"read_ds_1"), "TEST"), createCurrentRuleConfiguration());
+        assertThrows(InvalidRuleConfigurationException.class,
+                () -> updater.checkSQLStatement(database, 
createSQLStatement("readwrite_ds_1", "write_ds_1", Arrays.asList("read_ds_0", 
"read_ds_1"), "TEST"), createCurrentRuleConfiguration()));
     }
     
     @Test
@@ -135,17 +139,15 @@ public final class 
CreateReadwriteSplittingRuleStatementUpdaterTest {
         ExportableRule exportableRule = mock(ExportableRule.class);
         
when(exportableRule.getExportData()).thenReturn(Collections.singletonMap(ExportableConstants.EXPORT_DB_DISCOVERY_PRIMARY_DATA_SOURCES,
 Collections.singletonMap("ms_group", "ds_0")));
         
when(database.getRuleMetaData().findRules(ExportableRule.class)).thenReturn(Collections.singleton(exportableRule));
-        try (MockedStatic<TypedSPILoader> typedSPILoader = 
mockStatic(TypedSPILoader.class)) {
-            typedSPILoader.when(() -> 
TypedSPILoader.contains(ReadQueryLoadBalanceAlgorithm.class, 
"TEST")).thenReturn(true);
-            ReadwriteSplittingRuleSegment dynamicSegment = new 
ReadwriteSplittingRuleSegment("dynamic_rule", "ms_group", "false", "TEST", new 
Properties());
-            ReadwriteSplittingRuleSegment staticSegment = new 
ReadwriteSplittingRuleSegment("static_rule", "write_ds_0", 
Arrays.asList("read_ds_0", "read_ds_1"), "TEST", new Properties());
-            CreateReadwriteSplittingRuleStatement statement = 
createSQLStatement(false, dynamicSegment, staticSegment);
-            updater.checkSQLStatement(database, statement, null);
-            ReadwriteSplittingRuleConfiguration currentRuleConfig = new 
ReadwriteSplittingRuleConfiguration(new ArrayList<>(), new HashMap<>());
-            ReadwriteSplittingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, statement);
-            updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
-            assertThat(currentRuleConfig.getDataSources().size(), is(2));
-        }
+        when(TypedSPILoader.contains(ReadQueryLoadBalanceAlgorithm.class, 
"TEST")).thenReturn(true);
+        ReadwriteSplittingRuleSegment dynamicSegment = new 
ReadwriteSplittingRuleSegment("dynamic_rule", "ms_group", "false", "TEST", new 
Properties());
+        ReadwriteSplittingRuleSegment staticSegment = new 
ReadwriteSplittingRuleSegment("static_rule", "write_ds_0", 
Arrays.asList("read_ds_0", "read_ds_1"), "TEST", new Properties());
+        CreateReadwriteSplittingRuleStatement statement = 
createSQLStatement(false, dynamicSegment, staticSegment);
+        updater.checkSQLStatement(database, statement, null);
+        ReadwriteSplittingRuleConfiguration currentRuleConfig = new 
ReadwriteSplittingRuleConfiguration(new ArrayList<>(), new HashMap<>());
+        ReadwriteSplittingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, statement);
+        updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
+        assertThat(currentRuleConfig.getDataSources().size(), is(2));
     }
     
     private CreateReadwriteSplittingRuleStatement createSQLStatement(final 
String loadBalancerName) {

Reply via email to