Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class SocketRule implements TestRule {
- public static final Logger logger = LoggerFactory.getLogger(SocketRule.class);
- private Map<Integer, Exception> providedPorts = new HashMap<Integer, Exception>();
- private int lastPort = 8000;
- public int findFreePort() {
- do {
- lastPort++;
- } while (!Sockets.isPortAvailableUsingNetstat(lastPort));
- providedPorts.put(lastPort, new Exception());
- return lastPort;
- }
- public boolean checkProvidedPorts() {
- boolean result = true;
- for (Integer port : providedPorts.keySet()) {
- if (Sockets.isPortAvailableUsingNetstat(port)) {
- logger.debug("Port {} is available", port);
- } else {
- logger.error("Port " + port + " has not been released properly, it has been used first at:",
- providedPorts.get(port));
- }
- result = result && Sockets.isPortAvailableUsingNetstat(port);
- }
- return result;
- }
- @Override
- public Statement apply(final Statement statement, Description description) {
- return new Statement() {
- @Override
- public void evaluate() throws Throwable {
- statement.evaluate();
- if (!checkProvidedPorts()) {
- throw new AssertionFailedError("All ports have not been released");
- }
- }
- };
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement