Remove redundant Jaeger integration test (#3976)

This commit is contained in:
Anuraag Agrawal 2021-12-10 13:33:46 +09:00 committed by GitHub
parent b051012251
commit 16b4e54d7e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 1 additions and 137 deletions

View File

@ -8,8 +8,6 @@ description = "OpenTelemetry Integration Tests"
otelJava.moduleName.set("io.opentelemetry.integration.tests")
testSets {
create("testJaeger")
libraries {
create("testOtlpCommon")
}
@ -53,14 +51,10 @@ dependencies {
add("testOtlpRuntimeOnly", "io.grpc:grpc-netty-shaded")
add("testOtlpRuntimeOnly", "io.grpc:grpc-stub")
add("testJaegerImplementation", project(":exporters:jaeger"))
add("testJaegerImplementation", project(":semconv"))
add("testJaegerRuntimeOnly", "io.grpc:grpc-netty-shaded")
}
tasks {
check {
dependsOn("testJaeger", "testOtlp", "testOtlpNoGrpcJava")
dependsOn("testOtlp", "testOtlpNoGrpcJava")
}
}

View File

@ -1,130 +0,0 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.integrationtest;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.exporter.jaeger.JaegerGrpcSpanExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.resources.Resource;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
import io.opentelemetry.semconv.resource.attributes.ResourceAttributes;
import java.time.Duration;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.awaitility.Awaitility;
import org.junit.jupiter.api.Test;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.utility.DockerImageName;
/** Integration test to verify that the Jaeger GRPC exporter works. */
@Testcontainers(disabledWithoutDocker = true)
class JaegerExporterIntegrationTest {
private static final ObjectMapper objectMapper = new ObjectMapper();
private static final OkHttpClient client = new OkHttpClient();
private static final int QUERY_PORT = 16686;
private static final int JAEGER_API_PORT = 14250;
private static final int HEALTH_PORT = 14269;
private static final String SERVICE_NAME = "integration test";
private static final String JAEGER_URL = "http://localhost";
@Container
public static GenericContainer<?> jaegerContainer =
new GenericContainer<>(
DockerImageName.parse("ghcr.io/open-telemetry/opentelemetry-java/jaeger"))
.withExposedPorts(JAEGER_API_PORT, QUERY_PORT, HEALTH_PORT)
.waitingFor(Wait.forHttp("/").forPort(HEALTH_PORT));
@Test
void testJaegerExampleAppIntegration() {
OpenTelemetry openTelemetry =
initOpenTelemetry(
jaegerContainer.getHost(), jaegerContainer.getMappedPort(JAEGER_API_PORT));
myWonderfulUseCase(openTelemetry);
Awaitility.await()
.atMost(Duration.ofSeconds(30))
.until(JaegerExporterIntegrationTest::assertJaegerHasTheTrace);
}
private static Boolean assertJaegerHasTheTrace() {
try {
String url =
String.format(
"%s/api/traces?service=%s",
String.format(JAEGER_URL + ":%d", jaegerContainer.getMappedPort(QUERY_PORT)),
SERVICE_NAME);
Request request =
new Request.Builder()
.url(url)
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.build();
final JsonNode json;
try (Response response = client.newCall(request).execute()) {
json = objectMapper.readTree(response.body().byteStream());
}
return json.get("data").get(0).get("traceID") != null;
} catch (Exception e) {
return false;
}
}
private static OpenTelemetry initOpenTelemetry(String ip, int port) {
// Export traces to Jaeger
JaegerGrpcSpanExporter jaegerExporter =
JaegerGrpcSpanExporter.builder()
.setEndpoint("http://" + ip + ":" + port)
.setTimeout(Duration.ofSeconds(30))
.build();
// Set to process the spans by the Jaeger Exporter
return OpenTelemetrySdk.builder()
.setTracerProvider(
SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(jaegerExporter))
.setResource(
Resource.getDefault().toBuilder()
.put(ResourceAttributes.SERVICE_NAME, "integration test")
.build())
.build())
.buildAndRegisterGlobal();
}
private static void myWonderfulUseCase(OpenTelemetry openTelemetry) {
// Generate a span
Span span =
openTelemetry
.getTracer("io.opentelemetry.SendTraceToJaeger")
.spanBuilder("Start my wonderful use case")
.startSpan();
span.addEvent("Event 0");
// execute my use case - here we simulate a wait
doWait();
span.addEvent("Event 1");
span.end();
}
private static void doWait() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// catch
}
}
}