Skip to content
This repository was archived by the owner on Apr 28, 2025. It is now read-only.

Commit 350f114

Browse files
Avoid people from using selenium 3.7.1 with grid extras 1.
1 parent 4772fa4 commit 350f114

File tree

4 files changed

+102
-4
lines changed

4 files changed

+102
-4
lines changed

SeleniumGridExtras/src/main/java/com/groupon/seleniumgridextras/config/FirstTimeRunConfig.java

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import com.google.gson.JsonPrimitive;
4242
import com.groupon.seleniumgridextras.ExecuteCommand;
4343
import com.groupon.seleniumgridextras.OS;
44+
import com.groupon.seleniumgridextras.Version;
4445
import com.groupon.seleniumgridextras.browser.BrowserVersionDetector;
4546
import com.groupon.seleniumgridextras.config.capabilities.Capability;
4647
import com.groupon.seleniumgridextras.config.remote.ConfigPusher;
@@ -52,6 +53,7 @@
5253
import com.groupon.seleniumgridextras.utilities.FileIOUtility;
5354
import com.groupon.seleniumgridextras.utilities.ValueConverter;
5455
import com.groupon.seleniumgridextras.utilities.json.JsonCodec;
56+
import com.groupon.seleniumgridextras.utilities.VersionCompare;
5557
import org.apache.commons.lang3.StringUtils;
5658
import org.apache.log4j.Logger;
5759

@@ -244,7 +246,7 @@ private static void setRebootAfterSessionLimit(Config defaultConfig) {
244246
}
245247

