Skip to content

Commit 2f90373

Browse files
committed
[grid] Assigning node to a random free port if not specified explicitly. Fixes #5783
1 parent 2e76dd0 commit 2f90373

File tree

5 files changed

+12
-15
lines changed

5 files changed

+12
-15
lines changed

java/server/src/org/openqa/grid/common/defaults/DefaultNodeWebDriver.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
],
2929
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
3030
"maxSession": 5,
31-
"port": 5555,
31+
"port": -1,
3232
"register": true,
3333
"registerCycle": 5000,
3434
"hub": "http://localhost:4444",

java/server/src/org/openqa/grid/internal/utils/configuration/GridNodeConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ public class GridNodeConfiguration extends GridConfiguration {
5555
static final String DEFAULT_ROLE = "node";
5656

5757
/**
58-
* Default hub port
58+
* Default node port, -1 means random free port
5959
*/
60-
static final Integer DEFAULT_PORT = 5555;
60+
static final Integer DEFAULT_PORT = -1;
6161

6262
/**
6363
* Default node polling

java/server/src/org/openqa/grid/selenium/GridLauncherV3.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.openqa.grid.web.Hub;
3737
import org.openqa.grid.web.servlet.DisplayHelpServlet;
3838
import org.openqa.selenium.internal.BuildInfo;
39+
import org.openqa.selenium.net.PortProber;
3940
import org.openqa.selenium.remote.server.SeleniumServer;
4041
import org.openqa.selenium.remote.server.log.LoggingOptions;
4142
import org.openqa.selenium.remote.server.log.TerseFormatter;
@@ -303,6 +304,9 @@ public CommonCliOptions getOptions() {
303304
@Override
304305
public Stoppable launch() throws Exception {
305306
GridNodeConfiguration configuration = options.toConfiguration();
307+
if (configuration.port == null || configuration.port == -1) {
308+
configuration.port = PortProber.findFreePort();
309+
}
306310
log.info(String.format(
307311
"Launching a Selenium Grid node on port %s", configuration.port));
308312
SelfRegisteringRemote remote = new SelfRegisteringRemote(configuration);

java/server/test/org/openqa/grid/common/RegistrationRequestTest.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import static org.junit.Assert.assertNotSame;
2323
import static org.junit.Assert.assertNull;
2424
import static org.junit.Assert.assertSame;
25-
import static org.junit.Assert.assertTrue;
2625

2726
import org.junit.Assume;
2827
import org.junit.Test;
@@ -52,7 +51,7 @@ public void getConfigAsTests() throws Exception {
5251
RegistrationRequest req = new RegistrationRequest(config);
5352

5453
int c = req.getConfiguration().cleanUpCycle;
55-
assertTrue(c == 1);
54+
assertEquals(1, c);
5655

5756
String url2 = req.getConfiguration().getRemoteHost();
5857
assertEquals(url2, url.toString());
@@ -104,7 +103,7 @@ public void commandLineParamDefault() {
104103
assertEquals(4444, req.getConfiguration().getHubPort().longValue());
105104
// the node defaults to current IP.
106105
assertNotNull(req.getConfiguration().host);
107-
assertEquals(5555, req.getConfiguration().port.longValue());
106+
assertEquals(-1, req.getConfiguration().port.longValue());
108107
}
109108

110109
@Test
@@ -180,7 +179,7 @@ public void testBuildWithConfiguration() {
180179
actualConfig.host = null;
181180
// make sure this merge protected value was preserved, then reset it for the final assert
182181
assertEquals(1234, actualConfig.port.intValue());
183-
actualConfig.port = 5555;
182+
actualConfig.port = -1;
184183

185184
// merge actualConfig onto it.. which is what build(config) should do
186185
GridNodeConfiguration expectedConfig = new GridNodeConfiguration();

java/server/test/org/openqa/grid/internal/utils/configuration/GridNodeConfigurationTest.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public void testLoadFromJson() throws IOException {
7373
assertEquals(1234, gnc.port.intValue());
7474
assertEquals(5, gnc.maxSession.intValue());
7575
assertEquals("dummyhost", gnc.host);
76-
assertTrue(gnc.capabilities.size() == 1);
76+
assertEquals(1, gnc.capabilities.size());
7777
assertEquals("firefox", gnc.capabilities.get(0).getBrowserName());
7878
assertEquals(5L, gnc.capabilities.get(0).getCapability("maxInstances"));
7979
}
@@ -193,7 +193,7 @@ public void testAsJson() {
193193
+ "\"browserTimeout\":0,"
194194
+ "\"debug\":false,"
195195
+ "\"host\":\"0.0.0.0\","
196-
+ "\"port\":5555,"
196+
+ "\"port\":-1,"
197197
+ "\"role\":\"node\","
198198
+ "\"timeout\":1800}",
199199
MAP_TYPE);
@@ -302,12 +302,6 @@ public void testGetHubPort_forNullConfig() {
302302
gnc.getHubPort();
303303
}
304304

305-
@Test
306-
public void testGetRemoteHost_forNullConfig() {
307-
GridNodeConfiguration gnc = new GridNodeConfiguration();
308-
assertEquals("http://localhost:5555", gnc.getRemoteHost());
309-
}
310-
311305
@Test
312306
public void testMergeWithRealValues() {
313307
GridNodeConfiguration gnc = new GridNodeConfiguration();

0 commit comments

Comments
 (0)