Skip to content

Commit 0dcffa2

Browse files
committed
[grid] Choosing the driver builder with highest score
Previously we were using all builders that had a score higher than zero for each set of stereotypes. But this can lead to erroneous behaviour because two different builders should not serve the same stereotypes, it will be misleading for the user. With this, we only use the builder that has the highest score. The current behaviour is not affected, and this paves the way to have insert a DriverService for Safari Tech Preview.
1 parent ba05dd9 commit 0dcffa2

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

java/src/org/openqa/selenium/grid/node/config/NodeOptions.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,8 @@ private void addDriverConfigs(
330330

331331
builders.stream()
332332
.filter(builder -> builder.score(stereotype) > 0)
333-
.forEach(builder -> {
333+
.max(Comparator.comparingInt(builder -> builder.score(stereotype)))
334+
.ifPresent(builder -> {
334335
int maxDriverSessions = getDriverMaxSessions(info, driverMaxSessions);
335336
for (int i = 0; i < maxDriverSessions; i++) {
336337
driverConfigs.putAll(driverInfoConfig, factoryFactory.apply(stereotype));
@@ -445,7 +446,8 @@ private Map<WebDriverInfo, Collection<SessionFactory>> discoverDrivers(
445446
Capabilities caps = enhanceStereotype(info.getCanonicalCapabilities());
446447
builders.stream()
447448
.filter(builder -> builder.score(caps) > 0)
448-
.forEach(builder -> {
449+
.max(Comparator.comparingInt(builder -> builder.score(caps)))
450+
.ifPresent(builder -> {
449451
int maxDriverSessions = getDriverMaxSessions(info, maxSessions);
450452
for (int i = 0; i < maxDriverSessions; i++) {
451453
toReturn.putAll(info, factoryFactory.apply(caps));

java/src/org/openqa/selenium/grid/node/local/LocalNodeFactory.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import java.io.File;
4242
import java.util.ArrayList;
4343
import java.util.Collection;
44+
import java.util.Comparator;
4445
import java.util.List;
4546
import java.util.ServiceLoader;
4647

@@ -100,7 +101,8 @@ private static Collection<SessionFactory> createSessionFactory(
100101

101102
builders.stream()
102103
.filter(builder -> builder.score(stereotype) > 0)
103-
.forEach(builder -> {
104+
.max(Comparator.comparingInt(builder -> builder.score(stereotype)))
105+
.ifPresent(builder -> {
104106
DriverService.Builder<?, ?> driverServiceBuilder;
105107
Class<?> clazz = builder.getClass();
106108
try {

0 commit comments

Comments
 (0)