Skip to content

Commit

Permalink
Migrate Guava tests to Java (#5668)
Browse files Browse the repository at this point in the history
* Migrate Guava tests to Java

* Update instrumentation/guava-10.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/guava/ListenableFutureTest.java

Co-authored-by: Lauri Tulmin <[email protected]>

* Workaround inline mock issue

Co-authored-by: Trask Stalnaker <[email protected]>
Co-authored-by: Lauri Tulmin <[email protected]>
  • Loading branch information
3 people committed Mar 24, 2022
1 parent 7a46953 commit 14372ad
Show file tree
Hide file tree
Showing 32 changed files with 461 additions and 559 deletions.
7 changes: 7 additions & 0 deletions conventions/src/main/kotlin/otel.java-conventions.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,13 @@ testing {
runtimeOnly("org.junit.jupiter:junit-jupiter-engine")
runtimeOnly("org.junit.vintage:junit-vintage-engine")


implementation("org.assertj:assertj-core")
implementation("org.awaitility:awaitility")
implementation("org.mockito:mockito-core")
implementation("org.mockito:mockito-inline")
implementation("org.mockito:mockito-junit-jupiter")

implementation("org.objenesis:objenesis")
implementation("org.spockframework:spock-core") {
with (this as ExternalDependency) {
Expand Down
4 changes: 0 additions & 4 deletions instrumentation-api-annotation-support/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,6 @@ dependencies {
annotationProcessor("com.google.auto.value:auto-value")

testImplementation(project(":testing-common"))
testImplementation("org.mockito:mockito-core")
testImplementation("org.mockito:mockito-junit-jupiter")
testImplementation("org.assertj:assertj-core")
testImplementation("org.awaitility:awaitility")
testImplementation("io.opentelemetry:opentelemetry-sdk-metrics")
testImplementation("io.opentelemetry:opentelemetry-sdk-testing")
}
4 changes: 0 additions & 4 deletions instrumentation-api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,6 @@ dependencies {
annotationProcessor("com.google.auto.value:auto-value")

testImplementation(project(":testing-common"))
testImplementation("org.mockito:mockito-core")
testImplementation("org.mockito:mockito-junit-jupiter")
testImplementation("org.assertj:assertj-core")
testImplementation("org.awaitility:awaitility")
testImplementation("io.opentelemetry:opentelemetry-sdk-metrics")
testImplementation("io.opentelemetry:opentelemetry-sdk-testing")
}
Expand Down
3 changes: 0 additions & 3 deletions instrumentation-appender-api-internal/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,4 @@ group = "io.opentelemetry.instrumentation"

dependencies {
api("io.opentelemetry:opentelemetry-api")

testImplementation("org.assertj:assertj-core")
testImplementation("org.mockito:mockito-core")
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,4 @@ dependencies {

testImplementation("io.opentelemetry:opentelemetry-extension-trace-propagators")
testImplementation("io.opentelemetry:opentelemetry-extension-aws")
testImplementation("org.assertj:assertj-core")
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,5 @@ dependencies {
testImplementation("com.google.guava:guava")

testImplementation(project(":instrumentation:aws-lambda:aws-lambda-core-1.0:testing"))
testImplementation("org.mockito:mockito-core")
testImplementation("org.assertj:assertj-core")
testImplementation("uk.org.webcompere:system-stubs-jupiter")
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,5 @@ dependencies {
testImplementation("com.google.guava:guava")

testImplementation(project(":instrumentation:aws-lambda:aws-lambda-events-2.2:testing"))
testImplementation("org.mockito:mockito-core")
testImplementation("org.assertj:assertj-core")
testImplementation("uk.org.webcompere:system-stubs-jupiter")
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,4 @@ dependencies {

testImplementation("com.amazonaws:aws-java-sdk-core:1.11.0")
testImplementation("com.amazonaws:aws-java-sdk-sqs:1.11.106")

testImplementation("org.assertj:assertj-core")
}
3 changes: 0 additions & 3 deletions instrumentation/aws-sdk/aws-sdk-2.2/library/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@ dependencies {

testImplementation(project(":instrumentation:aws-sdk:aws-sdk-2.2:testing"))

testImplementation("org.assertj:assertj-core")
testImplementation("org.mockito:mockito-core")

latestDepTestLibrary("software.amazon.awssdk:aws-core:+")
latestDepTestLibrary("software.amazon.awssdk:aws-json-protocol:+")
latestDepTestLibrary("software.amazon.awssdk:dynamodb:+")
Expand Down
1 change: 0 additions & 1 deletion instrumentation/grpc-1.6/library/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,5 @@ dependencies {
testLibrary("io.grpc:grpc-services:$grpcVersion")
testLibrary("io.grpc:grpc-stub:$grpcVersion")

testImplementation("org.assertj:assertj-core")
testImplementation(project(":instrumentation:grpc-1.6:testing"))
}

This file was deleted.

This file was deleted.

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

package io.opentelemetry.javaagent.instrumentation.guava;

import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.attributeEntry;

import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.SettableFuture;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
import io.opentelemetry.sdk.trace.data.StatusData;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

class GuavaWithSpanInstrumentationTest {

@RegisterExtension
static final InstrumentationExtension testing = AgentInstrumentationExtension.create();

@Test
void success() {
SettableFuture<String> future = SettableFuture.create();
new TracedWithSpan().listenableFuture(future);
future.set("Value");

testing.waitAndAssertTraces(
trace ->
trace.hasSpansSatisfyingExactly(
span ->
span.hasName("TracedWithSpan.listenableFuture")
.hasKind(SpanKind.INTERNAL)
.hasNoParent()
.hasAttributes(Attributes.empty())));
}

@Test
void failure() {
IllegalArgumentException error = new IllegalArgumentException("Boom");
SettableFuture<String> future = SettableFuture.create();
new TracedWithSpan().listenableFuture(future);
future.setException(error);

testing.waitAndAssertTraces(
trace ->
trace.hasSpansSatisfyingExactly(
span ->
span.hasName("TracedWithSpan.listenableFuture")
.hasKind(SpanKind.INTERNAL)
.hasNoParent()
.hasStatus(StatusData.error())
.hasException(error)
.hasAttributes(Attributes.empty())));
}

@Test
void canceled() {
SettableFuture<String> future = SettableFuture.create();
new TracedWithSpan().listenableFuture(future);
future.cancel(true);

testing.waitAndAssertTraces(
trace ->
trace.hasSpansSatisfyingExactly(
span ->
span.hasName("TracedWithSpan.listenableFuture")
.hasKind(SpanKind.INTERNAL)
.hasNoParent()
.hasAttributes(attributeEntry("guava.canceled", true))));
}

@Test
void immediateSuccess() {
new TracedWithSpan().listenableFuture(Futures.immediateFuture("Value"));

testing.waitAndAssertTraces(
trace ->
trace.hasSpansSatisfyingExactly(
span ->
span.hasName("TracedWithSpan.listenableFuture")
.hasKind(SpanKind.INTERNAL)
.hasNoParent()
.hasAttributes(Attributes.empty())));
}

@Test
void immediateFailure() {
IllegalArgumentException error = new IllegalArgumentException("Boom");
new TracedWithSpan().listenableFuture(Futures.immediateFailedFuture(error));

testing.waitAndAssertTraces(
trace ->
trace.hasSpansSatisfyingExactly(
span ->
span.hasName("TracedWithSpan.listenableFuture")
.hasKind(SpanKind.INTERNAL)
.hasNoParent()
.hasStatus(StatusData.error())
.hasException(error)
.hasAttributes(Attributes.empty())));
}
}
Loading

0 comments on commit 14372ad

Please sign in to comment.