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.httpclient.AbstractJavaHttpClientTest;
|
||||||
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
|
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
|
||||||
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension;
|
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension;
|
||||||
|
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions;
|
||||||
import java.net.http.HttpClient;
|
import java.net.http.HttpClient;
|
||||||
|
import org.junit.jupiter.api.Nested;
|
||||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||||
|
|
||||||
public class JavaHttpClientTest extends AbstractJavaHttpClientTest {
|
public abstract class JavaHttpClientTest extends AbstractJavaHttpClientTest {
|
||||||
|
|
||||||
@RegisterExtension
|
@RegisterExtension
|
||||||
static final InstrumentationExtension testing = HttpClientInstrumentationExtension.forAgent();
|
static final InstrumentationExtension testing = HttpClientInstrumentationExtension.forAgent();
|
||||||
|
@ -20,4 +22,37 @@ public class JavaHttpClientTest extends AbstractJavaHttpClientTest {
|
||||||
protected HttpClient configureHttpClient(HttpClient httpClient) {
|
protected HttpClient configureHttpClient(HttpClient httpClient) {
|
||||||
return 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.InstrumentationExtension;
|
||||||
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest;
|
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest;
|
||||||
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension;
|
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension;
|
||||||
|
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions;
|
||||||
import java.net.http.HttpClient;
|
import java.net.http.HttpClient;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import org.junit.jupiter.api.Nested;
|
||||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||||
|
|
||||||
public class JavaHttpClientTest extends AbstractJavaHttpClientTest {
|
public abstract class JavaHttpClientTest extends AbstractJavaHttpClientTest {
|
||||||
|
|
||||||
@RegisterExtension
|
@RegisterExtension
|
||||||
static final InstrumentationExtension testing = HttpClientInstrumentationExtension.forLibrary();
|
static final InstrumentationExtension testing = HttpClientInstrumentationExtension.forLibrary();
|
||||||
|
@ -27,4 +29,37 @@ public class JavaHttpClientTest extends AbstractJavaHttpClientTest {
|
||||||
.build()
|
.build()
|
||||||
.newHttpClient(httpClient);
|
.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
|
@BeforeAll
|
||||||
void setUp() {
|
void setUp() {
|
||||||
HttpClient httpClient =
|
HttpClient.Builder httpClientBuilder =
|
||||||
HttpClient.newBuilder()
|
HttpClient.newBuilder()
|
||||||
.version(HttpClient.Version.HTTP_1_1)
|
|
||||||
.connectTimeout(CONNECTION_TIMEOUT)
|
.connectTimeout(CONNECTION_TIMEOUT)
|
||||||
.followRedirects(HttpClient.Redirect.NORMAL)
|
.followRedirects(HttpClient.Redirect.NORMAL);
|
||||||
.build();
|
configureHttpClientBuilder(httpClientBuilder);
|
||||||
|
HttpClient httpClient = httpClientBuilder.build();
|
||||||
client = configureHttpClient(httpClient);
|
client = configureHttpClient(httpClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected abstract void configureHttpClientBuilder(HttpClient.Builder httpClientBuilder);
|
||||||
|
|
||||||
protected abstract HttpClient configureHttpClient(HttpClient httpClient);
|
protected abstract HttpClient configureHttpClient(HttpClient httpClient);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -130,7 +130,8 @@ public abstract class AbstractHttpClientTest<REQUEST> implements HttpClientTypeA
|
||||||
String method = "TEST";
|
String method = "TEST";
|
||||||
int responseCode = doRequest(method, uri);
|
int responseCode = doRequest(method, uri);
|
||||||
|
|
||||||
assertThat(responseCode).isEqualTo(405);
|
assertThat(responseCode)
|
||||||
|
.isEqualTo("2".equals(options.getHttpProtocolVersion().apply(uri)) ? 400 : 405);
|
||||||
|
|
||||||
testing.waitAndAssertTraces(
|
testing.waitAndAssertTraces(
|
||||||
trace ->
|
trace ->
|
||||||
|
|
Loading…
Reference in New Issue