geode-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jstew...@apache.org
Subject [1/2] geode git commit: GEODE-2933: Add jmx-manager-hostname-for-clients for startLocator
Date Fri, 09 Jun 2017 22:17:40 GMT
Repository: geode
Updated Branches:
  refs/heads/develop 8a10c1aac -> d5bde9fb6


GEODE-2933: Add jmx-manager-hostname-for-clients for startLocator


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

Branch: refs/heads/develop
Commit: d5bde9fb69ab511de1a6c98ce7a16aae0a143326
Parents: 0ef7f56
Author: Jared Stewart <jstewart@pivotal.io>
Authored: Mon Jun 5 10:54:13 2017 -0700
Committer: Jared Stewart <jstewart@pivotal.io>
Committed: Fri Jun 9 15:17:11 2017 -0700

----------------------------------------------------------------------
 .../cli/commands/LauncherLifecycleCommands.java | 95 ++++++++++---------
 .../internal/cli/i18n/CliStrings.java           |  6 ++
 .../cli/GfshParserAutoCompletionTest.java       | 24 ++---
 .../internal/cli/GfshParserParsingTest.java     |  9 +-
 .../commands/LauncherLifecycleCommandsTest.java | 97 +++++++++++++++++---
 5 files changed, 157 insertions(+), 74 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/geode/blob/d5bde9fb/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 89a236b..45fbf1b 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
@@ -22,6 +22,7 @@ import static org.apache.geode.distributed.ConfigurationProperties.ENABLE_TIME_S
 import static org.apache.geode.distributed.ConfigurationProperties.GROUPS;
 import static org.apache.geode.distributed.ConfigurationProperties.HTTP_SERVICE_BIND_ADDRESS;
 import static org.apache.geode.distributed.ConfigurationProperties.HTTP_SERVICE_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_HOSTNAME_FOR_CLIENTS;
 import static org.apache.geode.distributed.ConfigurationProperties.LOAD_CLUSTER_CONFIGURATION_FROM_DIR;
 import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
 import static org.apache.geode.distributed.ConfigurationProperties.LOCATOR_WAIT_TIME;
@@ -48,6 +49,7 @@ import org.apache.commons.lang.ArrayUtils;
 import org.apache.geode.SystemFailure;
 import org.apache.geode.cache.server.CacheServer;
 import org.apache.geode.distributed.AbstractLauncher;
+import org.apache.geode.distributed.ConfigurationProperties;
 import org.apache.geode.distributed.LocatorLauncher;
 import org.apache.geode.distributed.LocatorLauncher.LocatorState;
 import org.apache.geode.distributed.ServerLauncher;
@@ -170,6 +172,8 @@ public class LauncherLifecycleCommands implements GfshCommand {
           help = CliStrings.START_LOCATOR__GROUP__HELP) final String group,
       @CliOption(key = CliStrings.START_LOCATOR__HOSTNAME_FOR_CLIENTS,
           help = CliStrings.START_LOCATOR__HOSTNAME_FOR_CLIENTS__HELP) final String hostnameForClients,
+      @CliOption(key = ConfigurationProperties.JMX_MANAGER_HOSTNAME_FOR_CLIENTS,
+          help = CliStrings.START_LOCATOR__JMX_MANAGER_HOSTNAME_FOR_CLIENTS__HELP) final
String jmxManagerHostnameForClients,
       @CliOption(key = CliStrings.START_LOCATOR__INCLUDE_SYSTEM_CLASSPATH,
           specifiedDefaultValue = "true", unspecifiedDefaultValue = "false",
           help = CliStrings.START_LOCATOR__INCLUDE_SYSTEM_CLASSPATH__HELP) final Boolean
