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