public static String renderSequence(PingRequest request, PingSequence sequence) { Objects.requireNonNull(request); Objects.requireNonNull(sequence); final StringBuilder builder = new StringBuilder(); if (sequence.isTimeout()) { builder.append(String.format("Request timeout for icmp_seq %s", sequence.getSequenceNumber())); } if (sequence.isError()) { builder.append( String.format("Request error for icmp_seq %s: %s", sequence.getSequenceNumber(), sequence.getError().getMessage())); } if (sequence.isSuccess()) { builder.append( String.format("%s bytes from %s: icmp_seq=%d time=%.3f ms", request.getPacketSize(), request.getInetAddress(), sequence.getSequenceNumber(), sequence.getResponse().getRtt())); } return builder.toString(); }
public void addSequence(int sequenceId, PingResponse pingResponse) { Objects.requireNonNull(pingResponse); sequences.add(new PingSequence(sequenceId, pingResponse)); }
@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; }
private LongStream getDiffTimeNanos() { return sequences.stream().filter(PingSequence::isSuccess).mapToLong(eachSequence -> (long) eachSequence.getResponse().getRtt()); }
public List<PingSequence> getSequences() { return sequences.stream().sorted((s1, s2) -> Integer.compare(s1.getSequenceNumber(), s2.getSequenceNumber())).collect(Collectors.toList()); }
System.out.println(String.format("PING: %s %.3f ms", byName, summary.getSequence(0).getResponse().getRtt()));
System.out.println(String.format("PING: %s %.3f ms", byName, summary.getSequence(0).getResponse().getRtt()));
public void addSequence(int sequenceId, Throwable exception) { Objects.requireNonNull(exception); sequences.add(new PingSequence(sequenceId, exception)); }