246248
}
247-
249+
248250
private static void setUnregisterNodeDuringReboot(Config defaultConfig) {
249251

250252
if (!defaultConfig.getAutoStartHub()) { // If this is a HUB, we never want to restart it
@@ -263,6 +265,12 @@ private static void setUnregisterNodeDuringReboot(Config defaultConfig) {
263265
}
264266

265267
private static void setDriverAutoUpdater(Config defaultConfig) {
268+
String gridExtrasVersion = Version.getSanitizedVersion();
269+
if (gridExtrasVersion.startsWith("1.")) {
270+
System.out.println("WARNING: Selenium 3.7.0 is the latest compatible version with Selenium-Grid-Extras 1.x. Upgrade to Selenium-Grid-Extras 2.x if you would like to use the latest webdriver.");
271+
} else if (gridExtrasVersion.startsWith("2.")) {
272+
System.out.println("WARNING: Selenium 3.7.1 is the oldest compatible version with Selenium-Grid-Extras 2.x. Downgrade to Selenium-Grid-Extras 1.x if you would like to use an older version of webdriver.");
273+
}
266274
String
267275
answer =
268276
askQuestion(
@@ -293,6 +301,19 @@ private static void setDriverAutoUpdater(Config defaultConfig) {
293301
}
294302
defaultConfig.getChromeDriver().setVersion(versionOfChrome);
295303
defaultConfig.getGeckoDriver().setVersion(versionOfGecko);
304+
305+
if(gridExtrasVersion.startsWith("1.")) {
306+
if(VersionCompare.versionCompare(versionOfWebDriver, "3.7.1") >= 0) {
307+
System.out.println("WARNING: Selenium " + versionOfWebDriver + " is not compatible with this verison of Selenium-Grid-Extras. Changing your selection to 3.7.0. Please upgrade to Selenium-Grid-Extras 2.x to use selenium " + versionOfWebDriver);
308+
versionOfWebDriver = "3.7.0";
309+
}
310+
} else if(gridExtrasVersion.startsWith("2.")) {
311+
if(VersionCompare.versionCompare(versionOfWebDriver, "3.7.1") < 0) {
312+
System.out.println("WARNING: Selenium " + versionOfWebDriver + " is not compatible with this verison of Selenium-Grid-Extras. Changing your selection to 3.7.1. Please downgrade to Selenium-Grid-Extras 1.x to use selenium " + versionOfWebDriver);
313+
versionOfWebDriver = "3.7.1";
314+
}
315+
}
316+
296317
defaultConfig.getWebdriver().setVersion(versionOfWebDriver);
297318

298319
String bitOfChromeDriver = JsonCodec.WebDriver.Downloader.BIT_32;
@@ -334,7 +355,7 @@ private static void setDriverAutoUpdater(Config defaultConfig) {
334355
System.out.printf("Current IE Driver Version: %s (%s bit)\n", defaultConfig.getIEdriver().getVersion(), defaultConfig.getIEdriver().getBit());
335356
}
336357
}
337-
358+
338359
private static void configureNodes(List<Capability> capabilities, String hubHost,
339360
String hubPort, Config defaultConfig, String nodePort) {
340361
GridNode node = new GridNode(defaultConfig.getWebdriver().getVersion().startsWith("3."));
@@ -425,7 +446,7 @@ private static List<Capability> getCapabilitiesFromUser(Config defaultConfig) {
425446
guessedPlatform);
426447

427448

428-
/* If we can't detect the correct browser version, default to No for auto updating the
449+
/* If we can't detect the correct browser version, default to No for auto updating the
429450
* browser version automatically on node startup */
430451
String ableToAutoDetectBrowserVersions = "1";
431452
for (Class currentCapabilityClass : Capability.getSupportedWebCapabilities().keySet()) {
@@ -544,7 +565,7 @@ private static void setGridExtrasPort(Config defaultConfig) {
544565
String
545566
answer =
546567
askQuestion("What is the PORT for Selenium Grid Extras?", "3000");
547-
568+
548569
defaultConfig.setGridExtrasPort(answer);
549570
}
550571

SeleniumGridExtras/src/main/java/com/groupon/seleniumgridextras/tasks/AutoUpgradeDrivers.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import com.groupon.seleniumgridextras.config.RuntimeConfig;
88
import com.groupon.seleniumgridextras.tasks.config.TaskDescriptions;
99
import com.groupon.seleniumgridextras.utilities.json.JsonCodec;
10+
import com.groupon.seleniumgridextras.Version;
11+
import com.groupon.seleniumgridextras.utilities.VersionCompare;
1012

1113
import org.apache.log4j.Logger;
1214

@@ -85,9 +87,25 @@ public JsonObject execute() {
8587
}
8688

8789
if (updateWebDriver) {
90+
String gridExtrasVersion = Version.getSanitizedVersion();
8891
String
8992
newWebDriverVersion =
9093
RuntimeConfig.getReleaseManager().getWedriverLatestVersion().getPrettyPrintVersion(".");
94+
if(gridExtrasVersion.startsWith("1.")) {
95+
if(VersionCompare.versionCompare(newWebDriverVersion, "3.7.1") >= 0) {
96+
String message = String.format("SeleniumGridExtras 2.X is not compatible with Selenium version 3.7.0 or less.");
97+
logger.info(message);
98+
getJsonResponse().addKeyValues(JsonCodec.OUT, message);
99+
return getJsonResponse().getJson();
100+
}
101+
} else if(gridExtrasVersion.startsWith("2.")) {
102+
if(VersionCompare.versionCompare(newWebDriverVersion, "3.7.1") < 0) {
103+
String message = String.format("SeleniumGridExtras 2.X is not compatible with Selenium version 3.7.0 or less.");
104+
logger.info(message);
105+
getJsonResponse().addKeyValues(JsonCodec.OUT, message);
106+
return getJsonResponse().getJson();
107+
}
108+
}
91109
logger.info("WebDriver JAR " + genericUpdate + " " + newWebDriverVersion);
92110
RuntimeConfig.getConfig().getWebdriver().setVersion(newWebDriverVersion);
93111
updateVersionFor(configHash, "webdriver", newWebDriverVersion);

SeleniumGridExtras/src/main/java/com/groupon/seleniumgridextras/tasks/UpgradeGridExtrasTask.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.groupon.seleniumgridextras.tasks.config.TaskDescriptions;
1010
import com.groupon.seleniumgridextras.utilities.FileIOUtility;
1111
import com.groupon.seleniumgridextras.utilities.json.JsonCodec;
12+
import com.groupon.seleniumgridextras.utilities.VersionCompare;
1213
import org.apache.log4j.Logger;
1314

1415
import java.io.File;
@@ -203,6 +204,24 @@ public JsonObject execute(String version) {
203204

204205
getJsonResponse().addKeyValues(JsonCodec.GridExtras.NEW_VERSION, version);
205206

207+
String webdriverVersion = RuntimeConfig.getConfig().getWebdriver().getVersion();
208+
System.out.println("webdriverVersion : " + webdriverVersion);
209+
System.out.println("Upgraded version of grid extras : " + version);
210+
if (version.startsWith("1.")) {
211+
if (VersionCompare.versionCompare(webdriverVersion, "3.7.1") >= 0) {
212+
String message = String.format("SeleniumGridExtras 2.X is not compatible with Selenium version 3.7.0 or less.");
213+
logger.info(message);
214+
getJsonResponse().addKeyValues(JsonCodec.OUT, message);
215+
return getJsonResponse().getJson();
216+
}
217+
} else if (version.startsWith("2.")) {
218+
if (VersionCompare.versionCompare(webdriverVersion, "3.7.1") < 0) {
219+
String message = String.format("SeleniumGridExtras 2.X is not compatible with Selenium version 3.7.0 or less.");
220+
logger.info(message);
221+
getJsonResponse().addKeyValues(JsonCodec.OUT, message);
222+
return getJsonResponse().getJson();
223+
}
224+
}
206225

207226
File destinationJar = new File(RuntimeConfig.getSeleniungGridExtrasHomePath(),
208227
String.format("SeleniumGridExtras-%s-SNAPSHOT-jar-with-dependencies.jar", version));
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.groupon.seleniumgridextras.utilities;
2+
3+
public class VersionCompare {
4+
5+
/**
6+
Return 1 if version1 is greater than version2
7+
Return 0 if version 1 is equal to version2
8+
Return -1 if version 1 is less than version2
9+
*/
10+
public static int versionCompare(String version1, String version2) {
11+
String[] version1Split = version1.split("\\.");
12+
String[] version2Split = version2.split("\\.");
13+
int major1 = (version1Split.length > 0) ? Integer.parseInt(version1Split[0]) : 0;
14+
int minor1 = (version1Split.length > 1) ? Integer.parseInt(version1Split[1]) : 0;
15+
int patch1 = (version1Split.length > 2) ? Integer.parseInt(version1Split[2]) : 0;
16+
17+
int major2 = (version2Split.length > 0) ? Integer.parseInt(version2Split[0]) : 0;
18+
int minor2 = (version2Split.length > 1) ? Integer.parseInt(version2Split[1]) : 0;
19+
int patch2 = (version2Split.length > 2) ? Integer.parseInt(version2Split[2]) : 0;
20+
if (major1 > major2) {
21+
return 1;
22+
} else if (major1 < major2) {
23+
return -1;
24+
} else { // Majors match
25+
if (minor1 > minor2) {
26+
return 1;
27+
} else if (minor1 < minor2) {
28+
return -1;
29+
} else {
30+
if (patch1 > patch2) {
31+
return 1;
32+
} else if (patch1 < patch2) {
33+
return -1;
34+
} else {
35+
return 0;
36+
}
37+
}
38+
}
39+
}
40+
}

0 commit comments

Comments
 (0)