/** * Continue to execute body repeatedly until condition is true or TEST_TIMEOUT_MS has * passed * @param condition what we are waiting for * @param body what to run in the loop * @throws AssertionError if the loop timed out. */ public static void whileTimeout(Condition condition, Runnable body) { whileTimeout(TEST_TIMEOUT_MS, condition, body); }
private void waitForNotNull(AtomicReference<TaskMessage> response) { Testing.whileTimeout(Testing.TEST_TIMEOUT_MS, () -> response.get() == null, sleep()); }
/** * Wait for amt tuples to be fully processed timeoutMs happens. */ public void trackedWait(int amt, int timeoutMs) { final int target = amt + lastSpoutCommit.get(); final String id = cluster.getTrackedId(); Random rand = ThreadLocalRandom.current(); whileTimeout(timeoutMs, () -> { int se = globalAmt(id, "spout-emitted"); int transferred = globalAmt(id, "transferred"); int processed = globalAmt(id, "processed"); LOG.info("emitted {} target {} transferred {} processed {}", se, target, transferred, processed); return (target != se) || (transferred != processed); }, () -> { Time.advanceTimeSecs(1); try { Thread.sleep(rand.nextInt(200)); } catch (Exception e) { throw new RuntimeException(e); } }); lastSpoutCommit.set(target); }
server.serve(); }).start(); Testing.whileTimeout( () -> !server.isServing(), () -> {
timeoutMs = TEST_TIMEOUT_MS; whileTimeout(timeoutMs, () -> !isEvery(spoutObjects, (o) -> ((CompletableSpout) o).isExhausted()), () -> { cluster.killTopologyWithOpts(topoName, killOpts); whileTimeout(timeoutMs, () -> state.assignmentInfo(topoId, null) != null, () -> {
tasks.add(1); tasks.add(2); Testing.whileTimeout(Testing.TEST_TIMEOUT_MS, () -> client.getLoad(tasks).isEmpty(), sleep());