From 76cf9ced99c2325f11c278b7ace20628b5a7e411 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Tue, 22 Oct 2024 14:15:33 +0300 Subject: [PATCH] Convert jaxrs-client-1.1 tests to java --- .../src/test/groovy/JaxRsClientV1Test.groovy | 90 ----------------- .../jaxrsclient/JaxRsClientV1Test.java | 97 +++++++++++++++++++ 2 files changed, 97 insertions(+), 90 deletions(-) delete mode 100644 instrumentation/jaxrs-client/jaxrs-client-1.1-testing/src/test/groovy/JaxRsClientV1Test.groovy create mode 100644 instrumentation/jaxrs-client/jaxrs-client-1.1-testing/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/JaxRsClientV1Test.java diff --git a/instrumentation/jaxrs-client/jaxrs-client-1.1-testing/src/test/groovy/JaxRsClientV1Test.groovy b/instrumentation/jaxrs-client/jaxrs-client-1.1-testing/src/test/groovy/JaxRsClientV1Test.groovy deleted file mode 100644 index 58478731e1ae..000000000000 --- a/instrumentation/jaxrs-client/jaxrs-client-1.1-testing/src/test/groovy/JaxRsClientV1Test.groovy +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -import com.sun.jersey.api.client.Client -import com.sun.jersey.api.client.ClientHandlerException -import com.sun.jersey.api.client.ClientResponse -import com.sun.jersey.api.client.WebResource -import com.sun.jersey.api.client.filter.GZIPContentEncodingFilter -import com.sun.jersey.api.client.filter.LoggingFilter -import io.opentelemetry.api.common.AttributeKey -import io.opentelemetry.instrumentation.test.AgentTestTrait -import io.opentelemetry.instrumentation.test.base.HttpClientTest -import io.opentelemetry.semconv.NetworkAttributes -import spock.lang.Shared - -class JaxRsClientV1Test extends HttpClientTest implements AgentTestTrait { - - @Shared - Client client = buildClient(false) - - @Shared - Client clientWithReadTimeout = buildClient(true) - - def buildClient(boolean readTimeout) { - def client = Client.create() - client.setConnectTimeout(CONNECT_TIMEOUT_MS) - if (readTimeout) { - client.setReadTimeout(READ_TIMEOUT_MS) - } - // Add filters to ensure spans aren't duplicated. - client.addFilter(new LoggingFilter()) - client.addFilter(new GZIPContentEncodingFilter()) - - return client - } - - Client getClient(URI uri) { - if (uri.toString().contains("/read-timeout")) { - return clientWithReadTimeout - } - return client - } - - @Override - def cleanupSpec() { - client?.destroy() - clientWithReadTimeout?.destroy() - } - - @Override - WebResource.Builder buildRequest(String method, URI uri, Map headers) { - def resource = getClient(uri).resource(uri).requestBuilder - headers.each { resource.header(it.key, it.value) } - return resource - } - - @Override - int sendRequest(WebResource.Builder resource, String method, URI uri, Map headers) { - def body = BODY_METHODS.contains(method) ? "" : null - try { - return resource.method(method, ClientResponse, body).status - } catch (ClientHandlerException exception) { - throw exception.getCause() - } - } - - @Override - boolean testCircularRedirects() { - false - } - - @Override - boolean testCallback() { - false - } - - @Override - Set> httpAttributes(URI uri) { - def attributes = super.httpAttributes(uri) - attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION) - return attributes - } - - @Override - boolean testNonStandardHttpMethod() { - false - } -} diff --git a/instrumentation/jaxrs-client/jaxrs-client-1.1-testing/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/JaxRsClientV1Test.java b/instrumentation/jaxrs-client/jaxrs-client-1.1-testing/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/JaxRsClientV1Test.java new file mode 100644 index 000000000000..21c1de97490d --- /dev/null +++ b/instrumentation/jaxrs-client/jaxrs-client-1.1-testing/src/test/java/io/opentelemetry/javaagent/instrumentation/jaxrsclient/JaxRsClientV1Test.java @@ -0,0 +1,97 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.jaxrsclient; + +import com.sun.jersey.api.client.Client; +import com.sun.jersey.api.client.ClientHandlerException; +import com.sun.jersey.api.client.ClientResponse; +import com.sun.jersey.api.client.WebResource; +import com.sun.jersey.api.client.filter.GZIPContentEncodingFilter; +import com.sun.jersey.api.client.filter.LoggingFilter; +import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest; +import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions; +import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions; +import io.opentelemetry.semconv.NetworkAttributes; +import java.net.URI; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.extension.RegisterExtension; + +class JaxRsClientV1Test extends AbstractHttpClientTest { + @RegisterExtension + static final InstrumentationExtension testing = HttpClientInstrumentationExtension.forAgent(); + + private final Client client = buildClient(false); + private final Client clientWithReadTimeout = buildClient(true); + + private static Client buildClient(boolean readTimeout) { + Client client = Client.create(); + client.setConnectTimeout((int) CONNECTION_TIMEOUT.toMillis()); + if (readTimeout) { + client.setReadTimeout((int) READ_TIMEOUT.toMillis()); + } + // Add filters to ensure spans aren't duplicated. + client.addFilter(new LoggingFilter()); + client.addFilter(new GZIPContentEncodingFilter()); + + return client; + } + + @Override + protected void configure(HttpClientTestOptions.Builder options) { + options.setTestCircularRedirects(false); + options.setTestNonStandardHttpMethod(false); + options.setTestCallback(false); + options.setHttpAttributes( + serverEndpoint -> { + Set> attributes = + new HashSet<>(HttpServerTestOptions.DEFAULT_HTTP_ATTRIBUTES); + attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION); + return attributes; + }); + } + + @AfterAll + void tearDown() { + client.destroy(); + clientWithReadTimeout.destroy(); + } + + private Client getClient(URI uri) { + if (uri.toString().contains("/read-timeout")) { + return clientWithReadTimeout; + } + return client; + } + + @Override + public WebResource.Builder buildRequest(String method, URI uri, Map headers) { + WebResource.Builder builder = getClient(uri).resource(uri).getRequestBuilder(); + headers.forEach(builder::header); + return builder; + } + + @Override + public int sendRequest( + WebResource.Builder builder, String method, URI uri, Map headers) + throws Exception { + String body = "POST".equals(method) || "PUT".equals(method) ? "" : null; + try { + return builder.method(method, ClientResponse.class, body).getStatus(); + } catch (ClientHandlerException exception) { + Throwable cause = exception.getCause(); + if (cause instanceof Exception) { + throw (Exception) cause; + } + throw new IllegalStateException(cause); + } + } +}