From 35d7a520c534aef51e627acbd2311ebdbe613f82 Mon Sep 17 00:00:00 2001 From: CharliePu Date: Thu, 25 Mar 2021 08:03:42 +0800 Subject: [PATCH] A unit test can be better. (#6620) --- .../v5/RedisChannelWriterInterceptorTest.java | 8 +++-- ...nterceptor.java => MockClientOptions.java} | 32 +++++++++++-------- .../v5/mock/MockRedisClusterClient.java | 31 +++--------------- 3 files changed, 29 insertions(+), 42 deletions(-) rename apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/lettuce/v5/mock/{MockRedisClusterClientConstructorInterceptor.java => MockClientOptions.java} (51%) diff --git a/apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/lettuce/v5/RedisChannelWriterInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/lettuce/v5/RedisChannelWriterInterceptorTest.java index 6cb512d2b7..36132331c2 100644 --- a/apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/lettuce/v5/RedisChannelWriterInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/lettuce/v5/RedisChannelWriterInterceptorTest.java @@ -33,8 +33,8 @@ import org.apache.skywalking.apm.agent.test.tools.AgentServiceRule; import org.apache.skywalking.apm.agent.test.tools.SegmentStorage; import org.apache.skywalking.apm.agent.test.tools.SegmentStoragePoint; import org.apache.skywalking.apm.agent.test.tools.TracingSegmentRunner; +import org.apache.skywalking.apm.plugin.lettuce.v5.mock.MockClientOptions; import org.apache.skywalking.apm.plugin.lettuce.v5.mock.MockRedisClusterClient; -import org.apache.skywalking.apm.plugin.lettuce.v5.mock.MockRedisClusterClientConstructorInterceptor; import org.hamcrest.CoreMatchers; import org.hamcrest.MatcherAssert; import org.hamcrest.core.Is; @@ -120,11 +120,13 @@ public class RedisChannelWriterInterceptorTest { redisURIs.add(RedisURI.create("localhost", i)); } MockRedisClusterClient mockRedisClusterClient = new MockRedisClusterClient(); - MockRedisClusterClientConstructorInterceptor constructorInterceptor = new MockRedisClusterClientConstructorInterceptor(); + MockClientOptions options = new MockClientOptions(); + mockRedisClusterClient.setOptions(options); + RedisClusterClientConstructorInterceptor constructorInterceptor = new RedisClusterClientConstructorInterceptor(); constructorInterceptor.onConstruct(mockRedisClusterClient, new Object[] { null, redisURIs }); - assertThat(mockRedisClusterClient.getOptions().getSkyWalkingDynamicField().toString().length(), Is.is(200)); + assertThat(options.getSkyWalkingDynamicField().toString().length(), Is.is(200)); } } diff --git a/apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/lettuce/v5/mock/MockRedisClusterClientConstructorInterceptor.java b/apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/lettuce/v5/mock/MockClientOptions.java similarity index 51% rename from apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/lettuce/v5/mock/MockRedisClusterClientConstructorInterceptor.java rename to apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/lettuce/v5/mock/MockClientOptions.java index 1e807afa86..cb2a89e6f1 100644 --- a/apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/lettuce/v5/mock/MockRedisClusterClientConstructorInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/lettuce/v5/mock/MockClientOptions.java @@ -18,22 +18,28 @@ package org.apache.skywalking.apm.plugin.lettuce.v5.mock; -import io.lettuce.core.RedisURI; +import io.lettuce.core.cluster.ClusterClientOptions; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; -import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor; -import org.apache.skywalking.apm.agent.core.context.util.PeerFormat; -public class MockRedisClusterClientConstructorInterceptor implements InstanceConstructorInterceptor { +public class MockClientOptions extends ClusterClientOptions implements EnhancedInstance { + + private Object object; + + public MockClientOptions() { + this(ClusterClientOptions.builder()); + } + + protected MockClientOptions(Builder builder) { + super(builder); + } + + @Override + public Object getSkyWalkingDynamicField() { + return object; + } @Override - public void onConstruct(EnhancedInstance objInst, Object[] allArguments) { - @SuppressWarnings("unchecked") Iterable redisURIs = (Iterable) allArguments[1]; - MockRedisClusterClient redisClusterClient = (MockRedisClusterClient) objInst; - StringBuilder peer = new StringBuilder(); - for (RedisURI redisURI : redisURIs) { - peer.append(redisURI.getHost()).append(":").append(redisURI.getPort()).append(";"); - } - EnhancedInstance optionsInst = redisClusterClient.getOptions(); - optionsInst.setSkyWalkingDynamicField(PeerFormat.shorten(peer.toString())); + public void setSkyWalkingDynamicField(Object value) { + this.object = value; } } diff --git a/apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/lettuce/v5/mock/MockRedisClusterClient.java b/apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/lettuce/v5/mock/MockRedisClusterClient.java index b0f584e58b..b97132b21d 100644 --- a/apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/lettuce/v5/mock/MockRedisClusterClient.java +++ b/apm-sniffer/apm-sdk-plugin/lettuce-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/lettuce/v5/mock/MockRedisClusterClient.java @@ -18,41 +18,20 @@ package org.apache.skywalking.apm.plugin.lettuce.v5.mock; +import io.lettuce.core.cluster.RedisClusterClient; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; -public class MockRedisClusterClient implements EnhancedInstance { +public class MockRedisClusterClient extends RedisClusterClient implements EnhancedInstance { - private Object ms; - - private EnhancedInstance options = new EnhancedInstance() { - private Object os; - - @Override - public Object getSkyWalkingDynamicField() { - return os; - } - - @Override - public void setSkyWalkingDynamicField(Object value) { - this.os = value; - } - }; - - public EnhancedInstance getOptions() { - return options; - } - - public void setOptions(EnhancedInstance options) { - this.options = options; - } + private Object object; @Override public Object getSkyWalkingDynamicField() { - return ms; + return object; } @Override public void setSkyWalkingDynamicField(Object value) { - this.ms = value; + this.object = value; } } -- GitLab