Skip to content

Commit 39e7e8b

Browse files
committed
Refactoring node registration request initialization, fixup-methods moved to GridNodeConfiguration class, because they fix up objects of this class.
1 parent 8077cc3 commit 39e7e8b

4 files changed

Lines changed: 38 additions & 7 deletions

File tree

java/server/src/org/openqa/grid/common/RegistrationRequest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,9 +234,9 @@ public static RegistrationRequest build(GridNodeConfiguration configuration, Str
234234
}
235235

236236
// make sure we have a valid host
237-
pendingRequest.fixUpHost();
237+
pendingRequest.configuration.fixUpHost();
238238
// make sure the capabilities are updated with required fields
239-
pendingRequest.fixUpCapabilities();
239+
pendingRequest.configuration.fixUpCapabilities();
240240

241241
return pendingRequest;
242242
}

java/server/src/org/openqa/grid/internal/utils/SelfRegisteringRemote.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ public class SelfRegisteringRemote {
6868

6969
private boolean hasId;
7070

71+
public SelfRegisteringRemote(GridNodeConfiguration configuration) {
72+
this(RegistrationRequest.build(configuration));
73+
}
74+
7175
public SelfRegisteringRemote(RegistrationRequest request) {
7276
this.registrationRequest = request;
7377
this.httpClientFactory = new HttpClientFactory();

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,17 @@
3333
import com.beust.jcommander.Parameter;
3434

3535
import org.openqa.grid.common.JSONConfigurationUtils;
36+
import org.openqa.grid.common.RegistrationRequest;
37+
import org.openqa.grid.common.SeleniumProtocol;
3638
import org.openqa.grid.common.exception.GridConfigurationException;
3739
import org.openqa.grid.internal.utils.configuration.converters.BrowserDesiredCapabilityConverter;
3840
import org.openqa.grid.internal.utils.configuration.converters.NoOpParameterSplitter;
3941
import org.openqa.grid.internal.utils.configuration.validators.FileExistsValueValidator;
4042
import org.openqa.selenium.MutableCapabilities;
43+
import org.openqa.selenium.Platform;
4144
import org.openqa.selenium.json.Json;
45+
import org.openqa.selenium.net.NetworkUtils;
46+
import org.openqa.selenium.remote.CapabilityType;
4247
import org.openqa.selenium.remote.DesiredCapabilities;
4348

4449
import java.lang.reflect.Type;
@@ -501,4 +506,29 @@ public List<MutableCapabilities> deserialize(JsonElement jsonElement, Type type,
501506
throw new JsonParseException("capabilities should be expressed as an array of objects.");
502507
}
503508
}
509+
510+
public void fixUpCapabilities() {
511+
if (capabilities == null) {
512+
return; // assumes the caller set it/wants it this way
513+
}
514+
515+
Platform current = Platform.getCurrent();
516+
for (MutableCapabilities cap : capabilities) {
517+
if (cap.getPlatform() == null) {
518+
cap.setCapability(CapabilityType.PLATFORM, current);
519+
}
520+
if (cap.getCapability(RegistrationRequest.SELENIUM_PROTOCOL) == null) {
521+
cap.setCapability(RegistrationRequest.SELENIUM_PROTOCOL, SeleniumProtocol.WebDriver.toString());
522+
}
523+
}
524+
}
525+
526+
public void fixUpHost() {
527+
NetworkUtils util = new NetworkUtils();
528+
if (host == null || "ip".equalsIgnoreCase(host)) {
529+
host = util.getIp4NonLoopbackAddressOfThisMachine().getHostAddress();
530+
} else if ("host".equalsIgnoreCase(host)) {
531+
host = util.getIp4NonLoopbackAddressOfThisMachine().getHostName();
532+
}
533+
}
504534
}

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import com.beust.jcommander.JCommander;
2424

2525
import org.openqa.grid.common.GridRole;
26-
import org.openqa.grid.common.RegistrationRequest;
2726
import org.openqa.grid.internal.utils.SelfRegisteringRemote;
2827
import org.openqa.grid.internal.utils.configuration.CoreRunnerConfiguration;
2928
import org.openqa.grid.internal.utils.configuration.GridHubConfiguration;
@@ -286,10 +285,8 @@ public void setConfiguration(String[] args) {
286285

287286
public void launch() throws Exception {
288287
log.info("Launching a Selenium Grid node");
289-
RegistrationRequest c =
290-
RegistrationRequest.build(configuration);
291-
SelfRegisteringRemote remote = new SelfRegisteringRemote(c);
292-
remote.setRemoteServer(new SeleniumServer(c.getConfiguration()));
288+
SelfRegisteringRemote remote = new SelfRegisteringRemote(configuration);
289+
remote.setRemoteServer(new SeleniumServer(remote.getConfiguration()));
293290
remote.startRemoteServer();
294291
log.info("Selenium Grid node is up and ready to register to the hub");
295292
remote.startRegistrationProcess();

0 commit comments

Comments
 (0)