You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by mc...@apache.org on 2018/09/10 21:21:59 UTC

[geode] branch develop updated: GEODE-5628: Getting two random ports at once and fixing formatting (#2441)

This is an automated email from the ASF dual-hosted git repository.

mcmellawatt pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/develop by this push:
     new e586c84  GEODE-5628: Getting two random ports at once and fixing formatting (#2441)
e586c84 is described below

commit e586c841c98e4f7f27217ede42e6059771f673cf
Author: Ryan McMahon <rm...@pivotal.io>
AuthorDate: Mon Sep 10 14:21:52 2018 -0700

    GEODE-5628: Getting two random ports at once and fixing formatting (#2441)
    
    * GEODE-5628: Getting two random ports at once and fixing formatting
    
    Co-authored-by: Ryan McMahon <rm...@pivotal.io>
    Co-authored-by: Sai Boorlagadda <sb...@pivotal.io>
---
 .../apache/geode/internal/net/SocketCreator.java   |  3 +-
 .../geode/internal/net/SocketCreatorJUnitTest.java | 34 ++++++++++++++++++++--
 ...gradeEventProcessingMixedSiteOneOldSiteTwo.java |  7 +++--
 3 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/geode-core/src/main/java/org/apache/geode/internal/net/SocketCreator.java b/geode-core/src/main/java/org/apache/geode/internal/net/SocketCreator.java
index 7fd1efa..9d75013 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/net/SocketCreator.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/net/SocketCreator.java
@@ -750,7 +750,8 @@ public class SocketCreator {
       } catch (BindException e) {
         BindException throwMe =
             new BindException(LocalizedStrings.SocketCreator_FAILED_TO_CREATE_SERVER_SOCKET_ON_0_1
-                .toLocalizedString(bindAddr, Integer.valueOf(nport)));
+                .toLocalizedString(bindAddr == null ? InetAddress.getLocalHost() : bindAddr,
+                    String.valueOf(nport)));
         throwMe.initCause(e);
         throw throwMe;
       }
diff --git a/geode-core/src/test/java/org/apache/geode/internal/net/SocketCreatorJUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/net/SocketCreatorJUnitTest.java
index df7cd47..c3eac28 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/net/SocketCreatorJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/net/SocketCreatorJUnitTest.java
@@ -14,11 +14,15 @@
  */
 package org.apache.geode.internal.net;
 
+import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import java.net.BindException;
+import java.net.InetAddress;
+import java.net.ServerSocket;
 import java.net.Socket;
 import java.security.cert.Certificate;
 import java.security.cert.X509Certificate;
@@ -76,10 +80,36 @@ public class SocketCreatorJUnitTest {
     verify(socket, never()).setSoTimeout(timeout);
   }
 
-  private String getSingleKeyKeystore() {
-    return TestUtil.getResourcePath(getClass(), "/ssl/trusted.keystore");
+  @Test
+  public void testBindExceptionMessageFormattingWithBindAddr() throws Exception {
+    testBindExceptionMessageFormatting(InetAddress.getLocalHost());
+  }
+
+  @Test
+  public void testBindExceptionMessageFormattingNullBindAddr() throws Exception {
+    testBindExceptionMessageFormatting(null);
   }
 
+  private void testBindExceptionMessageFormatting(InetAddress inetAddress) throws Exception {
+    final SocketCreator socketCreator = new SocketCreator(mock(SSLConfig.class));
+    final Socket socket = mock(Socket.class);
 
+    ServerSocket serverSocket = null;
+    try {
+      serverSocket = socketCreator.createServerSocket(11234, 10, inetAddress);
+      assertThatExceptionOfType(BindException.class).isThrownBy(() -> {
+        // call twice on the same port to trigger exception
+        socketCreator.createServerSocket(11234, 10, inetAddress);
+      }).withMessageContaining("11234")
+          .withMessageContaining(InetAddress.getLocalHost().getHostAddress());
+    } finally {
+      if (serverSocket != null) {
+        serverSocket.close();
+      }
+    }
+  }
 
+  private String getSingleKeyKeystore() {
+    return TestUtil.getResourcePath(getClass(), "/ssl/trusted.keystore");
+  }
 }
diff --git a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeEventProcessingMixedSiteOneOldSiteTwo.java b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeEventProcessingMixedSiteOneOldSiteTwo.java
index 2e4dd07..51b6003 100644
--- a/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeEventProcessingMixedSiteOneOldSiteTwo.java
+++ b/geode-wan/src/upgradeTest/java/org/apache/geode/cache/wan/WANRollingUpgradeEventProcessingMixedSiteOneOldSiteTwo.java
@@ -22,7 +22,7 @@ import org.awaitility.Awaitility;
 import org.junit.Test;
 
 import org.apache.geode.distributed.internal.InternalLocator;
-import org.apache.geode.internal.AvailablePort;
+import org.apache.geode.internal.AvailablePortHelper;
 import org.apache.geode.internal.cache.wan.parallel.ParallelGatewaySenderQueue;
 import org.apache.geode.test.dunit.DistributedTestUtils;
 import org.apache.geode.test.dunit.Host;
@@ -49,13 +49,14 @@ public class WANRollingUpgradeEventProcessingMixedSiteOneOldSiteTwo
 
     // Get mixed site locator properties
     String hostName = NetworkUtils.getServerHostName(host);
-    final int site1LocatorPort = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
+    final int[] availablePorts = AvailablePortHelper.getRandomAvailableTCPPorts(2);
+    final int site1LocatorPort = availablePorts[0];
     DistributedTestUtils.deleteLocatorStateFile(site1LocatorPort);
     final String site1Locators = hostName + "[" + site1LocatorPort + "]";
     final int site1DistributedSystemId = 0;
 
     // Get old site locator properties
-    final int site2LocatorPort = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
+    final int site2LocatorPort = availablePorts[1];
     DistributedTestUtils.deleteLocatorStateFile(site2LocatorPort);
     final String site2Locators = hostName + "[" + site2LocatorPort + "]";
     final int site2DistributedSystemId = 1;