Fix flaky okhttp read timeout tests (#4499)
This commit is contained in:
parent
e19d086d58
commit
44cec73cec
|
@ -22,10 +22,13 @@ import java.util.concurrent.TimeUnit
|
||||||
class OkHttp2Test extends HttpClientTest<Request> implements AgentTestTrait {
|
class OkHttp2Test extends HttpClientTest<Request> implements AgentTestTrait {
|
||||||
@Shared
|
@Shared
|
||||||
def client = new OkHttpClient()
|
def client = new OkHttpClient()
|
||||||
|
@Shared
|
||||||
|
def clientWithReadTimeout = new OkHttpClient()
|
||||||
|
|
||||||
def setupSpec() {
|
def setupSpec() {
|
||||||
client.setConnectTimeout(CONNECT_TIMEOUT_MS, TimeUnit.MILLISECONDS)
|
client.setConnectTimeout(CONNECT_TIMEOUT_MS, TimeUnit.MILLISECONDS)
|
||||||
client.setReadTimeout(READ_TIMEOUT_MS, TimeUnit.MILLISECONDS)
|
clientWithReadTimeout.setConnectTimeout(CONNECT_TIMEOUT_MS, TimeUnit.MILLISECONDS)
|
||||||
|
clientWithReadTimeout.setReadTimeout(READ_TIMEOUT_MS, TimeUnit.MILLISECONDS)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -40,12 +43,12 @@ class OkHttp2Test extends HttpClientTest<Request> implements AgentTestTrait {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
int sendRequest(Request request, String method, URI uri, Map<String, String> headers) {
|
int sendRequest(Request request, String method, URI uri, Map<String, String> headers) {
|
||||||
return client.newCall(request).execute().code()
|
return getClient(uri).newCall(request).execute().code()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void sendRequestWithCallback(Request request, String method, URI uri, Map<String, String> headers, AbstractHttpClientTest.RequestResult requestResult) {
|
void sendRequestWithCallback(Request request, String method, URI uri, Map<String, String> headers, AbstractHttpClientTest.RequestResult requestResult) {
|
||||||
client.newCall(request).enqueue(new Callback() {
|
getClient(uri).newCall(request).enqueue(new Callback() {
|
||||||
@Override
|
@Override
|
||||||
void onFailure(Request req, IOException e) {
|
void onFailure(Request req, IOException e) {
|
||||||
requestResult.complete(e)
|
requestResult.complete(e)
|
||||||
|
@ -58,6 +61,13 @@ class OkHttp2Test extends HttpClientTest<Request> implements AgentTestTrait {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OkHttpClient getClient(URI uri) {
|
||||||
|
if (uri.toString().contains("/read-timeout")) {
|
||||||
|
return clientWithReadTimeout
|
||||||
|
}
|
||||||
|
return client
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
Set<AttributeKey<?>> httpAttributes(URI uri) {
|
Set<AttributeKey<?>> httpAttributes(URI uri) {
|
||||||
Set<AttributeKey<?>> extra = [
|
Set<AttributeKey<?>> extra = [
|
||||||
|
|
|
@ -28,12 +28,20 @@ abstract class AbstractOkHttp3Test extends HttpClientTest<Request> {
|
||||||
abstract Call.Factory createCallFactory(OkHttpClient.Builder clientBuilder)
|
abstract Call.Factory createCallFactory(OkHttpClient.Builder clientBuilder)
|
||||||
|
|
||||||
@Shared
|
@Shared
|
||||||
Call.Factory client = createCallFactory(
|
Call.Factory client = createCallFactory(getClientBuilder(false))
|
||||||
new OkHttpClient.Builder()
|
@Shared
|
||||||
|
Call.Factory clientWithReadTimeout = createCallFactory(getClientBuilder(true))
|
||||||
|
|
||||||
|
OkHttpClient.Builder getClientBuilder(boolean withReadTimeout) {
|
||||||
|
OkHttpClient.Builder builder = new OkHttpClient.Builder()
|
||||||
.connectTimeout(CONNECT_TIMEOUT_MS, TimeUnit.MILLISECONDS)
|
.connectTimeout(CONNECT_TIMEOUT_MS, TimeUnit.MILLISECONDS)
|
||||||
.readTimeout(READ_TIMEOUT_MS, TimeUnit.MILLISECONDS)
|
|
||||||
.protocols(Arrays.asList(Protocol.HTTP_1_1))
|
.protocols(Arrays.asList(Protocol.HTTP_1_1))
|
||||||
.retryOnConnectionFailure(false))
|
.retryOnConnectionFailure(false)
|
||||||
|
if (withReadTimeout) {
|
||||||
|
builder.readTimeout(READ_TIMEOUT_MS, TimeUnit.MILLISECONDS)
|
||||||
|
}
|
||||||
|
return builder
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
Request buildRequest(String method, URI uri, Map<String, String> headers) {
|
Request buildRequest(String method, URI uri, Map<String, String> headers) {
|
||||||
|
@ -46,7 +54,7 @@ abstract class AbstractOkHttp3Test extends HttpClientTest<Request> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
int sendRequest(Request request, String method, URI uri, Map<String, String> headers) {
|
int sendRequest(Request request, String method, URI uri, Map<String, String> headers) {
|
||||||
def response = client.newCall(request).execute()
|
def response = getClient(uri).newCall(request).execute()
|
||||||
response.body().withCloseable {
|
response.body().withCloseable {
|
||||||
return response.code()
|
return response.code()
|
||||||
}
|
}
|
||||||
|
@ -54,7 +62,7 @@ abstract class AbstractOkHttp3Test extends HttpClientTest<Request> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void sendRequestWithCallback(Request request, String method, URI uri, Map<String, String> headers, AbstractHttpClientTest.RequestResult requestResult) {
|
void sendRequestWithCallback(Request request, String method, URI uri, Map<String, String> headers, AbstractHttpClientTest.RequestResult requestResult) {
|
||||||
client.newCall(request).enqueue(new Callback() {
|
getClient(uri).newCall(request).enqueue(new Callback() {
|
||||||
@Override
|
@Override
|
||||||
void onFailure(Call call, IOException e) {
|
void onFailure(Call call, IOException e) {
|
||||||
requestResult.complete(e)
|
requestResult.complete(e)
|
||||||
|
@ -69,6 +77,13 @@ abstract class AbstractOkHttp3Test extends HttpClientTest<Request> {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Call.Factory getClient(URI uri) {
|
||||||
|
if (uri.toString().contains("/read-timeout")) {
|
||||||
|
return clientWithReadTimeout
|
||||||
|
}
|
||||||
|
return client
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean testCircularRedirects() {
|
boolean testCircularRedirects() {
|
||||||
false
|
false
|
||||||
|
|
Loading…
Reference in New Issue