Mercurial > hg > thermostat-ng > web-gateway
changeset 267:2de9f7a29768
Tests: wait for mongodb socket to close before considering it stopped
author | Zdenek Zambersky <zzambers@redhat.com> |
---|---|
date | Wed, 27 Sep 2017 17:20:28 +0200 |
parents | 3055303a670f |
children | e159ff4b557f |
files | tests/test-utils/src/main/java/com/redhat/thermostat/gateway/tests/utils/MongodTestUtil.java |
diffstat | 1 files changed, 20 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/test-utils/src/main/java/com/redhat/thermostat/gateway/tests/utils/MongodTestUtil.java Tue Sep 26 11:41:34 2017 -0400 +++ b/tests/test-utils/src/main/java/com/redhat/thermostat/gateway/tests/utils/MongodTestUtil.java Wed Sep 27 17:20:28 2017 +0200 @@ -50,6 +50,10 @@ import com.mongodb.client.MongoCollection; import com.redhat.thermostat.gateway.common.util.OS; +import java.net.ServerSocket; +import java.net.SocketAddress; +import java.net.InetSocketAddress; + public class MongodTestUtil { private static final int WAIT_FOR_MAX_ITERATIONS = 100; @@ -100,6 +104,7 @@ mongoClient.close(); mongoClient = null; waitForMongodStop(); + waitForSocketToClose(port); finish(); } } @@ -174,6 +179,21 @@ return false; } + private boolean waitForSocketToClose(int port) throws InterruptedException { + for (int i = 0; i < WAIT_FOR_MAX_ITERATIONS; ++i) { + /* Try to bind socket, if it fails, port is still in use */ + try (ServerSocket socket = new ServerSocket()) { + SocketAddress address = new InetSocketAddress(port); + socket.bind(address, 0); + return true; + } catch (IOException e) { + /* ignored */ + } + Thread.sleep(WAIT_FOR_SLEEP_DURATION); + } + return false; + } + public boolean isConnectedToDatabase() { return connectedToDatabase; }