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

yqlin pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 8326450  HDDS-974. Add getServiceAddress method to ServiceInfo and use 
it in TestOzoneShell. Contributed by Doroszlai, Attila.
8326450 is described below

commit 8326450bca1b15383bf1c1a3b4e86df1ca027495
Author: Yiqun Lin <yq...@apache.org>
AuthorDate: Mon Jan 28 17:03:12 2019 +0800

    HDDS-974. Add getServiceAddress method to ServiceInfo and use it in 
TestOzoneShell. Contributed by Doroszlai, Attila.
---
 .../apache/hadoop/ozone/client/rpc/RpcClient.java  |  5 +-
 .../hadoop/ozone/om/helpers/ServiceInfo.java       | 14 ++++-
 .../ozone/ozShell/TestOzoneDatanodeShell.java      | 34 +----------
 .../hadoop/ozone/ozShell/TestOzoneShell.java       | 66 ++++++++--------------
 4 files changed, 40 insertions(+), 79 deletions(-)

diff --git 
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
 
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
index 538f69b..8f398e9 100644
--- 
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
+++ 
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
@@ -80,7 +80,6 @@ import org.apache.ratis.protocol.ClientId;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.ws.rs.HEAD;
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.util.*;
@@ -206,8 +205,8 @@ public class RpcClient implements ClientProtocol {
     ServiceInfo scmInfo = services.stream().filter(
         a -> a.getNodeType().equals(HddsProtos.NodeType.SCM))
         .collect(Collectors.toList()).get(0);
-    return NetUtils.createSocketAddr(scmInfo.getHostname()+ ":" +
-        scmInfo.getPort(ServicePort.Type.RPC));
+    return NetUtils.createSocketAddr(
+        scmInfo.getServiceAddress(ServicePort.Type.RPC));
   }
 
   @Override
diff --git 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/ServiceInfo.java
 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/ServiceInfo.java
