如何在Awaitility民意调查中获得剩余时间



使用Awaitility 4.0.1,我进行了以下轮询,以10秒为间隔,对服务器进行5分钟的数据轮询,并且运行良好:

AtomicReference<Response> response = null;
with().pollInterval(10, TimeUnit.SECONDS)
.and().timeout(5, TimeUnit.MINUTES)
.await("Retrieving data from server")
.until(() -> {
response = restClient.performGetRequest();
boolean isFilled = !response.readEntity(String.class).isEmpty();
return isFilled;
});
return response;

有没有一种方法可以从Awaitility(在untillambda中(中获得重试的尝试次数和失败前将执行的剩余重试次数?

否,不能从until中获取。但是,您可以使用条件评估侦听器,但它不会给您尝试次数或剩余尝试次数,但它会给您经过的时间和剩余时间。例如:

with().
conditionEvaluationListener(condition -> System.out.printf("%s (elapsed time %dms, remaining time %dms)n", condition.getDescription(), condition.getElapsedTimeInMS(), condition.getRemainingTimeInMS())).
await().atMost(Duration.TEN_SECONDS).until(new CountDown(5), is(equalTo(0)));

将记录:

org.awaitility.AwaitilityJava8Test$CountDown expected (<0> or a value less than <0>) but was <5> (elapsed time 101ms, remaining time 1899ms)
org.awaitility.AwaitilityJava8Test$CountDown expected (<0> or a value less than <0>) but was <4> (elapsed time 204ms, remaining time 1796ms)
org.awaitility.AwaitilityJava8Test$CountDown expected (<0> or a value less than <0>) but was <3> (elapsed time 306ms, remaining time 1694ms)
org.awaitility.AwaitilityJava8Test$CountDown expected (<0> or a value less than <0>) but was <2> (elapsed time 407ms, remaining time 1593ms)
org.awaitility.AwaitilityJava8Test$CountDown expected (<0> or a value less than <0>) but was <1> (elapsed time 508ms, remaining time 1492ms)
org.awaitility.AwaitilityJava8Test$CountDown reached its end value of (<0> or a value less than <0>) (elapsed time 610ms, remaining time 1390ms)

最新更新