parent
7091719e96
commit
c9a04620f1
|
@ -1,137 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification
|
||||
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes
|
||||
import org.testcontainers.containers.GenericContainer
|
||||
import redis.clients.jedis.Jedis
|
||||
import spock.lang.Shared
|
||||
|
||||
import static io.opentelemetry.api.trace.SpanKind.CLIENT
|
||||
|
||||
class JedisClientTest extends AgentInstrumentationSpecification {
|
||||
|
||||
private static GenericContainer redisServer = new GenericContainer<>("redis:6.2.3-alpine").withExposedPorts(6379)
|
||||
|
||||
@Shared
|
||||
int port
|
||||
|
||||
@Shared
|
||||
Jedis jedis
|
||||
|
||||
def setupSpec() {
|
||||
redisServer.start()
|
||||
port = redisServer.getMappedPort(6379)
|
||||
jedis = new Jedis("localhost", port)
|
||||
}
|
||||
|
||||
def cleanupSpec() {
|
||||
redisServer.stop()
|
||||
// jedis.close() // not available in the early version we're using.
|
||||
}
|
||||
|
||||
def setup() {
|
||||
jedis.flushAll()
|
||||
clearExportedData()
|
||||
}
|
||||
|
||||
def "set command"() {
|
||||
when:
|
||||
jedis.set("foo", "bar")
|
||||
|
||||
then:
|
||||
assertTraces(1) {
|
||||
trace(0, 1) {
|
||||
span(0) {
|
||||
name "SET"
|
||||
kind CLIENT
|
||||
attributes {
|
||||
"$SemanticAttributes.DB_SYSTEM" "redis"
|
||||
"$SemanticAttributes.DB_STATEMENT" "SET foo ?"
|
||||
"$SemanticAttributes.DB_OPERATION" "SET"
|
||||
"$SemanticAttributes.NET_PEER_NAME" "localhost"
|
||||
"$SemanticAttributes.NET_PEER_PORT" port
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def "get command"() {
|
||||
when:
|
||||
jedis.set("foo", "bar")
|
||||
def value = jedis.get("foo")
|
||||
|
||||
then:
|
||||
value == "bar"
|
||||
|
||||
assertTraces(2) {
|
||||
trace(0, 1) {
|
||||
span(0) {
|
||||
name "SET"
|
||||
kind CLIENT
|
||||
attributes {
|
||||
"$SemanticAttributes.DB_SYSTEM" "redis"
|
||||
"$SemanticAttributes.DB_STATEMENT" "SET foo ?"
|
||||
"$SemanticAttributes.DB_OPERATION" "SET"
|
||||
"$SemanticAttributes.NET_PEER_NAME" "localhost"
|
||||
"$SemanticAttributes.NET_PEER_PORT" port
|
||||
}
|
||||
}
|
||||
}
|
||||
trace(1, 1) {
|
||||
span(0) {
|
||||
name "GET"
|
||||
kind CLIENT
|
||||
attributes {
|
||||
"$SemanticAttributes.DB_SYSTEM" "redis"
|
||||
"$SemanticAttributes.DB_STATEMENT" "GET foo"
|
||||
"$SemanticAttributes.DB_OPERATION" "GET"
|
||||
"$SemanticAttributes.NET_PEER_NAME" "localhost"
|
||||
"$SemanticAttributes.NET_PEER_PORT" port
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def "command with no arguments"() {
|
||||
when:
|
||||
jedis.set("foo", "bar")
|
||||
def value = jedis.randomKey()
|
||||
|
||||
then:
|
||||
value == "foo"
|
||||
|
||||
assertTraces(2) {
|
||||
trace(0, 1) {
|
||||
span(0) {
|
||||
name "SET"
|
||||
kind CLIENT
|
||||
attributes {
|
||||
"$SemanticAttributes.DB_SYSTEM" "redis"
|
||||
"$SemanticAttributes.DB_STATEMENT" "SET foo ?"
|
||||
"$SemanticAttributes.DB_OPERATION" "SET"
|
||||
"$SemanticAttributes.NET_PEER_NAME" "localhost"
|
||||
"$SemanticAttributes.NET_PEER_PORT" port
|
||||
}
|
||||
}
|
||||
}
|
||||
trace(1, 1) {
|
||||
span(0) {
|
||||
name "RANDOMKEY"
|
||||
kind CLIENT
|
||||
attributes {
|
||||
"$SemanticAttributes.DB_SYSTEM" "redis"
|
||||
"$SemanticAttributes.DB_STATEMENT" "RANDOMKEY"
|
||||
"$SemanticAttributes.DB_OPERATION" "RANDOMKEY"
|
||||
"$SemanticAttributes.NET_PEER_NAME" "localhost"
|
||||
"$SemanticAttributes.NET_PEER_PORT" port
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,133 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.jedis.v1_4;
|
||||
|
||||
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import io.opentelemetry.api.trace.SpanKind;
|
||||
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
|
||||
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
|
||||
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
import org.testcontainers.containers.GenericContainer;
|
||||
import redis.clients.jedis.Jedis;
|
||||
|
||||
class JedisClientTest {
|
||||
@RegisterExtension
|
||||
static final InstrumentationExtension testing = AgentInstrumentationExtension.create();
|
||||
|
||||
static GenericContainer<?> redisServer =
|
||||
new GenericContainer<>("redis:6.2.3-alpine").withExposedPorts(6379);
|
||||
|
||||
static int port;
|
||||
|
||||
static Jedis jedis;
|
||||
|
||||
@BeforeAll
|
||||
static void setupSpec() {
|
||||
redisServer.start();
|
||||
port = redisServer.getMappedPort(6379);
|
||||
jedis = new Jedis("localhost", port);
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
static void cleanupSpec() {
|
||||
redisServer.stop();
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
void setup() {
|
||||
jedis.flushAll();
|
||||
testing.clearData();
|
||||
}
|
||||
|
||||
@Test
|
||||
void setCommand() {
|
||||
jedis.set("foo", "bar");
|
||||
|
||||
testing.waitAndAssertTraces(
|
||||
trace ->
|
||||
trace.hasSpansSatisfyingExactly(
|
||||
span ->
|
||||
span.hasName("SET")
|
||||
.hasKind(SpanKind.CLIENT)
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(SemanticAttributes.DB_SYSTEM, "redis"),
|
||||
equalTo(SemanticAttributes.DB_STATEMENT, "SET foo ?"),
|
||||
equalTo(SemanticAttributes.DB_OPERATION, "SET"),
|
||||
equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"),
|
||||
equalTo(SemanticAttributes.NET_PEER_PORT, port))));
|
||||
}
|
||||
|
||||
@Test
|
||||
void getCommand() {
|
||||
jedis.set("foo", "bar");
|
||||
String value = jedis.get("foo");
|
||||
|
||||
assertThat(value).isEqualTo("bar");
|
||||
|
||||
testing.waitAndAssertTraces(
|
||||
trace ->
|
||||
trace.hasSpansSatisfyingExactly(
|
||||
span ->
|
||||
span.hasName("SET")
|
||||
.hasKind(SpanKind.CLIENT)
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(SemanticAttributes.DB_SYSTEM, "redis"),
|
||||
equalTo(SemanticAttributes.DB_STATEMENT, "SET foo ?"),
|
||||
equalTo(SemanticAttributes.DB_OPERATION, "SET"),
|
||||
equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"),
|
||||
equalTo(SemanticAttributes.NET_PEER_PORT, port))),
|
||||
trace ->
|
||||
trace.hasSpansSatisfyingExactly(
|
||||
span ->
|
||||
span.hasName("GET")
|
||||
.hasKind(SpanKind.CLIENT)
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(SemanticAttributes.DB_SYSTEM, "redis"),
|
||||
equalTo(SemanticAttributes.DB_STATEMENT, "GET foo"),
|
||||
equalTo(SemanticAttributes.DB_OPERATION, "GET"),
|
||||
equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"),
|
||||
equalTo(SemanticAttributes.NET_PEER_PORT, port))));
|
||||
}
|
||||
|
||||
@Test
|
||||
void commandWithNoArguments() {
|
||||
jedis.set("foo", "bar");
|
||||
String value = jedis.randomKey();
|
||||
|
||||
assertThat(value).isEqualTo("foo");
|
||||
|
||||
testing.waitAndAssertTraces(
|
||||
trace ->
|
||||
trace.hasSpansSatisfyingExactly(
|
||||
span ->
|
||||
span.hasName("SET")
|
||||
.hasKind(SpanKind.CLIENT)
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(SemanticAttributes.DB_SYSTEM, "redis"),
|
||||
equalTo(SemanticAttributes.DB_STATEMENT, "SET foo ?"),
|
||||
equalTo(SemanticAttributes.DB_OPERATION, "SET"),
|
||||
equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"),
|
||||
equalTo(SemanticAttributes.NET_PEER_PORT, port))),
|
||||
trace ->
|
||||
trace.hasSpansSatisfyingExactly(
|
||||
span ->
|
||||
span.hasName("RANDOMKEY")
|
||||
.hasKind(SpanKind.CLIENT)
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(SemanticAttributes.DB_SYSTEM, "redis"),
|
||||
equalTo(SemanticAttributes.DB_STATEMENT, "RANDOMKEY"),
|
||||
equalTo(SemanticAttributes.DB_OPERATION, "RANDOMKEY"),
|
||||
equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"),
|
||||
equalTo(SemanticAttributes.NET_PEER_PORT, port))));
|
||||
}
|
||||
}
|
|
@ -1,147 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification
|
||||
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes
|
||||
import org.testcontainers.containers.GenericContainer
|
||||
import redis.clients.jedis.Jedis
|
||||
import spock.lang.Shared
|
||||
|
||||
import static io.opentelemetry.api.trace.SpanKind.CLIENT
|
||||
|
||||
class Jedis30ClientTest extends AgentInstrumentationSpecification {
|
||||
|
||||
private static GenericContainer redisServer = new GenericContainer<>("redis:6.2.3-alpine").withExposedPorts(6379)
|
||||
|
||||
@Shared
|
||||
int port
|
||||
|
||||
@Shared
|
||||
Jedis jedis
|
||||
|
||||
def setupSpec() {
|
||||
redisServer.start()
|
||||
port = redisServer.getMappedPort(6379)
|
||||
jedis = new Jedis("localhost", port)
|
||||
}
|
||||
|
||||
def cleanupSpec() {
|
||||
redisServer.stop()
|
||||
jedis.close()
|
||||
}
|
||||
|
||||
def setup() {
|
||||
jedis.flushAll()
|
||||
clearExportedData()
|
||||
}
|
||||
|
||||
def "set command"() {
|
||||
when:
|
||||
jedis.set("foo", "bar")
|
||||
|
||||
then:
|
||||
assertTraces(1) {
|
||||
trace(0, 1) {
|
||||
span(0) {
|
||||
name "SET"
|
||||
kind CLIENT
|
||||
attributes {
|
||||
"$SemanticAttributes.DB_SYSTEM" "redis"
|
||||
"$SemanticAttributes.DB_STATEMENT" "SET foo ?"
|
||||
"$SemanticAttributes.DB_OPERATION" "SET"
|
||||
"$SemanticAttributes.NET_PEER_NAME" "localhost"
|
||||
"$SemanticAttributes.NET_PEER_PORT" port
|
||||
"$SemanticAttributes.NET_SOCK_PEER_ADDR" "127.0.0.1"
|
||||
"$SemanticAttributes.NET_TRANSPORT" SemanticAttributes.NetTransportValues.IP_TCP
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def "get command"() {
|
||||
when:
|
||||
jedis.set("foo", "bar")
|
||||
def value = jedis.get("foo")
|
||||
|
||||
then:
|
||||
value == "bar"
|
||||
|
||||
assertTraces(2) {
|
||||
trace(0, 1) {
|
||||
span(0) {
|
||||
name "SET"
|
||||
kind CLIENT
|
||||
attributes {
|
||||
"$SemanticAttributes.DB_SYSTEM" "redis"
|
||||
"$SemanticAttributes.DB_STATEMENT" "SET foo ?"
|
||||
"$SemanticAttributes.DB_OPERATION" "SET"
|
||||
"$SemanticAttributes.NET_PEER_NAME" "localhost"
|
||||
"$SemanticAttributes.NET_PEER_PORT" port
|
||||
"$SemanticAttributes.NET_SOCK_PEER_ADDR" "127.0.0.1"
|
||||
"$SemanticAttributes.NET_TRANSPORT" SemanticAttributes.NetTransportValues.IP_TCP
|
||||
}
|
||||
}
|
||||
}
|
||||
trace(1, 1) {
|
||||
span(0) {
|
||||
name "GET"
|
||||
kind CLIENT
|
||||
attributes {
|
||||
"$SemanticAttributes.DB_SYSTEM" "redis"
|
||||
"$SemanticAttributes.DB_STATEMENT" "GET foo"
|
||||
"$SemanticAttributes.DB_OPERATION" "GET"
|
||||
"$SemanticAttributes.NET_PEER_NAME" "localhost"
|
||||
"$SemanticAttributes.NET_PEER_PORT" port
|
||||
"$SemanticAttributes.NET_SOCK_PEER_ADDR" "127.0.0.1"
|
||||
"$SemanticAttributes.NET_TRANSPORT" SemanticAttributes.NetTransportValues.IP_TCP
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def "command with no arguments"() {
|
||||
when:
|
||||
jedis.set("foo", "bar")
|
||||
def value = jedis.randomKey()
|
||||
|
||||
then:
|
||||
value == "foo"
|
||||
|
||||
assertTraces(2) {
|
||||
trace(0, 1) {
|
||||
span(0) {
|
||||
name "SET"
|
||||
kind CLIENT
|
||||
attributes {
|
||||
"$SemanticAttributes.DB_SYSTEM" "redis"
|
||||
"$SemanticAttributes.DB_STATEMENT" "SET foo ?"
|
||||
"$SemanticAttributes.DB_OPERATION" "SET"
|
||||
"$SemanticAttributes.NET_PEER_NAME" "localhost"
|
||||
"$SemanticAttributes.NET_PEER_PORT" port
|
||||
"$SemanticAttributes.NET_SOCK_PEER_ADDR" "127.0.0.1"
|
||||
"$SemanticAttributes.NET_TRANSPORT" SemanticAttributes.NetTransportValues.IP_TCP
|
||||
}
|
||||
}
|
||||
}
|
||||
trace(1, 1) {
|
||||
span(0) {
|
||||
name "RANDOMKEY"
|
||||
kind CLIENT
|
||||
attributes {
|
||||
"$SemanticAttributes.DB_SYSTEM" "redis"
|
||||
"$SemanticAttributes.DB_STATEMENT" "RANDOMKEY"
|
||||
"$SemanticAttributes.DB_OPERATION" "RANDOMKEY"
|
||||
"$SemanticAttributes.NET_PEER_NAME" "localhost"
|
||||
"$SemanticAttributes.NET_PEER_PORT" port
|
||||
"$SemanticAttributes.NET_SOCK_PEER_ADDR" "127.0.0.1"
|
||||
"$SemanticAttributes.NET_TRANSPORT" SemanticAttributes.NetTransportValues.IP_TCP
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,154 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.jedis.v3_0;
|
||||
|
||||
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import io.opentelemetry.api.trace.SpanKind;
|
||||
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
|
||||
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
|
||||
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
import org.testcontainers.containers.GenericContainer;
|
||||
import redis.clients.jedis.Jedis;
|
||||
|
||||
class Jedis30ClientTest {
|
||||
@RegisterExtension
|
||||
static final InstrumentationExtension testing = AgentInstrumentationExtension.create();
|
||||
|
||||
static GenericContainer<?> redisServer =
|
||||
new GenericContainer<>("redis:6.2.3-alpine").withExposedPorts(6379);
|
||||
|
||||
static int port;
|
||||
|
||||
static Jedis jedis;
|
||||
|
||||
@BeforeAll
|
||||
static void setupSpec() {
|
||||
redisServer.start();
|
||||
port = redisServer.getMappedPort(6379);
|
||||
jedis = new Jedis("localhost", port);
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
static void cleanupSpec() {
|
||||
redisServer.stop();
|
||||
jedis.close();
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
void setup() {
|
||||
jedis.flushAll();
|
||||
testing.clearData();
|
||||
}
|
||||
|
||||
@Test
|
||||
void setCommand() {
|
||||
jedis.set("foo", "bar");
|
||||
|
||||
testing.waitAndAssertTraces(
|
||||
trace ->
|
||||
trace.hasSpansSatisfyingExactly(
|
||||
span ->
|
||||
span.hasName("SET")
|
||||
.hasKind(SpanKind.CLIENT)
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(SemanticAttributes.DB_SYSTEM, "redis"),
|
||||
equalTo(SemanticAttributes.DB_STATEMENT, "SET foo ?"),
|
||||
equalTo(SemanticAttributes.DB_OPERATION, "SET"),
|
||||
equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"),
|
||||
equalTo(SemanticAttributes.NET_PEER_PORT, port),
|
||||
equalTo(SemanticAttributes.NET_SOCK_PEER_ADDR, "127.0.0.1"),
|
||||
equalTo(
|
||||
SemanticAttributes.NET_TRANSPORT,
|
||||
SemanticAttributes.NetTransportValues.IP_TCP))));
|
||||
}
|
||||
|
||||
@Test
|
||||
void getCommand() {
|
||||
jedis.set("foo", "bar");
|
||||
String value = jedis.get("foo");
|
||||
|
||||
assertThat(value).isEqualTo("bar");
|
||||
|
||||
testing.waitAndAssertTraces(
|
||||
trace ->
|
||||
trace.hasSpansSatisfyingExactly(
|
||||
span ->
|
||||
span.hasName("SET")
|
||||
.hasKind(SpanKind.CLIENT)
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(SemanticAttributes.DB_SYSTEM, "redis"),
|
||||
equalTo(SemanticAttributes.DB_STATEMENT, "SET foo ?"),
|
||||
equalTo(SemanticAttributes.DB_OPERATION, "SET"),
|
||||
equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"),
|
||||
equalTo(SemanticAttributes.NET_PEER_PORT, port),
|
||||
equalTo(SemanticAttributes.NET_SOCK_PEER_ADDR, "127.0.0.1"),
|
||||
equalTo(
|
||||
SemanticAttributes.NET_TRANSPORT,
|
||||
SemanticAttributes.NetTransportValues.IP_TCP))),
|
||||
trace ->
|
||||
trace.hasSpansSatisfyingExactly(
|
||||
span ->
|
||||
span.hasName("GET")
|
||||
.hasKind(SpanKind.CLIENT)
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(SemanticAttributes.DB_SYSTEM, "redis"),
|
||||
equalTo(SemanticAttributes.DB_STATEMENT, "GET foo"),
|
||||
equalTo(SemanticAttributes.DB_OPERATION, "GET"),
|
||||
equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"),
|
||||
equalTo(SemanticAttributes.NET_PEER_PORT, port),
|
||||
equalTo(SemanticAttributes.NET_SOCK_PEER_ADDR, "127.0.0.1"),
|
||||
equalTo(
|
||||
SemanticAttributes.NET_TRANSPORT,
|
||||
SemanticAttributes.NetTransportValues.IP_TCP))));
|
||||
}
|
||||
|
||||
@Test
|
||||
void commandWithNoArguments() {
|
||||
jedis.set("foo", "bar");
|
||||
String value = jedis.randomKey();
|
||||
|
||||
assertThat(value).isEqualTo("foo");
|
||||
|
||||
testing.waitAndAssertTraces(
|
||||
trace ->
|
||||
trace.hasSpansSatisfyingExactly(
|
||||
span ->
|
||||
span.hasName("SET")
|
||||
.hasKind(SpanKind.CLIENT)
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(SemanticAttributes.DB_SYSTEM, "redis"),
|
||||
equalTo(SemanticAttributes.DB_STATEMENT, "SET foo ?"),
|
||||
equalTo(SemanticAttributes.DB_OPERATION, "SET"),
|
||||
equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"),
|
||||
equalTo(SemanticAttributes.NET_PEER_PORT, port),
|
||||
equalTo(SemanticAttributes.NET_SOCK_PEER_ADDR, "127.0.0.1"),
|
||||
equalTo(
|
||||
SemanticAttributes.NET_TRANSPORT,
|
||||
SemanticAttributes.NetTransportValues.IP_TCP))),
|
||||
trace ->
|
||||
trace.hasSpansSatisfyingExactly(
|
||||
span ->
|
||||
span.hasName("RANDOMKEY")
|
||||
.hasKind(SpanKind.CLIENT)
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(SemanticAttributes.DB_SYSTEM, "redis"),
|
||||
equalTo(SemanticAttributes.DB_STATEMENT, "RANDOMKEY"),
|
||||
equalTo(SemanticAttributes.DB_OPERATION, "RANDOMKEY"),
|
||||
equalTo(SemanticAttributes.NET_PEER_NAME, "localhost"),
|
||||
equalTo(SemanticAttributes.NET_PEER_PORT, port),
|
||||
equalTo(SemanticAttributes.NET_SOCK_PEER_ADDR, "127.0.0.1"),
|
||||
equalTo(
|
||||
SemanticAttributes.NET_TRANSPORT,
|
||||
SemanticAttributes.NetTransportValues.IP_TCP))));
|
||||
}
|
||||
}
|
|
@ -1,147 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import io.opentelemetry.instrumentation.test.AgentInstrumentationSpecification
|
||||
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes
|
||||
import org.testcontainers.containers.GenericContainer
|
||||
import redis.clients.jedis.Jedis
|
||||
import spock.lang.Shared
|
||||
|
||||
import static io.opentelemetry.api.trace.SpanKind.CLIENT
|
||||
|
||||
class Jedis40ClientTest extends AgentInstrumentationSpecification {
|
||||
|
||||
private static GenericContainer redisServer = new GenericContainer<>("redis:6.2.3-alpine").withExposedPorts(6379)
|
||||
|
||||
@Shared
|
||||
int port
|
||||
|
||||
@Shared
|
||||
Jedis jedis
|
||||
|
||||
def setupSpec() {
|
||||
redisServer.start()
|
||||
port = redisServer.getMappedPort(6379)
|
||||
jedis = new Jedis("localhost", port)
|
||||
}
|
||||
|
||||
def cleanupSpec() {
|
||||
redisServer.stop()
|
||||
jedis.close()
|
||||
}
|
||||
|
||||
def setup() {
|
||||
jedis.flushAll()
|
||||
clearExportedData()
|
||||
}
|
||||
|
||||
def "set command"() {
|
||||
when:
|
||||
jedis.set("foo", "bar")
|
||||
|
||||
then:
|
||||
assertTraces(1) {
|
||||
trace(0, 1) {
|
||||
span(0) {
|
||||
name "SET"
|
||||
kind CLIENT
|
||||
attributes {
|
||||
"$SemanticAttributes.DB_SYSTEM" "redis"
|
||||
"$SemanticAttributes.DB_STATEMENT" "SET foo ?"
|
||||
"$SemanticAttributes.DB_OPERATION" "SET"
|
||||
"$SemanticAttributes.NET_TRANSPORT" SemanticAttributes.NetTransportValues.IP_TCP
|
||||
"$SemanticAttributes.NET_SOCK_PEER_ADDR" "127.0.0.1"
|
||||
"$SemanticAttributes.NET_SOCK_PEER_NAME" { it == "localhost" || it == "127.0.0.1" }
|
||||
"$SemanticAttributes.NET_SOCK_PEER_PORT" port
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def "get command"() {
|
||||
when:
|
||||
jedis.set("foo", "bar")
|
||||
def value = jedis.get("foo")
|
||||
|
||||
then:
|
||||
value == "bar"
|
||||
|
||||
assertTraces(2) {
|
||||
trace(0, 1) {
|
||||
span(0) {
|
||||
name "SET"
|
||||
kind CLIENT
|
||||
attributes {
|
||||
"$SemanticAttributes.DB_SYSTEM" "redis"
|
||||
"$SemanticAttributes.DB_STATEMENT" "SET foo ?"
|
||||
"$SemanticAttributes.DB_OPERATION" "SET"
|
||||
"$SemanticAttributes.NET_TRANSPORT" SemanticAttributes.NetTransportValues.IP_TCP
|
||||
"$SemanticAttributes.NET_SOCK_PEER_ADDR" "127.0.0.1"
|
||||
"$SemanticAttributes.NET_SOCK_PEER_NAME" { it == "localhost" || it == "127.0.0.1" }
|
||||
"$SemanticAttributes.NET_SOCK_PEER_PORT" port
|
||||
}
|
||||
}
|
||||
}
|
||||
trace(1, 1) {
|
||||
span(0) {
|
||||
name "GET"
|
||||
kind CLIENT
|
||||
attributes {
|
||||
"$SemanticAttributes.DB_SYSTEM" "redis"
|
||||
"$SemanticAttributes.DB_STATEMENT" "GET foo"
|
||||
"$SemanticAttributes.DB_OPERATION" "GET"
|
||||
"$SemanticAttributes.NET_TRANSPORT" SemanticAttributes.NetTransportValues.IP_TCP
|
||||
"$SemanticAttributes.NET_SOCK_PEER_ADDR" "127.0.0.1"
|
||||
"$SemanticAttributes.NET_SOCK_PEER_NAME" { it == "localhost" || it == "127.0.0.1" }
|
||||
"$SemanticAttributes.NET_SOCK_PEER_PORT" port
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def "command with no arguments"() {
|
||||
when:
|
||||
jedis.set("foo", "bar")
|
||||
def value = jedis.randomKey()
|
||||
|
||||
then:
|
||||
value == "foo"
|
||||
|
||||
assertTraces(2) {
|
||||
trace(0, 1) {
|
||||
span(0) {
|
||||
name "SET"
|
||||
kind CLIENT
|
||||
attributes {
|
||||
"$SemanticAttributes.DB_SYSTEM" "redis"
|
||||
"$SemanticAttributes.DB_STATEMENT" "SET foo ?"
|
||||
"$SemanticAttributes.DB_OPERATION" "SET"
|
||||
"$SemanticAttributes.NET_TRANSPORT" SemanticAttributes.NetTransportValues.IP_TCP
|
||||
"$SemanticAttributes.NET_SOCK_PEER_ADDR" "127.0.0.1"
|
||||
"$SemanticAttributes.NET_SOCK_PEER_NAME" { it == "localhost" || it == "127.0.0.1" }
|
||||
"$SemanticAttributes.NET_SOCK_PEER_PORT" port
|
||||
}
|
||||
}
|
||||
}
|
||||
trace(1, 1) {
|
||||
span(0) {
|
||||
name "RANDOMKEY"
|
||||
kind CLIENT
|
||||
attributes {
|
||||
"$SemanticAttributes.DB_SYSTEM" "redis"
|
||||
"$SemanticAttributes.DB_STATEMENT" "RANDOMKEY"
|
||||
"$SemanticAttributes.DB_OPERATION" "RANDOMKEY"
|
||||
"$SemanticAttributes.NET_TRANSPORT" SemanticAttributes.NetTransportValues.IP_TCP
|
||||
"$SemanticAttributes.NET_SOCK_PEER_ADDR" "127.0.0.1"
|
||||
"$SemanticAttributes.NET_SOCK_PEER_NAME" { it == "localhost" || it == "127.0.0.1" }
|
||||
"$SemanticAttributes.NET_SOCK_PEER_PORT" port
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,165 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.jedis.v4_0;
|
||||
|
||||
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
|
||||
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import io.opentelemetry.api.trace.SpanKind;
|
||||
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
|
||||
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
|
||||
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
import org.testcontainers.containers.GenericContainer;
|
||||
import redis.clients.jedis.Jedis;
|
||||
|
||||
class Jedis40ClientTest {
|
||||
@RegisterExtension
|
||||
static final InstrumentationExtension testing = AgentInstrumentationExtension.create();
|
||||
|
||||
static GenericContainer<?> redisServer =
|
||||
new GenericContainer<>("redis:6.2.3-alpine").withExposedPorts(6379);
|
||||
|
||||
static int port;
|
||||
|
||||
static Jedis jedis;
|
||||
|
||||
@BeforeAll
|
||||
static void setupSpec() {
|
||||
redisServer.start();
|
||||
port = redisServer.getMappedPort(6379);
|
||||
jedis = new Jedis("localhost", port);
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
static void cleanupSpec() {
|
||||
redisServer.stop();
|
||||
jedis.close();
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
void setup() {
|
||||
jedis.flushAll();
|
||||
testing.clearData();
|
||||
}
|
||||
|
||||
@Test
|
||||
void setCommand() {
|
||||
jedis.set("foo", "bar");
|
||||
|
||||
testing.waitAndAssertTraces(
|
||||
trace ->
|
||||
trace.hasSpansSatisfyingExactly(
|
||||
span ->
|
||||
span.hasName("SET")
|
||||
.hasKind(SpanKind.CLIENT)
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(SemanticAttributes.DB_SYSTEM, "redis"),
|
||||
equalTo(SemanticAttributes.DB_STATEMENT, "SET foo ?"),
|
||||
equalTo(SemanticAttributes.DB_OPERATION, "SET"),
|
||||
equalTo(
|
||||
SemanticAttributes.NET_TRANSPORT,
|
||||
SemanticAttributes.NetTransportValues.IP_TCP),
|
||||
equalTo(SemanticAttributes.NET_SOCK_PEER_PORT, port),
|
||||
equalTo(SemanticAttributes.NET_SOCK_PEER_ADDR, "127.0.0.1"),
|
||||
satisfies(
|
||||
SemanticAttributes.NET_SOCK_PEER_NAME,
|
||||
val -> val.isIn("localhost", "127.0.0.1")))));
|
||||
}
|
||||
|
||||
@Test
|
||||
void getCommand() {
|
||||
jedis.set("foo", "bar");
|
||||
String value = jedis.get("foo");
|
||||
|
||||
assertThat(value).isEqualTo("bar");
|
||||
|
||||
testing.waitAndAssertTraces(
|
||||
trace ->
|
||||
trace.hasSpansSatisfyingExactly(
|
||||
span ->
|
||||
span.hasName("SET")
|
||||
.hasKind(SpanKind.CLIENT)
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(SemanticAttributes.DB_SYSTEM, "redis"),
|
||||
equalTo(SemanticAttributes.DB_STATEMENT, "SET foo ?"),
|
||||
equalTo(SemanticAttributes.DB_OPERATION, "SET"),
|
||||
equalTo(
|
||||
SemanticAttributes.NET_TRANSPORT,
|
||||
SemanticAttributes.NetTransportValues.IP_TCP),
|
||||
equalTo(SemanticAttributes.NET_SOCK_PEER_PORT, port),
|
||||
equalTo(SemanticAttributes.NET_SOCK_PEER_ADDR, "127.0.0.1"),
|
||||
satisfies(
|
||||
SemanticAttributes.NET_SOCK_PEER_NAME,
|
||||
val -> val.isIn("localhost", "127.0.0.1")))),
|
||||
trace ->
|
||||
trace.hasSpansSatisfyingExactly(
|
||||
span ->
|
||||
span.hasName("GET")
|
||||
.hasKind(SpanKind.CLIENT)
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(SemanticAttributes.DB_SYSTEM, "redis"),
|
||||
equalTo(SemanticAttributes.DB_STATEMENT, "GET foo"),
|
||||
equalTo(SemanticAttributes.DB_OPERATION, "GET"),
|
||||
equalTo(
|
||||
SemanticAttributes.NET_TRANSPORT,
|
||||
SemanticAttributes.NetTransportValues.IP_TCP),
|
||||
equalTo(SemanticAttributes.NET_SOCK_PEER_PORT, port),
|
||||
equalTo(SemanticAttributes.NET_SOCK_PEER_ADDR, "127.0.0.1"),
|
||||
satisfies(
|
||||
SemanticAttributes.NET_SOCK_PEER_NAME,
|
||||
val -> val.isIn("localhost", "127.0.0.1")))));
|
||||
}
|
||||
|
||||
@Test
|
||||
void commandWithNoArguments() {
|
||||
jedis.set("foo", "bar");
|
||||
String value = jedis.randomKey();
|
||||
|
||||
assertThat(value).isEqualTo("foo");
|
||||
|
||||
testing.waitAndAssertTraces(
|
||||
trace ->
|
||||
trace.hasSpansSatisfyingExactly(
|
||||
span ->
|
||||
span.hasName("SET")
|
||||
.hasKind(SpanKind.CLIENT)
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(SemanticAttributes.DB_SYSTEM, "redis"),
|
||||
equalTo(SemanticAttributes.DB_STATEMENT, "SET foo ?"),
|
||||
equalTo(SemanticAttributes.DB_OPERATION, "SET"),
|
||||
equalTo(
|
||||
SemanticAttributes.NET_TRANSPORT,
|
||||
SemanticAttributes.NetTransportValues.IP_TCP),
|
||||
equalTo(SemanticAttributes.NET_SOCK_PEER_PORT, port),
|
||||
equalTo(SemanticAttributes.NET_SOCK_PEER_ADDR, "127.0.0.1"),
|
||||
satisfies(
|
||||
SemanticAttributes.NET_SOCK_PEER_NAME,
|
||||
val -> val.isIn("localhost", "127.0.0.1")))),
|
||||
trace ->
|
||||
trace.hasSpansSatisfyingExactly(
|
||||
span ->
|
||||
span.hasName("RANDOMKEY")
|
||||
.hasKind(SpanKind.CLIENT)
|
||||
.hasAttributesSatisfyingExactly(
|
||||
equalTo(SemanticAttributes.DB_SYSTEM, "redis"),
|
||||
equalTo(SemanticAttributes.DB_STATEMENT, "RANDOMKEY"),
|
||||
equalTo(SemanticAttributes.DB_OPERATION, "RANDOMKEY"),
|
||||
equalTo(
|
||||
SemanticAttributes.NET_TRANSPORT,
|
||||
SemanticAttributes.NetTransportValues.IP_TCP),
|
||||
equalTo(SemanticAttributes.NET_SOCK_PEER_PORT, port),
|
||||
equalTo(SemanticAttributes.NET_SOCK_PEER_ADDR, "127.0.0.1"),
|
||||
satisfies(
|
||||
SemanticAttributes.NET_SOCK_PEER_NAME,
|
||||
val -> val.isIn("localhost", "127.0.0.1")))));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue