Skip to content

Commit a6a7d3f

Browse files
committed
feat: support custom ClientResources in lettuce framework
Change-Id: I877035498887c35e8bc1a13e422979f948e43a3a
1 parent 9840ac0 commit a6a7d3f

File tree

6 files changed

+101
-6
lines changed

6 files changed

+101
-6
lines changed
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,23 @@
55

66
package io.opentelemetry.javaagent.instrumentation.lettuce.v5_1;
77

8+
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.implementsInterface;
89
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
910
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
1011
import static net.bytebuddy.matcher.ElementMatchers.isStatic;
1112
import static net.bytebuddy.matcher.ElementMatchers.named;
1213

13-
import io.lettuce.core.resource.DefaultClientResources;
14+
import io.lettuce.core.resource.ClientResources;
1415
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
1516
import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
1617
import net.bytebuddy.asm.Advice;
1718
import net.bytebuddy.description.type.TypeDescription;
1819
import net.bytebuddy.matcher.ElementMatcher;
1920

20-
public class DefaultClientResourcesInstrumentation implements TypeInstrumentation {
21+
public class ClientResourcesInstrumentation implements TypeInstrumentation {
2122
@Override
2223
public ElementMatcher<TypeDescription> typeMatcher() {
23-
return named("io.lettuce.core.resource.DefaultClientResources");
24-
}
24+
return implementsInterface(named("io.lettuce.core.resource.ClientResources")); }
2525

2626
@Override
2727
public void transform(TypeTransformer transformer) {
@@ -34,7 +34,7 @@ public void transform(TypeTransformer transformer) {
3434
public static class BuilderAdvice {
3535

3636
@Advice.OnMethodExit(suppress = Throwable.class)
37-
public static void methodEnter(@Advice.Return DefaultClientResources.Builder builder) {
37+
public static void methodEnter(@Advice.Return ClientResources.Builder builder) {
3838
builder.tracing(TracingHolder.TRACING);
3939
}
4040
}

instrumentation/lettuce/lettuce-5.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/lettuce/v5_1/LettuceInstrumentationModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public boolean isHelperClass(String className) {
3636
@Override
3737
public List<TypeInstrumentation> typeInstrumentations() {
3838
return asList(
39-
new DefaultClientResourcesInstrumentation(), new LettuceAsyncCommandInstrumentation());
39+
new ClientResourcesInstrumentation(), new LettuceAsyncCommandInstrumentation());
4040
}
4141

4242
@Override
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.lettuce.v5_1;
7+
8+
import io.lettuce.core.RedisClient;
9+
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
10+
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
11+
import org.junit.jupiter.api.extension.RegisterExtension;
12+
13+
class CustomClientResourcesAsyncClientTest extends LettuceAsyncClientTest {
14+
15+
@RegisterExtension
16+
static final InstrumentationExtension testing = AgentInstrumentationExtension.create();
17+
18+
@Override
19+
public InstrumentationExtension testing() {
20+
return testing;
21+
}
22+
23+
@Override
24+
protected RedisClient createClient(String uri) {
25+
return RedisClient.create(CustomClientResources.create(), uri);
26+
}
27+
28+
@Override
29+
protected boolean connectHasSpans() {
30+
return Boolean.getBoolean("testLatestDeps");
31+
}
32+
}
33+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.lettuce.v5_1;
7+
8+
import io.lettuce.core.RedisClient;
9+
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
10+
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
11+
import org.junit.jupiter.api.extension.RegisterExtension;
12+
13+
class CustomClientResourcesReactiveClientTest extends LettuceReactiveClientTest {
14+
@RegisterExtension
15+
static final InstrumentationExtension testing = AgentInstrumentationExtension.create();
16+
17+
@Override
18+
public InstrumentationExtension testing() {
19+
return testing;
20+
}
21+
22+
@Override
23+
protected RedisClient createClient(String uri) {
24+
return RedisClient.create(CustomClientResources.create(), uri);
25+
}
26+
}
27+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.lettuce.v5_1;
7+
8+
import io.lettuce.core.RedisClient;
9+
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
10+
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
11+
import org.junit.jupiter.api.extension.RegisterExtension;
12+
13+
class CustomClientResourcesSyncClientTest extends LettuceSyncClientTest {
14+
@RegisterExtension
15+
static final InstrumentationExtension testing = AgentInstrumentationExtension.create();
16+
17+
@Override
18+
public InstrumentationExtension testing() {
19+
return testing;
20+
}
21+
22+
@Override
23+
protected RedisClient createClient(String uri) {
24+
return RedisClient.create(CustomClientResources.create(), uri);
25+
}
26+
}

instrumentation/lettuce/lettuce-5.1/testing/src/main/java/io/opentelemetry/instrumentation/lettuce/v5_1/AbstractLettuceClientTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import io.lettuce.core.RedisClient;
1111
import io.lettuce.core.api.StatefulRedisConnection;
12+
import io.lettuce.core.resource.DefaultClientResources;
1213
import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension;
1314
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
1415
import io.opentelemetry.sdk.testing.assertj.AttributeAssertion;
@@ -25,6 +26,14 @@
2526

2627
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
2728
public abstract class AbstractLettuceClientTest {
29+
30+
protected static class CustomClientResources extends DefaultClientResources {
31+
32+
protected CustomClientResources(Builder builder) {
33+
super(builder);
34+
}
35+
}
36+
2837
protected static final Logger logger = LoggerFactory.getLogger(AbstractLettuceClientTest.class);
2938

3039
private static final boolean COMMAND_ENCODING_EVENTS_ENABLED =

0 commit comments

Comments
 (0)