You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2023/02/28 03:35:56 UTC

[shardingsphere] branch master updated: Use MockResourceAutoReleaseExtension on agent modules (#24367)

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

panjuan 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 a57e477722c Use MockResourceAutoReleaseExtension on agent modules (#24367)
a57e477722c is described below

commit a57e477722c27982b8610e744ce737c69ad7b546
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Tue Feb 28 11:35:47 2023 +0800

    Use MockResourceAutoReleaseExtension on agent modules (#24367)
---
 agent/plugins/metrics/core/pom.xml                 |  6 +++
 .../impl/proxy/ProxyMetaDataInfoExporterTest.java  | 23 +++++-----
 .../impl/proxy/ProxyStateExporterTest.java         | 26 +++++------
 .../PrometheusPluginLifecycleServiceTest.java      | 19 ++++----
 agent/plugins/tracing/test/pom.xml                 |  7 +++
 .../AbstractCommandExecutorTaskAdviceTest.java     | 53 ----------------------
 ...OpenTelemetryCommandExecutorTaskAdviceTest.java | 34 +++++++++++---
 .../OpenTracingCommandExecutorTaskAdviceTest.java  | 26 +++++++++--
 8 files changed, 97 insertions(+), 97 deletions(-)

diff --git a/agent/plugins/metrics/core/pom.xml b/agent/plugins/metrics/core/pom.xml
index 06def0fbf58..2616393d42b 100644
--- a/agent/plugins/metrics/core/pom.xml
+++ b/agent/plugins/metrics/core/pom.xml
@@ -87,6 +87,12 @@
             </exclusions>
         </dependency>
         
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-test-util</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
             <artifactId>shardingsphere-data-pipeline-distsql-statement</artifactId>
diff --git a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyMetaDataInfoExporterTest.java b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyMetaDataInfoExporterTest.java
index 12377fa6a1f..ef0611e9440 100644
--- a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyMetaDataInfoExporterTest.java
+++ b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyMetaDataInfoExporterTest.java
@@ -28,9 +28,11 @@ 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.context.ProxyContext;
+import org.apache.shardingsphere.test.mock.MockResourceAutoReleaseExtension;
+import org.apache.shardingsphere.test.mock.StaticMockSettings;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
-import org.mockito.MockedStatic;
+import org.junit.jupiter.api.extension.ExtendWith;
 
 import javax.sql.DataSource;
 import java.util.Collections;
@@ -42,9 +44,10 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockStatic;
 import static org.mockito.Mockito.when;
 
+@ExtendWith(MockResourceAutoReleaseExtension.class)
+@StaticMockSettings(ProxyContext.class)
 public final class ProxyMetaDataInfoExporterTest {
     
     @AfterEach
@@ -55,21 +58,17 @@ public final class ProxyMetaDataInfoExporterTest {
     
     @Test
     public void assertExportWithoutContextManager() {
-        try (MockedStatic<ProxyContext> proxyContext = mockStatic(ProxyContext.class, RETURNS_DEEP_STUBS)) {
-            proxyContext.when(() -> ProxyContext.getInstance().getContextManager()).thenReturn(null);
-            assertFalse(new ProxyMetaDataInfoExporter().export("FIXTURE").isPresent());
-        }
+        when(ProxyContext.getInstance().getContextManager()).thenReturn(null);
+        assertFalse(new ProxyMetaDataInfoExporter().export("FIXTURE").isPresent());
     }
     
     @Test
     public void assertExportWithContextManager() {
         ContextManager contextManager = mockContextManager();
-        try (MockedStatic<ProxyContext> proxyContext = mockStatic(ProxyContext.class, RETURNS_DEEP_STUBS)) {
-            proxyContext.when(() -> ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-            Optional<GaugeMetricFamilyMetricsCollector> collector = new ProxyMetaDataInfoExporter().export("FIXTURE");
-            assertTrue(collector.isPresent());
-            assertThat(collector.get().toString(), is("database_count=1, storage_unit_count=1"));
-        }
+        when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
+        Optional<GaugeMetricFamilyMetricsCollector> collector = new ProxyMetaDataInfoExporter().export("FIXTURE");
+        assertTrue(collector.isPresent());
+        assertThat(collector.get().toString(), is("database_count=1, storage_unit_count=1"));
     }
     
     private ContextManager mockContextManager() {
diff --git a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyStateExporterTest.java b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyStateExporterTest.java
index 0eb2d95456b..330b50281ef 100644
--- a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyStateExporterTest.java
+++ b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/proxy/ProxyStateExporterTest.java
@@ -36,9 +36,11 @@ import org.apache.shardingsphere.mode.manager.standalone.workerid.generator.Stan
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.test.mock.MockResourceAutoReleaseExtension;
+import org.apache.shardingsphere.test.mock.StaticMockSettings;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
-import org.mockito.MockedStatic;
+import org.junit.jupiter.api.extension.ExtendWith;
 
 import java.util.Collections;
 import java.util.Optional;
@@ -49,8 +51,10 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.when;
 
+@ExtendWith(MockResourceAutoReleaseExtension.class)
+@StaticMockSettings(ProxyContext.class)
 public final class ProxyStateExporterTest {
     
     @AfterEach
@@ -61,22 +65,18 @@ public final class ProxyStateExporterTest {
     
     @Test
     public void assertExportWithoutContextManager() {
-        try (MockedStatic<ProxyContext> proxyContext = mockStatic(ProxyContext.class, RETURNS_DEEP_STUBS)) {
-            proxyContext.when(() -> ProxyContext.getInstance().getContextManager()).thenReturn(null);
-            assertFalse(new ProxyStateExporter().export("FIXTURE").isPresent());
-        }
+        when(ProxyContext.getInstance().getContextManager()).thenReturn(null);
+        assertFalse(new ProxyStateExporter().export("FIXTURE").isPresent());
     }
     
     @Test
     public void assertExportWithContextManager() {
         ContextManager contextManager = mockContextManager();
-        try (MockedStatic<ProxyContext> proxyContext = mockStatic(ProxyContext.class, RETURNS_DEEP_STUBS)) {
-            proxyContext.when(() -> ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-            proxyContext.when(() -> ProxyContext.getInstance().getStateContext()).thenReturn(Optional.of(mock(StateContext.class, RETURNS_DEEP_STUBS)));
-            Optional<GaugeMetricFamilyMetricsCollector> collector = new ProxyStateExporter().export("FIXTURE");
-            assertTrue(collector.isPresent());
-            assertThat(collector.get().toString(), is("0"));
-        }
+        when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
+        when(ProxyContext.getInstance().getStateContext()).thenReturn(Optional.of(mock(StateContext.class, RETURNS_DEEP_STUBS)));
+        Optional<GaugeMetricFamilyMetricsCollector> collector = new ProxyStateExporter().export("FIXTURE");
+        assertTrue(collector.isPresent());
+        assertThat(collector.get().toString(), is("0"));
     }
     
     private ContextManager mockContextManager() {
diff --git a/agent/plugins/metrics/type/prometheus/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/prometheus/PrometheusPluginLifecycleServiceTest.java b/agent/plugins/metrics/type/prometheus/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/prometheus/PrometheusPluginLifecycleServiceTest.java
index 01bb5fe3582..8667f9e02a2 100644
--- a/agent/plugins/metrics/type/prometheus/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/prometheus/PrometheusPluginLifecycleServiceTest.java
+++ b/agent/plugins/metrics/type/prometheus/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/prometheus/PrometheusPluginLifecycleServiceTest.java
@@ -31,20 +31,23 @@ import org.apache.shardingsphere.mode.manager.standalone.workerid.generator.Stan
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.test.mock.MockResourceAutoReleaseExtension;
+import org.apache.shardingsphere.test.mock.StaticMockSettings;
 import org.apache.shardingsphere.test.util.PropertiesBuilder;
 import org.apache.shardingsphere.test.util.PropertiesBuilder.Property;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
-import org.mockito.MockedStatic;
+import org.junit.jupiter.api.extension.ExtendWith;
 
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.net.Socket;
 
-import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.when;
 
+@ExtendWith(MockResourceAutoReleaseExtension.class)
+@StaticMockSettings(ProxyContext.class)
 public final class PrometheusPluginLifecycleServiceTest {
     
     private final PrometheusPluginLifecycleService pluginLifecycleService = new PrometheusPluginLifecycleService();
@@ -57,12 +60,10 @@ public final class PrometheusPluginLifecycleServiceTest {
     @Test
     public void assertStart() throws IOException {
         ContextManager contextManager = mockContextManager();
-        try (MockedStatic<ProxyContext> proxyContext = mockStatic(ProxyContext.class, RETURNS_DEEP_STUBS)) {
-            proxyContext.when(() -> ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-            pluginLifecycleService.start(new PluginConfiguration("localhost", 8090, "", PropertiesBuilder.build(new Property("JVM_INFORMATION_COLLECTOR_ENABLED", Boolean.TRUE.toString()))), true);
-            try (Socket socket = new Socket()) {
-                socket.connect(new InetSocketAddress("localhost", 8090));
-            }
+        when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
+        pluginLifecycleService.start(new PluginConfiguration("localhost", 8090, "", PropertiesBuilder.build(new Property("JVM_INFORMATION_COLLECTOR_ENABLED", Boolean.TRUE.toString()))), true);
+        try (Socket socket = new Socket()) {
+            socket.connect(new InetSocketAddress("localhost", 8090));
         }
     }
     
diff --git a/agent/plugins/tracing/test/pom.xml b/agent/plugins/tracing/test/pom.xml
index 930ab64c195..405679e1939 100644
--- a/agent/plugins/tracing/test/pom.xml
+++ b/agent/plugins/tracing/test/pom.xml
@@ -45,6 +45,13 @@
             <scope>provided</scope>
         </dependency>
         
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-test-util</artifactId>
+            <version>${project.version}</version>
+            <scope>compile</scope>
+        </dependency>
+        
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
diff --git a/agent/plugins/tracing/test/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/advice/AbstractCommandExecutorTaskAdviceTest.java b/agent/plugins/tracing/test/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/advice/AbstractCommandExecutorTaskAdviceTest.java
deleted file mode 100644
index 91ebf3fdc7b..00000000000
--- a/agent/plugins/tracing/test/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/advice/AbstractCommandExecutorTaskAdviceTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.agent.plugin.tracing.advice;
-
-import io.netty.util.DefaultAttributeMap;
-import lombok.Getter;
-import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
-import org.apache.shardingsphere.agent.plugin.tracing.AgentExtension;
-import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
-import org.apache.shardingsphere.mode.manager.ContextManager;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import org.apache.shardingsphere.proxy.frontend.command.CommandExecutorTask;
-import org.apache.shardingsphere.transaction.api.TransactionType;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.MockedStatic;
-
-import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockStatic;
-
-@ExtendWith(AgentExtension.class)
-public abstract class AbstractCommandExecutorTaskAdviceTest implements AdviceTestBase {
-    
-    @Getter
-    private TargetAdviceObject targetObject;
-    
-    @SuppressWarnings("ConstantConditions")
-    @Override
-    public final void prepare() {
-        try (MockedStatic<ProxyContext> proxyContext = mockStatic(ProxyContext.class, RETURNS_DEEP_STUBS)) {
-            proxyContext.when(() -> ProxyContext.getInstance().getContextManager()).thenReturn(mock(ContextManager.class, RETURNS_DEEP_STUBS));
-            ConnectionSession connectionSession = new ConnectionSession(mock(MySQLDatabaseType.class), TransactionType.BASE, new DefaultAttributeMap());
-            Object executorTask = new CommandExecutorTask(null, connectionSession, null, null);
-            targetObject = (TargetAdviceObject) executorTask;
-        }
-    }
-}
diff --git a/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryCommandExecutorTaskAdviceTest.java b/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryCommandExecutorTaskAdviceTest.java
index 979168b81a6..b61460b391f 100644
--- a/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryCommandExecutorTaskAdviceTest.java
+++ b/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryCommandExecutorTaskAdviceTest.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.agent.plugin.tracing.opentelemetry.advice;
 
+import io.netty.util.DefaultAttributeMap;
 import io.opentelemetry.api.GlobalOpenTelemetry;
 import io.opentelemetry.api.common.AttributeKey;
 import io.opentelemetry.api.trace.StatusCode;
@@ -25,27 +26,48 @@ import io.opentelemetry.sdk.testing.exporter.InMemorySpanExporter;
 import io.opentelemetry.sdk.trace.SdkTracerProvider;
 import io.opentelemetry.sdk.trace.data.SpanData;
 import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
-import org.apache.shardingsphere.agent.plugin.tracing.advice.AbstractCommandExecutorTaskAdviceTest;
+import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
+import org.apache.shardingsphere.agent.plugin.tracing.AgentExtension;
 import org.apache.shardingsphere.agent.plugin.tracing.core.constant.AttributeConstants;
 import org.apache.shardingsphere.agent.plugin.tracing.opentelemetry.constant.OpenTelemetryConstants;
+import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
+import org.apache.shardingsphere.proxy.frontend.command.CommandExecutorTask;
+import org.apache.shardingsphere.test.mock.MockResourceAutoReleaseExtension;
+import org.apache.shardingsphere.test.mock.StaticMockSettings;
+import org.apache.shardingsphere.transaction.api.TransactionType;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 
 import java.io.IOException;
 import java.util.List;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
-public final class OpenTelemetryCommandExecutorTaskAdviceTest extends AbstractCommandExecutorTaskAdviceTest {
+@ExtendWith({AgentExtension.class, MockResourceAutoReleaseExtension.class})
+@StaticMockSettings(ProxyContext.class)
+public final class OpenTelemetryCommandExecutorTaskAdviceTest {
     
     private final InMemorySpanExporter testExporter = InMemorySpanExporter.create();
     
+    private TargetAdviceObject targetObject;
+    
     @BeforeEach
     public void setup() {
         SdkTracerProvider tracerProvider = SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(testExporter)).build();
         OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).buildAndRegisterGlobal().getTracer(OpenTelemetryConstants.TRACER_NAME);
+        when(ProxyContext.getInstance().getContextManager()).thenReturn(mock(ContextManager.class, RETURNS_DEEP_STUBS));
+        ConnectionSession connectionSession = new ConnectionSession(mock(MySQLDatabaseType.class), TransactionType.BASE, new DefaultAttributeMap());
+        Object executorTask = new CommandExecutorTask(null, connectionSession, null, null);
+        targetObject = (TargetAdviceObject) executorTask;
     }
     
     @AfterEach
@@ -57,8 +79,8 @@ public final class OpenTelemetryCommandExecutorTaskAdviceTest extends AbstractCo
     @Test
     public void assertMethod() {
         OpenTelemetryCommandExecutorTaskAdvice advice = new OpenTelemetryCommandExecutorTaskAdvice();
-        advice.beforeMethod(getTargetObject(), null, new Object[]{}, "OpenTelemetry");
-        advice.afterMethod(getTargetObject(), null, new Object[]{}, null, "OpenTelemetry");
+        advice.beforeMethod(targetObject, null, new Object[]{}, "OpenTelemetry");
+        advice.afterMethod(targetObject, null, new Object[]{}, null, "OpenTelemetry");
         List<SpanData> spanItems = testExporter.getFinishedSpanItems();
         assertThat(spanItems.size(), is(1));
         SpanData spanData = spanItems.get(0);
@@ -70,8 +92,8 @@ public final class OpenTelemetryCommandExecutorTaskAdviceTest extends AbstractCo
     @Test
     public void assertExceptionHandle() {
         OpenTelemetryCommandExecutorTaskAdvice advice = new OpenTelemetryCommandExecutorTaskAdvice();
-        advice.beforeMethod(getTargetObject(), null, new Object[]{}, "OpenTelemetry");
-        advice.onThrowing(getTargetObject(), null, new Object[]{}, new IOException(), "OpenTelemetry");
+        advice.beforeMethod(targetObject, null, new Object[]{}, "OpenTelemetry");
+        advice.onThrowing(targetObject, null, new Object[]{}, new IOException(), "OpenTelemetry");
         List<SpanData> spanItems = testExporter.getFinishedSpanItems();
         assertThat(spanItems.size(), is(1));
         SpanData spanData = spanItems.get(0);
diff --git a/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/OpenTracingCommandExecutorTaskAdviceTest.java b/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/OpenTracingCommandExecutorTaskAdviceTest.java
index dc905b92387..3ab477c8d48 100644
--- a/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/OpenTracingCommandExecutorTaskAdviceTest.java
+++ b/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/OpenTracingCommandExecutorTaskAdviceTest.java
@@ -18,18 +18,27 @@
 package org.apache.shardingsphere.agent.plugin.tracing.opentracing.advice;
 
 import io.netty.channel.ChannelHandlerContext;
+import io.netty.util.DefaultAttributeMap;
 import io.opentracing.mock.MockSpan;
 import io.opentracing.mock.MockSpan.LogEntry;
 import io.opentracing.mock.MockTracer;
 import io.opentracing.util.GlobalTracer;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
-import org.apache.shardingsphere.agent.plugin.tracing.advice.AbstractCommandExecutorTaskAdviceTest;
+import org.apache.shardingsphere.agent.plugin.tracing.AgentExtension;
 import org.apache.shardingsphere.agent.plugin.tracing.core.constant.AttributeConstants;
 import org.apache.shardingsphere.db.protocol.payload.PacketPayload;
+import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import org.apache.shardingsphere.proxy.frontend.command.CommandExecutorTask;
+import org.apache.shardingsphere.test.mock.MockResourceAutoReleaseExtension;
+import org.apache.shardingsphere.test.mock.StaticMockSettings;
+import org.apache.shardingsphere.transaction.api.TransactionType;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.internal.configuration.plugins.Plugins;
 
 import java.io.IOException;
@@ -41,8 +50,13 @@ import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
-public final class OpenTracingCommandExecutorTaskAdviceTest extends AbstractCommandExecutorTaskAdviceTest {
+@ExtendWith({AgentExtension.class, MockResourceAutoReleaseExtension.class})
+@StaticMockSettings(ProxyContext.class)
+public final class OpenTracingCommandExecutorTaskAdviceTest {
     
     private static final OpenTracingCommandExecutorTaskAdvice ADVICE = new OpenTracingCommandExecutorTaskAdvice();
     
@@ -50,6 +64,8 @@ public final class OpenTracingCommandExecutorTaskAdviceTest extends AbstractComm
     
     private static Method executeCommandMethod;
     
+    private TargetAdviceObject targetObject;
+    
     @BeforeAll
     public static void setup() throws ReflectiveOperationException {
         if (!GlobalTracer.isRegistered()) {
@@ -62,11 +78,14 @@ public final class OpenTracingCommandExecutorTaskAdviceTest extends AbstractComm
     @BeforeEach
     public void reset() {
         tracer.reset();
+        when(ProxyContext.getInstance().getContextManager()).thenReturn(mock(ContextManager.class, RETURNS_DEEP_STUBS));
+        ConnectionSession connectionSession = new ConnectionSession(mock(MySQLDatabaseType.class), TransactionType.BASE, new DefaultAttributeMap());
+        Object executorTask = new CommandExecutorTask(null, connectionSession, null, null);
+        targetObject = (TargetAdviceObject) executorTask;
     }
     
     @Test
     public void assertMethod() {
-        TargetAdviceObject targetObject = getTargetObject();
         ADVICE.beforeMethod(targetObject, executeCommandMethod, new Object[]{}, "OpenTracing");
         ADVICE.afterMethod(targetObject, executeCommandMethod, new Object[]{}, null, "OpenTracing");
         List<MockSpan> spans = tracer.finishedSpans();
@@ -79,7 +98,6 @@ public final class OpenTracingCommandExecutorTaskAdviceTest extends AbstractComm
     
     @Test
     public void assertExceptionHandle() {
-        TargetAdviceObject targetObject = getTargetObject();
         ADVICE.beforeMethod(targetObject, executeCommandMethod, new Object[]{}, "OpenTracing");
         ADVICE.onThrowing(targetObject, executeCommandMethod, new Object[]{}, new IOException(), "OpenTracing");
         List<MockSpan> spans = tracer.finishedSpans();