Skip to content

Commit 10a21e5

Browse files
committed
[grid] Fixing CLI processing if -nodeConfig or -hubConfig present
JCommander toggles boolean options instead of setting them.
1 parent e4c8d45 commit 10a21e5

File tree

11 files changed

+60
-16
lines changed

11 files changed

+60
-16
lines changed

java/server/src/org/openqa/grid/internal/cli/CommonGridCliOptions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ String builtIn(String resource) {
119119
}
120120
}
121121

122-
String fromConfigFile(String file) {
122+
static String fromConfigFile(String file) {
123123
try(BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)))) {
124124
return br.lines().collect(Collectors.joining("\n"));
125125
} catch (IOException e) {

java/server/src/org/openqa/grid/internal/cli/GridHubCliOptions.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,28 @@
3333

3434
public class GridHubCliOptions extends CommonGridCliOptions {
3535

36+
public static class Parser {
37+
38+
public GridHubCliOptions parse(String[] args) {
39+
GridHubCliOptions result = new GridHubCliOptions();
40+
JCommander.newBuilder().addObject(result).build().parse(args);
41+
42+
if (result.configFile != null) {
43+
// Second round
44+
String configFile = result.configFile;
45+
result = new GridHubCliOptions();
46+
JCommander.newBuilder().addObject(result)
47+
.defaultProvider(defaults(fromConfigFile(configFile))).build().parse(args);
48+
}
49+
50+
return result;
51+
}
52+
}
53+
54+
/**
55+
* @deprecated Use GridHubCliOptions.Parser instead
56+
*/
57+
@Deprecated
3658
public GridHubCliOptions parse(String[] args) {
3759
JCommander.newBuilder().addObject(this).build().parse(args);
3860

@@ -44,7 +66,7 @@ public GridHubCliOptions parse(String[] args) {
4466
return this;
4567
}
4668

47-
private IDefaultProvider defaults(String json) {
69+
private static IDefaultProvider defaults(String json) {
4870
Map<String, Object> map = (Map<String, Object>) new Json().toType(json, Map.class);
4971
map.remove("custom");
5072
return optionName -> {

java/server/src/org/openqa/grid/internal/cli/GridNodeCliOptions.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,34 @@
2828
import org.openqa.selenium.MutableCapabilities;
2929
import org.openqa.selenium.json.Json;
3030

31+
import java.util.Arrays;
3132
import java.util.List;
3233
import java.util.Map;
3334

3435
public class GridNodeCliOptions extends CommonGridCliOptions {
3536

37+
public static class Parser {
38+
39+
public GridNodeCliOptions parse(String[] args) {
40+
GridNodeCliOptions result = new GridNodeCliOptions();
41+
JCommander.newBuilder().addObject(result).build().parse(args);
42+
43+
if (result.configFile != null) {
44+
// Second round
45+
String configFile = result.configFile;
46+
result = new GridNodeCliOptions();
47+
JCommander.newBuilder().addObject(result)
48+
.defaultProvider(defaults(fromConfigFile(configFile))).build().parse(args);
49+
}
50+
51+
return result;
52+
}
53+
}
54+
55+
/**
56+
* @deprecated Use GridNodeCliOptions.Parser instead
57+
*/
58+
@Deprecated
3659
public GridNodeCliOptions parse(String[] args) {
3760
JCommander.newBuilder().addObject(this).build().parse(args);
3861

@@ -44,7 +67,7 @@ public GridNodeCliOptions parse(String[] args) {
4467
return this;
4568
}
4669

47-
private IDefaultProvider defaults(String json) {
70+
private static IDefaultProvider defaults(String json) {
4871
Map<String, Object> map = new Json().toType(json, Map.class);
4972
map.remove("custom");
5073
map.remove("capabilities");

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ default void printUsage(PrintStream out) {
7272
StringBuilder sb = new StringBuilder();
7373
new JCommander(getOptions()).usage(sb);
7474
out.print(sb);
75-
7675
}
7776
}
7877

@@ -276,7 +275,7 @@ public Stoppable launch() {
276275

277276
})
278277
.put(GridRole.HUB.toString(), (args) -> new GridItemLauncher() {
279-
GridHubCliOptions options = new GridHubCliOptions().parse(args);
278+
GridHubCliOptions options = new GridHubCliOptions.Parser().parse(args);
280279

281280
@Override
282281
public CommonCliOptions getOptions() {
@@ -294,7 +293,7 @@ public Stoppable launch() throws Exception {
294293
}
295294
})
296295
.put(GridRole.NODE.toString(), (args) -> new GridItemLauncher() {
297-
GridNodeCliOptions options = new GridNodeCliOptions().parse(args);
296+
GridNodeCliOptions options = new GridNodeCliOptions.Parser().parse(args);
298297

299298
@Override
300299
public CommonCliOptions getOptions() {

java/server/test/org/openqa/grid/common/RegistrationRequestTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,6 @@ private void assertConstruction(RegistrationRequest req) {
376376
}
377377

378378
private GridNodeConfiguration parseCliOptions(String... args) {
379-
return new GridNodeCliOptions().parse(args).toConfiguration();
379+
return new GridNodeCliOptions.Parser().parse(args).toConfiguration();
380380
}
381381
}

java/server/test/org/openqa/grid/e2e/utils/GridTestHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public static SelfRegisteringRemote getRemoteWithoutCapabilities(URL hub, GridRo
4242
"-host","localhost",
4343
"-hub",hub.toString(),
4444
"-port",String.valueOf(PortProber.findFreePort())};
45-
GridNodeConfiguration config = new GridNodeCliOptions().parse(args).toConfiguration();
45+
GridNodeConfiguration config = new GridNodeCliOptions.Parser().parse(args).toConfiguration();
4646
RegistrationRequest req = RegistrationRequest.build(config);
4747
SelfRegisteringRemote remote = new SelfRegisteringRemote(req);
4848
remote.deleteAllBrowsers();

java/server/test/org/openqa/grid/internal/BaseRemoteProxyTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,6 @@ public void teardown() {
189189
}
190190

191191
private GridNodeConfiguration parseCliOptions(String... args) {
192-
return new GridNodeCliOptions().parse(args).toConfiguration();
192+
return new GridNodeCliOptions.Parser().parse(args).toConfiguration();
193193
}
194194
}

java/server/test/org/openqa/grid/internal/UserDefinedCapabilityMatcherTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class UserDefinedCapabilityMatcherTests {
3333
public void defaultsToDefaultMatcher() {
3434
GridRegistry registry = DefaultGridRegistry.newInstance(new Hub(new GridHubConfiguration()));
3535
String[] args = new String[]{"-role", "webdriver","-id", "abc","-host","localhost"};
36-
GridNodeConfiguration nodeConfiguration = new GridNodeCliOptions().parse(args).toConfiguration();
36+
GridNodeConfiguration nodeConfiguration = new GridNodeCliOptions.Parser().parse(args).toConfiguration();
3737
RegistrationRequest req = RegistrationRequest.build(nodeConfiguration);
3838
req.getConfiguration().proxy = null;
3939
RemoteProxy p = BaseRemoteProxy.getNewInstance(req, registry);
@@ -49,7 +49,7 @@ public void capabilityMatcherCanBeSpecified() {
4949
hubConfig.capabilityMatcher = new MyCapabilityMatcher();
5050
Hub hub = new Hub(hubConfig);
5151
String[] args = new String[]{"-role", "webdriver","-id", "abc","-host","localhost"};
52-
GridNodeConfiguration nodeConfiguration = new GridNodeCliOptions().parse(args).toConfiguration();
52+
GridNodeConfiguration nodeConfiguration = new GridNodeCliOptions.Parser().parse(args).toConfiguration();
5353
RegistrationRequest req = RegistrationRequest.build(nodeConfiguration);
5454
req.getConfiguration().proxy = null;
5555
RemoteProxy p = BaseRemoteProxy.getNewInstance(req, hub.getRegistry());

java/server/test/org/openqa/grid/internal/utils/configuration/GridHubConfigurationTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ public void testToString() {
173173
ghc = new GridHubConfiguration();
174174
String[] args = ("-servlet com.foo.bar.ServletA -servlet com.foo.bar.ServletB"
175175
+ " -custom foo=bar,bar=baz").split(" ");
176-
ghc = new GridHubCliOptions().parse(args).toConfiguration();
176+
ghc = new GridHubCliOptions.Parser().parse(args).toConfiguration();
177177

178178
assertTrue(ghc.toString().contains("-servlets com.foo.bar.ServletA"
179179
+ " -servlets com.foo.bar.ServletB"));
@@ -186,7 +186,7 @@ public void testToString() {
186186
public void testJcommanderConverterCapabilityMatcher() {
187187
String[] hubArgs = {"-capabilityMatcher", "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
188188
"-prioritizer", "org.openqa.grid.internal.utils.configuration.PlaceHolderTestingPrioritizer"};
189-
GridHubConfiguration ghc = new GridHubCliOptions().parse(hubArgs).toConfiguration();
189+
GridHubConfiguration ghc = new GridHubCliOptions.Parser().parse(hubArgs).toConfiguration();
190190
assertEquals("org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
191191
ghc.capabilityMatcher.getClass().getCanonicalName());
192192
assertEquals("org.openqa.grid.internal.utils.configuration.PlaceHolderTestingPrioritizer",

java/server/test/org/openqa/grid/internal/utils/configuration/GridNodeConfigurationTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ public void testAsJson() {
207207
public void testWithCapabilitiesArgs() {
208208
final String[] args = new String[] { "-capabilities",
209209
"browserName=chrome,platform=linux,maxInstances=10,boolean=false" };
210-
GridNodeConfiguration gnc = new GridNodeCliOptions().parse(args).toConfiguration();
210+
GridNodeConfiguration gnc = new GridNodeCliOptions.Parser().parse(args).toConfiguration();
211211
assertTrue(gnc.capabilities.size() == 1);
212212
assertEquals("chrome", gnc.capabilities.get(0).getBrowserName());
213213
assertEquals(10L, gnc.capabilities.get(0).getCapability("maxInstances"));
@@ -372,6 +372,6 @@ public void hubOptionHasPrecedenceOverNodeConfig() throws IOException {
372372
}
373373

374374
private GridNodeConfiguration parseCliOptions(String... args) {
375-
return new GridNodeCliOptions().parse(args).toConfiguration();
375+
return new GridNodeCliOptions.Parser().parse(args).toConfiguration();
376376
}
377377
}

0 commit comments

Comments
 (0)