GEODE-2103: start locator command should include --http-service-port and 
--http-service-bind-address

* Adding --http-service-port and --http-service-bind-address parameters to 
start locator command
* Added Junit test to verify command line parameters
* Fixing HelpCommandsIntegrationTest
* this closes #326


Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/1d5ae68e
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/1d5ae68e
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/1d5ae68e

Branch: refs/heads/feature/GEODE-2267
Commit: 1d5ae68ef07fa2c7f4298b91be9f02bea5fc8110
Parents: 2df3063
Author: Deepak Dixit <[email protected]>
Authored: Sat Dec 24 10:42:55 2016 +0530
Committer: Jinmei Liao <[email protected]>
Committed: Mon Feb 6 20:14:56 2017 -0800

----------------------------------------------------------------------
 .../LauncherLifecycleCommandsJUnitTest.java     | 43 ++++++++++++++++++++
 .../cli/commands/LauncherLifecycleCommands.java | 13 +++++-
 .../internal/cli/i18n/CliStrings.java           |  6 +++
 .../cli/commands/golden-help-offline.properties |  9 +++-
 4 files changed, 69 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/geode/blob/1d5ae68e/geode-assembly/src/test/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommandsJUnitTest.java
----------------------------------------------------------------------
diff --git 
a/geode-assembly/src/test/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommandsJUnitTest.java
 
b/geode-assembly/src/test/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommandsJUnitTest.java
index a31c78c..947da42 100755
--- 
a/geode-assembly/src/test/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommandsJUnitTest.java
+++ 
b/geode-assembly/src/test/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommandsJUnitTest.java
@@ -25,6 +25,7 @@ import java.util.Properties;
 import java.util.Set;
 import java.util.Stack;
 
+import org.apache.geode.distributed.LocatorLauncher;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -566,6 +567,48 @@ public class LauncherLifecycleCommandsJUnitTest {
         expectedCommandLineElements.isEmpty());
   }
 
