[ 
https://issues.apache.org/jira/browse/GEODE-3292?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16112345#comment-16112345
 ] 

ASF GitHub Bot commented on GEODE-3292:
---------------------------------------

Github user jujoramos commented on a diff in the pull request:

    https://github.com/apache/geode/pull/664#discussion_r131071365
  
    --- 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 {
    --- End diff --
    
    True, but I'm not using `withAutoStart()` for a good reason: the two inner 
classes need to setup the locator differently (the `jmx-manager-bind-address` 
value changes). 
    I thought it's easier to read a single functional test class annotated with 
`@RunWith(Enclosed.class)` internally split in different inner classes than 
write a new test class to test exactly the same but changing a single locator 
property.



> 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)

Reply via email to