includeSystemClasspath,
@@ -246,20 +250,20 @@ public class LauncherLifecycleCommands implements GfshCommand {
 
       Properties gemfireProperties = new Properties();
 
-      gemfireProperties.setProperty(GROUPS, StringUtils.defaultString(group));
-      gemfireProperties.setProperty(LOCATORS, StringUtils.defaultString(locators));
-      gemfireProperties.setProperty(LOG_LEVEL, StringUtils.defaultString(logLevel));
-      gemfireProperties.setProperty(MCAST_ADDRESS, StringUtils.defaultString(mcastBindAddress));
-      gemfireProperties.setProperty(MCAST_PORT, StringUtils.defaultString(mcastPort));
-      gemfireProperties.setProperty(ENABLE_CLUSTER_CONFIGURATION,
-          StringUtils.defaultString(enableSharedConfiguration));
-      gemfireProperties.setProperty(LOAD_CLUSTER_CONFIGURATION_FROM_DIR,
-          StringUtils.defaultString(loadSharedConfigurationFromDirectory));
-      gemfireProperties.setProperty(CLUSTER_CONFIGURATION_DIR,
-          StringUtils.defaultString(clusterConfigDir));
-      gemfireProperties.setProperty(HTTP_SERVICE_PORT, StringUtils.defaultString(httpServicePort));
-      gemfireProperties.setProperty(HTTP_SERVICE_BIND_ADDRESS,
-          StringUtils.defaultString(httpServiceBindAddress));
+      setPropertyIfNotNull(gemfireProperties, GROUPS, group);
+      setPropertyIfNotNull(gemfireProperties, LOCATORS, locators);
+      setPropertyIfNotNull(gemfireProperties, LOG_LEVEL, logLevel);
+      setPropertyIfNotNull(gemfireProperties, MCAST_ADDRESS, mcastBindAddress);
+      setPropertyIfNotNull(gemfireProperties, MCAST_PORT, mcastPort);
+      setPropertyIfNotNull(gemfireProperties, ENABLE_CLUSTER_CONFIGURATION,
+          enableSharedConfiguration);
+      setPropertyIfNotNull(gemfireProperties, LOAD_CLUSTER_CONFIGURATION_FROM_DIR,
+          loadSharedConfigurationFromDirectory);
+      setPropertyIfNotNull(gemfireProperties, CLUSTER_CONFIGURATION_DIR, clusterConfigDir);
+      setPropertyIfNotNull(gemfireProperties, HTTP_SERVICE_PORT, httpServicePort);
+      setPropertyIfNotNull(gemfireProperties, HTTP_SERVICE_BIND_ADDRESS, httpServiceBindAddress);
+      setPropertyIfNotNull(gemfireProperties, JMX_MANAGER_HOSTNAME_FOR_CLIENTS,
+          jmxManagerHostnameForClients);
 
 
       // read the OSProcess enable redirect system property here -- TODO: replace with new
GFSH
@@ -424,6 +428,12 @@ public class LauncherLifecycleCommands implements GfshCommand {
     }
   }
 
+  private void setPropertyIfNotNull(Properties properties, String key, Object value) {
+    if (key != null && value != null) {
+      properties.setProperty(key, value.toString());
+    }
+  }
+
   protected String[] createStartLocatorCommandLine(final LocatorLauncher launcher,
       final String gemfirePropertiesPathname, final String gemfireSecurityPropertiesPathname,
       final Properties gemfireProperties, final String userClasspath,
@@ -868,6 +878,8 @@ public class LauncherLifecycleCommands implements GfshCommand {
           help = CliStrings.START_SERVER__GROUP__HELP) final String group,
       @CliOption(key = CliStrings.START_SERVER__HOSTNAME__FOR__CLIENTS,
           help = CliStrings.START_SERVER__HOSTNAME__FOR__CLIENTS__HELP) final String hostNameForClients,
+      @CliOption(key = ConfigurationProperties.JMX_MANAGER_HOSTNAME_FOR_CLIENTS,
+          help = CliStrings.START_SERVER__JMX_MANAGER_HOSTNAME_FOR_CLIENTS__HELP) final String
jmxManagerHostnameForClients,
       @CliOption(key = CliStrings.START_SERVER__INCLUDE_SYSTEM_CLASSPATH,
           specifiedDefaultValue = "true", unspecifiedDefaultValue = "false",
           help = CliStrings.START_SERVER__INCLUDE_SYSTEM_CLASSPATH__HELP) final Boolean includeSystemClasspath,
@@ -1001,36 +1013,31 @@ public class LauncherLifecycleCommands implements GfshCommand {
 
       Properties gemfireProperties = new Properties();
 
-      gemfireProperties.setProperty(BIND_ADDRESS, StringUtils.defaultString(bindAddress));
-      gemfireProperties.setProperty(CACHE_XML_FILE, StringUtils.defaultString(cacheXmlPathname));
-      gemfireProperties.setProperty(ENABLE_TIME_STATISTICS,
-          StringUtils.defaultString(enableTimeStatistics));
-      gemfireProperties.setProperty(GROUPS, StringUtils.defaultString(group));
-      gemfireProperties.setProperty(LOCATORS, StringUtils.defaultString(locators));
-      gemfireProperties.setProperty(LOCATOR_WAIT_TIME, StringUtils.defaultString(locatorWaitTime));
-      gemfireProperties.setProperty(LOG_LEVEL, StringUtils.defaultString(logLevel));
-      gemfireProperties.setProperty(MCAST_ADDRESS, StringUtils.defaultString(mcastBindAddress));
-      gemfireProperties.setProperty(MCAST_PORT, StringUtils.defaultString(mcastPort));
-      gemfireProperties.setProperty(MEMCACHED_PORT, StringUtils.defaultString(memcachedPort));
-      gemfireProperties.setProperty(MEMCACHED_PROTOCOL,
-          StringUtils.defaultString(memcachedProtocol));
-      gemfireProperties.setProperty(MEMCACHED_BIND_ADDRESS,
-          StringUtils.defaultString(memcachedBindAddress));
-      gemfireProperties.setProperty(REDIS_PORT, StringUtils.defaultString(redisPort));
-      gemfireProperties.setProperty(REDIS_BIND_ADDRESS,
-          StringUtils.defaultString(redisBindAddress));
-      gemfireProperties.setProperty(REDIS_PASSWORD, StringUtils.defaultString(redisPassword));
-      gemfireProperties.setProperty(STATISTIC_ARCHIVE_FILE,
-          StringUtils.defaultString(statisticsArchivePathname));
-      gemfireProperties.setProperty(USE_CLUSTER_CONFIGURATION,
-          StringUtils.defaultString(requestSharedConfiguration, Boolean.TRUE.toString()));
-      gemfireProperties.setProperty(LOCK_MEMORY, StringUtils.defaultString(lockMemory));
-      gemfireProperties.setProperty(OFF_HEAP_MEMORY_SIZE,
-          StringUtils.defaultString(offHeapMemorySize));
-      gemfireProperties.setProperty(START_DEV_REST_API, StringUtils.defaultString(startRestApi));
-      gemfireProperties.setProperty(HTTP_SERVICE_PORT, StringUtils.defaultString(httpServicePort));
-      gemfireProperties.setProperty(HTTP_SERVICE_BIND_ADDRESS,
-          StringUtils.defaultString(httpServiceBindAddress));
+      setPropertyIfNotNull(gemfireProperties, BIND_ADDRESS, bindAddress);
+      setPropertyIfNotNull(gemfireProperties, CACHE_XML_FILE, cacheXmlPathname);
+      setPropertyIfNotNull(gemfireProperties, ENABLE_TIME_STATISTICS, enableTimeStatistics);
+      setPropertyIfNotNull(gemfireProperties, GROUPS, group);
+      setPropertyIfNotNull(gemfireProperties, JMX_MANAGER_HOSTNAME_FOR_CLIENTS,
+          jmxManagerHostnameForClients);
+      setPropertyIfNotNull(gemfireProperties, LOCATORS, locators);
+      setPropertyIfNotNull(gemfireProperties, LOCATOR_WAIT_TIME, locatorWaitTime);
+      setPropertyIfNotNull(gemfireProperties, LOG_LEVEL, logLevel);
+      setPropertyIfNotNull(gemfireProperties, MCAST_ADDRESS, mcastBindAddress);
+      setPropertyIfNotNull(gemfireProperties, MCAST_PORT, mcastPort);
+      setPropertyIfNotNull(gemfireProperties, MEMCACHED_PORT, memcachedPort);
+      setPropertyIfNotNull(gemfireProperties, MEMCACHED_PROTOCOL, memcachedProtocol);
+      setPropertyIfNotNull(gemfireProperties, MEMCACHED_BIND_ADDRESS, memcachedBindAddress);
+      setPropertyIfNotNull(gemfireProperties, REDIS_PORT, redisPort);
+      setPropertyIfNotNull(gemfireProperties, REDIS_BIND_ADDRESS, redisBindAddress);
+      setPropertyIfNotNull(gemfireProperties, REDIS_PASSWORD, redisPassword);
+      setPropertyIfNotNull(gemfireProperties, STATISTIC_ARCHIVE_FILE, statisticsArchivePathname);
+      setPropertyIfNotNull(gemfireProperties, USE_CLUSTER_CONFIGURATION,
+          requestSharedConfiguration);
+      setPropertyIfNotNull(gemfireProperties, LOCK_MEMORY, lockMemory);
+      setPropertyIfNotNull(gemfireProperties, OFF_HEAP_MEMORY_SIZE, offHeapMemorySize);
+      setPropertyIfNotNull(gemfireProperties, START_DEV_REST_API, startRestApi);
+      setPropertyIfNotNull(gemfireProperties, HTTP_SERVICE_PORT, httpServicePort);
+      setPropertyIfNotNull(gemfireProperties, HTTP_SERVICE_BIND_ADDRESS, httpServiceBindAddress);
       // if username is specified in the command line, it will overwrite what's set in the
       // properties file
       if (StringUtils.isNotBlank(userName)) {

http://git-wip-us.apache.org/repos/asf/geode/blob/d5bde9fb/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 a7a3742..2758429 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
@@ -2366,6 +2366,9 @@ public class CliStrings {
   public static final String START_LOCATOR__GROUP = "group";
   public static final String START_LOCATOR__GROUP__HELP = "Group(s) the Locator will be a
part of.";
   public static final String START_LOCATOR__HOSTNAME_FOR_CLIENTS = "hostname-for-clients";
+
+  public static final String START_LOCATOR__JMX_MANAGER_HOSTNAME_FOR_CLIENTS__HELP =
+      "Hostname provided to clients by the locator for the location of a JMX Manager.";
   public static final String START_LOCATOR__HOSTNAME_FOR_CLIENTS__HELP =
       "Hostname or IP address that will be sent to clients so they can connect to this Locator.
The default is the bind-address of the Locator.";
   public static final String START_LOCATOR__INCLUDE_SYSTEM_CLASSPATH = "include-system-classpath";
@@ -2514,6 +2517,9 @@ public class CliStrings {
   public static final String START_SERVER__INITIAL_HEAP = "initial-heap";
   public static final String START_SERVER__INITIAL_HEAP__HELP =
       "Initial size of the heap in the same format as the JVM -Xms parameter.";
+  public static final String START_SERVER__JMX_MANAGER_HOSTNAME_FOR_CLIENTS__HELP =
+      "Hostname provided to clients by the server for the location of a JMX Manager.";
+
   public static final String START_SERVER__J = "J";
   public static final String START_SERVER__J__HELP =
       "Argument passed to the JVM on which the server will run. For example, --J=-Dfoo.bar=true
will set the system property \"foo.bar\" to \"true\".";

http://git-wip-us.apache.org/repos/asf/geode/blob/d5bde9fb/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserAutoCompletionTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserAutoCompletionTest.java
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserAutoCompletionTest.java
index aa97795..a2946d4 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserAutoCompletionTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserAutoCompletionTest.java
@@ -122,7 +122,7 @@ public class GfshParserAutoCompletionTest {
     buffer = "start server --name=name1 --";
     candidate = parser.complete(buffer);
     assertThat(candidate.getCursor()).isEqualTo(buffer.length() - 2);
-    assertThat(candidate.size()).isEqualTo(50);
+    assertThat(candidate.size()).isEqualTo(51);
     assertTrue(candidate.getCandidates().contains(new Completion("--properties-file")));
     assertThat(candidate.getFirstCandidate()).isEqualTo(buffer + "J");
   }
@@ -132,7 +132,7 @@ public class GfshParserAutoCompletionTest {
     buffer = "start server --name=name1 ";
     candidate = parser.complete(buffer);
     assertThat(candidate.getCursor()).isEqualTo(buffer.length() - 1);
-    assertThat(candidate.size()).isEqualTo(50);
+    assertThat(candidate.size()).isEqualTo(51);
     assertTrue(candidate.getCandidates().contains(new Completion(" --properties-file")));
     assertThat(candidate.getFirstCandidate()).isEqualTo(buffer + "--J");
   }
@@ -142,7 +142,7 @@ public class GfshParserAutoCompletionTest {
     buffer = "start server --name=name1";
     candidate = parser.complete(buffer);
     assertThat(candidate.getCursor()).isEqualTo(buffer.length());
-    assertThat(candidate.size()).isEqualTo(50);
+    assertThat(candidate.size()).isEqualTo(51);
     assertTrue(candidate.getCandidates().contains(new Completion(" --properties-file")));
     assertThat(candidate.getFirstCandidate()).isEqualTo(buffer + " --J");
   }
@@ -151,23 +151,23 @@ public class GfshParserAutoCompletionTest {
   public void testCompleteJ() throws Exception {
     buffer = "start server --name=name1 --J=";
     candidate = parser.complete(buffer);
-    assertThat(candidate.getCursor()).isEqualTo(buffer.length());
-    assertThat(candidate.size()).isEqualTo(0);
+    assertThat(candidate.getCursor()).isEqualTo(buffer.length() - 3);
+    assertThat(candidate.size()).isEqualTo(1);
   }
 
   @Test
   public void testCompleteWithValue() throws Exception {
     buffer = "start server --name=name1 --J";
     candidate = parser.complete(buffer);
-    assertThat(candidate.getCursor()).isEqualTo(buffer.length());
-    assertThat(candidate.size()).isEqualTo(0);
+    assertThat(candidate.getCursor()).isEqualTo(buffer.length() - 3);
+    assertThat(candidate.size()).isEqualTo(1);
   }
 
   @Test
   public void testCompleteWithDash() throws Exception {
     buffer = "start server --name=name1 --J=-Dfoo.bar --";
     candidate = parser.complete(buffer);
-    assertThat(candidate.size()).isEqualTo(49);
+    assertThat(candidate.size()).isEqualTo(50);
   }
 
   @Test
@@ -185,7 +185,7 @@ public class GfshParserAutoCompletionTest {
     buffer = "start server --name=name1 --J=-Dtest=test1 --J=-Dfoo=bar";
     candidate = parser.complete(buffer);
     assertThat(candidate.getCursor()).isEqualTo(buffer.length());
-    assertThat(candidate.size()).isEqualTo(49);
+    assertThat(candidate.size()).isEqualTo(50);
     assertThat(candidate.getFirstCandidate()).isEqualTo(buffer + " --assign-buckets");
   }
 
@@ -194,7 +194,7 @@ public class GfshParserAutoCompletionTest {
     buffer = "start server --J=-Dtest=test1 --J=-Dfoo=bar --name=name1";
     candidate = parser.complete(buffer);
     assertThat(candidate.getCursor()).isEqualTo(buffer.length());
-    assertThat(candidate.size()).isEqualTo(49);
+    assertThat(candidate.size()).isEqualTo(50);
     assertThat(candidate.getFirstCandidate()).isEqualTo(buffer + " --assign-buckets");
   }
 
@@ -203,7 +203,7 @@ public class GfshParserAutoCompletionTest {
     buffer = "start server --name=name1 --locators=localhost --J=-Dfoo=bar";
     candidate = parser.complete(buffer);
     assertThat(candidate.getCursor()).isEqualTo(buffer.length());
-    assertThat(candidate.size()).isEqualTo(48);
+    assertThat(candidate.size()).isEqualTo(49);
     assertThat(candidate.getFirstCandidate()).isEqualTo(buffer + " --assign-buckets");
   }
 
@@ -212,7 +212,7 @@ public class GfshParserAutoCompletionTest {
     buffer = "start server --name=name1 --locators=localhost  --J=-Dfoo=bar --";
     candidate = parser.complete(buffer);
     assertThat(candidate.getCursor()).isEqualTo(buffer.length() - 2);
-    assertThat(candidate.size()).isEqualTo(48);
+    assertThat(candidate.size()).isEqualTo(49);
     assertThat(candidate.getFirstCandidate()).isEqualTo(buffer + "assign-buckets");
   }
 

http://git-wip-us.apache.org/repos/asf/geode/blob/d5bde9fb/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserParsingTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserParsingTest.java
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserParsingTest.java
index 0c2af1d..47d150d 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserParsingTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserParsingTest.java
@@ -81,8 +81,9 @@ public class GfshParserParsingTest {
     GfshParseResult result = parser.parse(buffer);
     assertThat(result).isNotNull();
     Object[] arguments = result.getArguments();
-    // the 17th argument is the jvmarguments;
-    String[] jvmArgs = (String[]) arguments[17];
+    int indexOfJvmArgumentsParameterInStartLocator = 18;
+
+    String[] jvmArgs = (String[]) arguments[indexOfJvmArgumentsParameterInStartLocator];
     assertThat(jvmArgs).hasSize(2);
 
     // make sure the resulting jvm arguments do not have quotes (either single or double)
around
@@ -99,8 +100,8 @@ public class GfshParserParsingTest {
     GfshParseResult result = parser.parse(buffer);
     assertThat(result).isNotNull();
     Object[] arguments = result.getArguments();
-    // the 18th argument is the jvmarguments;
-    String[] jvmArgs = (String[]) arguments[18];
+    int indexOfJvmArgumentsParameterInStartServer = 19;
+    String[] jvmArgs = (String[]) arguments[indexOfJvmArgumentsParameterInStartServer];
     assertThat(jvmArgs).hasSize(2);
 
     // make sure the resulting jvm arguments do not have quotes (either single or double)
around

http://git-wip-us.apache.org/repos/asf/geode/blob/d5bde9fb/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommandsTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommandsTest.java
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommandsTest.java
index 9b38d86..30a9a61 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommandsTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommandsTest.java
@@ -15,37 +15,106 @@
 
 package org.apache.geode.management.internal.cli.commands;
 
+import static org.apache.geode.distributed.ConfigurationProperties.ENABLE_CLUSTER_CONFIGURATION;
+import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_HOSTNAME_FOR_CLIENTS;
+import static org.apache.geode.distributed.ConfigurationProperties.USE_CLUSTER_CONFIGURATION;
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 
-import org.apache.geode.management.internal.cli.GfshParseResult;
 import org.apache.geode.management.internal.cli.shell.Gfsh;
+import org.apache.geode.management.internal.cli.util.CommandStringBuilder;
 import org.apache.geode.test.dunit.rules.GfshParserRule;
-import org.junit.ClassRule;
+import org.apache.geode.test.junit.categories.IntegrationTest;
+import org.apache.geode.test.junit.categories.UnitTest;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.TemporaryFolder;
 import org.mockito.ArgumentCaptor;
-import org.springframework.util.ReflectionUtils;
 
 import java.util.Properties;
 
+@Category(IntegrationTest.class)
 public class LauncherLifecycleCommandsTest {
-  @ClassRule
-  public static GfshParserRule commandRule = new GfshParserRule();
+  private static final String FAKE_HOSTNAME = "someFakeHostname";
+
+  @Rule
+  public GfshParserRule commandRule = new GfshParserRule();
+
+  @Rule
+  public TemporaryFolder temporaryFolder = new TemporaryFolder();
 
   @Test
-  public void getLauncherLifecycleCommand() throws Exception {
-    LauncherLifecycleCommands spy = commandRule.spyCommand("start locator");
-    doReturn(mock(Gfsh.class)).when(spy).getGfsh();
+  public void startLocatorWorksWithNoOptions() throws Exception {
+    LauncherLifecycleCommands spy = spyOnCommand("start locator");
     commandRule.executeLastCommandWithInstance(spy);
 
-    ArgumentCaptor<Properties> propsCaptor = ArgumentCaptor.forClass(Properties.class);
-    verify(spy).createStartLocatorCommandLine(any(), any(), any(), propsCaptor.capture(),
any(),
-        any(), any(), any(), any());
+    ArgumentCaptor<Properties> gemfirePropertiesCaptor = ArgumentCaptor.forClass(Properties.class);
+    verify(spy).createStartLocatorCommandLine(any(), any(), any(),
+        gemfirePropertiesCaptor.capture(), any(), any(), any(), any(), any());
+
+    Properties gemfireProperties = gemfirePropertiesCaptor.getValue();
+    assertThat(gemfireProperties).containsKey(ENABLE_CLUSTER_CONFIGURATION);
+    assertThat(gemfireProperties.get(ENABLE_CLUSTER_CONFIGURATION)).isEqualTo("true");
+  }
+
+  @Test
+  public void startServerWorksWithNoOptions() throws Exception {
+    LauncherLifecycleCommands spy = spyOnCommand("start server");
+    commandRule.executeLastCommandWithInstance(spy);
+
+    ArgumentCaptor<Properties> gemfirePropertiesCaptor = ArgumentCaptor.forClass(Properties.class);
+    verify(spy).createStartServerCommandLine(any(), any(), any(), gemfirePropertiesCaptor.capture(),
+        any(), any(), any(), any(), any(), any());
+
+    Properties gemfireProperties = gemfirePropertiesCaptor.getValue();
+    assertThat(gemfireProperties).containsKey(USE_CLUSTER_CONFIGURATION);
+    assertThat(gemfireProperties.get(USE_CLUSTER_CONFIGURATION)).isEqualTo("true");
+  }
+
+  @Test
+  public void startLocatorRespectsJmxManagerHostnameForClients() throws Exception {
+    String startLocatorCommand = new CommandStringBuilder("start locator")
+        .addOption(JMX_MANAGER_HOSTNAME_FOR_CLIENTS, FAKE_HOSTNAME).toString();
+
+    LauncherLifecycleCommands spyCommand = spyOnCommand(startLocatorCommand);
+    commandRule.executeLastCommandWithInstance(spyCommand);
+
+    ArgumentCaptor<Properties> gemfirePropertiesCaptor = ArgumentCaptor.forClass(Properties.class);
+    verify(spyCommand).createStartLocatorCommandLine(any(), any(), any(),
+        gemfirePropertiesCaptor.capture(), any(), any(), any(), any(), any());
+
+    Properties gemfireProperties = gemfirePropertiesCaptor.getValue();
+    assertThat(gemfireProperties).containsKey(JMX_MANAGER_HOSTNAME_FOR_CLIENTS);
+    assertThat(gemfireProperties.get(JMX_MANAGER_HOSTNAME_FOR_CLIENTS)).isEqualTo(FAKE_HOSTNAME);
+  }
+
+  @Test
+  public void startServerRespectsJmxManagerHostnameForClients() throws Exception {
+    String startServerCommand = new CommandStringBuilder("start server")
+        .addOption(JMX_MANAGER_HOSTNAME_FOR_CLIENTS, FAKE_HOSTNAME).toString();
+
+    LauncherLifecycleCommands commandSpy = spyOnCommand(startServerCommand);
+
+    commandRule.executeLastCommandWithInstance(commandSpy);
+
+    ArgumentCaptor<Properties> gemfirePropertiesCaptor = ArgumentCaptor.forClass(Properties.class);
+    verify(commandSpy).createStartServerCommandLine(any(), any(), any(),
+        gemfirePropertiesCaptor.capture(), any(), any(), any(), any(), any(), any());
+
+    Properties gemfireProperties = gemfirePropertiesCaptor.getValue();
+    assertThat(gemfireProperties).containsKey(JMX_MANAGER_HOSTNAME_FOR_CLIENTS);
+    assertThat(gemfireProperties.get(JMX_MANAGER_HOSTNAME_FOR_CLIENTS)).isEqualTo(FAKE_HOSTNAME);
+  }
+
+  private LauncherLifecycleCommands spyOnCommand(String command) {
+    LauncherLifecycleCommands spy = commandRule.spyCommand(command);
+    doReturn(mock(Gfsh.class)).when(spy).getGfsh();
+    doReturn(temporaryFolder.getRoot().getAbsolutePath()).when(spy).resolveWorkingDir(any(),
any());
 
-    Properties properties = propsCaptor.getValue();
-    System.out.println();
+    return spy;
   }
 }


Mime
View raw message