in harness/src/main/java/org/apache/geode/perftest/infrastructure/ssh/SshInfrastructure.java [85:122]
public int onNode(final Node node, final String[] shellCommand) throws IOException {
try (final SSHClient client = getSSHClient(node.getAddress());
final Session session = client.startSession()) {
final String script = "'" + String.join("' '", shellCommand) + "'";
logger.debug("Executing {} on {}", script, node.getAddress());
try (final Session.Command cmd = session.exec(script)) {
final CompletableFuture<Void> copyStdout =
copyStreamAsynchronously(cmd.getInputStream(), System.out);
final CompletableFuture<Void> copyStdErr =
copyStreamAsynchronously(cmd.getErrorStream(), System.err);
cmd.join();
copyStdout.join();
copyStdErr.join();
final Boolean coreDumped = cmd.getExitWasCoreDumped();
if (null != coreDumped && coreDumped) {
logger.error("Core dumped for {} on {}", script, node.getAddress());
}
final String errorMessage = cmd.getExitErrorMessage();
if (null != errorMessage) {
logger.error("Exit error message for {} on {} was \"{}\"", script, node.getAddress(),
errorMessage);
}
final Signal exitSignal = cmd.getExitSignal();
if (null != exitSignal) {
logger.error("Exit signal for {} on {} was {}", script, node.getAddress(), exitSignal);
}
final Integer exitStatus = cmd.getExitStatus();
if (null == exitStatus) {
logger.error("Exit status for {} on {} was null", script, node.getAddress());
return -1;
}
return exitStatus;
}
}
}