+  /**
+   * Verify commandline parameters passed for starting locator
+   * 
+   * @throws Exception
+   */
+  @Test
+  public void testLocatorCommandLineWithRestAPI() throws Exception {
+    LocatorLauncher locatorLauncher =
+        new LocatorLauncher.Builder().setCommand(LocatorLauncher.Command.START)
+            
.setMemberName("testLocatorCommandLineWithRestAPI").setBindAddress("localhost")
+            .setPort(11111).build();
+
+    Properties gemfireProperties = new Properties();
+    gemfireProperties.setProperty(HTTP_SERVICE_PORT, "8089");
+    gemfireProperties.setProperty(HTTP_SERVICE_BIND_ADDRESS, "localhost");
+
+
+    String[] commandLineElements = 
launcherCommands.createStartLocatorCommandLine(locatorLauncher,
+        null, null, gemfireProperties, null, false, new String[0], null, null);
+
+    assertNotNull(commandLineElements);
+    assertTrue(commandLineElements.length > 0);
+
+    Set<String> expectedCommandLineElements = new HashSet<>(6);
+
+    expectedCommandLineElements.add(locatorLauncher.getCommand().getName());
+    
expectedCommandLineElements.add(locatorLauncher.getMemberName().toLowerCase());
+    expectedCommandLineElements.add(String.format("--port=%1$d", 
locatorLauncher.getPort()));
+    expectedCommandLineElements
+        .add("-d" + DistributionConfig.GEMFIRE_PREFIX + "" + HTTP_SERVICE_PORT 
+ "=" + "8089");
+    expectedCommandLineElements.add("-d" + DistributionConfig.GEMFIRE_PREFIX + 
""
+        + HTTP_SERVICE_BIND_ADDRESS + "=" + "localhost");
+
+
+    for (String commandLineElement : commandLineElements) {
+      expectedCommandLineElements.remove(commandLineElement.toLowerCase());
+    }
+
+    assertTrue(String.format("Expected ([]); but was (%1$s)", 
expectedCommandLineElements),
+        expectedCommandLineElements.isEmpty());
+  }
+
 
   @Test
   public void testReadPidWithNonExistingFile() {

http://git-wip-us.apache.org/repos/asf/geode/blob/1d5ae68e/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommands.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommands.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommands.java
index 922b94d..e677ba3 100755
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommands.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommands.java
@@ -276,7 +276,13 @@ public class LauncherLifecycleCommands extends 
AbstractCommandsSupport {
           unspecifiedDefaultValue = "false",
           help = 
CliStrings.START_LOCATOR__LOAD__SHARED_CONFIGURATION__FROM__FILESYSTEM__HELP) 
final boolean loadSharedConfigurationFromDirectory,
       @CliOption(key = CliStrings.START_LOCATOR__CLUSTER__CONFIG__DIR, 
unspecifiedDefaultValue = "",
-          help = CliStrings.START_LOCATOR__CLUSTER__CONFIG__DIR__HELP) final 
String clusterConfigDir) {
+          help = CliStrings.START_LOCATOR__CLUSTER__CONFIG__DIR__HELP) final 
String clusterConfigDir,
+      @CliOption(key = CliStrings.START_LOCATOR__HTTP_SERVICE_PORT,
+          unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
+          help = CliStrings.START_LOCATOR__HTTP_SERVICE_PORT__HELP) final 
Integer httpServicePort,
+      @CliOption(key = CliStrings.START_LOCATOR__HTTP_SERVICE_BIND_ADDRESS,
+          unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
+          help = CliStrings.START_LOCATOR__HTTP_SERVICE_BIND_ADDRESS__HELP) 
final String httpServiceBindAddress) {
     try {
       if (StringUtils.isBlank(memberName)) {
         // when the user doesn't give us a name, we make one up!
@@ -336,6 +342,11 @@ public class LauncherLifecycleCommands extends 
AbstractCommandsSupport {
           StringUtils.valueOf(loadSharedConfigurationFromDirectory, 
StringUtils.EMPTY_STRING));
       gemfireProperties.setProperty(CLUSTER_CONFIGURATION_DIR,
           StringUtils.valueOf(clusterConfigDir, StringUtils.EMPTY_STRING));
+      gemfireProperties.setProperty(HTTP_SERVICE_PORT,
+          StringUtils.valueOf(httpServicePort, StringUtils.EMPTY_STRING));
+      gemfireProperties.setProperty(HTTP_SERVICE_BIND_ADDRESS,
+          StringUtils.valueOf(httpServiceBindAddress, 
StringUtils.EMPTY_STRING));
+
 
       // read the OSProcess enable redirect system property here -- TODO: 
replace with new GFSH
       // argument

http://git-wip-us.apache.org/repos/asf/geode/blob/1d5ae68e/geode-core/src/main/java/org/apache/geode/management/internal/cli/i18n/CliStrings.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/i18n/CliStrings.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/i18n/CliStrings.java
index 4c22c44..c536e8e 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/i18n/CliStrings.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/i18n/CliStrings.java
@@ -2396,6 +2396,12 @@ public class CliStrings {
   public static final String START_LOCATOR__CLUSTER__CONFIG__DIR = 
"cluster-config-dir";
   public static final String START_LOCATOR__CLUSTER__CONFIG__DIR__HELP =
       "Directory used by the cluster configuration service to store the 
cluster configuration on the filesystem";
+  public static final String START_LOCATOR__HTTP_SERVICE_PORT = 
"http-service-port";
+  public static final String START_LOCATOR__HTTP_SERVICE_PORT__HELP =
+      "Port on which HTTP Service will listen on";
+  public static final String START_LOCATOR__HTTP_SERVICE_BIND_ADDRESS = 
"http-service-bind-address";
+  public static final String START_LOCATOR__HTTP_SERVICE_BIND_ADDRESS__HELP =
+      "The IP address on which the HTTP Service will be bound.  By default, 
the Server is bound to all local addresses.";
 
   /* 'start manager' command */
   public static final String START_MANAGER = "start manager";

http://git-wip-us.apache.org/repos/asf/geode/blob/1d5ae68e/geode-core/src/test/resources/org/apache/geode/management/internal/cli/commands/golden-help-offline.properties
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/resources/org/apache/geode/management/internal/cli/commands/golden-help-offline.properties
 
b/geode-core/src/test/resources/org/apache/geode/management/internal/cli/commands/golden-help-offline.properties
index d0f41e4..694d4ff 100644
--- 
a/geode-core/src/test/resources/org/apache/geode/management/internal/cli/commands/golden-help-offline.properties
+++ 
b/geode-core/src/test/resources/org/apache/geode/management/internal/cli/commands/golden-help-offline.properties
@@ -2416,7 +2416,7 @@ SYNTAX\n\
 \ \ \ \ [--port=value] [--dir=value] [--properties-file=value] 
[--security-properties-file=value]\n\
 \ \ \ \ [--initial-heap=value] [--max-heap=value] [--J=value(,value)*] 
[--connect(=value)?]\n\
 \ \ \ \ [--enable-cluster-configuration(=value)?] 
[--load-cluster-configuration-from-dir=value]\n\
-\ \ \ \ [--cluster-config-dir=value]\n\
+\ \ \ \ [--cluster-config-dir=value] [--http-service-port=value] 
[--http-service-bind-address=value]\n\
 PARAMETERS\n\
 \ \ \ \ name\n\
 \ \ \ \ \ \ \ \ The member name to give this Locator in the Geode cluster.\n\
@@ -2509,6 +2509,13 @@ PARAMETERS\n\
 \ \ \ \ \ \ \ \ Directory used by the cluster configuration service to store 
the cluster configuration on\n\
 \ \ \ \ \ \ \ \ the filesystem\n\
 \ \ \ \ \ \ \ \ Required: false\n\
+\ \ \ \ http-service-port\n\
+\ \ \ \ \ \ \ \ Port on which HTTP Service will listen on\n\
+\ \ \ \ \ \ \ \ Required: false\n\
+\ \ \ \ http-service-bind-address\n\
+\ \ \ \ \ \ \ \ The IP address on which the HTTP Service will be bound.  By 
default, the Server is bound to\n\
+\ \ \ \ \ \ \ \ all local addresses.\n\
+\ \ \ \ \ \ \ \ Required: false\n\
 
 start-pulse.help=\
 NAME\n\

Reply via email to