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

sivabalan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hudi.git


The following commit(s) were added to refs/heads/master by this push:
     new f92b9fd  [MINOR] Fix hardcoding of ports in TestHoodieJmxMetrics 
(#1606)
f92b9fd is described below

commit f92b9fdcc4d7c0dff9953e42205fca22472525c9
Author: vinoth chandar <[email protected]>
AuthorDate: Sun May 10 16:23:26 2020 -0700

    [MINOR] Fix hardcoding of ports in TestHoodieJmxMetrics (#1606)
---
 .../apache/hudi/metrics/TestHoodieJmxMetrics.java  |  5 ++--
 .../hudi/common/minicluster/HdfsTestService.java   | 19 ++++--------
 .../hudi/common/testutils/NetworkTestUtils.java    | 35 ++++++++++++++++++++++
 3 files changed, 43 insertions(+), 16 deletions(-)

diff --git 
a/hudi-client/src/test/java/org/apache/hudi/metrics/TestHoodieJmxMetrics.java 
b/hudi-client/src/test/java/org/apache/hudi/metrics/TestHoodieJmxMetrics.java
index 063f64e..7b63a30 100644
--- 
a/hudi-client/src/test/java/org/apache/hudi/metrics/TestHoodieJmxMetrics.java
+++ 
b/hudi-client/src/test/java/org/apache/hudi/metrics/TestHoodieJmxMetrics.java
@@ -18,6 +18,7 @@
 
 package org.apache.hudi.metrics;
 
+import org.apache.hudi.common.testutils.NetworkTestUtils;
 import org.apache.hudi.config.HoodieWriteConfig;
 
 import org.junit.jupiter.api.Test;
@@ -39,7 +40,7 @@ public class TestHoodieJmxMetrics {
     when(config.isMetricsOn()).thenReturn(true);
     when(config.getMetricsReporterType()).thenReturn(MetricsReporterType.JMX);
     when(config.getJmxHost()).thenReturn("localhost");
-    when(config.getJmxPort()).thenReturn("9889");
+    
when(config.getJmxPort()).thenReturn(String.valueOf(NetworkTestUtils.nextFreePort()));
     new HoodieMetrics(config, "raw_table");
     registerGauge("jmx_metric1", 123L);
     assertEquals("123", Metrics.getInstance().getRegistry().getGauges()
@@ -51,7 +52,7 @@ public class TestHoodieJmxMetrics {
     when(config.isMetricsOn()).thenReturn(true);
     when(config.getMetricsReporterType()).thenReturn(MetricsReporterType.JMX);
     when(config.getJmxHost()).thenReturn("localhost");
-    when(config.getJmxPort()).thenReturn("1000-5000");
+    
when(config.getJmxPort()).thenReturn(String.valueOf(NetworkTestUtils.nextFreePort()));
     new HoodieMetrics(config, "raw_table");
     registerGauge("jmx_metric2", 123L);
     assertEquals("123", Metrics.getInstance().getRegistry().getGauges()
diff --git 
a/hudi-common/src/test/java/org/apache/hudi/common/minicluster/HdfsTestService.java
 
b/hudi-common/src/test/java/org/apache/hudi/common/minicluster/HdfsTestService.java
index d331a17..00e6e3c 100644
--- 
a/hudi-common/src/test/java/org/apache/hudi/common/minicluster/HdfsTestService.java
+++ 
b/hudi-common/src/test/java/org/apache/hudi/common/minicluster/HdfsTestService.java
@@ -19,8 +19,8 @@
 package org.apache.hudi.common.minicluster;
 
 import org.apache.hudi.common.model.HoodieTestUtils;
+import org.apache.hudi.common.testutils.NetworkTestUtils;
 import org.apache.hudi.common.util.FileIOUtils;
-import org.apache.hudi.exception.HoodieIOException;
 
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
@@ -31,7 +31,6 @@ import org.apache.log4j.Logger;
 
 import java.io.File;
 import java.io.IOException;
-import java.net.ServerSocket;
 import java.nio.file.Files;
 import java.util.Objects;
 
@@ -61,14 +60,6 @@ public class HdfsTestService {
     return hadoopConf;
   }
 
-  private static int nextFreePort() {
-    try (ServerSocket socket = new ServerSocket(0)) {
-      return socket.getLocalPort();
-    } catch (IOException e) {
-      throw new HoodieIOException("Unable to find next free port", e);
-    }
-  }
-
   public MiniDFSCluster start(boolean format) throws IOException {
     Objects.requireNonNull(workDir, "The work dir must be set before starting 
cluster.");
     hadoopConf = HoodieTestUtils.getDefaultHadoopConf();
@@ -81,10 +72,10 @@ public class HdfsTestService {
       FileIOUtils.deleteDirectory(file);
     }
 
-    int namenodeRpcPort = nextFreePort();
-    int datanodePort = nextFreePort();
-    int datanodeIpcPort = nextFreePort();
-    int datanodeHttpPort = nextFreePort();
+    int namenodeRpcPort = NetworkTestUtils.nextFreePort();
+    int datanodePort = NetworkTestUtils.nextFreePort();
+    int datanodeIpcPort = NetworkTestUtils.nextFreePort();
+    int datanodeHttpPort = NetworkTestUtils.nextFreePort();
 
     // Configure and start the HDFS cluster
     // boolean format = shouldFormatDFSCluster(localDFSLocation, clean);
diff --git 
a/hudi-common/src/test/java/org/apache/hudi/common/testutils/NetworkTestUtils.java
 
b/hudi-common/src/test/java/org/apache/hudi/common/testutils/NetworkTestUtils.java
new file mode 100644
index 0000000..1f99b0e
--- /dev/null
+++ 
b/hudi-common/src/test/java/org/apache/hudi/common/testutils/NetworkTestUtils.java
@@ -0,0 +1,35 @@
+/*
+ * 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.hudi.common.testutils;
+
+import org.apache.hudi.exception.HoodieIOException;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+
+public class NetworkTestUtils {
+
+  public static int nextFreePort() {
+    try (ServerSocket socket = new ServerSocket(0)) {
+      return socket.getLocalPort();
+    } catch (IOException e) {
+      throw new HoodieIOException("Unable to find next free port", e);
+    }
+  }
+}

Reply via email to