Add http/2 tests for jdk http client (#11506)
This commit is contained in:
parent
5c6aa52213
commit
de30e3120a
|
@ -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";
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ->
|
||||
|
|
Loading…
Reference in New Issue