From 9806cfb8493cde8c8377fd54bb6e37bef7919b52 Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Wed, 7 Feb 2018 14:41:39 +0100 Subject: Stabilize node-admin test --- .../admin/noderepository/NodeRepositoryImplTest.java | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'node-admin') diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImplTest.java index 85d92dbee25..949b4ccdf78 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/noderepository/NodeRepositoryImplTest.java @@ -55,10 +55,22 @@ public class NodeRepositoryImplTest { */ @Before public void startContainer() throws Exception { - final int port = findRandomOpenPort(); - requestExecutor = ConfigServerHttpRequestExecutor.create( - Collections.singleton(URI.create("http://127.0.0.1:" + port)), Optional.empty(), Optional.empty(), Optional.empty()); - container = JDisc.fromServicesXml(ContainerConfig.servicesXmlV2(port), Networking.enable); + Exception lastException = null; + + // This tries to bind a random open port for the node-repo mock, which is a race condition, so try + // a few times before giving up + for (int i = 0; i < 3; i++) { + try { + final int port = findRandomOpenPort(); + container = JDisc.fromServicesXml(ContainerConfig.servicesXmlV2(port), Networking.enable); + requestExecutor = ConfigServerHttpRequestExecutor.create( + Collections.singleton(URI.create("http://127.0.0.1:" + port)), Optional.empty(), Optional.empty(), Optional.empty()); + return; + } catch (RuntimeException e) { + lastException = e; + } + } + throw new RuntimeException("Failed to bind a port in three attempts, giving up", lastException); } private void waitForJdiscContainerToServe() throws InterruptedException { -- cgit v1.2.3