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 16:36:46 UTC

[shardingsphere] branch master updated: Use Plugins.getMemberAccessor() instead of method reflect on test cases (#23045)

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 e3170a52b46 Use Plugins.getMemberAccessor() instead of method reflect on test cases (#23045)
e3170a52b46 is described below

commit e3170a52b467e66e2061666dbceb1006baf74729
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Fri Dec 23 00:36:39 2022 +0800

    Use Plugins.getMemberAccessor() instead of method reflect on test cases (#23045)
    
    * Refactor InsertValueContextTest
    
    * Refactor OpenGaussAuthenticationAlgorithm
    
    * Refactor OpenGaussAuthenticationAlgorithm
    
    * Refactor MySQLBinlogRowsEventPacketTest
    
    * Refactor OnDuplicateUpdateContextTest
    
    * Refactor OnDuplicateUpdateContextTest
    
    * Refactor MySQLIncrementalDumperTest
    
    * Refactor PostgreSQLAuthenticationEngineTest
    
    * Refactor PostgreSQLAuthenticationHandlerTest
    
    * Refactor PostgreSQLMD5PasswordAuthenticatorTest
    
    * Refactor ConsistencyCheckJobTest
    
    * Use Plugins.getMemberAccessor() instead of method reflect on test cases
---
 .../binlog/row/MySQLBinlogRowsEventPacketTest.java | 15 +---
 .../insert/values/InsertValueContextTest.java      | 31 +++-----
 .../values/OnDuplicateUpdateContextTest.java       | 29 +++----
 .../mysql/ingest/MySQLIncrementalDumperTest.java   | 93 +++++++++-------------
 .../fixture/OpenGaussAuthenticationAlgorithm.java  | 33 +++-----
 .../PostgreSQLAuthenticationEngineTest.java        | 26 +++---
 .../PostgreSQLAuthenticationHandlerTest.java       | 11 ++-
 .../PostgreSQLMD5PasswordAuthenticatorTest.java    | 14 ++--
 .../consistencycheck/ConsistencyCheckJobTest.java  | 40 +++++-----
 9 files changed, 113 insertions(+), 179 deletions(-)

diff --git a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/row/MySQLBinlogRowsEventPacketTest.java b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/row/MySQLBinlogRowsEventPacketTest.java
index 9257d09ce9e..6252745ef48 100644
--- a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/row/MySQLBinlogRowsEventPacketTest.java
+++ b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/row/MySQLBinlogRowsEventPacketTest.java
@@ -26,19 +26,19 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
+import org.mockito.internal.configuration.plugins.Plugins;
 import org.mockito.junit.MockitoJUnitRunner;
 
 import java.io.Serializable;
 import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 
 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.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -77,8 +77,8 @@ public final class MySQLBinlogRowsEventPacketTest {
         assertFalse(actual.getColumnsPresentBitmap().isNullParameter(0));
         assertNull(actual.getColumnsPresentBitmap2());
         MySQLPacketPayload packetPayload = new MySQLPacketPayload(byteBuf, StandardCharsets.UTF_8);
-        Serializable[] result = (Serializable[]) invokeMethod(actual, "readRow", new Class[]{List.class, MySQLPacketPayload.class}, new Object[]{columnDefs, packetPayload});
-        assertThat(result[0], is(0L));
+        assertThat(((Serializable[]) Plugins.getMemberAccessor()
+                .invoke(MySQLBinlogRowsEventPacket.class.getDeclaredMethod("readRow", List.class, MySQLPacketPayload.class), actual, columnDefs, packetPayload))[0], is(0L));
     }
     
     private void assertBinlogRowsEventV1BeforeRows(final MySQLBinlogRowsEventPacket actual) {
@@ -87,11 +87,4 @@ public final class MySQLBinlogRowsEventPacketTest {
         verify(payload, never()).skipReserved(2);
         assertThat(actual.getColumnNumber(), is(1));
     }
-    
-    private static Object invokeMethod(final Object target, final String methodName, final Class<?>[] parameterTypes,
-                                       final Object[] parameterValues) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
-        Method method = target.getClass().getDeclaredMethod(methodName, parameterTypes);
-        method.setAccessible(true);
-        return method.invoke(target, parameterValues);
-    }
 }
diff --git a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/insert/values/InsertValueContextTest.java b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/insert/values/InsertValueContextTest.java
index 8683b175caa..1862a7bb614 100644
--- a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/insert/values/InsertValueContextTest.java
+++ b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/insert/values/InsertValueContextTest.java
@@ -25,9 +25,9 @@ import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.P
 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.ExpressionProjectionSegment;
 import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
 import org.junit.Test;
+import org.mockito.internal.configuration.plugins.Plugins;
 
 import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -36,24 +36,17 @@ import java.util.Optional;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertTrue;
 
 public final class InsertValueContextTest {
     
-    @SuppressWarnings("unchecked")
     @Test
     public void assertInstanceConstructedOk() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
-        Collection<ExpressionSegment> assignments = Collections.emptyList();
-        List<Object> params = Collections.emptyList();
-        int parametersOffset = 0;
-        InsertValueContext insertValueContext = new InsertValueContext(assignments, params, parametersOffset);
-        Method getValueExpressionsMethod = InsertValueContext.class.getDeclaredMethod("getValueExpressions", Collection.class);
-        getValueExpressionsMethod.setAccessible(true);
-        List<ExpressionSegment> getValueExpressionsResult = (List<ExpressionSegment>) getValueExpressionsMethod.invoke(insertValueContext, new Object[]{assignments});
-        assertThat(insertValueContext.getValueExpressions(), is(getValueExpressionsResult));
-        Method getParametersMethod = InsertValueContext.class.getDeclaredMethod("getParameters", List.class, int.class);
-        getParametersMethod.setAccessible(true);
-        List<Object> getParametersResult = (List<Object>) getParametersMethod.invoke(insertValueContext, new Object[]{params, parametersOffset});
-        assertThat(insertValueContext.getParameters(), is(getParametersResult));
+        InsertValueContext insertValueContext = new InsertValueContext(Collections.emptyList(), Collections.emptyList(), 0);
+        assertThat(insertValueContext.getValueExpressions(), is(
+                Plugins.getMemberAccessor().invoke(InsertValueContext.class.getDeclaredMethod("getValueExpressions", Collection.class), insertValueContext, Collections.emptyList())));
+        assertThat(insertValueContext.getParameters(), is(
+                Plugins.getMemberAccessor().invoke(InsertValueContext.class.getDeclaredMethod("getParameters", List.class, int.class), insertValueContext, Collections.emptyList(), 0)));
     }
     
     @Test
@@ -61,8 +54,9 @@ public final class InsertValueContextTest {
         Collection<ExpressionSegment> assignments = makeParameterMarkerExpressionSegment();
         String parameterValue = "test";
         InsertValueContext insertValueContext = new InsertValueContext(assignments, Collections.singletonList(parameterValue), 0);
-        Object valueFromInsertValueContext = insertValueContext.getLiteralValue(0).get();
-        assertThat(valueFromInsertValueContext, is(parameterValue));
+        Optional<Object> valueFromInsertValueContext = insertValueContext.getLiteralValue(0);
+        assertTrue(valueFromInsertValueContext.isPresent());
+        assertThat(valueFromInsertValueContext.get(), is(parameterValue));
     }
     
     @Test
@@ -83,8 +77,9 @@ public final class InsertValueContextTest {
         Object literalObject = new Object();
         Collection<ExpressionSegment> assignments = makeLiteralExpressionSegment(literalObject);
         InsertValueContext insertValueContext = new InsertValueContext(assignments, Collections.emptyList(), 0);
-        Object valueFromInsertValueContext = insertValueContext.getLiteralValue(0).get();
-        assertThat(valueFromInsertValueContext, is(literalObject));
+        Optional<Object> valueFromInsertValueContext = insertValueContext.getLiteralValue(0);
+        assertTrue(valueFromInsertValueContext.isPresent());
+        assertThat(valueFromInsertValueContext.get(), is(literalObject));
     }
     
     private Collection<ExpressionSegment> makeLiteralExpressionSegment(final Object literalObject) {
diff --git a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/insert/values/OnDuplicateUpdateContextTest.java b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/insert/values/OnDuplicateUpdateContextTest.java
index 521c224bfe1..09d42797e9c 100644
--- a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/insert/values/OnDuplicateUpdateContextTest.java
+++ b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/insert/values/OnDuplicateUpdateContextTest.java
@@ -27,9 +27,9 @@ import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.P
 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.SimpleExpressionSegment;
 import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
 import org.junit.Test;
+import org.mockito.internal.configuration.plugins.Plugins;
 
 import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -40,21 +40,13 @@ import static org.hamcrest.MatcherAssert.assertThat;
 
 public final class OnDuplicateUpdateContextTest {
     
-    @SuppressWarnings("unchecked")
     @Test
     public void assertInstanceConstructedOk() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
-        Collection<AssignmentSegment> assignments = Collections.emptyList();
-        List<Object> params = Collections.emptyList();
-        int parametersOffset = 0;
-        OnDuplicateUpdateContext onDuplicateUpdateContext = new OnDuplicateUpdateContext(assignments, params, parametersOffset);
-        Method getValueExpressionsMethod = OnDuplicateUpdateContext.class.getDeclaredMethod("getValueExpressions", Collection.class);
-        getValueExpressionsMethod.setAccessible(true);
-        List<ExpressionSegment> getValueExpressionsResult = (List<ExpressionSegment>) getValueExpressionsMethod.invoke(onDuplicateUpdateContext, new Object[]{assignments});
-        assertThat(onDuplicateUpdateContext.getValueExpressions(), is(getValueExpressionsResult));
-        Method getParametersMethod = OnDuplicateUpdateContext.class.getDeclaredMethod("getParameters", List.class, int.class);
-        getParametersMethod.setAccessible(true);
-        List<Object> getParametersResult = (List<Object>) getParametersMethod.invoke(onDuplicateUpdateContext, new Object[]{params, parametersOffset});
-        assertThat(onDuplicateUpdateContext.getParameters(), is(getParametersResult));
+        OnDuplicateUpdateContext onDuplicateUpdateContext = new OnDuplicateUpdateContext(Collections.emptyList(), Collections.emptyList(), 0);
+        assertThat(onDuplicateUpdateContext.getValueExpressions(), is(Plugins.getMemberAccessor()
+                .invoke(OnDuplicateUpdateContext.class.getDeclaredMethod("getValueExpressions", Collection.class), onDuplicateUpdateContext, Collections.emptyList())));
+        assertThat(onDuplicateUpdateContext.getParameters(), is(Plugins.getMemberAccessor()
+                .invoke(OnDuplicateUpdateContext.class.getDeclaredMethod("getParameters", List.class, int.class), onDuplicateUpdateContext, Collections.emptyList(), 0)));
     }
     
     @Test
@@ -63,8 +55,7 @@ public final class OnDuplicateUpdateContextTest {
         String parameterValue1 = "test1";
         String parameterValue2 = "test2";
         List<Object> params = Arrays.asList(parameterValue1, parameterValue2);
-        int parametersOffset = 0;
-        OnDuplicateUpdateContext onDuplicateUpdateContext = new OnDuplicateUpdateContext(assignments, params, parametersOffset);
+        OnDuplicateUpdateContext onDuplicateUpdateContext = new OnDuplicateUpdateContext(assignments, params, 0);
         Object valueFromInsertValueContext1 = onDuplicateUpdateContext.getValue(0);
         assertThat(valueFromInsertValueContext1, is(parameterValue1));
         Object valueFromInsertValueContext2 = onDuplicateUpdateContext.getValue(1);
@@ -83,8 +74,7 @@ public final class OnDuplicateUpdateContextTest {
     public void assertGetValueWhenLiteralExpressionSegment() {
         Object literalObject = new Object();
         Collection<AssignmentSegment> assignments = createLiteralExpressionSegment(literalObject);
-        List<Object> params = Collections.emptyList();
-        OnDuplicateUpdateContext onDuplicateUpdateContext = new OnDuplicateUpdateContext(assignments, params, 0);
+        OnDuplicateUpdateContext onDuplicateUpdateContext = new OnDuplicateUpdateContext(assignments, Collections.emptyList(), 0);
         Object valueFromInsertValueContext = onDuplicateUpdateContext.getValue(0);
         assertThat(valueFromInsertValueContext, is(literalObject));
     }
@@ -115,8 +105,7 @@ public final class OnDuplicateUpdateContextTest {
     public void assertGetColumn() {
         Object literalObject = new Object();
         Collection<AssignmentSegment> assignments = createLiteralExpressionSegment(literalObject);
-        List<Object> params = Collections.emptyList();
-        OnDuplicateUpdateContext onDuplicateUpdateContext = new OnDuplicateUpdateContext(assignments, params, 0);
+        OnDuplicateUpdateContext onDuplicateUpdateContext = new OnDuplicateUpdateContext(assignments, Collections.emptyList(), 0);
         ColumnSegment column = onDuplicateUpdateContext.getColumn(0);
         assertThat(column, is(assignments.iterator().next().getColumns().get(0)));
     }
diff --git a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/MySQLIncrementalDumperTest.java b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/MySQLIncrementalDumperTest.java
index 1e97aeaca6c..0f5397b9e4d 100644
--- a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/MySQLIncrementalDumperTest.java
+++ b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/MySQLIncrementalDumperTest.java
@@ -45,16 +45,14 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
+import org.mockito.internal.configuration.plugins.Plugins;
 import org.mockito.junit.MockitoJUnitRunner;
 
 import javax.sql.DataSource;
-import java.io.Serializable;
-import java.lang.reflect.Method;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.Statement;
 import java.sql.Types;
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
@@ -84,8 +82,7 @@ public final class MySQLIncrementalDumperTest {
         channel = new MultiplexMemoryPipelineChannel();
         PipelineTableMetaDataLoader metaDataLoader = new StandardPipelineTableMetaDataLoader(dataSourceManager.getDataSource(dumperConfig.getDataSourceConfig()));
         incrementalDumper = new MySQLIncrementalDumper(dumperConfig, new BinlogPosition("binlog-000001", 4L), channel, metaDataLoader);
-        PipelineColumnMetaData column = new PipelineColumnMetaData(1, "test", Types.INTEGER, "INTEGER", true, true, true);
-        when(pipelineTableMetaData.getColumnMetaData(anyInt())).thenReturn(column);
+        when(pipelineTableMetaData.getColumnMetaData(anyInt())).thenReturn(new PipelineColumnMetaData(1, "test", Types.INTEGER, "INTEGER", true, true, true));
     }
     
     private DumperConfiguration mockDumperConfiguration() {
@@ -114,79 +111,63 @@ public final class MySQLIncrementalDumperTest {
     }
     
     @Test
-    public void assertWriteRowsEvent() {
+    public void assertWriteRowsEvent() throws ReflectiveOperationException {
         WriteRowsEvent rowsEvent = new WriteRowsEvent();
         rowsEvent.setDatabaseName("");
         rowsEvent.setTableName("t_order");
-        List<Serializable[]> rows = new ArrayList<>(1);
-        rows.add(new String[]{"1", "order"});
-        rowsEvent.setAfterRows(rows);
-        invokeMethod(incrementalDumper, "handleWriteRowsEvent", new Class[]{WriteRowsEvent.class, PipelineTableMetaData.class}, new Object[]{rowsEvent, pipelineTableMetaData});
-        List<Record> records = channel.fetchRecords(1, 0);
-        assertThat(records.size(), is(1));
-        assertThat(records.get(0), instanceOf(DataRecord.class));
-        assertThat(((DataRecord) records.get(0)).getType(), is(IngestDataChangeType.INSERT));
+        rowsEvent.setAfterRows(Collections.singletonList(new String[]{"1", "order"}));
+        Plugins.getMemberAccessor().invoke(
+                MySQLIncrementalDumper.class.getDeclaredMethod("handleWriteRowsEvent", WriteRowsEvent.class, PipelineTableMetaData.class), incrementalDumper, rowsEvent, pipelineTableMetaData);
+        List<Record> actual = channel.fetchRecords(1, 0);
+        assertThat(actual.size(), is(1));
+        assertThat(actual.get(0), instanceOf(DataRecord.class));
+        assertThat(((DataRecord) actual.get(0)).getType(), is(IngestDataChangeType.INSERT));
     }
     
     @Test
-    public void assertUpdateRowsEvent() {
+    public void assertUpdateRowsEvent() throws ReflectiveOperationException {
         UpdateRowsEvent rowsEvent = new UpdateRowsEvent();
         rowsEvent.setDatabaseName("");
         rowsEvent.setTableName("t_order");
-        List<Serializable[]> beforeRows = new ArrayList<>(1);
-        beforeRows.add(new String[]{"1", "order_old"});
-        List<Serializable[]> afterRows = new ArrayList<>(1);
-        afterRows.add(new String[]{"1", "order_new"});
-        rowsEvent.setBeforeRows(beforeRows);
-        rowsEvent.setAfterRows(afterRows);
-        invokeMethod(incrementalDumper, "handleUpdateRowsEvent", new Class[]{UpdateRowsEvent.class, PipelineTableMetaData.class}, new Object[]{rowsEvent, pipelineTableMetaData});
-        List<Record> records = channel.fetchRecords(1, 0);
-        assertThat(records.size(), is(1));
-        assertThat(records.get(0), instanceOf(DataRecord.class));
-        assertThat(((DataRecord) records.get(0)).getType(), is(IngestDataChangeType.UPDATE));
+        rowsEvent.setBeforeRows(Collections.singletonList(new String[]{"1", "order_old"}));
+        rowsEvent.setAfterRows(Collections.singletonList(new String[]{"1", "order_new"}));
+        Plugins.getMemberAccessor().invoke(
+                MySQLIncrementalDumper.class.getDeclaredMethod("handleUpdateRowsEvent", UpdateRowsEvent.class, PipelineTableMetaData.class), incrementalDumper, rowsEvent, pipelineTableMetaData);
+        List<Record> actual = channel.fetchRecords(1, 0);
+        assertThat(actual.size(), is(1));
+        assertThat(actual.get(0), instanceOf(DataRecord.class));
+        assertThat(((DataRecord) actual.get(0)).getType(), is(IngestDataChangeType.UPDATE));
     }
     
     @Test
-    public void assertDeleteRowsEvent() {
+    public void assertDeleteRowsEvent() throws ReflectiveOperationException {
         DeleteRowsEvent rowsEvent = new DeleteRowsEvent();
         rowsEvent.setDatabaseName("");
         rowsEvent.setTableName("t_order");
-        List<Serializable[]> rows = new ArrayList<>(1);
-        rows.add(new String[]{"1", "order"});
-        rowsEvent.setBeforeRows(rows);
-        invokeMethod(incrementalDumper, "handleDeleteRowsEvent", new Class[]{DeleteRowsEvent.class, PipelineTableMetaData.class}, new Object[]{rowsEvent, pipelineTableMetaData});
-        List<Record> records = channel.fetchRecords(1, 0);
-        assertThat(records.size(), is(1));
-        assertThat(records.get(0), instanceOf(DataRecord.class));
-        assertThat(((DataRecord) records.get(0)).getType(), is(IngestDataChangeType.DELETE));
+        rowsEvent.setBeforeRows(Collections.singletonList(new String[]{"1", "order"}));
+        Plugins.getMemberAccessor().invoke(
+                MySQLIncrementalDumper.class.getDeclaredMethod("handleDeleteRowsEvent", DeleteRowsEvent.class, PipelineTableMetaData.class), incrementalDumper, rowsEvent, pipelineTableMetaData);
+        List<Record> actual = channel.fetchRecords(1, 0);
+        assertThat(actual.size(), is(1));
+        assertThat(actual.get(0), instanceOf(DataRecord.class));
+        assertThat(((DataRecord) actual.get(0)).getType(), is(IngestDataChangeType.DELETE));
     }
     
     @Test
-    public void assertPlaceholderEvent() {
-        invokeHandleEvent(new PlaceholderEvent());
-        List<Record> records = channel.fetchRecords(1, 0);
-        assertThat(records.size(), is(1));
-        assertThat(records.get(0), instanceOf(PlaceholderRecord.class));
+    public void assertPlaceholderEvent() throws ReflectiveOperationException {
+        Plugins.getMemberAccessor().invoke(MySQLIncrementalDumper.class.getDeclaredMethod("handleEvent", AbstractBinlogEvent.class), incrementalDumper, new PlaceholderEvent());
+        List<Record> actual = channel.fetchRecords(1, 0);
+        assertThat(actual.size(), is(1));
+        assertThat(actual.get(0), instanceOf(PlaceholderRecord.class));
     }
     
     @Test
-    public void assertRowsEventFiltered() {
+    public void assertRowsEventFiltered() throws ReflectiveOperationException {
         WriteRowsEvent rowsEvent = new WriteRowsEvent();
         rowsEvent.setDatabaseName("unknown_database");
-        invokeHandleEvent(rowsEvent);
-        List<Record> records = channel.fetchRecords(1, 0);
-        assertThat(records.size(), is(1));
-        assertThat(records.get(0), instanceOf(PlaceholderRecord.class));
-    }
-    
-    private void invokeHandleEvent(final AbstractBinlogEvent event) {
-        invokeMethod(incrementalDumper, "handleEvent", new Class[]{AbstractBinlogEvent.class}, new Object[]{event});
-    }
-    
-    @SneakyThrows(ReflectiveOperationException.class)
-    private Object invokeMethod(final Object target, final String methodName, final Class<?>[] parameterTypes, final Object[] parameterValues) {
-        Method method = target.getClass().getDeclaredMethod(methodName, parameterTypes);
-        method.setAccessible(true);
-        return method.invoke(target, parameterValues);
+        Plugins.getMemberAccessor().invoke(MySQLIncrementalDumper.class.getDeclaredMethod("handleEvent", AbstractBinlogEvent.class), incrementalDumper, rowsEvent);
+        List<Record> actual = channel.fetchRecords(1, 0);
+        assertThat(actual.size(), is(1));
+        assertThat(actual.get(0), instanceOf(PlaceholderRecord.class));
     }
 }
diff --git a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/fixture/OpenGaussAuthenticationAlgorithm.java b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/fixture/OpenGaussAuthenticationAlgorithm.java
index 52df5558210..241208c2c11 100644
--- a/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/fixture/OpenGaussAuthenticationAlgorithm.java
+++ b/proxy/frontend/opengauss/src/test/java/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/fixture/OpenGaussAuthenticationAlgorithm.java
@@ -21,8 +21,8 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import lombok.SneakyThrows;
 import org.apache.shardingsphere.proxy.frontend.opengauss.authentication.OpenGaussAuthenticationHandler;
+import org.mockito.internal.configuration.plugins.Plugins;
 
-import java.lang.reflect.Method;
 import java.nio.charset.StandardCharsets;
 
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
@@ -51,44 +51,31 @@ public final class OpenGaussAuthenticationAlgorithm {
     
     @SneakyThrows(ReflectiveOperationException.class)
     private static byte[] generateKFromPBKDF2(final String password, final String saltString, final int serverIteration) {
-        Method generateKFromPBKDF2Method = OpenGaussAuthenticationHandler.class.getDeclaredMethod("generateKFromPBKDF2", String.class, String.class, int.class);
-        generateKFromPBKDF2Method.setAccessible(true);
-        return (byte[]) generateKFromPBKDF2Method.invoke(null, password, saltString, serverIteration);
+        return (byte[]) Plugins.getMemberAccessor().invoke(OpenGaussAuthenticationHandler.class.getDeclaredMethod("generateKFromPBKDF2", String.class, String.class, int.class),
+                OpenGaussAuthenticationHandler.class, password, saltString, serverIteration);
     }
     
     @SneakyThrows(ReflectiveOperationException.class)
     private static byte[] getKeyFromHmac(final byte[] key, final byte[] data) {
-        Method getKeyFromHmacMethod = OpenGaussAuthenticationHandler.class.getDeclaredMethod("getKeyFromHmac", byte[].class, byte[].class);
-        getKeyFromHmacMethod.setAccessible(true);
-        return (byte[]) getKeyFromHmacMethod.invoke(null, key, data);
+        return (byte[]) Plugins.getMemberAccessor().invoke(
+                OpenGaussAuthenticationHandler.class.getDeclaredMethod("getKeyFromHmac", byte[].class, byte[].class), OpenGaussAuthenticationHandler.class, key, data);
     }
     
     @SneakyThrows(ReflectiveOperationException.class)
     private static byte[] sha256(final byte[] str) {
-        Method sha256Method = OpenGaussAuthenticationHandler.class.getDeclaredMethod("sha256", byte[].class);
-        sha256Method.setAccessible(true);
-        return (byte[]) sha256Method.invoke(null, str);
+        return (byte[]) Plugins.getMemberAccessor().invoke(OpenGaussAuthenticationHandler.class.getDeclaredMethod("sha256", byte[].class), OpenGaussAuthenticationHandler.class, new Object[]{str});
     }
     
     @SneakyThrows(ReflectiveOperationException.class)
     private static byte[] hexStringToBytes(final String rawHexString) {
-        Method hexStringToBytesMethod = OpenGaussAuthenticationHandler.class.getDeclaredMethod("hexStringToBytes", String.class);
-        hexStringToBytesMethod.setAccessible(true);
-        return (byte[]) hexStringToBytesMethod.invoke(null, rawHexString);
-    }
-    
-    @SneakyThrows(ReflectiveOperationException.class)
-    private static byte[] calculateH2(final String password, final String random64code, final String token, final int serverIteration) {
-        Method calculateH2Method = OpenGaussAuthenticationHandler.class.getDeclaredMethod("calculateH2", String.class, String.class, String.class, int.class);
-        calculateH2Method.setAccessible(true);
-        return (byte[]) calculateH2Method.invoke(null, password, random64code, token, serverIteration);
+        return (byte[]) Plugins.getMemberAccessor().invoke(
+                OpenGaussAuthenticationHandler.class.getDeclaredMethod("hexStringToBytes", String.class), OpenGaussAuthenticationHandler.class, rawHexString);
     }
     
     @SneakyThrows(ReflectiveOperationException.class)
     private static byte[] xor(final byte[] value1, final byte[] value2) {
-        Method xorMethod = OpenGaussAuthenticationHandler.class.getDeclaredMethod("xor", byte[].class, byte[].class);
-        xorMethod.setAccessible(true);
-        return (byte[]) xorMethod.invoke(null, value1, value2);
+        return (byte[]) Plugins.getMemberAccessor().invoke(
+                OpenGaussAuthenticationHandler.class.getDeclaredMethod("xor", byte[].class, byte[].class), OpenGaussAuthenticationHandler.class, value1, value2);
     }
     
     private static void bytesToHex(final byte[] bytes, final byte[] hex, final int offset, final int length) {
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 0c9f6c405bd..6e2f7727200 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
@@ -29,7 +29,6 @@ import org.apache.shardingsphere.authority.rule.builder.AuthorityRuleBuilder;
 import org.apache.shardingsphere.db.protocol.CommonConstants;
 import org.apache.shardingsphere.db.protocol.payload.PacketPayload;
 import org.apache.shardingsphere.db.protocol.postgresql.packet.handshake.authentication.PostgreSQLMD5PasswordAuthenticationPacket;
-import org.apache.shardingsphere.db.protocol.postgresql.packet.identifier.PostgreSQLIdentifierPacket;
 import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacketPayload;
 import org.apache.shardingsphere.dialect.postgresql.exception.authority.EmptyUsernameException;
 import org.apache.shardingsphere.dialect.postgresql.exception.authority.InvalidPasswordException;
@@ -53,11 +52,11 @@ import org.junit.runner.RunWith;
 import org.mockito.Answers;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
+import org.mockito.internal.configuration.plugins.Plugins;
 import org.mockito.internal.util.reflection.FieldReader;
 import org.mockito.internal.util.reflection.InstanceField;
 import org.mockito.junit.MockitoJUnitRunner;
 
-import java.lang.reflect.Method;
 import java.nio.charset.StandardCharsets;
 import java.util.Collections;
 import java.util.LinkedHashMap;
@@ -135,12 +134,11 @@ public final class PostgreSQLAuthenticationEngineTest extends ProxyContextRestor
     
     @Test
     public void assertGetIdentifierPacket() throws ReflectiveOperationException {
-        Method method = PostgreSQLAuthenticationEngine.class.getDeclaredMethod("getIdentifierPacket", String.class);
-        method.setAccessible(true);
-        PostgreSQLIdentifierPacket packet = (PostgreSQLIdentifierPacket) method.invoke(new PostgreSQLAuthenticationEngine(), username);
-        assertThat(packet, instanceOf(PostgreSQLMD5PasswordAuthenticationPacket.class));
+        assertThat(Plugins.getMemberAccessor().invoke(PostgreSQLAuthenticationEngine.class.getDeclaredMethod("getIdentifierPacket", String.class), new PostgreSQLAuthenticationEngine(), username),
+                instanceOf(PostgreSQLMD5PasswordAuthenticationPacket.class));
     }
     
+    @SneakyThrows(ReflectiveOperationException.class)
     private void assertLogin(final String inputPassword) {
         PostgreSQLPacketPayload payload = new PostgreSQLPacketPayload(createByteBuf(16, 128), StandardCharsets.UTF_8);
         payload.writeInt4(64);
@@ -158,7 +156,8 @@ public final class PostgreSQLAuthenticationEngineTest extends ProxyContextRestor
         PostgreSQLMD5PasswordAuthenticationPacket md5PasswordPacket = argumentCaptor.getValue();
         byte[] md5Salt = getMd5Salt(md5PasswordPacket);
         payload = new PostgreSQLPacketPayload(createByteBuf(16, 128), StandardCharsets.UTF_8);
-        String md5Digest = md5Encode(username, inputPassword, md5Salt);
+        String md5Digest = (String) Plugins.getMemberAccessor().invoke(PostgreSQLMD5PasswordAuthenticator.class.getDeclaredMethod("md5Encode", String.class, String.class, byte[].class),
+                new PostgreSQLMD5PasswordAuthenticator(), username, inputPassword, md5Salt);
         payload.writeInt1('p');
         payload.writeInt4(4 + md5Digest.length() + 1);
         payload.writeStringNul(md5Digest);
@@ -175,25 +174,18 @@ public final class PostgreSQLAuthenticationEngineTest extends ProxyContextRestor
     }
     
     private MetaDataContexts getMetaDataContexts(final ShardingSphereUser user) {
-        return new MetaDataContexts(mock(MetaDataPersistService.class),
-                new ShardingSphereMetaData(new LinkedHashMap<>(), buildGlobalRuleMetaData(user), new ConfigurationProperties(new Properties())));
+        return new MetaDataContexts(
+                mock(MetaDataPersistService.class), new ShardingSphereMetaData(new LinkedHashMap<>(), buildGlobalRuleMetaData(user), new ConfigurationProperties(new Properties())));
     }
     
     private ShardingSphereRuleMetaData buildGlobalRuleMetaData(final ShardingSphereUser user) {
         AuthorityRuleConfiguration ruleConfig = new AuthorityRuleConfiguration(Collections.singletonList(user), new AlgorithmConfiguration("ALL_PERMITTED", new Properties()));
         AuthorityRule rule = new AuthorityRuleBuilder().build(ruleConfig, Collections.emptyMap(), mock(InstanceContext.class), mock(ConfigurationProperties.class));
-        return new ShardingSphereRuleMetaData(Collections.singletonList(rule));
+        return new ShardingSphereRuleMetaData(Collections.singleton(rule));
     }
     
     @SneakyThrows(NoSuchFieldException.class)
     private byte[] getMd5Salt(final PostgreSQLMD5PasswordAuthenticationPacket md5PasswordPacket) {
         return (byte[]) new FieldReader(md5PasswordPacket, PostgreSQLMD5PasswordAuthenticationPacket.class.getDeclaredField("md5Salt")).read();
     }
-    
-    @SneakyThrows(ReflectiveOperationException.class)
-    private String md5Encode(final String username, final String password, final byte[] md5Salt) {
-        Method method = PostgreSQLMD5PasswordAuthenticator.class.getDeclaredMethod("md5Encode", String.class, String.class, byte[].class);
-        method.setAccessible(true);
-        return (String) method.invoke(new PostgreSQLMD5PasswordAuthenticator(), username, password, md5Salt);
-    }
 }
diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationHandlerTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationHandlerTest.java
index c8239ea6abd..b63bbaaf5f0 100644
--- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationHandlerTest.java
+++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationHandlerTest.java
@@ -48,8 +48,8 @@ import org.apache.shardingsphere.proxy.frontend.postgresql.authentication.authen
 import org.apache.shardingsphere.proxy.frontend.postgresql.authentication.authenticator.PostgreSQLMD5PasswordAuthenticator;
 import org.junit.Before;
 import org.junit.Test;
+import org.mockito.internal.configuration.plugins.Plugins;
 
-import java.lang.reflect.Method;
 import java.nio.charset.StandardCharsets;
 import java.util.Collections;
 import java.util.HashMap;
@@ -80,7 +80,7 @@ public final class PostgreSQLAuthenticationHandlerTest extends ProxyContextResto
     @Before
     public void init() {
         PostgreSQLPacketPayload payload = new PostgreSQLPacketPayload(createByteBuf(16, 128), StandardCharsets.UTF_8);
-        String md5Digest = md5Encode(username, password, md5Salt.getBytes(StandardCharsets.UTF_8));
+        String md5Digest = md5Encode(md5Salt.getBytes(StandardCharsets.UTF_8));
         payload.writeInt4(4 + md5Digest.length() + 1);
         payload.writeStringNul(md5Digest);
         passwordMessagePacket = new PostgreSQLPasswordMessagePacket(payload);
@@ -154,9 +154,8 @@ public final class PostgreSQLAuthenticationHandlerTest extends ProxyContextResto
     }
     
     @SneakyThrows(ReflectiveOperationException.class)
-    private String md5Encode(final String username, final String password, final byte[] md5Salt) {
-        Method method = PostgreSQLMD5PasswordAuthenticator.class.getDeclaredMethod("md5Encode", String.class, String.class, byte[].class);
-        method.setAccessible(true);
-        return (String) method.invoke(new PostgreSQLMD5PasswordAuthenticator(), username, password, md5Salt);
+    private String md5Encode(final byte[] md5Salt) {
+        return (String) Plugins.getMemberAccessor().invoke(PostgreSQLMD5PasswordAuthenticator.class.getDeclaredMethod("md5Encode", String.class, String.class, byte[].class),
+                new PostgreSQLMD5PasswordAuthenticator(), username, password, md5Salt);
     }
 }
diff --git a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/authenticator/PostgreSQLMD5PasswordAuthenticatorTest.java b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/authenticator/PostgreSQLMD5PasswordAuthenticatorTest.java
index f5b4890afdc..591cf63888e 100644
--- a/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/authenticator/PostgreSQLMD5PasswordAuthenticatorTest.java
+++ b/proxy/frontend/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/authenticator/PostgreSQLMD5PasswordAuthenticatorTest.java
@@ -22,12 +22,11 @@ import org.apache.shardingsphere.db.protocol.postgresql.constant.PostgreSQLAuthe
 import org.apache.shardingsphere.db.protocol.postgresql.packet.handshake.PostgreSQLRandomGenerator;
 import org.apache.shardingsphere.infra.metadata.user.ShardingSphereUser;
 import org.junit.Test;
-
-import java.lang.reflect.Method;
+import org.mockito.internal.configuration.plugins.Plugins;
 
 import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertFalse;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 public final class PostgreSQLMD5PasswordAuthenticatorTest {
@@ -47,15 +46,14 @@ public final class PostgreSQLMD5PasswordAuthenticatorTest {
     public void assertAuthenticate() {
         ShardingSphereUser user = new ShardingSphereUser(username, password, "");
         byte[] md5Salt = PostgreSQLRandomGenerator.getInstance().generateRandomBytes(4);
-        String md5Digest = md5Encode(username, password, md5Salt);
+        String md5Digest = md5Encode(md5Salt);
         assertTrue(authenticator.authenticate(user, new Object[]{md5Digest, md5Salt}));
         assertFalse(authenticator.authenticate(user, new Object[]{"wrong", md5Salt}));
     }
     
     @SneakyThrows(ReflectiveOperationException.class)
-    private String md5Encode(final String username, final String password, final byte[] md5Salt) {
-        Method method = PostgreSQLMD5PasswordAuthenticator.class.getDeclaredMethod("md5Encode", String.class, String.class, byte[].class);
-        method.setAccessible(true);
-        return (String) method.invoke(new PostgreSQLMD5PasswordAuthenticator(), username, password, md5Salt);
+    private String md5Encode(final byte[] md5Salt) {
+        return (String) Plugins.getMemberAccessor().invoke(PostgreSQLMD5PasswordAuthenticator.class.getDeclaredMethod("md5Encode", String.class, String.class, byte[].class),
+                new PostgreSQLMD5PasswordAuthenticator(), username, password, md5Salt);
     }
 }
diff --git a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/scenario/consistencycheck/ConsistencyCheckJobTest.java b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/scenario/consistencycheck/ConsistencyCheckJobTest.java
index 3eb9a5bc50d..d2e71f1edf2 100644
--- a/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/scenario/consistencycheck/ConsistencyCheckJobTest.java
+++ b/test/it/pipeline/src/test/java/org/apache/shardingsphere/test/it/data/pipeline/scenario/consistencycheck/ConsistencyCheckJobTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.test.it.data.pipeline.scenario.consistencycheck;
 
-import org.apache.shardingsphere.data.pipeline.api.config.job.ConsistencyCheckJobConfiguration;
 import org.apache.shardingsphere.data.pipeline.api.job.JobStatus;
 import org.apache.shardingsphere.data.pipeline.core.api.PipelineAPIFactory;
 import org.apache.shardingsphere.data.pipeline.core.job.AbstractPipelineJob;
@@ -25,15 +24,14 @@ import org.apache.shardingsphere.data.pipeline.core.job.progress.yaml.YamlConsis
 import org.apache.shardingsphere.data.pipeline.scenario.consistencycheck.ConsistencyCheckJob;
 import org.apache.shardingsphere.data.pipeline.scenario.consistencycheck.context.ConsistencyCheckJobItemContext;
 import org.apache.shardingsphere.data.pipeline.yaml.job.YamlConsistencyCheckJobConfiguration;
-import org.apache.shardingsphere.data.pipeline.yaml.job.YamlConsistencyCheckJobConfigurationSwapper;
 import org.apache.shardingsphere.elasticjob.api.ShardingContext;
 import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
 import org.apache.shardingsphere.test.it.data.pipeline.core.util.PipelineContextUtil;
 import org.junit.BeforeClass;
 import org.junit.Test;
+import org.mockito.internal.configuration.plugins.Plugins;
 
-import java.lang.reflect.Method;
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.Map;
 
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -48,25 +46,27 @@ public final class ConsistencyCheckJobTest {
     
     @Test
     public void assertBuildPipelineJobItemContext() throws ReflectiveOperationException {
-        YamlConsistencyCheckJobItemProgress jobItemProgress = new YamlConsistencyCheckJobItemProgress();
-        jobItemProgress.setStatus(JobStatus.RUNNING.name());
-        Map<String, Object> expectTableCheckPosition = new HashMap<>();
-        expectTableCheckPosition.put("t_order", 100);
-        jobItemProgress.setTableCheckPositions(expectTableCheckPosition);
         String checkJobId = "j0201001";
-        PipelineAPIFactory.getGovernanceRepositoryAPI().persistJobItemProgress(checkJobId, 0, YamlEngine.marshal(jobItemProgress));
-        ConsistencyCheckJobConfiguration jobConfig = new ConsistencyCheckJobConfiguration(checkJobId, "", null, null);
-        YamlConsistencyCheckJobConfiguration yamlJobConfig = new YamlConsistencyCheckJobConfigurationSwapper().swapToYamlConfiguration(jobConfig);
-        ShardingContext shardingContext = new ShardingContext(checkJobId, "", 1, YamlEngine.marshal(yamlJobConfig), 0, "");
+        Map<String, Object> expectTableCheckPosition = Collections.singletonMap("t_order", 100);
+        PipelineAPIFactory.getGovernanceRepositoryAPI().persistJobItemProgress(checkJobId, 0, YamlEngine.marshal(createYamlConsistencyCheckJobItemProgress(expectTableCheckPosition)));
         ConsistencyCheckJob consistencyCheckJob = new ConsistencyCheckJob();
-        invokeSetJobId(checkJobId, consistencyCheckJob);
-        ConsistencyCheckJobItemContext actualItemContext = consistencyCheckJob.buildPipelineJobItemContext(shardingContext);
-        assertThat(actualItemContext.getProgressContext().getTableCheckPositions(), is(expectTableCheckPosition));
+        Plugins.getMemberAccessor().invoke(AbstractPipelineJob.class.getDeclaredMethod("setJobId", String.class), consistencyCheckJob, checkJobId);
+        ConsistencyCheckJobItemContext actual = consistencyCheckJob.buildPipelineJobItemContext(
+                new ShardingContext(checkJobId, "", 1, YamlEngine.marshal(createYamlConsistencyCheckJobConfiguration(checkJobId)), 0, ""));
+        assertThat(actual.getProgressContext().getTableCheckPositions(), is(expectTableCheckPosition));
     }
     
-    private void invokeSetJobId(final String checkJobId, final ConsistencyCheckJob consistencyCheckJob) throws ReflectiveOperationException {
-        Method method = AbstractPipelineJob.class.getDeclaredMethod("setJobId", String.class);
-        method.setAccessible(true);
-        method.invoke(consistencyCheckJob, checkJobId);
+    private YamlConsistencyCheckJobItemProgress createYamlConsistencyCheckJobItemProgress(final Map<String, Object> expectTableCheckPosition) {
+        YamlConsistencyCheckJobItemProgress result = new YamlConsistencyCheckJobItemProgress();
+        result.setStatus(JobStatus.RUNNING.name());
+        result.setTableCheckPositions(expectTableCheckPosition);
+        return result;
+    }
+    
+    private YamlConsistencyCheckJobConfiguration createYamlConsistencyCheckJobConfiguration(final String checkJobId) {
+        YamlConsistencyCheckJobConfiguration result = new YamlConsistencyCheckJobConfiguration();
+        result.setJobId(checkJobId);
+        result.setParentJobId("");
+        return result;
     }
 }