diff --git a/dd-trace-core/src/test/groovy/datadog/trace/common/writer/OtlpWriterCombinedTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/common/writer/OtlpWriterCombinedTest.groovy deleted file mode 100644 index 0709f2b285a..00000000000 --- a/dd-trace-core/src/test/groovy/datadog/trace/common/writer/OtlpWriterCombinedTest.groovy +++ /dev/null @@ -1,44 +0,0 @@ -package datadog.trace.common.writer - -import static datadog.trace.agent.test.server.http.TestHttpServer.httpServer -import static datadog.trace.api.config.OtlpConfig.TRACE_OTEL_EXPORTER - -import datadog.trace.core.test.DDCoreSpecification -import java.util.concurrent.CountDownLatch -import java.util.concurrent.TimeUnit -import spock.lang.Timeout - -@Timeout(10) -class OtlpWriterCombinedTest extends DDCoreSpecification { - - def "happy path over HTTP"() { - setup: - injectSysConfig(TRACE_OTEL_EXPORTER, "otlp") - - def received = new CountDownLatch(1) - def server = httpServer { - handlers { - post("/v1/traces") { - received.countDown() - response.status(200).send() - } - } - } - def writer = OtlpWriter.builder() - .endpoint(server.address.toString() + "/v1/traces") - .flushIntervalMilliseconds(-1) - .build() - def tracer = tracerBuilder().writer(writer).build() - - when: - tracer.buildSpan("fakeOperation").start().finish() - writer.flush() - - then: - received.await(5, TimeUnit.SECONDS) - - cleanup: - tracer.close() - server.close() - } -} diff --git a/dd-trace-core/src/test/java/datadog/trace/common/writer/OtlpWriterCombinedTest.java b/dd-trace-core/src/test/java/datadog/trace/common/writer/OtlpWriterCombinedTest.java new file mode 100644 index 00000000000..b00b424427f --- /dev/null +++ b/dd-trace-core/src/test/java/datadog/trace/common/writer/OtlpWriterCombinedTest.java @@ -0,0 +1,56 @@ +package datadog.trace.common.writer; + +import static datadog.trace.api.config.OtlpConfig.TRACE_OTEL_EXPORTER; +import static datadog.trace.junit.utils.config.WithConfigExtension.injectSysConfig; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import com.sun.net.httpserver.HttpServer; +import datadog.trace.core.CoreTracer; +import datadog.trace.core.DDCoreJavaSpecification; +import java.io.IOException; +import java.net.InetSocketAddress; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Timeout; + +@Timeout(value = 10, unit = TimeUnit.SECONDS) +class OtlpWriterCombinedTest extends DDCoreJavaSpecification { + + @Test + void happyPathOverHttp() throws IOException, InterruptedException { + injectSysConfig(TRACE_OTEL_EXPORTER, "otlp"); + + CountDownLatch received = new CountDownLatch(1); + HttpServer server = HttpServer.create(new InetSocketAddress("localhost", 0), 0); + server.createContext( + "/v1/traces", + exchange -> { + received.countDown(); + exchange.sendResponseHeaders(200, -1); + exchange.close(); + }); + server.start(); + + OtlpWriter writer = + OtlpWriter.builder() + .endpoint( + "http://" + + server.getAddress().getHostString() + + ":" + + server.getAddress().getPort() + + "/v1/traces") + .flushIntervalMilliseconds(-1) + .build(); + CoreTracer tracer = tracerBuilder().writer(writer).build(); + try { + tracer.buildSpan("test", "fakeOperation").start().finish(); + writer.flush(); + + assertTrue(received.await(5, TimeUnit.SECONDS), "OTLP server should receive a request"); + } finally { + tracer.close(); + server.stop(0); + } + } +}