private String findServerPort(int portStart, int portRange, int portMaxFail) {
int openPortTry = 0;
Optional<ServerSocket> serverPort = Optional.empty();
while (!serverPort.isPresent()) {
if (openPortTry++ > portMaxFail) {
throw new IllegalStateException("No openable server ports found, reached try limit; " + portMaxFail);
}
serverPort = openServerSocket(nextRandomServerPort(portStart, portRange));
}
try {
return Integer.toString(serverPort.get().getLocalPort());
} finally {
try {
serverPort.get().close();
} catch (IOException ex) {
}
}
}