When you make a rest request using RestAssured, it appears to wait for a response. I need to make a POST request in RestAssured and then while it waits for a response, I need to make a GET request. I'm using Java and RestAssured. I've also tried creating a second thread and it still has not worked. This is for testing purposes.
Here's where it waits:
given().auth().preemptive().basic(userCreds[0], userCreds[1]).contentType("application/json;").and().post(baseURL + resourcePath + this.act.getId() + "/run");
I would like this to run while the previous request is running as well (asynchronous request?):
given().auth().preemptive().basic(userCreds[0], userCreds[1]).when().get(baseURL + resourcePath + this.connect.getId() + "/outgoing/" + fileId);
I've also read that RestAssured supports asynchronous requests, but I've been unsuccessful to get it to work. My project is mavenized. I'm just a lowly QA guy so any help would be greatly appreciated.
Completable Future can be used to make calls async.
List<CompletableFuture<Pair<String,String>>> futures =
Arrays.stream(endpoints)
.map(endpoint -> restCallAsync(endpoint))
.collect(Collectors.toList());
List<Pair<String,String>> result =
futures.stream()
.map(CompletableFuture::join)
.collect(Collectors.toList());
CompletableFuture<Pair<String,String>> restCallAsync(String endpoint) {
CompletableFuture<Pair<String,String>> future = CompleteableFuture.supplyAsync(new Supplier<Pair<String,String>>() {
@Override
public Pair<String,String> get() {
Response response = given()
.relaxedHTTPSValidation()
.get(endpoint)
.then()
.extract().response();
LOG.info("Endpoint : " + endpoint + " Status : " + response.getStatusCode());
...
}
});
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With