Skip to content

Commit

Permalink
Introducing unique ids for node slot configurations. Hub injects UID …
Browse files Browse the repository at this point in the history
…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.
  • Loading branch information
barancev committed Nov 10, 2017
1 parent cb4925b commit ca85b81
Show file tree
Hide file tree
Showing 9 changed files with 162 additions and 269 deletions.
32 changes: 2 additions & 30 deletions java/server/src/org/openqa/grid/common/RegistrationRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,6 @@
import org.openqa.grid.internal.utils.configuration.GridNodeConfiguration.CollectionOfDesiredCapabilitiesDeSerializer;
import org.openqa.grid.internal.utils.configuration.GridNodeConfiguration.CollectionOfDesiredCapabilitiesSerializer;
import org.openqa.selenium.MutableCapabilities;
import org.openqa.selenium.Platform;
import org.openqa.selenium.net.NetworkUtils;
import org.openqa.selenium.remote.CapabilityType;

import java.util.List;

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

// make sure we have something that looks like a valid host
fixUpHost();
this.configuration.fixUpHost();
// make sure the capabilities are updated with required fields
fixUpCapabilities();
this.configuration.fixUpCapabilities();
}

public String getName() {
Expand Down Expand Up @@ -241,31 +238,6 @@ public static RegistrationRequest build(GridNodeConfiguration configuration, Str
return pendingRequest;
}

private void fixUpCapabilities() {
if (configuration.capabilities == null) {
return; // assumes the caller set it/wants it this way
}

Platform current = Platform.getCurrent();
for (MutableCapabilities cap : configuration.capabilities) {
if (cap.getPlatform() == null) {
cap.setCapability(CapabilityType.PLATFORM, current);
}
if (cap.getCapability(SELENIUM_PROTOCOL) == null) {
cap.setCapability(SELENIUM_PROTOCOL, SeleniumProtocol.WebDriver.toString());
}
}
}

private void fixUpHost() {
NetworkUtils util = new NetworkUtils();
if (configuration.host == null || "ip".equalsIgnoreCase(configuration.host)) {
configuration.host = util.getIp4NonLoopbackAddressOfThisMachine().getHostAddress();
} else if ("host".equalsIgnoreCase(configuration.host)) {
configuration.host = util.getIp4NonLoopbackAddressOfThisMachine().getHostName();
}
}

/**
* Validate the current setting and throw a config exception is an invalid setup is detected.
*
Expand Down
3 changes: 3 additions & 0 deletions java/server/src/org/openqa/grid/internal/TestSlot.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import org.openqa.grid.internal.listeners.TestSessionListener;
import org.openqa.grid.internal.utils.CapabilityMatcher;
import org.openqa.grid.internal.utils.configuration.GridHubConfiguration;
import org.openqa.grid.internal.utils.configuration.GridNodeConfiguration;

import java.net.MalformedURLException;
import java.net.URL;
Expand Down Expand Up @@ -132,6 +133,8 @@ public TestSession getNewSession(Map<String, Object> desiredCapabilities) {
}
if (matches(desiredCapabilities)) {
log.info("Trying to create a new session on test slot " + this.capabilities);
desiredCapabilities.put(GridNodeConfiguration.CONFIG_UUID_CAPABILITY,
capabilities.get(GridNodeConfiguration.CONFIG_UUID_CAPABILITY));
TestSession session = new TestSession(this, desiredCapabilities, Clock.systemUTC());
currentSession = session;
lastSessionStart = System.currentTimeMillis();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ public void addBrowser(DesiredCapabilities cap, int instances) {
}
cap.setCapability(RegistrationRequest.MAX_INSTANCES, instances);
registrationRequest.getConfiguration().capabilities.add(cap);
registrationRequest.getConfiguration().fixUpCapabilities();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,11 @@
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

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

/*
* IMPORTANT - Keep these constant values in sync with the ones specified in
Expand Down Expand Up @@ -520,6 +522,7 @@ public void fixUpCapabilities() {
if (cap.getCapability(RegistrationRequest.SELENIUM_PROTOCOL) == null) {
cap.setCapability(RegistrationRequest.SELENIUM_PROTOCOL, SeleniumProtocol.WebDriver.toString());
}
cap.setCapability(CONFIG_UUID_CAPABILITY, UUID.randomUUID().toString());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ private void considerV2Json(GridNodeConfiguration configuration, JsonObject json
MutableCapabilities cap = converter.toType(capabilities.get(i), DesiredCapabilities.class);
configuration.capabilities.add(cap);
}
configuration.fixUpCapabilities();
}
}

Expand Down
4 changes: 2 additions & 2 deletions java/server/test/org/openqa/grid/e2e/GridE2ETests.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
import org.openqa.grid.e2e.misc.WebDriverPriorityDemo;
import org.openqa.grid.e2e.node.BrowserTimeOutTest;
import org.openqa.grid.e2e.node.CrashWhenStartingBrowserTest;
import org.openqa.grid.e2e.node.DefaultProxyFindsFirefoxLocationsTest;
import org.openqa.grid.e2e.node.DefaultProxyInjectsConfigurationUuidTest;
import org.openqa.grid.e2e.node.DefaultProxyIsUnregisteredIfDownForTooLongTest;
import org.openqa.grid.e2e.node.NodeGoingDownAndUpTest;
import org.openqa.grid.e2e.node.NodeRecoveryTest;
Expand All @@ -48,7 +48,7 @@
BrowserTimeOutTest.class,
ConfigInheritanceTest.class,
CrashWhenStartingBrowserTest.class,
DefaultProxyFindsFirefoxLocationsTest.class,
DefaultProxyInjectsConfigurationUuidTest.class,
DefaultProxyIsUnregisteredIfDownForTooLongTest.class,
ExtraServletUtilTest.class,
Grid1HeartbeatTest.class,
Expand Down

This file was deleted.

0 comments on commit ca85b81

Please sign in to comment.