java - 我怎样才能在等待投票中获得剩余时间?
问题描述
使用Awaitility 4.0.1,我整理了以下轮询,轮询我的服务器 5 分钟,以 10 秒为间隔,并且运行良好:
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 中获得 - 在until
lambda 中 - 重试尝试以及在失败之前它将执行的剩余重试次数?
解决方案
不,你不能从内部得到它until
。但是您可以使用Condition Evaluation Listener,但它不会为您提供尝试次数或剩余尝试次数,但确实会为您提供已用时间和剩余时间。例如:
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)
推荐阅读
- python - 无法通过回传传递 django 模板变量数组以查看
- java - 如何在 Android Studio 的 Android 应用程序中添加 APN 策略?
- python - Pytest ModuleNotFoundError
- shell - 如何在 alpine linux 中比较变量并设置值
- node.js - 如何将结果从模型返回到nodejs中的控制器
- python - 如何将裁剪后的图像合并回原始图像?
- python - 基于另一列的熊猫类别缺失值的插补
- java - Angular:如何将文件作为 Spring Boot 映射到域类的表单数据的一部分发送?
- python - openssl 无法使用 pip install 构建
- reactjs - 使用托管在 S3 上的 create-react-app 来访问 Heroku API