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 6268b91dd08 Fix mockStatic leak in unit tests (#19077)
6268b91dd08 is described below

commit 6268b91dd08b8d8a1ca2e03368c3a119cf7b85ce
Author: 吴伟杰 <[email protected]>
AuthorDate: Tue Jul 12 23:24:06 2022 +0800

    Fix mockStatic leak in unit tests (#19077)
    
    * Fix mockStatic leak in ShardingSphereMetaDataTest
    
    * Fix mockStatic leak in EncryptAssignmentTokenGeneratorTest
    
    * Fix mockStatic leak in CreateReadwriteSplittingRuleStatementUpdaterTest
---
 .../token/EncryptAssignmentTokenGeneratorTest.java | 14 ++++++++-----
 ...ReadwriteSplittingRuleStatementUpdaterTest.java | 23 +++++++++++-----------
 .../infra/metadata/ShardingSphereMetaDataTest.java | 19 +++++++++---------
 3 files changed, 31 insertions(+), 25 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptAssignmentTokenGeneratorTest.java
 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptAssignmentTokenGeneratorTest.java
index 3ac2cb6c4e7..b330bc27bbc 100644
--- 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptAssignmentTokenGeneratorTest.java
+++ 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/EncryptAssignmentTokenGeneratorTest.java
@@ -85,7 +85,10 @@ public final class EncryptAssignmentTokenGeneratorTest {
     
     @Test
     public void assertIsGenerateSQLTokenUpdateSQLFail() {
-        assertTrue(tokenGenerator.isGenerateSQLToken(insertStatement));
+        try (MockedStatic<InsertStatementHandler> 
insertStatementHandlerMockedStatic = mockStatic(InsertStatementHandler.class)) {
+            insertStatementHandlerMockedStatic.when(() -> 
InsertStatementHandler.getSetAssignmentSegment(any())).thenReturn(Optional.of(setAssignmentSegment));
+            assertTrue(tokenGenerator.isGenerateSQLToken(insertStatement));
+        }
     }
     
     @Test
@@ -108,9 +111,10 @@ public final class EncryptAssignmentTokenGeneratorTest {
     
     @Test
     public void assertGenerateSQLTokenWithInsertLiteralExpressionSegment() {
-        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));
+        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));
+        }
     }
 }
diff --git 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdaterTest.java
 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsph
 [...]
index 79be49609e9..9810c698914 100644
--- 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdaterTest.java
+++ 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdaterTest.java
@@ -114,17 +114,18 @@ 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));
-        MockedStatic<ReplicaLoadBalanceAlgorithmFactory> mockedFactory = 
mockStatic(ReplicaLoadBalanceAlgorithmFactory.class);
-        mockedFactory.when(() -> 
ReplicaLoadBalanceAlgorithmFactory.contains("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());
-        
ShardingSphereServiceLoader.register(ReadQueryLoadBalanceAlgorithm.class);
-        CreateReadwriteSplittingRuleStatement statement = new 
CreateReadwriteSplittingRuleStatement(Arrays.asList(dynamicSegment, 
staticSegment));
-        updater.checkSQLStatement(database, statement, null);
-        ReadwriteSplittingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(statement);
-        ReadwriteSplittingRuleConfiguration currentRuleConfig = new 
ReadwriteSplittingRuleConfiguration(new ArrayList<>(), new HashMap<>());
-        updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
-        assertThat(currentRuleConfig.getDataSources().size(), is(2));
+        try (MockedStatic<ReplicaLoadBalanceAlgorithmFactory> mockedFactory = 
mockStatic(ReplicaLoadBalanceAlgorithmFactory.class)) {
+            mockedFactory.when(() -> 
ReplicaLoadBalanceAlgorithmFactory.contains("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());
+            
ShardingSphereServiceLoader.register(ReadQueryLoadBalanceAlgorithm.class);
+            CreateReadwriteSplittingRuleStatement statement = new 
CreateReadwriteSplittingRuleStatement(Arrays.asList(dynamicSegment, 
staticSegment));
+            updater.checkSQLStatement(database, statement, null);
+            ReadwriteSplittingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(statement);
+            ReadwriteSplittingRuleConfiguration currentRuleConfig = new 
ReadwriteSplittingRuleConfiguration(new ArrayList<>(), new HashMap<>());
+            updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
+            assertThat(currentRuleConfig.getDataSources().size(), is(2));
+        }
     }
     
     private CreateReadwriteSplittingRuleStatement createSQLStatement(final 
String loadBalancerName) {
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
index 975ff593351..9443057a971 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
@@ -51,15 +51,16 @@ public final class ShardingSphereMetaDataTest {
         ResourceHeldRule<?> databaseResourceHeldRule = 
mock(ResourceHeldRule.class);
         ResourceHeldRule<?> globalResourceHeldRule = 
mock(ResourceHeldRule.class);
         ShardingSphereDatabase database = mockDatabase(resource, dataSource, 
databaseResourceHeldRule);
-        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);
+        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);
+        }
     }
     
     @Test

Reply via email to