public static String renderAll(PingSummary summary) { final StringBuilder builder = new StringBuilder(); final List<PingSequence> sequences = summary.getSequences(); builder.append(renderHeader(summary)); builder.append("\n"); for (PingSequence eachSequence : sequences) { builder.append(renderSequence(summary.getRequest(), eachSequence)); builder.append("\n"); } if (summary.isComplete()) { builder.append(renderSummary(summary)); } return builder.toString(); }
@Override public CompletableFuture<PingSummary> execute(PingRequestDTO requestDTO) { return client.execute(requestDTO).thenApply(responseDTO -> { final PingResponse pingResponse = new PingResponse(); pingResponse.setRtt(responseDTO.getRtt()); PingSummary summary = new PingSummary(requestDTO.toPingRequest(), 1 /* we always only have 1 */); summary.addSequence(1, pingResponse); return summary; }); } }
public static String renderSummary(PingSummary summary) { final StringBuilder builder = new StringBuilder(); PingSummaryCalculator calculator = new PingSummaryCalculator(summary.getSequences()); builder.append("\n"); builder.append(String.format("--- %s ping statistics ---", summary.getRequest().getInetAddress())); builder.append("\n"); builder.append(String.format("%d packets transmitted, %d packets received, %.2f%% packet loss", calculator.getPacketsTransmitted(), calculator.getPacketsReceived(), calculator.getPacketLoss())); builder.append("\n"); builder.append(String.format("round-trip min/avg/max/stddev = %.2f/%.2f/%.2f/%.2f ms", (double) calculator.getMin(), calculator.getAvg(), (double) calculator.getMax(), calculator.getStdDev())); builder.append("\n"); return builder.toString(); } }
final PingRequestBuilder.Callback callback = (newSequence, summary) -> { if (m_count > 1) { if (summary.getSequences().size() == 0) { System.out.println(PingStringUtils.renderHeader(summary)); System.out.println(PingStringUtils.renderSequence(summary.getRequest(), newSequence)); if (summary.isComplete()) { System.out.println(PingStringUtils.renderSummary(summary)); System.out.println(String.format("PING: %s %.3f ms", byName, summary.getSequence(0).getResponse().getRtt()));
public boolean isSuccess() { return isComplete() && sequences.stream().filter(eachSequence -> eachSequence.isError() ||eachSequence.isTimeout()).count() == 0; }
@Override public PingSummary call() throws Exception { final PingSummary pingSummary = new PingSummary(requestDTO.toPingRequest(), numberOfRequests); for (int sequenceId = 1; sequenceId <= numberOfRequests; sequenceId++) { if (completableFuture.isCancelled()) { return pingSummary; // terminate early } reportProgress(null, pingSummary); final CompletableFuture<PingSummary> singlePingFuture = new SinglePingExecutionStrategy(client).execute(requestDTO); try { final PingSummary singlePingSummary = singlePingFuture.get(requestDTO.getTimeToLiveMs(), TimeUnit.MILLISECONDS); final PingSequence newSequence = new PingSequence(sequenceId, singlePingSummary.getSequence(0).getResponse()); pingSummary.addSequence(newSequence); reportProgress(newSequence, pingSummary); } catch (ExecutionException | InterruptedException | TimeoutException e) { PingSequence newSequence = new PingSequence(sequenceId, e); pingSummary.addSequence(newSequence); reportProgress(newSequence, pingSummary); } } completableFuture.complete(pingSummary); return pingSummary; }
public PingSequence getSequence(int sequenceIndex) { return getSequences().get(sequenceIndex); }
public static String renderHeader(PingSummary summary) { return String.format("PING %s: %d data bytes", summary.getRequest().getInetAddress(), summary.getRequest().getPacketSize()-8); }
final PingRequestBuilder.Callback callback = (newSequence, summary) -> { if (m_count > 1) { if (summary.getSequences().size() == 0) { System.out.println(PingStringUtils.renderHeader(summary)); System.out.println(PingStringUtils.renderSequence(summary.getRequest(), newSequence)); if (summary.isComplete()) { System.out.println(PingStringUtils.renderSummary(summary)); System.out.println(String.format("PING: %s %.3f ms", byName, summary.getSequence(0).getResponse().getRtt()));
getUI().accessSynchronously(() -> { if (pingFuture != null && !pingFuture.isCancelled()) { setRunning(!summary.isComplete()); resultArea.setValue(PingStringUtils.renderAll(summary)); if (summary.isComplete()) { getUI().setPollInterval(initialPollInterval);
available = pingSummary.getSequences().stream() .filter(PingSequence::isSuccess) .count() > 0;
getUI().accessSynchronously(() -> { if (pingFuture != null && !pingFuture.isCancelled()) { setRunning(!summary.isComplete()); resultArea.setValue(PingStringUtils.renderAll(summary)); if (summary.isComplete()) { getUI().setPollInterval(initialPollInterval);