index 9b03aef..fb49644 100644
--- 
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/ServiceInfo.java
+++ 
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/ServiceInfo.java
@@ -109,11 +109,11 @@ public final class ServiceInfo {
   }
 
   /**
-   * Returns the port for given type, null if the service doesn't support
-   * the type.
+   * Returns the port for given type.
    *
    * @param type the type of port.
    *             ex: RPC, HTTP, HTTPS, etc..
+   * @throws NullPointerException if the service doesn't support the given type
    */
   @JsonIgnore
   public int getPort(ServicePort.Type type) {
@@ -121,6 +121,16 @@ public final class ServiceInfo {
   }
 
   /**
+   * Returns the address of the service (hostname with port of the given type).
+   * @param portType the type of port, eg. RPC, HTTP, etc.
+   * @return service address (hostname with port of the given type)
+   */
+  @JsonIgnore
+  public String getServiceAddress(ServicePort.Type portType) {
+    return hostname + ":" + getPort(portType);
+  }
+
+  /**
    * Converts {@link ServiceInfo} to OzoneManagerProtocolProtos.ServiceInfo.
    *
    * @return OzoneManagerProtocolProtos.ServiceInfo
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/ozShell/TestOzoneDatanodeShell.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/ozShell/TestOzoneDatanodeShell.java
index a45dee8..9ba8529 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/ozShell/TestOzoneDatanodeShell.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/ozShell/TestOzoneDatanodeShell.java
@@ -21,25 +21,19 @@ import com.google.common.base.Strings;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.IOException;
 import java.io.PrintStream;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
-import java.util.stream.Collectors;
 
 import org.apache.hadoop.fs.FileUtil;
 import org.apache.hadoop.hdds.cli.MissingSubcommandException;
 import org.apache.hadoop.hdds.client.ReplicationFactor;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
 import org.apache.hadoop.ozone.HddsDatanodeService;
 import org.apache.hadoop.ozone.MiniOzoneCluster;
-import org.apache.hadoop.ozone.client.protocol.ClientProtocol;
 import org.apache.hadoop.ozone.client.rest.RestClient;
 import org.apache.hadoop.ozone.client.rpc.RpcClient;
-import org.apache.hadoop.ozone.om.helpers.ServiceInfo;
 import org.apache.hadoop.test.GenericTestUtils;
 import org.junit.After;
 import org.junit.AfterClass;
@@ -78,11 +72,9 @@ public class TestOzoneDatanodeShell {
   @Rule
   public Timeout testTimeout = new Timeout(300000);
 
-  private static String url;
   private static File baseDir;
   private static OzoneConfiguration conf = null;
   private static MiniOzoneCluster cluster = null;
-  private static ClientProtocol client = null;
   private static HddsDatanodeService datanode = null;
 
   private final ByteArrayOutputStream out = new ByteArrayOutputStream();
@@ -123,7 +115,6 @@ public class TestOzoneDatanodeShell {
         .build();
     conf.setInt(OZONE_REPLICATION, ReplicationFactor.THREE.getValue());
     conf.setQuietMode(false);
-    client = new RpcClient(conf);
     cluster.waitForClusterToBeReady();
   }
 
@@ -145,26 +136,6 @@ public class TestOzoneDatanodeShell {
   public void setup() {
     System.setOut(new PrintStream(out));
     System.setErr(new PrintStream(err));
-    if(clientProtocol.equals(RestClient.class)) {
-      String hostName = cluster.getOzoneManager().getHttpServer()
-          .getHttpAddress().getHostName();
-      int port = cluster
-          .getOzoneManager().getHttpServer().getHttpAddress().getPort();
-      url = String.format("http://"; + hostName + ":" + port);
-    } else {
-      List<ServiceInfo> services = null;
-      try {
-        services = cluster.getOzoneManager().getServiceList();
-      } catch (IOException e) {
-        LOG.error("Could not get service list from OM");
-      }
-      String hostName = services.stream().filter(
-          a -> a.getNodeType().equals(HddsProtos.NodeType.OM))
-          .collect(Collectors.toList()).get(0).getHostname();
-
-      String port = cluster.getOzoneManager().getRpcPort();
-      url = String.format("o3://" + hostName + ":" + port);
-    }
   }
 
   @After
@@ -180,9 +151,8 @@ public class TestOzoneDatanodeShell {
 
 
   private void executeDatanode(HddsDatanodeService hdds, String[] args) {
-    List<String> arguments = new ArrayList(Arrays.asList(args));
-    LOG.info("Executing ozone datanode command with args {}", arguments);
-    CommandLine cmd = datanode.getCmd();
+    LOG.info("Executing datanode command with args {}", Arrays.asList(args));
+    CommandLine cmd = hdds.getCmd();
 
     IExceptionHandler2<List<Object>> exceptionHandler =
         new IExceptionHandler2<List<Object>>() {
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/ozShell/TestOzoneShell.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/ozShell/TestOzoneShell.java
index 93ff993..f00c756 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/ozShell/TestOzoneShell.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/ozShell/TestOzoneShell.java
@@ -35,7 +35,6 @@ import java.util.List;
 import java.util.Objects;
 import java.util.Random;
 import java.util.UUID;
-import java.util.stream.Collectors;
 
 import org.apache.hadoop.fs.FileUtil;
 import org.apache.hadoop.hdds.cli.MissingSubcommandException;
@@ -58,6 +57,7 @@ import org.apache.hadoop.ozone.client.rest.OzoneException;
 import org.apache.hadoop.ozone.client.rest.RestClient;
 import org.apache.hadoop.ozone.client.rpc.RpcClient;
 import org.apache.hadoop.ozone.om.helpers.ServiceInfo;
+import 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ServicePort;
 import org.apache.hadoop.ozone.web.ozShell.Shell;
 import org.apache.hadoop.ozone.web.request.OzoneQuota;
 import org.apache.hadoop.ozone.web.response.BucketInfo;
@@ -177,25 +177,15 @@ public class TestOzoneShell {
   public void setup() {
     System.setOut(new PrintStream(out));
     System.setErr(new PrintStream(err));
+
     if(clientProtocol.equals(RestClient.class)) {
       String hostName = cluster.getOzoneManager().getHttpServer()
           .getHttpAddress().getHostName();
       int port = cluster
           .getOzoneManager().getHttpServer().getHttpAddress().getPort();
-      url = String.format("http://"; + hostName + ":" + port);
+      url = String.format("http://%s:%d";, hostName, port);
     } else {
-      List<ServiceInfo> services = null;
-      try {
-        services = cluster.getOzoneManager().getServiceList();
-      } catch (IOException e) {
-        LOG.error("Could not get service list from OM");
-      }
-      String hostName = services.stream().filter(
-          a -> a.getNodeType().equals(HddsProtos.NodeType.OM))
-          .collect(Collectors.toList()).get(0).getHostname();
-
-      String port = cluster.getOzoneManager().getRpcPort();
-      url = String.format("o3://" + hostName + ":" + port);
+      url = "o3://" + getOmAddress();
     }
   }
 
@@ -245,8 +235,7 @@ public class TestOzoneShell {
   }
 
   private void execute(Shell ozoneShell, String[] args) {
-    List<String> arguments = new ArrayList(Arrays.asList(args));
-    LOG.info("Executing shell command with args {}", arguments);
+    LOG.info("Executing shell command with args {}", Arrays.asList(args));
     CommandLine cmd = ozoneShell.getCmd();
 
     IExceptionHandler2<List<Object>> exceptionHandler =
@@ -1154,17 +1143,8 @@ public class TestOzoneShell {
 
   @Test
   public void testS3BucketMapping() throws  IOException {
-
-    List<ServiceInfo> services =
-        cluster.getOzoneManager().getServiceList();
-
-    String omHostName = services.stream().filter(
-        a -> a.getNodeType().equals(HddsProtos.NodeType.OM))
-        .collect(Collectors.toList()).get(0).getHostname();
-
-    String omPort = cluster.getOzoneManager().getRpcPort();
     String setOmAddress =
-        "--set=" + OZONE_OM_ADDRESS_KEY + "=" + omHostName + ":" + omPort;
+        "--set=" + OZONE_OM_ADDRESS_KEY + "=" + getOmAddress();
 
     String s3Bucket = "bucket1";
     String commandOutput;
@@ -1201,16 +1181,8 @@ public class TestOzoneShell {
 
   @Test
   public void testS3Secret() throws Exception {
-    List<ServiceInfo> services =
-        cluster.getOzoneManager().getServiceList();
-
-    String omHostName = services.stream().filter(
-        a -> a.getNodeType().equals(HddsProtos.NodeType.OM))
-        .collect(Collectors.toList()).get(0).getHostname();
-
-    String omPort = cluster.getOzoneManager().getRpcPort();
     String setOmAddress =
-        "--set=" + OZONE_OM_ADDRESS_KEY + "=" + omHostName + ":" + omPort;
+        "--set=" + OZONE_OM_ADDRESS_KEY + "=" + getOmAddress();
 
     err.reset();
     String outputFirstAttempt;
@@ -1275,13 +1247,7 @@ public class TestOzoneShell {
 
   @Test
   public void testTokenCommands() throws Exception {
-    String omHostName = cluster.getOzoneManager().getServiceList().stream()
-        .filter(a -> a.getNodeType().equals(HddsProtos.NodeType.OM))
-        .collect(Collectors.toList()).get(0).getHostname();
-
-    String omPort = cluster.getOzoneManager().getRpcPort();
-    String omAdd = "--set=" + OZONE_OM_ADDRESS_KEY + "=" + omHostName
-        + ":" + omPort;
+    String omAdd = "--set=" + OZONE_OM_ADDRESS_KEY + "=" + getOmAddress();
     List<String[]> shellCommands = new ArrayList<>(4);
     // Case 1: Execution will fail when security is disabled.
     shellCommands.add(new String[]{omAdd, "token", "get"});
@@ -1359,4 +1325,20 @@ public class TestOzoneShell {
 
     return tmpFile.getAbsolutePath();
   }
+
+  private String getOmAddress() {
+    List<ServiceInfo> services;
+    try {
+      services = cluster.getOzoneManager().getServiceList();
+    } catch (IOException e) {
+      fail("Could not get service list from OM");
+      return null;
+    }
+
+    return services.stream()
+        .filter(a -> HddsProtos.NodeType.OM.equals(a.getNodeType()))
+        .findFirst()
+        .map(s -> s.getServiceAddress(ServicePort.Type.RPC))
+        .orElseThrow(IllegalStateException::new);
+  }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to