[
https://issues.apache.org/jira/browse/GEODE-3292?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16112154#comment-16112154
]
ASF GitHub Bot commented on GEODE-3292:
---------------------------------------
Github user jinmeiliao commented on a diff in the pull request:
https://github.com/apache/geode/pull/664#discussion_r131049655
--- Diff:
geode-assembly/src/test/java/org/apache/geode/tools/pulse/PulseConnectivityTest.java
---
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
contributor license
+ * agreements. See the NOTICE file distributed with this work for
additional information regarding
+ * copyright ownership. The ASF licenses this file to You under the Apache
License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
License. You may obtain a
+ * copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
ANY KIND, either express
+ * or implied. See the License for the specific language governing
permissions and limitations under
+ * the License.
+ */
+
+package org.apache.geode.tools.pulse;
+
+import static
org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_BIND_ADDRESS;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.net.InetAddress;
+import java.util.Properties;
+
+import org.apache.geode.test.dunit.rules.EmbeddedPulseRule;
+import org.apache.geode.test.dunit.rules.LocatorStarterRule;
+import org.apache.geode.test.junit.categories.IntegrationTest;
+import org.apache.geode.tools.pulse.internal.data.Cluster;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.experimental.runners.Enclosed;
+import org.junit.runner.RunWith;
+
+@RunWith(Enclosed.class)
+@Category(IntegrationTest.class)
+public class PulseConnectivityTest {
+ @ClassRule
+ public static LocatorStarterRule locator = new
LocatorStarterRule().withJMXManager();
+
+ // Test Connectivity for Default Configuration
+ @Category(IntegrationTest.class)
+ public static class DefaultBindAddressTest {
+ @Rule
+ public EmbeddedPulseRule pulse = new EmbeddedPulseRule();
+
+ @BeforeClass
+ public static void beforeClass() throws Exception {
+ locator.startLocator();
+ }
+
+ @Test
+ public void testConnectToJmx() throws Exception {
+ pulse.useJmxPort(locator.getJmxPort());
+ Cluster cluster = pulse.getRepository().getCluster("admin", null);
+ assertThat(cluster.isConnectedFlag()).isTrue();
+ assertThat(cluster.getServerCount()).isEqualTo(0);
+ }
+
+ @Test
+ public void testConnectToLocator() throws Exception {
+ pulse.useLocatorPort(locator.getPort());
+ Cluster cluster = pulse.getRepository().getCluster("admin", null);
+ assertThat(cluster.isConnectedFlag()).isTrue();
+ assertThat(cluster.getServerCount()).isEqualTo(0);
+ }
+
+ @AfterClass
+ public static void afterClass() throws Exception {
+ locator.after();
+ }
+ }
+
+ // GEODE-3292: Test Connectivity for Non Default Configuration
+ @Category(IntegrationTest.class)
+ public static class NonDefaultBindAddressTest {
+ public static String jmxBindAddress;
+
+ @Rule
+ public EmbeddedPulseRule pulse = new EmbeddedPulseRule();
+
+ @BeforeClass
+ public static void beforeClass() throws Exception {
+ // Make sure we use something different than "localhost" for this
test.
+ jmxBindAddress = InetAddress.getLocalHost().getHostName();
+ if ("localhost".equals(jmxBindAddress)) {
+ jmxBindAddress = InetAddress.getLocalHost().getHostAddress();
+ }
+
+ Properties locatorProperties = new Properties();
+ locatorProperties.setProperty(JMX_MANAGER_BIND_ADDRESS,
jmxBindAddress);
+ locator.withProperties(locatorProperties).startLocator();
+ }
+
+ @Test
+ public void testConnectToJmx() throws Exception {
+ pulse.useJmxManager(jmxBindAddress, locator.getJmxPort());
+ Cluster cluster = pulse.getRepository().getCluster("admin", null);
+ assertThat(cluster.isConnectedFlag()).isTrue();
+ assertThat(cluster.getServerCount()).isEqualTo(0);
+ }
+
+ @AfterClass
+ public static void afterClass() throws Exception {
--- End diff --
Not needed.
> Embedded PULSE Connection Failure When jmx-manager-bind-address != localhost
> ----------------------------------------------------------------------------
>
> Key: GEODE-3292
> URL: https://issues.apache.org/jira/browse/GEODE-3292
> Project: Geode
> Issue Type: Bug
> Components: pulse
> Reporter: Juan José Ramos Cassella
> Assignee: Juan José Ramos Cassella
> Priority: Minor
>
> The PULSE webApp (embedded mode) fails to connect to the jmx-manager when a
> non-default {{jmx-manager-bind-address}} is configured. The app tries to
> connect by default to
> {{service:jmx:rmi://localhost/jndi/rmi://localhost:17991/jmxrmi}} whenever it
> detects it's running in embedded mode, instead of getting the local hostname
> through {{InetAddress.getLocalHost().getCanonicalHostName()}} as it used to
> do before.
> The problem was introduced by
> [GEODE-2927|https://issues.apache.org/jira/browse/GEODE-2927], commit
> [0f978a6df711d04e0c7c1926fb1e297d07c21aa3|https://git-wip-us.apache.org/repos/asf?p=geode.git;h=0f978a6].
> Steps to reproduce:
> {code:none}
> $ export JAVA_ARGS="-Dgfsh.log-level=config -Dgfsh.log-dir=$(pwd)"
> $ gfsh start locator --name=locator1 --force=true --connect=false \
> --J=-Dpulse.Log-Level=debug --J=-Dpulse.Log-File-Name=pulse.log
> --J=-Dpulse.Log-FileLocation=$(pwd) \
> --J=-Dgemfire.jmx-manager=true --J=-Dgemfire.jmx-manager-start=true
> --J=-Dgemfire.jmx-manager-port=17991 \
> --J=-Dgemfire.jmx-manager-bind-address=$(ipconfig getifaddr en0)
> $ gfsh start pulse
> {code}
> At this point, and after a successful login to PULSE, the application doesn't
> show any cluster data and the exception can be seen (both in the logs and in
> the PULSE screen).
> The easiest solution would be to revert back some lines of the changes made
> by commit
> [0f978a6df711d04e0c7c1926fb1e297d07c21aa3|https://git-wip-us.apache.org/repos/asf?p=geode.git;h=0f978a6],
> as follows:
> {code:title=PulseAppListener.java|borderStyle=solid}
> @Override
> public void contextInitialized(ServletContextEvent event) {
> (...)
> boolean sysIsEmbedded =
> Boolean.getBoolean(PulseConstants.SYSTEM_PROPERTY_PULSE_EMBEDDED);
> if (sysIsEmbedded) {
> // jmx connection parameters
>
> logger.info(resourceBundle.getString("LOG_MSG_APP_RUNNING_EMBEDDED_MODE"));
> repository.setJmxUseLocator(false);
>
> //----------------------------------------------------------------------------------------
> String sysPulseHost;
> try {
> // Get host name of machine running pulse in embedded mode
> sysPulseHost = InetAddress.getLocalHost().getCanonicalHostName();
> } catch (Exception e) {
>
> logger.debug(resourceBundle.getString("LOG_MSG_JMX_CONNECTION_UNKNOWN_HOST"),
> e);
> // Set default host name
> sysPulseHost = PulseConstants.GEMFIRE_DEFAULT_HOST;
> }
> repository.setHost(sysPulseHost);
>
> //----------------------------------------------------------------------------------------
>
> repository.setPort(System.getProperty(PulseConstants.SYSTEM_PROPERTY_PULSE_PORT,
> PulseConstants.GEMFIRE_DEFAULT_PORT));
> // SSL, all the other system properties are already set in the embedded
> VM
> repository.setUseSSLManager(
>
> Boolean.valueOf(System.getProperty(PulseConstants.SYSTEM_PROPERTY_PULSE_USESSL_MANAGER)));
> repository.setUseSSLLocator(
>
> Boolean.valueOf(System.getProperty(PulseConstants.SYSTEM_PROPERTY_PULSE_USESSL_LOCATOR)));
> (...)
> }
> {code}
> I can make the changes and submit a PR if someone assigns me this ticket.
> Cheers.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)