Convert apache-httpclient-2.0 tests from groovy to java (#12102)
Co-authored-by: Steve Rao <raozihao.rzh@alibaba-inc.com>
This commit is contained in:
parent
d6d3334a6a
commit
53f019b8f6
|
@ -1,98 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import io.opentelemetry.instrumentation.test.AgentTestTrait
|
||||
import io.opentelemetry.instrumentation.test.base.HttpClientTest
|
||||
import org.apache.commons.httpclient.HttpClient
|
||||
import org.apache.commons.httpclient.HttpConnectionManager
|
||||
import org.apache.commons.httpclient.HttpMethod
|
||||
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager
|
||||
import org.apache.commons.httpclient.methods.DeleteMethod
|
||||
import org.apache.commons.httpclient.methods.GetMethod
|
||||
import org.apache.commons.httpclient.methods.HeadMethod
|
||||
import org.apache.commons.httpclient.methods.OptionsMethod
|
||||
import org.apache.commons.httpclient.methods.PostMethod
|
||||
import org.apache.commons.httpclient.methods.PutMethod
|
||||
import org.apache.commons.httpclient.methods.TraceMethod
|
||||
import spock.lang.Shared
|
||||
|
||||
abstract class AbstractCommonsHttpClientTest extends HttpClientTest<HttpMethod> implements AgentTestTrait {
|
||||
@Shared
|
||||
HttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager()
|
||||
@Shared
|
||||
HttpClient client = buildClient(false)
|
||||
@Shared
|
||||
HttpClient clientWithReadTimeout = buildClient(true)
|
||||
|
||||
def buildClient(boolean readTimeout) {
|
||||
HttpClient client = new HttpClient(connectionManager)
|
||||
client.setConnectionTimeout(CONNECT_TIMEOUT_MS)
|
||||
if (readTimeout) {
|
||||
client.setTimeout(READ_TIMEOUT_MS)
|
||||
}
|
||||
return client
|
||||
}
|
||||
|
||||
HttpClient getClient(URI uri) {
|
||||
if (uri.toString().contains("/read-timeout")) {
|
||||
return clientWithReadTimeout
|
||||
}
|
||||
return client
|
||||
}
|
||||
|
||||
@Override
|
||||
HttpMethod buildRequest(String method, URI uri, Map<String, String> headers) {
|
||||
def request
|
||||
switch (method) {
|
||||
case "GET":
|
||||
request = new GetMethod(uri.toString())
|
||||
break
|
||||
case "PUT":
|
||||
request = new PutMethod(uri.toString())
|
||||
break
|
||||
case "POST":
|
||||
request = new PostMethod(uri.toString())
|
||||
break
|
||||
case "HEAD":
|
||||
request = new HeadMethod(uri.toString())
|
||||
break
|
||||
case "DELETE":
|
||||
request = new DeleteMethod(uri.toString())
|
||||
break
|
||||
case "OPTIONS":
|
||||
request = new OptionsMethod(uri.toString())
|
||||
break
|
||||
case "TRACE":
|
||||
request = new TraceMethod(uri.toString())
|
||||
break
|
||||
default:
|
||||
throw new IllegalStateException("Unsupported method: " + method)
|
||||
}
|
||||
headers.each { request.setRequestHeader(it.key, it.value) }
|
||||
return request
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean testCircularRedirects() {
|
||||
false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean testReusedRequest() {
|
||||
// apache commons throws an exception if the request is reused without being recycled first
|
||||
// at which point this test is not useful (and requires re-populating uri)
|
||||
false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean testCallback() {
|
||||
false
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean testNonStandardHttpMethod() {
|
||||
false
|
||||
}
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import org.apache.commons.httpclient.HttpMethod
|
||||
import spock.lang.IgnoreIf
|
||||
|
||||
//this test will be ignored if not executed with -PtestLatestDeps=true
|
||||
//because the latest dependency commons-httpclient v3.1 allows a call to the executeMethod
|
||||
//with some null parameters like HttpClient.executeMethod(null, request, null)
|
||||
//but this construct is not allowed in commons-httpclient v2 that is used for regular otel testing
|
||||
@IgnoreIf({ !Boolean.getBoolean("testLatestDeps") })
|
||||
class CommonsHttpClientLatestDepsTest extends AbstractCommonsHttpClientTest {
|
||||
|
||||
@Override
|
||||
int sendRequest(HttpMethod request, String method, URI uri, Map<String, String> headers) {
|
||||
try {
|
||||
getClient(uri).executeMethod(null, request, null)
|
||||
return request.getStatusCode()
|
||||
} finally {
|
||||
request.releaseConnection()
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import org.apache.commons.httpclient.HttpMethod
|
||||
|
||||
class CommonsHttpClientTest extends AbstractCommonsHttpClientTest {
|
||||
|
||||
@Override
|
||||
int sendRequest(HttpMethod request, String method, URI uri, Map<String, String> headers) {
|
||||
try {
|
||||
getClient(uri).executeMethod(request)
|
||||
return request.getStatusCode()
|
||||
} finally {
|
||||
request.releaseConnection()
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,96 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.apachehttpclient.v2_0;
|
||||
|
||||
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.URI;
|
||||
import java.util.Map;
|
||||
import org.apache.commons.httpclient.HttpClient;
|
||||
import org.apache.commons.httpclient.HttpConnectionManager;
|
||||
import org.apache.commons.httpclient.HttpMethod;
|
||||
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
|
||||
import org.apache.commons.httpclient.methods.DeleteMethod;
|
||||
import org.apache.commons.httpclient.methods.GetMethod;
|
||||
import org.apache.commons.httpclient.methods.HeadMethod;
|
||||
import org.apache.commons.httpclient.methods.OptionsMethod;
|
||||
import org.apache.commons.httpclient.methods.PostMethod;
|
||||
import org.apache.commons.httpclient.methods.PutMethod;
|
||||
import org.apache.commons.httpclient.methods.TraceMethod;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
|
||||
abstract class AbstractCommonsHttpClientTest extends AbstractHttpClientTest<HttpMethod> {
|
||||
|
||||
@RegisterExtension
|
||||
static final InstrumentationExtension testing = HttpClientInstrumentationExtension.forAgent();
|
||||
|
||||
private static final HttpConnectionManager connectionManager =
|
||||
new MultiThreadedHttpConnectionManager();
|
||||
private static final HttpClient client = buildClient(false);
|
||||
private static final HttpClient clientWithReadTimeout = buildClient(true);
|
||||
|
||||
static HttpClient buildClient(boolean readTimeout) {
|
||||
HttpClient client = new HttpClient(connectionManager);
|
||||
client.setConnectionTimeout((int) CONNECTION_TIMEOUT.toMillis());
|
||||
if (readTimeout) {
|
||||
client.setTimeout((int) READ_TIMEOUT.toMillis());
|
||||
}
|
||||
return client;
|
||||
}
|
||||
|
||||
HttpClient getClient(URI uri) {
|
||||
if (uri.toString().contains("/read-timeout")) {
|
||||
return clientWithReadTimeout;
|
||||
}
|
||||
return client;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HttpMethod buildRequest(String method, URI uri, Map<String, String> headers) {
|
||||
HttpMethod request;
|
||||
switch (method) {
|
||||
case "GET":
|
||||
request = new GetMethod(uri.toString());
|
||||
break;
|
||||
case "PUT":
|
||||
request = new PutMethod(uri.toString());
|
||||
break;
|
||||
case "POST":
|
||||
request = new PostMethod(uri.toString());
|
||||
break;
|
||||
case "HEAD":
|
||||
request = new HeadMethod(uri.toString());
|
||||
break;
|
||||
case "DELETE":
|
||||
request = new DeleteMethod(uri.toString());
|
||||
break;
|
||||
case "OPTIONS":
|
||||
request = new OptionsMethod(uri.toString());
|
||||
break;
|
||||
case "TRACE":
|
||||
request = new TraceMethod(uri.toString());
|
||||
break;
|
||||
default:
|
||||
throw new IllegalStateException("Unsupported method: " + method);
|
||||
}
|
||||
|
||||
for (Map.Entry<String, String> entry : headers.entrySet()) {
|
||||
request.setRequestHeader(entry.getKey(), entry.getValue());
|
||||
}
|
||||
return request;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure(HttpClientTestOptions.Builder optionsBuilder) {
|
||||
optionsBuilder
|
||||
.disableTestCallback()
|
||||
.disableTestReusedRequest()
|
||||
.disableTestNonStandardHttpMethod()
|
||||
.disableTestCircularRedirects();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.apachehttpclient.v2_0;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Map;
|
||||
import org.apache.commons.httpclient.HttpMethod;
|
||||
import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
|
||||
|
||||
// this test will be ignored if not executed with -PtestLatestDeps=true
|
||||
// because the latest dependency commons-httpclient v3.1 allows a call to the executeMethod
|
||||
// with some null parameters like HttpClient.executeMethod(null, request, null)
|
||||
// but this construct is not allowed in commons-httpclient v2 that is used for regular otel testing
|
||||
@EnabledIfSystemProperty(named = "testLatestDeps", matches = "true")
|
||||
public class CommonsHttpClientLatestDepsTest extends AbstractCommonsHttpClientTest {
|
||||
@Override
|
||||
public int sendRequest(HttpMethod request, String method, URI uri, Map<String, String> headers)
|
||||
throws Exception {
|
||||
try {
|
||||
getClient(uri).executeMethod(null, request, null);
|
||||
return request.getStatusCode();
|
||||
} finally {
|
||||
request.releaseConnection();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.instrumentation.apachehttpclient.v2_0;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Map;
|
||||
import org.apache.commons.httpclient.HttpMethod;
|
||||
|
||||
class CommonsHttpClientTest extends AbstractCommonsHttpClientTest {
|
||||
|
||||
@Override
|
||||
public int sendRequest(HttpMethod request, String method, URI uri, Map<String, String> headers)
|
||||
throws Exception {
|
||||
try {
|
||||
getClient(uri).executeMethod(request);
|
||||
return request.getStatusCode();
|
||||
} finally {
|
||||
request.releaseConnection();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue