99 lines
2.8 KiB
Groovy
99 lines
2.8 KiB
Groovy
/*
|
|
* 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
|
|
}
|
|
}
|