Convert jaxrs-client-1.1 tests to java (#12497)

This commit is contained in:
Lauri Tulmin 2024-10-22 17:24:34 +03:00 committed by GitHub
parent 5ade05f88b
commit 3100f0b65f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 97 additions and 90 deletions

View File

@ -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<WebResource.Builder> 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<String, String> 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<String, String> 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<AttributeKey<?>> httpAttributes(URI uri) {
def attributes = super.httpAttributes(uri)
attributes.remove(NetworkAttributes.NETWORK_PROTOCOL_VERSION)
return attributes
}
@Override
boolean testNonStandardHttpMethod() {
false
}
}

View File

@ -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<WebResource.Builder> {
@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<AttributeKey<?>> 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<String, String> 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<String, String> 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);
}
}
}