Add http/2 tests for jdk http client (#11506)

This commit is contained in:
Lauri Tulmin 2024-06-01 11:20:45 +03:00 committed by GitHub
parent 5c6aa52213
commit de30e3120a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 80 additions and 7 deletions

View File

@ -8,10 +8,12 @@ package io.opentelemetry.javaagent.instrumentation.httpclient;
import io.opentelemetry.instrumentation.httpclient.AbstractJavaHttpClientTest;
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension;
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions;
import java.net.http.HttpClient;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.extension.RegisterExtension;
public class JavaHttpClientTest extends AbstractJavaHttpClientTest {
public abstract class JavaHttpClientTest extends AbstractJavaHttpClientTest {
@RegisterExtension
static final InstrumentationExtension testing = HttpClientInstrumentationExtension.forAgent();
@ -20,4 +22,37 @@ public class JavaHttpClientTest extends AbstractJavaHttpClientTest {
protected HttpClient configureHttpClient(HttpClient httpClient) {
return httpClient;
}
@Nested
static class Http1ClientTest extends JavaHttpClientTest {
@Override
protected void configureHttpClientBuilder(HttpClient.Builder httpClientBuilder) {
httpClientBuilder.version(HttpClient.Version.HTTP_1_1);
}
}
@Nested
static class Http2ClientTest extends JavaHttpClientTest {
@Override
protected void configureHttpClientBuilder(HttpClient.Builder httpClientBuilder) {
httpClientBuilder.version(HttpClient.Version.HTTP_2);
}
@Override
protected void configure(HttpClientTestOptions.Builder optionsBuilder) {
super.configure(optionsBuilder);
optionsBuilder.setHttpProtocolVersion(
uri -> {
String uriString = uri.toString();
if (uriString.equals("http://localhost:61/")
|| uriString.equals("https://192.0.2.1/")) {
return "1.1";
}
return "2";
});
}
}
}

View File

@ -8,11 +8,13 @@ package io.opentelemetry.instrumentation.httpclient;
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 java.net.http.HttpClient;
import java.util.Collections;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.extension.RegisterExtension;
public class JavaHttpClientTest extends AbstractJavaHttpClientTest {
public abstract class JavaHttpClientTest extends AbstractJavaHttpClientTest {
@RegisterExtension
static final InstrumentationExtension testing = HttpClientInstrumentationExtension.forLibrary();
@ -27,4 +29,37 @@ public class JavaHttpClientTest extends AbstractJavaHttpClientTest {
.build()
.newHttpClient(httpClient);
}
@Nested
static class Http1ClientTest extends JavaHttpClientTest {
@Override
protected void configureHttpClientBuilder(HttpClient.Builder httpClientBuilder) {
httpClientBuilder.version(HttpClient.Version.HTTP_1_1);
}
}
@Nested
static class Http2ClientTest extends JavaHttpClientTest {
@Override
protected void configureHttpClientBuilder(HttpClient.Builder httpClientBuilder) {
httpClientBuilder.version(HttpClient.Version.HTTP_2);
}
@Override
protected void configure(HttpClientTestOptions.Builder optionsBuilder) {
super.configure(optionsBuilder);
optionsBuilder.setHttpProtocolVersion(
uri -> {
String uriString = uri.toString();
if (uriString.equals("http://localhost:61/")
|| uriString.equals("https://192.0.2.1/")) {
return "1.1";
}
return "2";
});
}
}
}

View File

@ -26,15 +26,17 @@ public abstract class AbstractJavaHttpClientTest extends AbstractHttpClientTest<
@BeforeAll
void setUp() {
HttpClient httpClient =
HttpClient.Builder httpClientBuilder =
HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_1_1)
.connectTimeout(CONNECTION_TIMEOUT)
.followRedirects(HttpClient.Redirect.NORMAL)
.build();
.followRedirects(HttpClient.Redirect.NORMAL);
configureHttpClientBuilder(httpClientBuilder);
HttpClient httpClient = httpClientBuilder.build();
client = configureHttpClient(httpClient);
}
protected abstract void configureHttpClientBuilder(HttpClient.Builder httpClientBuilder);
protected abstract HttpClient configureHttpClient(HttpClient httpClient);
@Override

View File

@ -130,7 +130,8 @@ public abstract class AbstractHttpClientTest<REQUEST> implements HttpClientTypeA
String method = "TEST";
int responseCode = doRequest(method, uri);
assertThat(responseCode).isEqualTo(405);
assertThat(responseCode)
.isEqualTo("2".equals(options.getHttpProtocolVersion().apply(uri)) ? 400 : 405);
testing.waitAndAssertTraces(
trace ->