web-dev-qa-db-fra.com

Dans REST Assuré, comment définir un délai d'expiration?

J'utilise RestAssured 2.8.0 et j'essaie de définir mon propre délai d'expiration (pour le délai d'expiration de la passerelle), donc si je n'obtiens pas de réponse après X millisecondes, je veux abandonner.

J'ai essayé:

public static ValidatableResponse postWithConnectionConfig(String url, String body, RequestSpecification requestSpecification, ResponseSpecification responseSpecification) {
    ConnectionConfig.CloseIdleConnectionConfig closeIdleConnectionConfig = new ConnectionConfig.CloseIdleConnectionConfig(1L, TimeUnit.MILLISECONDS);
    ConnectionConfig connectionConfig = new ConnectionConfig(closeIdleConnectionConfig);
    RestAssuredConfig restAssuredConfig = new RestAssuredConfig().connectionConfig(connectionConfig);


    return given().specification(requestSpecification)
            .body(body)
            .config(restAssuredConfig)
            .post(url)
            .then()
            .specification(responseSpecification);

}

ou

ConnectionConfig connectionConfig = new ConnectionConfig()
            .closeIdleConnectionsAfterEachResponseAfter(10L, TimeUnit.MILLISECONDS);
RestAssuredConfig restAssuredConfig = new RestAssuredConfig().connectionConfig(connectionConfig);

J'ai aussi essayé d'ajouter

.queryParam("SO_TIMEOUT", 10)

ou

.queryParam("CONNECTION_MANAGER_TIMEOUT", 10)

rien ne semble fonctionner. Cela n'interrompt pas ma requête

15
TomH

Vous pouvez configurer des délais d'expiration en définissant les paramètres du client HTTP:

RestAssuredConfig config = RestAssured.config()
        .httpClient(HttpClientConfig.httpClientConfig()
                .setParam(CoreConnectionPNames.CONNECTION_TIMEOUT, 1000)
                .setParam(CoreConnectionPNames.SO_TIMEOUT, 1000));

given().config(config).post("http://localhost:8884");
15

Puisque CoreConnectionPNames est obsolète, voici une nouvelle façon. Cela fonctionne pour le client HTTP Apache 4.5.3:

import org.Apache.http.client.config.RequestConfig;
import org.Apache.http.impl.client.HttpClientBuilder;

import io.restassured.RestAssured;
import io.restassured.config.HttpClientConfig;

...

RequestConfig requestConfig = RequestConfig.custom()
    .setConnectTimeout(5000)
    .setConnectionRequestTimeout(5000)
    .setSocketTimeout(5000)
    .build();

HttpClientConfig httpClientFactory = HttpClientConfig.httpClientConfig()
    .httpClientFactory(() -> HttpClientBuilder.create()
        .setDefaultRequestConfig(requestConfig)
        .build());

RestAssured.config = RestAssured
    .config()
    .httpClient(httpClientFactory);
6
Tillerino

Très simple

doc = Jsoup.connect(company_url).timeout(2000).get();

company_url est l'URL de votre API essayant de frapper.

0
My dear Riya