Skip to content

Commit

Permalink
Convert lettuce 5.1 SyncClientAuthTest from groovy to java (#10045)
Browse files Browse the repository at this point in the history
  • Loading branch information
jaydeluca authored Dec 12, 2023
1 parent 3213c86 commit 0973f33
Show file tree
Hide file tree
Showing 7 changed files with 135 additions and 126 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

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

import io.lettuce.core.RedisClient;
import io.opentelemetry.instrumentation.lettuce.v5_1.AbstractLettuceSyncClientTest;
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
import org.junit.jupiter.api.extension.RegisterExtension;

class LettuceSyncClientAuthTest extends AbstractLettuceSyncClientTest {
@RegisterExtension
static final InstrumentationExtension testing = AgentInstrumentationExtension.create();

@Override
public InstrumentationExtension getInstrumentationExtension() {
return testing;
}

@Override
protected RedisClient createClient(String uri) {
return RedisClient.create(uri);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.instrumentation.lettuce.v5_1;

import io.lettuce.core.RedisClient;
import io.lettuce.core.resource.ClientResources;
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
import io.opentelemetry.instrumentation.testing.junit.LibraryInstrumentationExtension;
import org.junit.jupiter.api.extension.RegisterExtension;

class LettuceSyncClientAuthTest extends AbstractLettuceSyncClientAuthTest {
@RegisterExtension
static InstrumentationExtension testing = LibraryInstrumentationExtension.create();

@Override
public InstrumentationExtension getInstrumentationExtension() {
return testing;
}

@Override
protected RedisClient createClient(String uri) {
return RedisClient.create(
ClientResources.builder()
.tracing(
LettuceTelemetry.create(getInstrumentationExtension().getOpenTelemetry())
.newTracing())
.build(),
uri);
}
}
2 changes: 0 additions & 2 deletions instrumentation/lettuce/lettuce-5.1/testing/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,5 @@ dependencies {
implementation("org.testcontainers:testcontainers")
implementation("com.google.guava:guava")

implementation("org.apache.groovy:groovy")
implementation("io.opentelemetry:opentelemetry-api")
implementation("org.spockframework:spock-core")
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.instrumentation.lettuce.v5_1;

import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
import static org.assertj.core.api.Assertions.assertThat;

import io.lettuce.core.api.sync.RedisCommands;
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.instrumentation.api.semconv.network.internal.NetworkAttributes;
import io.opentelemetry.semconv.SemanticAttributes;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;

public abstract class AbstractLettuceSyncClientAuthTest extends AbstractLettuceClientTest {

@BeforeAll
void setUp() {
redisServer = redisServer.withCommand("redis-server", "--requirepass password");
redisServer.start();

host = redisServer.getHost();
port = redisServer.getMappedPort(6379);
embeddedDbUri = "redis://" + host + ":" + port + "/" + DB_INDEX;

redisClient = createClient(embeddedDbUri);
redisClient.setOptions(LettuceTestUtil.CLIENT_OPTIONS);
}

@AfterAll
static void cleanUp() {
redisClient.shutdown();
redisServer.stop();

// Set back so other tests don't fail due to NOAUTH error
redisServer = redisServer.withCommand("redis-server", "--requirepass \"\"");
}

@Test
void testAuthCommand() throws Exception {
Class<?> commandsClass = RedisCommands.class;
java.lang.reflect.Method authMethod;
// the auth() argument type changed between 5.x -> 6.x
try {
authMethod = commandsClass.getMethod("auth", String.class);
} catch (NoSuchMethodException unused) {
authMethod = commandsClass.getMethod("auth", CharSequence.class);
}

String result = (String) authMethod.invoke(redisClient.connect().sync(), "password");

assertThat(result).isEqualTo("OK");

getInstrumentationExtension()
.waitAndAssertTraces(
trace ->
trace.hasSpansSatisfyingExactly(
span ->
span.hasName("AUTH")
.hasKind(SpanKind.CLIENT)
.hasAttributesSatisfyingExactly(
equalTo(SemanticAttributes.NETWORK_TYPE, "ipv4"),
equalTo(NetworkAttributes.NETWORK_PEER_ADDRESS, "127.0.0.1"),
equalTo(NetworkAttributes.NETWORK_PEER_PORT, port),
equalTo(SemanticAttributes.DB_SYSTEM, "redis"),
equalTo(SemanticAttributes.DB_STATEMENT, "AUTH ?"))
.hasEventsSatisfyingExactly(
event -> event.hasName("redis.encode.start"),
event -> event.hasName("redis.encode.end"))));
}
}

0 comments on commit 0973f33

Please sign in to comment.