You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by su...@apache.org on 2022/12/22 14:23:58 UTC
[shardingsphere] branch master updated: Use InstanceField and FieldReader to instead of reflection in test cases (#23041)
This is an automated email from the ASF dual-hosted git repository.
sunnianjun 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 45248a86823 Use InstanceField and FieldReader to instead of reflection in test cases (#23041)
45248a86823 is described below
commit 45248a86823e536ebb6fb8c1519a21d174bcfe5f
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Thu Dec 22 22:23:51 2022 +0800
Use InstanceField and FieldReader to instead of reflection in test cases (#23041)
* Refactor BatchPreparedStatementExecutorTest
* Refactor ShardingSphereConnectionTest
* Refactor ShardingSphereDataSourceTest
* Refactor PostgreSQLComParseExecutorTest
* Refactor OpenGaussFrontendEngineTest
* Refactor SQLParserEngineTest
* Refactor OpenGaussAdminExecutorFactoryTest
* Refactor SchemaMetaDataRegistrySubscriberTest
* Refactor PostgreSQLBatchedStatementsExecutorTest
* Refactor ParseTreeCacheLoaderTest
* Refactor RunnerParameters
* Refactor PostgreSQLComDescribeExecutorTest
* Refactor BackendConnectionTest
* Refactor PostgreSQLComDescribeExecutorTest
* Refactor PostgreSQLAuthenticationEngineTest
* Refactor MockConnectionUtil
* Refactor PostgreSQLFrontendEngineTest
* Refactor OKProxyStateTest
* Refactor OpenGaussErrorPacketFactoryTest
* Refactor OpenGaussAuthenticationEngineTest
* Refactor MySQLAuthenticationEngineTest
* Refactor MySQLAuthenticationEngineTest
* Refactor MySQLAuthenticationEngineTest
* Refactor BackendTransactionManagerTest
* Refactor ShowProcessListExecutorTest
* Refactor UnicastDatabaseBackendHandlerTest
* Refactor AlterStorageUnitBackendHandlerTest
* Refactor RegisterStorageUnitBackendHandlerTest
* Refactor TransactionBackendHandlerFactoryTest
* Refactor MySQLFrontendEngineTest
---
.../connection/ShardingSphereConnectionTest.java | 8 ++--
.../datasource/ShardingSphereDataSourceTest.java | 10 ++---
.../SchemaMetaDataRegistrySubscriberTest.java | 10 ++---
.../cluster/zookeeper/ZookeeperRepositoryTest.java | 24 ++++------
.../jdbc/DatabaseCommunicationEngineTest.java | 7 ++-
.../jdbc/connection/BackendConnectionTest.java | 51 ++++++++--------------
.../jdbc/connection/MockConnectionUtil.java | 8 ++--
.../transaction/BackendTransactionManagerTest.java | 6 +--
.../executor/ShowProcessListExecutorTest.java | 8 ++--
.../OpenGaussAdminExecutorFactoryTest.java | 6 +--
.../impl/UnicastDatabaseBackendHandlerTest.java | 12 +++--
.../AlterStorageUnitBackendHandlerTest.java | 6 +--
.../RegisterStorageUnitBackendHandlerTest.java | 6 +--
.../TransactionBackendHandlerFactoryTest.java | 21 ++++-----
.../frontend/state/impl/OKProxyStateTest.java | 9 ++--
.../frontend/mysql/MySQLFrontendEngineTest.java | 7 +--
.../MySQLAuthenticationEngineTest.java | 35 ++++++---------
.../opengauss/OpenGaussFrontendEngineTest.java | 9 ++--
.../OpenGaussAuthenticationEngineTest.java | 28 +++++-------
.../err/OpenGaussErrorPacketFactoryTest.java | 8 ++--
.../postgresql/PostgreSQLFrontendEngineTest.java | 6 +--
.../PostgreSQLAuthenticationEngineTest.java | 16 +++----
.../PostgreSQLCommandExecutorFactoryTest.java | 10 ++---
.../PostgreSQLBatchedStatementsExecutorTest.java | 7 ++-
.../PostgreSQLComDescribeExecutorTest.java | 14 +++---
.../parse/PostgreSQLComParseExecutorTest.java | 8 ++--
.../sql/parser/api/SQLParserEngineTest.java | 10 ++---
.../database/cache/ParseTreeCacheLoaderTest.java | 9 ++--
.../framework/runner/param/RunnerParameters.java | 6 +--
29 files changed, 133 insertions(+), 232 deletions(-)
diff --git a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
index 0ca08fd98a5..e9fa88b97de 100644
--- a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
+++ b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/connection/ShardingSphereConnectionTest.java
@@ -32,17 +32,17 @@ import org.apache.shardingsphere.transaction.rule.TransactionRule;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.internal.util.reflection.InstanceField;
import javax.sql.DataSource;
-import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collections;
import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
-import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
@@ -165,11 +165,9 @@ public final class ShardingSphereConnectionTest {
@SneakyThrows(ReflectiveOperationException.class)
private ConnectionManager mockConnectionManager(final ConnectionTransaction connectionTransaction) {
- Field field = connection.getClass().getDeclaredField("connectionManager");
- field.setAccessible(true);
ConnectionManager result = mock(ConnectionManager.class);
when(result.getConnectionTransaction()).thenReturn(connectionTransaction);
- field.set(connection, result);
+ new InstanceField(connection.getClass().getDeclaredField("connectionManager"), connection).set(result);
return result;
}
diff --git a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
index 9010abc004a..7c649d01655 100644
--- a/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
+++ b/jdbc/core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSourceTest.java
@@ -32,19 +32,19 @@ import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource;
import org.apache.shardingsphere.transaction.core.TransactionTypeHolder;
import org.junit.After;
import org.junit.Test;
+import org.mockito.internal.util.reflection.FieldReader;
import javax.sql.DataSource;
-import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.SQLException;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.Properties;
-import java.util.Arrays;
import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertNotNull;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
@@ -140,9 +140,7 @@ public final class ShardingSphereDataSourceTest {
@SneakyThrows(ReflectiveOperationException.class)
private ContextManager getContextManager(final ShardingSphereDataSource dataSource) {
- Field field = ShardingSphereDataSource.class.getDeclaredField("contextManager");
- field.setAccessible(true);
- return (ContextManager) field.get(dataSource);
+ return (ContextManager) new FieldReader(dataSource, ShardingSphereDataSource.class.getDeclaredField("contextManager")).read();
}
private DataSource createHikariDataSource() {
diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/subscriber/SchemaMetaDataRegistrySubscriberTest.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/subscriber/SchemaMetaDataRegistrySubscriberTest.java
index 364221be5de..c0f04489718 100644
--- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/subscriber/SchemaMetaDataRegistrySubscriberTest.java
+++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/metadata/subscriber/SchemaMetaDataRegistrySubscriberTest.java
@@ -17,13 +17,13 @@
package org.apache.shardingsphere.mode.manager.cluster.coordinator.registry.metadata.subscriber;
-import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
import org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereTable;
import org.apache.shardingsphere.infra.metadata.database.schema.event.AddSchemaEvent;
import org.apache.shardingsphere.infra.metadata.database.schema.event.AlterSchemaEvent;
import org.apache.shardingsphere.infra.metadata.database.schema.event.DropSchemaEvent;
import org.apache.shardingsphere.infra.metadata.database.schema.event.SchemaAlteredEvent;
+import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
import org.apache.shardingsphere.mode.metadata.persist.service.DatabaseMetaDataPersistService;
import org.apache.shardingsphere.mode.metadata.persist.service.schema.TableMetaDataPersistService;
import org.apache.shardingsphere.mode.metadata.persist.service.schema.ViewMetaDataPersistService;
@@ -32,14 +32,14 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
+import org.mockito.internal.util.reflection.InstanceField;
import org.mockito.junit.MockitoJUnitRunner;
-import java.lang.reflect.Field;
import java.util.Collections;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyString;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -54,9 +54,7 @@ public final class SchemaMetaDataRegistrySubscriberTest {
@Before
public void setUp() throws ReflectiveOperationException {
schemaMetaDataRegistrySubscriber = new SchemaMetaDataRegistrySubscriber(mock(ClusterPersistRepository.class), new EventBusContext());
- Field field = schemaMetaDataRegistrySubscriber.getClass().getDeclaredField("persistService");
- field.setAccessible(true);
- field.set(schemaMetaDataRegistrySubscriber, persistService);
+ new InstanceField(schemaMetaDataRegistrySubscriber.getClass().getDeclaredField("persistService"), schemaMetaDataRegistrySubscriber).set(persistService);
}
@Test
diff --git a/mode/type/cluster/repository/provider/zookeeper/src/test/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepositoryTest.java b/mode/type/cluster/repository/provider/zookeeper/src/test/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepositoryTest.java
index cc0248ed8c7..490c73babba 100644
--- a/mode/type/cluster/repository/provider/zookeeper/src/test/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepositoryTest.java
+++ b/mode/type/cluster/repository/provider/zookeeper/src/test/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepositoryTest.java
@@ -48,10 +48,10 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.AdditionalAnswers;
import org.mockito.Mock;
+import org.mockito.internal.util.reflection.InstanceField;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.stubbing.VoidAnswer1;
-import java.lang.reflect.Field;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Collections;
@@ -65,9 +65,9 @@ import java.util.concurrent.TimeUnit;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
@@ -124,11 +124,9 @@ public final class ZookeeperRepositoryTest {
mockDistributedLockHolder();
}
- @SneakyThrows({ReflectiveOperationException.class, InterruptedException.class})
+ @SneakyThrows({NoSuchFieldException.class, InterruptedException.class})
private void mockClient() {
- Field builderFiled = ZookeeperRepository.class.getDeclaredField("builder");
- builderFiled.setAccessible(true);
- builderFiled.set(REPOSITORY, builder);
+ new InstanceField(ZookeeperRepository.class.getDeclaredField("builder"), REPOSITORY).set(builder);
when(builder.connectString(anyString())).thenReturn(builder);
when(builder.retryPolicy(any(RetryPolicy.class))).thenReturn(builder);
when(builder.ensembleTracker(anyBoolean())).thenReturn(builder);
@@ -141,15 +139,11 @@ public final class ZookeeperRepositoryTest {
when(client.blockUntilConnected(anyInt(), eq(TimeUnit.MILLISECONDS))).thenReturn(true);
}
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private void mockDistributedLockHolder() {
- Field distributedLockHolderField = ZookeeperRepository.class.getDeclaredField("distributedLockHolder");
- distributedLockHolderField.setAccessible(true);
DistributedLockHolder distributedLockHolder = new DistributedLockHolder("Zookeeper", client, new ZookeeperProperties(new Properties()));
- Field locksFiled = DistributedLockHolder.class.getDeclaredField("locks");
- locksFiled.setAccessible(true);
- locksFiled.set(distributedLockHolder, Collections.singletonMap("/locks/glock", mock(ZookeeperDistributedLock.class)));
- distributedLockHolderField.set(REPOSITORY, distributedLockHolder);
+ new InstanceField(DistributedLockHolder.class.getDeclaredField("locks"), distributedLockHolder).set(Collections.singletonMap("/locks/glock", mock(ZookeeperDistributedLock.class)));
+ new InstanceField(ZookeeperRepository.class.getDeclaredField("distributedLockHolder"), REPOSITORY).set(distributedLockHolder);
}
private void mockBuilder() {
@@ -243,11 +237,9 @@ public final class ZookeeperRepositoryTest {
@SneakyThrows(ReflectiveOperationException.class)
private void mockCache(final String key) {
- Field cachesFiled = ZookeeperRepository.class.getDeclaredField("caches");
- cachesFiled.setAccessible(true);
Map<String, CuratorCache> caches = new HashMap<>();
caches.put(key, curatorCache);
- cachesFiled.set(REPOSITORY, caches);
+ new InstanceField(ZookeeperRepository.class.getDeclaredField("caches"), REPOSITORY).set(caches);
when(curatorCache.listenable()).thenReturn(listenable);
}
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/DatabaseCommunicationEngineTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/DatabaseCommunicationEngineTest.java
index 5d52751e51e..cd9e1768f92 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/DatabaseCommunicationEngineTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/DatabaseCommunicationEngineTest.java
@@ -65,6 +65,7 @@ import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.MockedStatic;
import org.mockito.internal.configuration.plugins.Plugins;
+import org.mockito.internal.util.reflection.FieldReader;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.plugins.MemberAccessor;
@@ -291,10 +292,8 @@ public final class DatabaseCommunicationEngineTest extends ProxyContextRestorer
}
@SuppressWarnings("unchecked")
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private <T> T getField(final DatabaseCommunicationEngine target, final String fieldName) {
- Field field = DatabaseCommunicationEngine.class.getDeclaredField(fieldName);
- field.setAccessible(true);
- return (T) field.get(target);
+ return (T) new FieldReader(target, DatabaseCommunicationEngine.class.getDeclaredField(fieldName)).read();
}
}
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnectionTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnectionTest.java
index 7ab6ffdf7cc..e51236b61f7 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnectionTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/BackendConnectionTest.java
@@ -47,6 +47,8 @@ import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.MockedStatic;
+import org.mockito.internal.util.reflection.FieldReader;
+import org.mockito.internal.util.reflection.InstanceField;
import org.mockito.junit.MockitoJUnitRunner;
import java.lang.reflect.Field;
@@ -131,19 +133,15 @@ public final class BackendConnectionTest extends ProxyContextRestorer {
return mock(ShardingSphereRuleMetaData.class);
}
- private void setBackendDataSource() throws ReflectiveOperationException {
- Field field = ProxyContext.getInstance().getClass().getDeclaredField("backendDataSource");
- field.setAccessible(true);
- field.set(ProxyContext.getInstance(), backendDataSource);
+ private void setBackendDataSource() throws NoSuchFieldException {
+ new InstanceField(ProxyContext.getInstance().getClass().getDeclaredField("backendDataSource"), ProxyContext.getInstance()).set(backendDataSource);
}
@After
public void clean() throws ReflectiveOperationException {
Field field = ProxyContext.getInstance().getClass().getDeclaredField("backendDataSource");
- field.setAccessible(true);
- Class<?> clazz = field.getType();
- Object datasource = clazz.getDeclaredConstructor().newInstance();
- field.set(ProxyContext.getInstance(), datasource);
+ Object datasource = field.getType().getDeclaredConstructor().newInstance();
+ new InstanceField(field, ProxyContext.getInstance()).set(datasource);
}
@Test
@@ -193,9 +191,7 @@ public final class BackendConnectionTest extends ProxyContextRestorer {
ConnectionPostProcessor connectionPostProcessor = mock(ConnectionPostProcessor.class);
Collection<ConnectionPostProcessor> connectionPostProcessors = new LinkedList<>();
connectionPostProcessors.add(connectionPostProcessor);
- Field field = BackendConnection.class.getDeclaredField("connectionPostProcessors");
- field.setAccessible(true);
- field.set(backendConnection, connectionPostProcessors);
+ new InstanceField(BackendConnection.class.getDeclaredField("connectionPostProcessors"), backendConnection).set(connectionPostProcessors);
}
@Test
@@ -227,10 +223,8 @@ public final class BackendConnectionTest extends ProxyContextRestorer {
@SuppressWarnings("unchecked")
@Test
- public void assertCloseConnectionsCorrectlyWhenNotForceRollback() throws NoSuchFieldException, IllegalAccessException, SQLException {
- Field field = BackendConnection.class.getDeclaredField("cachedConnections");
- field.setAccessible(true);
- Multimap<String, Connection> cachedConnections = (Multimap<String, Connection>) field.get(backendConnection);
+ public void assertCloseConnectionsCorrectlyWhenNotForceRollback() throws NoSuchFieldException, SQLException {
+ Multimap<String, Connection> cachedConnections = (Multimap<String, Connection>) new FieldReader(backendConnection, BackendConnection.class.getDeclaredField("cachedConnections")).read();
Connection connection = prepareCachedConnections();
cachedConnections.put("ignoredDataSourceName", connection);
backendConnection.closeConnections(false);
@@ -322,32 +316,27 @@ public final class BackendConnectionTest extends ProxyContextRestorer {
}
@SuppressWarnings("unchecked")
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private void assertConnectionsCached(final String dataSourceName, final Collection<Connection> connections) {
- Field field = BackendConnection.class.getDeclaredField("cachedConnections");
- field.setAccessible(true);
- Multimap<String, Connection> cachedConnections = (Multimap<String, Connection>) field.get(backendConnection);
+ Multimap<String, Connection> cachedConnections = (Multimap<String, Connection>) new FieldReader(backendConnection, BackendConnection.class.getDeclaredField("cachedConnections")).read();
assertTrue(cachedConnections.containsKey(dataSourceName));
assertArrayEquals(cachedConnections.get(dataSourceName).toArray(), connections.toArray());
}
@SuppressWarnings("unchecked")
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private Connection prepareCachedConnections() {
- Field field = BackendConnection.class.getDeclaredField("cachedConnections");
- field.setAccessible(true);
- Multimap<String, Connection> cachedConnections = (Multimap<String, Connection>) field.get(backendConnection);
+ Multimap<String, Connection> cachedConnections = (Multimap<String, Connection>) new FieldReader(backendConnection, BackendConnection.class.getDeclaredField("cachedConnections")).read();
Connection connection = mock(Connection.class);
cachedConnections.put("ignoredDataSourceName", connection);
return connection;
}
@SuppressWarnings("unchecked")
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private void verifyConnectionPostProcessorsEmpty() {
- Field field = BackendConnection.class.getDeclaredField("connectionPostProcessors");
- field.setAccessible(true);
- Collection<ConnectionPostProcessor> connectionPostProcessors = (Collection<ConnectionPostProcessor>) field.get(backendConnection);
+ Collection<ConnectionPostProcessor> connectionPostProcessors = (Collection<ConnectionPostProcessor>) new FieldReader(
+ backendConnection, BackendConnection.class.getDeclaredField("connectionPostProcessors")).read();
assertTrue(connectionPostProcessors.isEmpty());
}
@@ -405,17 +394,13 @@ public final class BackendConnectionTest extends ProxyContextRestorer {
@SuppressWarnings("unchecked")
@SneakyThrows(ReflectiveOperationException.class)
private Collection<ProxyBackendHandler> getDatabaseCommunicationEngines() {
- Field field = BackendConnection.class.getDeclaredField("backendHandlers");
- field.setAccessible(true);
- return (Collection<ProxyBackendHandler>) field.get(backendConnection);
+ return (Collection<ProxyBackendHandler>) new FieldReader(backendConnection, BackendConnection.class.getDeclaredField("backendHandlers")).read();
}
@SuppressWarnings("unchecked")
@SneakyThrows(ReflectiveOperationException.class)
private Collection<ProxyBackendHandler> getInUseDatabaseCommunicationEngines() {
- Field field = BackendConnection.class.getDeclaredField("inUseBackendHandlers");
- field.setAccessible(true);
- return (Collection<ProxyBackendHandler>) field.get(backendConnection);
+ return (Collection<ProxyBackendHandler>) new FieldReader(backendConnection, BackendConnection.class.getDeclaredField("inUseBackendHandlers")).read();
}
@Test
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/MockConnectionUtil.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/MockConnectionUtil.java
index e8046efac76..4a2dc471e87 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/MockConnectionUtil.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/connection/MockConnectionUtil.java
@@ -23,8 +23,8 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.SneakyThrows;
import org.apache.shardingsphere.proxy.backend.communication.BackendConnection;
+import org.mockito.internal.util.reflection.InstanceField;
-import java.lang.reflect.Field;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;
@@ -44,13 +44,11 @@ final class MockConnectionUtil {
* @param dataSourceName datasource name
* @param connectionSize connection size
*/
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
static void setCachedConnections(final BackendConnection backendConnection, final String dataSourceName, final int connectionSize) {
Multimap<String, Connection> cachedConnections = HashMultimap.create();
cachedConnections.putAll(backendConnection.getConnectionSession().getDatabaseName() + "." + dataSourceName, mockNewConnections(connectionSize));
- Field field = backendConnection.getClass().getDeclaredField("cachedConnections");
- field.setAccessible(true);
- field.set(backendConnection, cachedConnections);
+ new InstanceField(backendConnection.getClass().getDeclaredField("cachedConnections"), backendConnection).set(cachedConnections);
}
/**
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/BackendTransactionManagerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/BackendTransactionManagerTest.java
index 7221306dac8..9ac343ddcfe 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/BackendTransactionManagerTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/transaction/BackendTransactionManagerTest.java
@@ -35,9 +35,9 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
+import org.mockito.internal.util.reflection.InstanceField;
import org.mockito.junit.MockitoJUnitRunner;
-import java.lang.reflect.Field;
import java.sql.SQLException;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
@@ -172,8 +172,6 @@ public final class BackendTransactionManagerTest extends ProxyContextRestorer {
@SneakyThrows(ReflectiveOperationException.class)
private void setLocalTransactionManager() {
- Field field = BackendTransactionManager.class.getDeclaredField("localTransactionManager");
- field.setAccessible(true);
- field.set(backendTransactionManager, localTransactionManager);
+ new InstanceField(BackendTransactionManager.class.getDeclaredField("localTransactionManager"), backendTransactionManager).set(localTransactionManager);
}
}
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowProcessListExecutorTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowProcessListExecutorTest.java
index 4cb306c4ed0..77f4fef8af2 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowProcessListExecutorTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/ShowProcessListExecutorTest.java
@@ -27,8 +27,8 @@ import org.apache.shardingsphere.proxy.backend.util.ProxyContextRestorer;
import org.apache.shardingsphere.transaction.api.TransactionType;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.internal.util.reflection.InstanceField;
-import java.lang.reflect.Field;
import java.sql.SQLException;
import java.util.Collections;
@@ -48,9 +48,7 @@ public final class ShowProcessListExecutorTest extends ProxyContextRestorer {
setupBatchProcessContexts();
}
- private void setupBatchProcessContexts() throws NoSuchFieldException, IllegalAccessException {
- Field batchProcessContextsField = showProcessListExecutor.getClass().getDeclaredField("batchProcessContexts");
- batchProcessContextsField.setAccessible(true);
+ private void setupBatchProcessContexts() throws NoSuchFieldException {
String executionNodeValue = "contexts:\n"
+ "- executionID: f6c2336a-63ba-41bf-941e-2e3504eb2c80\n"
+ " sql: alter table t_order add column a varchar(64) after order_id\n"
@@ -63,7 +61,7 @@ public final class ShowProcessListExecutorTest extends ProxyContextRestorer {
+ " unitID: unitID1\n"
+ " - status: EXECUTE_STATUS_DONE\n"
+ " unitID: unitID2\n";
- batchProcessContextsField.set(showProcessListExecutor, Collections.singleton(executionNodeValue));
+ new InstanceField(showProcessListExecutor.getClass().getDeclaredField("batchProcessContexts"), showProcessListExecutor).set(Collections.singleton(executionNodeValue));
}
@Test
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/opengauss/OpenGaussAdminExecutorFactoryTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/opengauss/OpenGaussAdminExecutorFactoryTest.java
index 55220981e21..e70fdb34c28 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/opengauss/OpenGaussAdminExecutorFactoryTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/opengauss/OpenGaussAdminExecutorFactoryTest.java
@@ -24,9 +24,9 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
+import org.mockito.internal.util.reflection.InstanceField;
import org.mockito.junit.MockitoJUnitRunner;
-import java.lang.reflect.Field;
import java.util.Collections;
import java.util.Optional;
@@ -48,10 +48,8 @@ public final class OpenGaussAdminExecutorFactoryTest {
@Before
public void setup() throws IllegalAccessException, NoSuchFieldException {
- Field field = OpenGaussAdminExecutorCreator.class.getDeclaredField("delegated");
- field.setAccessible(true);
openGaussAdminExecutorFactory = new OpenGaussAdminExecutorCreator();
- field.set(openGaussAdminExecutorFactory, postgreSQLAdminExecutorFactory);
+ new InstanceField(OpenGaussAdminExecutorCreator.class.getDeclaredField("delegated"), openGaussAdminExecutorFactory).set(postgreSQLAdminExecutorFactory);
}
@Test
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java
index bc6f1fc9f15..3bcdabb313c 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/data/impl/UnicastDatabaseBackendHandlerTest.java
@@ -28,9 +28,9 @@ import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRule
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.communication.DatabaseCommunicationEngineFactory;
-import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
import org.apache.shardingsphere.proxy.backend.communication.BackendConnection;
+import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
+import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.handler.data.DatabaseBackendHandler;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
@@ -42,9 +42,9 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
+import org.mockito.internal.util.reflection.InstanceField;
import org.mockito.junit.MockitoJUnitRunner;
-import java.lang.reflect.Field;
import java.sql.SQLException;
import java.util.Collections;
import java.util.HashMap;
@@ -108,11 +108,9 @@ public final class UnicastDatabaseBackendHandlerTest extends ProxyContextRestore
when(databaseCommunicationEngineFactory.newDatabaseCommunicationEngine(any(QueryContext.class), any(BackendConnection.class), eq(false))).thenReturn(databaseCommunicationEngine);
}
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private void setBackendHandlerFactory(final DatabaseBackendHandler schemaDatabaseBackendHandler) {
- Field field = schemaDatabaseBackendHandler.getClass().getDeclaredField("databaseCommunicationEngineFactory");
- field.setAccessible(true);
- field.set(schemaDatabaseBackendHandler, databaseCommunicationEngineFactory);
+ new InstanceField(schemaDatabaseBackendHandler.getClass().getDeclaredField("databaseCommunicationEngineFactory"), schemaDatabaseBackendHandler).set(databaseCommunicationEngineFactory);
}
@Test
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitBackendHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitBackendHandlerTest.java
index 29e8b30e23d..cef3148334e 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitBackendHandlerTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitBackendHandlerTest.java
@@ -41,10 +41,10 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.Mock;
+import org.mockito.internal.util.reflection.InstanceField;
import org.mockito.junit.MockitoJUnitRunner;
import javax.sql.DataSource;
-import java.lang.reflect.Field;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
@@ -88,9 +88,7 @@ public final class AlterStorageUnitBackendHandlerTest extends ProxyContextRestor
when(metaDataContexts.getMetaData().containsDatabase("test_db")).thenReturn(true);
when(connectionSession.getProtocolType()).thenReturn(new MySQLDatabaseType());
alterStorageUnitBackendHandler = new AlterStorageUnitBackendHandler(alterStorageUnitStatement, connectionSession);
- Field field = alterStorageUnitBackendHandler.getClass().getDeclaredField("validateHandler");
- field.setAccessible(true);
- field.set(alterStorageUnitBackendHandler, validateHandler);
+ new InstanceField(alterStorageUnitBackendHandler.getClass().getDeclaredField("validateHandler"), alterStorageUnitBackendHandler).set(validateHandler);
}
@Test
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitBackendHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitBackendHandlerTest.java
index 471b4fc9a95..db1eea1c09d 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitBackendHandlerTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitBackendHandlerTest.java
@@ -43,9 +43,9 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.Mock;
+import org.mockito.internal.util.reflection.InstanceField;
import org.mockito.junit.MockitoJUnitRunner;
-import java.lang.reflect.Field;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
@@ -95,9 +95,7 @@ public final class RegisterStorageUnitBackendHandlerTest extends ProxyContextRes
when(database.getRuleMetaData()).thenReturn(ruleMetaData);
when(ruleMetaData.findSingleRule(ReadwriteSplittingRule.class)).thenReturn(Optional.of(readwriteSplittingRule));
registerStorageUnitBackendHandler = new RegisterStorageUnitBackendHandler(registerStorageUnitStatement, connectionSession);
- Field field = registerStorageUnitBackendHandler.getClass().getDeclaredField("validateHandler");
- field.setAccessible(true);
- field.set(registerStorageUnitBackendHandler, validateHandler);
+ new InstanceField(registerStorageUnitBackendHandler.getClass().getDeclaredField("validateHandler"), registerStorageUnitBackendHandler).set(validateHandler);
}
@Test
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandlerFactoryTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandlerFactoryTest.java
index 5833b4d1210..7681bd21ccc 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandlerFactoryTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/transaction/TransactionBackendHandlerFactoryTest.java
@@ -22,13 +22,13 @@ import org.apache.shardingsphere.infra.binder.QueryContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
import org.apache.shardingsphere.mode.manager.ContextManager;
-import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory;
-import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
import org.apache.shardingsphere.proxy.backend.communication.BackendConnection;
+import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngine;
+import org.apache.shardingsphere.proxy.backend.communication.DatabaseCommunicationEngineFactory;
import org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction.BackendTransactionManager;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
+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.tcl.CommitStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.tcl.RollbackStatement;
@@ -40,8 +40,7 @@ import org.junit.Before;
import org.junit.Test;
import org.mockito.Answers;
import org.mockito.MockedStatic;
-
-import java.lang.reflect.Field;
+import org.mockito.internal.util.reflection.FieldReader;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
@@ -65,6 +64,7 @@ public final class TransactionBackendHandlerFactoryTest extends ProxyContextRest
ProxyContext.init(contextManager);
}
+ @SuppressWarnings("unchecked")
@Test
public void assertTransactionBackendHandlerReturnedWhenTCLStatementInstanceOfCommitStatement() {
ConnectionSession connectionSession = mock(ConnectionSession.class, Answers.RETURNS_DEEP_STUBS);
@@ -95,6 +95,7 @@ public final class TransactionBackendHandlerFactoryTest extends ProxyContextRest
assertFieldOfInstance(getBackendTransactionManager(transactionBackendHandler), "connection", is(backendConnection));
}
+ @SuppressWarnings("unchecked")
@Test
public void assertBroadcastBackendHandlerReturnedWhenTCLStatementNotHit() {
SQLStatementContext<TCLStatement> context = mock(SQLStatementContext.class);
@@ -110,16 +111,12 @@ public final class TransactionBackendHandlerFactoryTest extends ProxyContextRest
@SuppressWarnings("unchecked")
@SneakyThrows(ReflectiveOperationException.class)
private <S, T> void assertFieldOfInstance(final S classInstance, final String fieldName, final Matcher<T> matcher) {
- Field field = classInstance.getClass().getDeclaredField(fieldName);
- field.setAccessible(true);
- T value = (T) field.get(classInstance);
+ T value = (T) new FieldReader(classInstance, classInstance.getClass().getDeclaredField(fieldName)).read();
assertThat(value, matcher);
}
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private BackendTransactionManager getBackendTransactionManager(final TransactionBackendHandler transactionBackendHandler) {
- Field field = transactionBackendHandler.getClass().getDeclaredField("backendTransactionManager");
- field.setAccessible(true);
- return (BackendTransactionManager) field.get(transactionBackendHandler);
+ return (BackendTransactionManager) new FieldReader(transactionBackendHandler, transactionBackendHandler.getClass().getDeclaredField("backendTransactionManager")).read();
}
}
diff --git a/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/state/impl/OKProxyStateTest.java b/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/state/impl/OKProxyStateTest.java
index fb38bc0620a..cbda2c2fad9 100644
--- a/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/state/impl/OKProxyStateTest.java
+++ b/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/state/impl/OKProxyStateTest.java
@@ -36,9 +36,9 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.Mock;
+import org.mockito.internal.util.reflection.FieldReader;
import org.mockito.junit.MockitoJUnitRunner;
-import java.lang.reflect.Field;
import java.util.Map;
import java.util.concurrent.ExecutorService;
@@ -110,11 +110,10 @@ public final class OKProxyStateTest extends ProxyContextRestorer {
}
@SuppressWarnings({"unchecked", "SameParameterValue"})
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private ExecutorService registerMockExecutorService(final int connectionId) {
- Field executorServicesField = ConnectionThreadExecutorGroup.class.getDeclaredField("executorServices");
- executorServicesField.setAccessible(true);
- Map<Integer, ExecutorService> executorServices = (Map<Integer, ExecutorService>) executorServicesField.get(ConnectionThreadExecutorGroup.getInstance());
+ Map<Integer, ExecutorService> executorServices = (Map<Integer, ExecutorService>) new FieldReader(
+ ConnectionThreadExecutorGroup.getInstance(), ConnectionThreadExecutorGroup.class.getDeclaredField("executorServices")).read();
ExecutorService result = mock(ExecutorService.class);
executorServices.put(connectionId, result);
return result;
diff --git a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
index eb9da1a2e7e..4d7c1358f9b 100644
--- a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
+++ b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
@@ -54,7 +54,6 @@ import org.mockito.Mock;
import org.mockito.internal.util.reflection.InstanceField;
import org.mockito.junit.MockitoJUnitRunner;
-import java.lang.reflect.Field;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
@@ -158,11 +157,9 @@ public final class MySQLFrontendEngineTest extends ProxyContextRestorer {
verify(context).writeAndFlush(argThat((ArgumentMatcher<MySQLErrPacket>) argument -> "Access denied for user 'root'@'192.168.0.102' (using password: YES)".equals(argument.getErrorMessage())));
}
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private void setConnectionPhase(final MySQLConnectionPhase connectionPhase) {
- Field field = MySQLAuthenticationEngine.class.getDeclaredField("connectionPhase");
- field.setAccessible(true);
- field.set(mysqlFrontendEngine.getAuthenticationEngine(), connectionPhase);
+ new InstanceField(MySQLAuthenticationEngine.class.getDeclaredField("connectionPhase"), mysqlFrontendEngine.getAuthenticationEngine()).set(connectionPhase);
}
private void initProxyContext(final ShardingSphereUser user) {
diff --git a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
index 9166158d52b..270be03ddb1 100644
--- a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
+++ b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
@@ -44,8 +44,9 @@ import org.apache.shardingsphere.proxy.frontend.mysql.ProxyContextRestorer;
import org.apache.shardingsphere.proxy.frontend.mysql.authentication.authenticator.MySQLNativePasswordAuthenticator;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.internal.util.reflection.FieldReader;
+import org.mockito.internal.util.reflection.InstanceField;
-import java.lang.reflect.Field;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.LinkedHashMap;
@@ -73,14 +74,12 @@ public final class MySQLAuthenticationEngineTest extends ProxyContextRestorer {
private final byte[] authResponse = {-27, 89, -20, -27, 65, -120, -64, -101, 86, -100, -108, -100, 6, -125, -37, 117, 14, -43, 95, -113};
@Before
- public void setUp() throws NoSuchFieldException, IllegalAccessException {
+ public void setUp() throws NoSuchFieldException {
initAuthenticationHandlerForAuthenticationEngine();
}
- private void initAuthenticationHandlerForAuthenticationEngine() throws NoSuchFieldException, IllegalAccessException {
- Field field = MySQLAuthenticationEngine.class.getDeclaredField("authenticationHandler");
- field.setAccessible(true);
- field.set(authenticationEngine, authenticationHandler);
+ private void initAuthenticationHandlerForAuthenticationEngine() throws NoSuchFieldException {
+ new InstanceField(MySQLAuthenticationEngine.class.getDeclaredField("authenticationHandler"), authenticationEngine).set(authenticationHandler);
}
@Test
@@ -123,11 +122,9 @@ public final class MySQLAuthenticationEngineTest extends ProxyContextRestorer {
assertThat(getAuthResponse(), is(authResponse));
}
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private void setAuthenticationResult() {
- Field field = MySQLAuthenticationEngine.class.getDeclaredField("currentAuthResult");
- field.setAccessible(true);
- field.set(authenticationEngine, AuthenticationResultBuilder.continued("root", "", "sharding_db"));
+ new InstanceField(MySQLAuthenticationEngine.class.getDeclaredField("currentAuthResult"), authenticationEngine).set(AuthenticationResultBuilder.continued("root", "", "sharding_db"));
}
@Test
@@ -212,24 +209,18 @@ public final class MySQLAuthenticationEngineTest extends ProxyContextRestorer {
return result;
}
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private void setConnectionPhase(final MySQLConnectionPhase connectionPhase) {
- Field field = MySQLAuthenticationEngine.class.getDeclaredField("connectionPhase");
- field.setAccessible(true);
- field.set(authenticationEngine, connectionPhase);
+ new InstanceField(MySQLAuthenticationEngine.class.getDeclaredField("connectionPhase"), authenticationEngine).set(connectionPhase);
}
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private MySQLConnectionPhase getConnectionPhase() {
- Field field = MySQLAuthenticationEngine.class.getDeclaredField("connectionPhase");
- field.setAccessible(true);
- return (MySQLConnectionPhase) field.get(authenticationEngine);
+ return (MySQLConnectionPhase) new FieldReader(authenticationEngine, MySQLAuthenticationEngine.class.getDeclaredField("connectionPhase")).read();
}
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private byte[] getAuthResponse() {
- Field field = MySQLAuthenticationEngine.class.getDeclaredField("authResponse");
- field.setAccessible(true);
- return (byte[]) field.get(authenticationEngine);
+ return (byte[]) new FieldReader(authenticationEngine, MySQLAuthenticationEngine.class.getDeclaredField("authResponse")).read();
}
}
diff --git a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/OpenGaussFrontendEngineTest.java b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/OpenGaussFrontendEngineTest.java
index 4e6b963871f..d6c8cb3f7a8 100644
--- a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/OpenGaussFrontendEngineTest.java
+++ b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/OpenGaussFrontendEngineTest.java
@@ -26,10 +26,9 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
+import org.mockito.internal.util.reflection.InstanceField;
import org.mockito.junit.MockitoJUnitRunner;
-import java.lang.reflect.Field;
-
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Mockito.mock;
@@ -44,10 +43,8 @@ public final class OpenGaussFrontendEngineTest {
private PostgreSQLFrontendEngine mockPostgreSQLFrontendEngine;
@Before
- public void setup() throws ReflectiveOperationException {
- Field field = OpenGaussFrontendEngine.class.getDeclaredField("postgreSQLFrontendEngine");
- field.setAccessible(true);
- field.set(openGaussFrontendEngine, mockPostgreSQLFrontendEngine);
+ public void setup() throws NoSuchFieldException {
+ new InstanceField(OpenGaussFrontendEngine.class.getDeclaredField("postgreSQLFrontendEngine"), openGaussFrontendEngine).set(mockPostgreSQLFrontendEngine);
}
@Test
diff --git a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationEngineTest.java b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationEngineTest.java
index 774270a8278..09955ae5675 100644
--- a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationEngineTest.java
+++ b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationEngineTest.java
@@ -52,9 +52,10 @@ import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
+import org.mockito.internal.util.reflection.FieldReader;
+import org.mockito.internal.util.reflection.InstanceField;
import org.mockito.junit.MockitoJUnitRunner;
-import java.lang.reflect.Field;
import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.LinkedHashMap;
@@ -114,12 +115,9 @@ public final class OpenGaussAuthenticationEngineTest extends ProxyContextRestore
authenticationEngine.authenticate(channelHandlerContext, payload);
}
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private void setAlreadyReceivedStartupMessage(final OpenGaussAuthenticationEngine target) {
- Field field = OpenGaussAuthenticationEngine.class.getDeclaredField("startupMessageReceived");
- field.setAccessible(true);
- field.set(target, true);
- field.setAccessible(false);
+ new InstanceField(OpenGaussAuthenticationEngine.class.getDeclaredField("startupMessageReceived"), target).set(true);
}
@Test
@@ -178,25 +176,19 @@ public final class OpenGaussAuthenticationEngineTest extends ProxyContextRestore
return new ShardingSphereRuleMetaData(Collections.singletonList(rule));
}
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private byte[] getRandom64Code(final OpenGaussAuthenticationSCRAMSha256Packet packet) {
- Field field = OpenGaussAuthenticationSCRAMSha256Packet.class.getDeclaredField("random64Code");
- field.setAccessible(true);
- return (byte[]) field.get(packet);
+ return (byte[]) new FieldReader(packet, OpenGaussAuthenticationSCRAMSha256Packet.class.getDeclaredField("random64Code")).read();
}
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private byte[] getToken(final OpenGaussAuthenticationSCRAMSha256Packet packet) {
- Field field = OpenGaussAuthenticationSCRAMSha256Packet.class.getDeclaredField("token");
- field.setAccessible(true);
- return (byte[]) field.get(packet);
+ return (byte[]) new FieldReader(packet, OpenGaussAuthenticationSCRAMSha256Packet.class.getDeclaredField("token")).read();
}
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private int getServerIteration(final OpenGaussAuthenticationSCRAMSha256Packet packet) {
- Field field = OpenGaussAuthenticationSCRAMSha256Packet.class.getDeclaredField("serverIteration");
- field.setAccessible(true);
- return (int) field.get(packet);
+ return (int) new FieldReader(packet, OpenGaussAuthenticationSCRAMSha256Packet.class.getDeclaredField("serverIteration")).read();
}
private String encodeDigest(final String password, final String random64code, final String token, final int serverIteration) {
diff --git a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/err/OpenGaussErrorPacketFactoryTest.java b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/err/OpenGaussErrorPacketFactoryTest.java
index 4c5ff2c2f79..5740aac1be9 100644
--- a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/err/OpenGaussErrorPacketFactoryTest.java
+++ b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/err/OpenGaussErrorPacketFactoryTest.java
@@ -20,10 +20,10 @@ package org.apache.shardingsphere.proxy.frontend.opengauss.err;
import lombok.SneakyThrows;
import org.apache.shardingsphere.db.protocol.opengauss.packet.command.generic.OpenGaussErrorResponsePacket;
import org.junit.Test;
+import org.mockito.internal.util.reflection.FieldReader;
import org.opengauss.util.PSQLException;
import org.opengauss.util.ServerErrorMessage;
-import java.lang.reflect.Field;
import java.sql.SQLException;
import java.util.Map;
@@ -82,10 +82,8 @@ public final class OpenGaussErrorPacketFactoryTest {
}
@SuppressWarnings("unchecked")
- @SneakyThrows({IllegalAccessException.class, NoSuchFieldException.class})
+ @SneakyThrows(NoSuchFieldException.class)
private static Map<Character, String> getFieldsInPacket(final OpenGaussErrorResponsePacket packet) {
- Field field = OpenGaussErrorResponsePacket.class.getDeclaredField("fields");
- field.setAccessible(true);
- return (Map<Character, String>) field.get(packet);
+ return (Map<Character, String>) new FieldReader(packet, OpenGaussErrorResponsePacket.class.getDeclaredField("fields")).read();
}
}
diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/PostgreSQLFrontendEngineTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/PostgreSQLFrontendEngineTest.java
index 361dbfb42b3..d021c129a44 100644
--- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/PostgreSQLFrontendEngineTest.java
+++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/PostgreSQLFrontendEngineTest.java
@@ -23,8 +23,8 @@ import org.apache.shardingsphere.proxy.frontend.executor.ConnectionThreadExecuto
import org.apache.shardingsphere.proxy.frontend.postgresql.command.PortalContext;
import org.apache.shardingsphere.proxy.frontend.postgresql.command.PostgreSQLPortalContextRegistry;
import org.junit.Test;
+import org.mockito.internal.util.reflection.FieldReader;
-import java.lang.reflect.Field;
import java.util.concurrent.ConcurrentMap;
import static org.junit.Assert.assertTrue;
@@ -50,8 +50,6 @@ public final class PostgreSQLFrontendEngineTest {
@SuppressWarnings("unchecked")
@SneakyThrows(ReflectiveOperationException.class)
private ConcurrentMap<Integer, PortalContext> getPortalContexts() {
- Field field = PostgreSQLPortalContextRegistry.class.getDeclaredField("portalContexts");
- field.setAccessible(true);
- return (ConcurrentMap<Integer, PortalContext>) field.get(PostgreSQLPortalContextRegistry.getInstance());
+ return (ConcurrentMap<Integer, PortalContext>) new FieldReader(PostgreSQLPortalContextRegistry.getInstance(), PostgreSQLPortalContextRegistry.class.getDeclaredField("portalContexts")).read();
}
}
diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationEngineTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationEngineTest.java
index 374505eab7e..0c9f6c405bd 100644
--- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationEngineTest.java
+++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationEngineTest.java
@@ -53,9 +53,10 @@ import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
+import org.mockito.internal.util.reflection.FieldReader;
+import org.mockito.internal.util.reflection.InstanceField;
import org.mockito.junit.MockitoJUnitRunner;
-import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.nio.charset.StandardCharsets;
import java.util.Collections;
@@ -117,12 +118,9 @@ public final class PostgreSQLAuthenticationEngineTest extends ProxyContextRestor
authenticationEngine.authenticate(channelHandlerContext, payload);
}
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private void setAlreadyReceivedStartupMessage(final PostgreSQLAuthenticationEngine target) {
- Field field = PostgreSQLAuthenticationEngine.class.getDeclaredField("startupMessageReceived");
- field.setAccessible(true);
- field.set(target, true);
- field.setAccessible(false);
+ new InstanceField(PostgreSQLAuthenticationEngine.class.getDeclaredField("startupMessageReceived"), target).set(true);
}
@Test
@@ -187,11 +185,9 @@ public final class PostgreSQLAuthenticationEngineTest extends ProxyContextRestor
return new ShardingSphereRuleMetaData(Collections.singletonList(rule));
}
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private byte[] getMd5Salt(final PostgreSQLMD5PasswordAuthenticationPacket md5PasswordPacket) {
- Field field = PostgreSQLMD5PasswordAuthenticationPacket.class.getDeclaredField("md5Salt");
- field.setAccessible(true);
- return (byte[]) field.get(md5PasswordPacket);
+ return (byte[]) new FieldReader(md5PasswordPacket, PostgreSQLMD5PasswordAuthenticationPacket.class.getDeclaredField("md5Salt")).read();
}
@SneakyThrows(ReflectiveOperationException.class)
diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactoryTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactoryTest.java
index 5be9eaa8772..84d08266a10 100644
--- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactoryTest.java
+++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactoryTest.java
@@ -47,9 +47,9 @@ import org.apache.shardingsphere.proxy.frontend.postgresql.command.query.simple.
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
+import org.mockito.internal.util.reflection.FieldReader;
import org.mockito.junit.MockitoJUnitRunner;
-import java.lang.reflect.Field;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Collection;
@@ -57,8 +57,8 @@ import java.util.Iterator;
import java.util.List;
import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.junit.Assert.assertFalse;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertFalse;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -152,11 +152,9 @@ public final class PostgreSQLCommandExecutorFactoryTest {
}
@SuppressWarnings("unchecked")
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private static List<CommandExecutor> getExecutorsFromAggregatedCommandExecutor(final PostgreSQLAggregatedCommandExecutor executor) {
- Field field = PostgreSQLAggregatedCommandExecutor.class.getDeclaredField("executors");
- field.setAccessible(true);
- return (List<CommandExecutor>) field.get(executor);
+ return (List<CommandExecutor>) new FieldReader(executor, PostgreSQLAggregatedCommandExecutor.class.getDeclaredField("executors")).read();
}
@RequiredArgsConstructor
diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutorTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutorTest.java
index 92c57f0c17a..06408a0a16e 100644
--- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutorTest.java
+++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLBatchedStatementsExecutorTest.java
@@ -45,9 +45,9 @@ import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.InOrder;
import org.mockito.Mock;
+import org.mockito.internal.util.reflection.FieldReader;
import org.mockito.junit.MockitoJUnitRunner;
-import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@@ -134,9 +134,8 @@ public final class PostgreSQLBatchedStatementsExecutorTest extends ProxyContextR
@SuppressWarnings("unchecked")
@SneakyThrows(ReflectiveOperationException.class)
private void prepareExecutionUnitParameters(final PostgreSQLBatchedStatementsExecutor target, final List<List<Object>> parameterSets) {
- Field executionUnitParametersField = PostgreSQLBatchedStatementsExecutor.class.getDeclaredField("executionUnitParams");
- executionUnitParametersField.setAccessible(true);
- Map<ExecutionUnit, List<List<Object>>> map = (Map<ExecutionUnit, List<List<Object>>>) executionUnitParametersField.get(target);
+ Map<ExecutionUnit, List<List<Object>>> map = (Map<ExecutionUnit, List<List<Object>>>) new FieldReader(
+ target, PostgreSQLBatchedStatementsExecutor.class.getDeclaredField("executionUnitParams")).read();
map.replaceAll((k, v) -> parameterSets);
}
}
diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java
index c750c9ba559..bd3f03c12aa 100644
--- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java
+++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java
@@ -58,9 +58,9 @@ import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
+import org.mockito.internal.util.reflection.FieldReader;
import org.mockito.junit.MockitoJUnitRunner;
-import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.ResultSetMetaData;
@@ -313,11 +313,9 @@ public final class PostgreSQLComDescribeExecutorTest extends ProxyContextRestore
}
@SuppressWarnings("unchecked")
- @SneakyThrows({NoSuchFieldException.class, IllegalAccessException.class})
+ @SneakyThrows(NoSuchFieldException.class)
private Collection<PostgreSQLColumnDescription> getColumnDescriptionsFromPacket(final PostgreSQLRowDescriptionPacket packet) {
- Field field = PostgreSQLRowDescriptionPacket.class.getDeclaredField("columnDescriptions");
- field.setAccessible(true);
- return (Collection<PostgreSQLColumnDescription>) field.get(packet);
+ return (Collection<PostgreSQLColumnDescription>) new FieldReader(packet, PostgreSQLRowDescriptionPacket.class.getDeclaredField("columnDescriptions")).read();
}
@SuppressWarnings("rawtypes")
@@ -382,11 +380,9 @@ public final class PostgreSQLComDescribeExecutorTest extends ProxyContextRestore
}
@SuppressWarnings("unchecked")
- @SneakyThrows(ReflectiveOperationException.class)
+ @SneakyThrows(NoSuchFieldException.class)
private List<PostgreSQLColumnDescription> getColumnDescriptions(final PostgreSQLRowDescriptionPacket packet) {
- Field columnDescriptionsField = PostgreSQLRowDescriptionPacket.class.getDeclaredField("columnDescriptions");
- columnDescriptionsField.setAccessible(true);
- return (List<PostgreSQLColumnDescription>) columnDescriptionsField.get(packet);
+ return (List<PostgreSQLColumnDescription>) new FieldReader(packet, PostgreSQLRowDescriptionPacket.class.getDeclaredField("columnDescriptions")).read();
}
@Test(expected = UnsupportedSQLOperationException.class)
diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java
index a6e473833aa..27e84fe6e7b 100644
--- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java
+++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java
@@ -44,9 +44,9 @@ import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
+import org.mockito.internal.util.reflection.InstanceField;
import org.mockito.junit.MockitoJUnitRunner;
-import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -130,11 +130,9 @@ public final class PostgreSQLComParseExecutorTest extends ProxyContextRestorer {
assertThat(actualPreparedStatement.getParameterTypes(), is(Arrays.asList(PostgreSQLColumnType.POSTGRESQL_TYPE_INT4, PostgreSQLColumnType.POSTGRESQL_TYPE_UNSPECIFIED)));
}
- @SneakyThrows({NoSuchFieldException.class, SecurityException.class, IllegalArgumentException.class, IllegalAccessException.class})
+ @SneakyThrows(NoSuchFieldException.class)
private void setConnectionSession() {
- Field field = PostgreSQLComParseExecutor.class.getDeclaredField("connectionSession");
- field.setAccessible(true);
- field.set(executor, connectionSession);
+ new InstanceField(PostgreSQLComParseExecutor.class.getDeclaredField("connectionSession"), executor).set(connectionSession);
}
@Test
diff --git a/sql-parser/engine/src/test/java/org/apache/shardingsphere/sql/parser/api/SQLParserEngineTest.java b/sql-parser/engine/src/test/java/org/apache/shardingsphere/sql/parser/api/SQLParserEngineTest.java
index e020ef111ae..eaa46fc157a 100644
--- a/sql-parser/engine/src/test/java/org/apache/shardingsphere/sql/parser/api/SQLParserEngineTest.java
+++ b/sql-parser/engine/src/test/java/org/apache/shardingsphere/sql/parser/api/SQLParserEngineTest.java
@@ -23,9 +23,9 @@ import com.github.benmanes.caffeine.cache.LoadingCache;
import org.apache.shardingsphere.sql.parser.core.ParseASTNode;
import org.apache.shardingsphere.sql.parser.core.database.parser.SQLParserExecutor;
import org.junit.Test;
+import org.mockito.internal.util.reflection.InstanceField;
import javax.annotation.ParametersAreNonnullByDefault;
-import java.lang.reflect.Field;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
@@ -42,11 +42,7 @@ public final class SQLParserEngineTest {
when(sqlParserExecutor.parse(SQL)).thenReturn(mock(ParseASTNode.class));
CacheOption cacheOption = new CacheOption(128, 1024L);
SQLParserEngine sqlParserEngine = new SQLParserEngine("H2", cacheOption);
- Field sqlParserExecutorFiled = sqlParserEngine.getClass().getDeclaredField("sqlParserExecutor");
- Field parseTreeCacheField = sqlParserEngine.getClass().getDeclaredField("parseTreeCache");
- sqlParserExecutorFiled.setAccessible(true);
- parseTreeCacheField.setAccessible(true);
- sqlParserExecutorFiled.set(sqlParserEngine, sqlParserExecutor);
+ new InstanceField(sqlParserEngine.getClass().getDeclaredField("sqlParserExecutor"), sqlParserEngine).set(sqlParserExecutor);
LoadingCache<String, ParseASTNode> parseTreeCache = Caffeine.newBuilder().softValues().initialCapacity(128)
.maximumSize(1024).build(new CacheLoader<String, ParseASTNode>() {
@@ -56,7 +52,7 @@ public final class SQLParserEngineTest {
return sqlParserExecutor.parse(sql);
}
});
- parseTreeCacheField.set(sqlParserEngine, parseTreeCache);
+ new InstanceField(sqlParserEngine.getClass().getDeclaredField("parseTreeCache"), sqlParserEngine).set(parseTreeCache);
sqlParserEngine.parse(SQL, true);
verify(sqlParserExecutor, times(1)).parse(SQL);
sqlParserEngine.parse(SQL, true);
diff --git a/sql-parser/engine/src/test/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheLoaderTest.java b/sql-parser/engine/src/test/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheLoaderTest.java
index 41ad0b97cb4..186143d4c3f 100644
--- a/sql-parser/engine/src/test/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheLoaderTest.java
+++ b/sql-parser/engine/src/test/java/org/apache/shardingsphere/sql/parser/core/database/cache/ParseTreeCacheLoaderTest.java
@@ -20,8 +20,7 @@ package org.apache.shardingsphere.sql.parser.core.database.cache;
import org.apache.shardingsphere.sql.parser.core.ParseASTNode;
import org.apache.shardingsphere.sql.parser.core.database.parser.SQLParserExecutor;
import org.junit.Test;
-
-import java.lang.reflect.Field;
+import org.mockito.internal.util.reflection.InstanceField;
import static org.hamcrest.CoreMatchers.isA;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -33,12 +32,10 @@ public final class ParseTreeCacheLoaderTest {
private static final String SQL = "select * from user where id=1";
@Test
- public void assertParseTreeCacheLoader() throws NoSuchFieldException, IllegalAccessException {
+ public void assertParseTreeCacheLoader() throws NoSuchFieldException {
SQLParserExecutor sqlParserExecutor = mock(SQLParserExecutor.class, RETURNS_DEEP_STUBS);
ParseTreeCacheLoader loader = new ParseTreeCacheLoader("MySQL");
- Field sqlParserExecutorField = loader.getClass().getDeclaredField("sqlParserExecutor");
- sqlParserExecutorField.setAccessible(true);
- sqlParserExecutorField.set(loader, sqlParserExecutor);
+ new InstanceField(loader.getClass().getDeclaredField("sqlParserExecutor"), loader).set(sqlParserExecutor);
assertThat(loader.load(SQL), isA(ParseASTNode.class));
}
}
diff --git a/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/framework/runner/param/RunnerParameters.java b/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/framework/runner/param/RunnerParameters.java
index 1d3a9cf8979..2cf918504ef 100644
--- a/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/framework/runner/param/RunnerParameters.java
+++ b/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/framework/runner/param/RunnerParameters.java
@@ -23,8 +23,6 @@ import org.apache.shardingsphere.test.e2e.framework.param.model.E2ETestParameter
import org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters;
import org.mockito.internal.util.reflection.FieldReader;
-import java.lang.reflect.Field;
-
/**
* Runner parameters.
*/
@@ -40,9 +38,7 @@ public final class RunnerParameters {
*/
@SneakyThrows(ReflectiveOperationException.class)
public E2ETestParameter getTestParameter() {
- Field paramsField = BlockJUnit4ClassRunnerWithParameters.class.getDeclaredField("parameters");
- paramsField.setAccessible(true);
- Object[] params = (Object[]) paramsField.get(getRunner());
+ Object[] params = (Object[]) new FieldReader(getRunner(), BlockJUnit4ClassRunnerWithParameters.class.getDeclaredField("parameters")).read();
return (E2ETestParameter) params[0];
}