Skip to content

Commit ca85b81

Browse files
committed
Introducing unique ids for node slot configurations. Hub injects UID of the matched configuration to the new request payload. This allows to avoid secondary matching on the node, it knows immediately what slot configuration to use.
1 parent cb4925b commit ca85b81

9 files changed

Lines changed: 162 additions & 269 deletions

File tree

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

Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,6 @@
2929
import org.openqa.grid.internal.utils.configuration.GridNodeConfiguration.CollectionOfDesiredCapabilitiesDeSerializer;
3030
import org.openqa.grid.internal.utils.configuration.GridNodeConfiguration.CollectionOfDesiredCapabilitiesSerializer;
3131
import org.openqa.selenium.MutableCapabilities;
32-
import org.openqa.selenium.Platform;
33-
import org.openqa.selenium.net.NetworkUtils;
34-
import org.openqa.selenium.remote.CapabilityType;
3532

3633
import java.util.List;
3734

@@ -103,9 +100,9 @@ public RegistrationRequest(GridNodeConfiguration configuration, String name, Str
103100
this.description = description;
104101

105102
// make sure we have something that looks like a valid host
106-
fixUpHost();
103+
this.configuration.fixUpHost();
107104
// make sure the capabilities are updated with required fields
108-
fixUpCapabilities();
105+
this.configuration.fixUpCapabilities();
109106
}
110107

111108
public String getName() {
@@ -241,31 +238,6 @@ public static RegistrationRequest build(GridNodeConfiguration configuration, Str
241238
return pendingRequest;
242239
}
243240

244-
private void fixUpCapabilities() {
245-
if (configuration.capabilities == null) {
246-
return; // assumes the caller set it/wants it this way
247-
}
248-
249-
Platform current = Platform.getCurrent();
250-
for (MutableCapabilities cap : configuration.capabilities) {
251-
if (cap.getPlatform() == null) {
252-
cap.setCapability(CapabilityType.PLATFORM, current);
253-
}
254-
if (cap.getCapability(SELENIUM_PROTOCOL) == null) {
255-
cap.setCapability(SELENIUM_PROTOCOL, SeleniumProtocol.WebDriver.toString());
256-
}
257-
}
258-
}
259-
260-
private void fixUpHost() {
261-
NetworkUtils util = new NetworkUtils();
262-
if (configuration.host == null || "ip".equalsIgnoreCase(configuration.host)) {
263-
configuration.host = util.getIp4NonLoopbackAddressOfThisMachine().getHostAddress();
264-
} else if ("host".equalsIgnoreCase(configuration.host)) {
265-
configuration.host = util.getIp4NonLoopbackAddressOfThisMachine().getHostName();
266-
}
267-
}
268-
269241
/**
270242
* Validate the current setting and throw a config exception is an invalid setup is detected.
271243
*

java/server/src/org/openqa/grid/internal/TestSlot.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.openqa.grid.internal.listeners.TestSessionListener;
2424
import org.openqa.grid.internal.utils.CapabilityMatcher;
2525
import org.openqa.grid.internal.utils.configuration.GridHubConfiguration;
26+
import org.openqa.grid.internal.utils.configuration.GridNodeConfiguration;
2627

2728
import java.net.MalformedURLException;
2829
import java.net.URL;
@@ -132,6 +133,8 @@ public TestSession getNewSession(Map<String, Object> desiredCapabilities) {
132133
}
133134
if (matches(desiredCapabilities)) {
134135
log.info("Trying to create a new session on test slot " + this.capabilities);
136+
desiredCapabilities.put(GridNodeConfiguration.CONFIG_UUID_CAPABILITY,
137+
capabilities.get(GridNodeConfiguration.CONFIG_UUID_CAPABILITY));
135138
TestSession session = new TestSession(this, desiredCapabilities, Clock.systemUTC());
136139
currentSession = session;
137140
lastSessionStart = System.currentTimeMillis();

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ public void addBrowser(DesiredCapabilities cap, int instances) {
166166
}
167167
cap.setCapability(RegistrationRequest.MAX_INSTANCES, instances);
168168
registrationRequest.getConfiguration().capabilities.add(cap);
169+
registrationRequest.getConfiguration().fixUpCapabilities();
169170
}
170171

171172
/**

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,11 @@
5151
import java.net.URL;
5252
import java.util.ArrayList;
5353
import java.util.List;
54+
import java.util.UUID;
5455

5556
public class GridNodeConfiguration extends GridConfiguration {
5657
public static final String DEFAULT_NODE_CONFIG_FILE = "defaults/DefaultNodeWebDriver.json";
58+
public static final String CONFIG_UUID_CAPABILITY = "_CONFIG_UUID";
5759

5860
/*
5961
* IMPORTANT - Keep these constant values in sync with the ones specified in
@@ -520,6 +522,7 @@ public void fixUpCapabilities() {
520522
if (cap.getCapability(RegistrationRequest.SELENIUM_PROTOCOL) == null) {
521523
cap.setCapability(RegistrationRequest.SELENIUM_PROTOCOL, SeleniumProtocol.WebDriver.toString());
522524
}
525+
cap.setCapability(CONFIG_UUID_CAPABILITY, UUID.randomUUID().toString());
523526
}
524527
}
525528

java/server/src/org/openqa/grid/web/servlet/RegistrationServlet.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ private void considerV2Json(GridNodeConfiguration configuration, JsonObject json
178178
MutableCapabilities cap = converter.toType(capabilities.get(i), DesiredCapabilities.class);
179179
configuration.capabilities.add(cap);
180180
}
181+
configuration.fixUpCapabilities();
181182
}
182183
}
183184

java/server/test/org/openqa/grid/e2e/GridE2ETests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
import org.openqa.grid.e2e.misc.WebDriverPriorityDemo;
3636
import org.openqa.grid.e2e.node.BrowserTimeOutTest;
3737
import org.openqa.grid.e2e.node.CrashWhenStartingBrowserTest;
38-
import org.openqa.grid.e2e.node.DefaultProxyFindsFirefoxLocationsTest;
38+
import org.openqa.grid.e2e.node.DefaultProxyInjectsConfigurationUuidTest;
3939
import org.openqa.grid.e2e.node.DefaultProxyIsUnregisteredIfDownForTooLongTest;
4040
import org.openqa.grid.e2e.node.NodeGoingDownAndUpTest;
4141
import org.openqa.grid.e2e.node.NodeRecoveryTest;
@@ -48,7 +48,7 @@
4848
BrowserTimeOutTest.class,
4949
ConfigInheritanceTest.class,
5050
CrashWhenStartingBrowserTest.class,
51-
DefaultProxyFindsFirefoxLocationsTest.class,
51+
DefaultProxyInjectsConfigurationUuidTest.class,
5252
DefaultProxyIsUnregisteredIfDownForTooLongTest.class,
5353
ExtraServletUtilTest.class,
5454
Grid1HeartbeatTest.class,

java/server/test/org/openqa/grid/e2e/node/DefaultProxyFindsFirefoxLocationsTest.java

Lines changed: 0 additions & 237 deletions
This file was deleted.

0 commit comments

Comments
 (0)