Support healthy check for registered services 85/37285/1
authorHuabingZhao <zhao.huabing@zte.com.cn>
Wed, 21 Mar 2018 01:14:25 +0000 (09:14 +0800)
committerHuabingZhao <zhao.huabing@zte.com.cn>
Wed, 21 Mar 2018 01:14:30 +0000 (09:14 +0800)
Issue-ID: MSB-180
Change-Id: I352dfe32d3fbc1c7736ffbbb7b72718e6bbb5e01
Signed-off-by: HuabingZhao <zhao.huabing@zte.com.cn>
example/pom.xml
example/src/main/java/org/onap/msb/sdk/example/client/AnimalServiceClient.java
example/src/main/java/org/onap/msb/sdk/example/client/ExampleClient.java
example/src/main/java/org/onap/msb/sdk/example/server/ExampleApp.java
example/src/main/java/org/onap/msb/sdk/example/server/MsbHelper.java
src/main/java/org/onap/msb/sdk/discovery/entity/Node.java
src/test/java/org/onap/msb/sdk/discovery/MSBServiceTest.java
src/test/java/org/onap/msb/sdk/httpclient/msb/MSBServiceClientTest.java

index 81dc972..19c3ebf 100644 (file)
@@ -2,11 +2,13 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
+    <!-- 
     <parent>
       <groupId>org.onap.oparent</groupId>
       <artifactId>oparent</artifactId>
       <version>1.1.0-SNAPSHOT</version>
     </parent>
+     -->
 
     <groupId>org.onap.msb.java-sdk</groupId>
     <artifactId>msb-java-sdk-example</artifactId>
index cd9ebbb..aa6b9e3 100644 (file)
@@ -23,6 +23,6 @@ import retrofit2.http.Path;
 @ServiceHttpEndPoint(serviceName = "animals", serviceVersion = "v1")
 public interface AnimalServiceClient {
 
-  @GET("animals/{name}")
-  Call<Animal> queryAnimal(@Path("name") String name);
+    @GET("animals/{name}")
+    Call<Animal> queryAnimal(@Path("name") String name);
 }
index 4184b02..968621f 100644 (file)
@@ -29,8 +29,8 @@ public class ExampleClient {
     public static void main(String[] args) throws IOException {
         // For real use case, MSB discovery IP and Port should come from configuration file instead
         // of hard code here
-        String msb_discovery_ip = "127.0.0.1";
-        int msb_discovery_port = 10081;
+        String msb_discovery_ip = "10.96.33.44";
+        int msb_discovery_port = 30080;
 
         MSBServiceClient msbClient = new MSBServiceClient(msb_discovery_ip, msb_discovery_port);
 
index 7e74ed2..002a358 100644 (file)
@@ -40,8 +40,8 @@ public class ExampleApp extends Application<Config> {
     public void run(Config configuration, Environment environment) throws Exception {
         // For real use case, MSB discovery IP and Port should come from configuration file instead
         // of hard code here
-        String msb_discovery_ip = "127.0.0.1";
-        int msb_discovery_port = 10081;
+        String msb_discovery_ip = "10.96.33.44";
+        int msb_discovery_port = 30081;
 
         environment.jersey().register(new AnimalResource());
 
index bd49a9b..c3cab67 100644 (file)
@@ -24,32 +24,31 @@ import org.onap.msb.sdk.httpclient.msb.MSBServiceClient;
 
 public class MsbHelper {
 
-  private MSBServiceClient msbClient;
-
-  public MsbHelper(MSBServiceClient msbClient) {
-    super();
-    this.msbClient = msbClient;
-  }
-
-
-
-  public void registerMsb() throws Exception {
-
-
-    MicroServiceInfo msinfo = new MicroServiceInfo();
-
-    msinfo.setServiceName("animals");
-    msinfo.setVersion("v1");
-    msinfo.setUrl("/api/rpc/v1");
-    msinfo.setProtocol("REST");
-    msinfo.setVisualRange("0|1");
-    
-    Set<Node> nodes = new HashSet<>();
-    Node node1 = new Node();
-    node1.setIp(InetAddress.getLocalHost().getHostAddress());
-    node1.setPort("9090");
-    nodes.add(node1);
-    msinfo.setNodes(nodes);
-    msbClient.registerMicroServiceInfo(msinfo, false);
-  }
+    private MSBServiceClient msbClient;
+
+    public MsbHelper(MSBServiceClient msbClient) {
+        super();
+        this.msbClient = msbClient;
+    }
+
+
+
+    public void registerMsb() throws Exception {
+        MicroServiceInfo msinfo = new MicroServiceInfo();
+        msinfo.setServiceName("animals");
+        msinfo.setVersion("v1");
+        msinfo.setUrl("/api/rpc/v1");
+        msinfo.setProtocol("REST");
+        msinfo.setVisualRange("0|1");
+
+        Set<Node> nodes = new HashSet<>();
+        Node node1 = new Node();
+        node1.setIp(InetAddress.getLocalHost().getHostAddress());
+        node1.setPort("9090");
+        node1.setCheckType("HTTP");
+        node1.setCheckUrl("http://10.74.57.151:9090/api/rpc/v1/animals/panda");
+        nodes.add(node1);
+        msinfo.setNodes(nodes);
+        msbClient.registerMicroServiceInfo(msinfo, false);
+    }
 }
index 1bdeab8..51e8f8b 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright 2017 ZTE, Inc. and others.
+ * Copyright 2017-2018 ZTE, Inc. and others.
  * 
  * Licensed 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
@@ -17,46 +17,115 @@ import java.io.Serializable;
 
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 
+
 @JsonIgnoreProperties(ignoreUnknown = true)
 public class Node implements Serializable {
-  private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
+
+    private String ip;
+
+    private String port;
+
+    private String ttl = "";
+
+    // 健康检查参数
+    // health check type, allowableValues = "HTTP,TCP, TTL", example = "HTTP")
+    private String checkType = "HTTP";
+    // health check url, example for http "http://192.168.0.2:80/heallth", example for tcp
+    // "192.168.1.100:80"
+    private String checkUrl = "";
+
+    // TCP or HTTP health check Interval,Unit: second", example = "10s"
+    private String checkInterval = "10s";
+
+    // TCP or HTTP health check TimeOut,Unit: second", example = "10s"
+    private String checkTimeOut = "10s";
+
+
+    public String getIp() {
+        return ip;
+    }
+
+    public void setIp(String ip) {
+        this.ip = ip;
+    }
+
+    public String getPort() {
+        return port;
+    }
+
+    public void setPort(String port) {
+        this.port = port;
+    }
 
-  private String ip;
+    public String getTtl() {
+        return ttl;
+    }
 
-  private String port;
+    public void setTtl(String ttl) {
+        this.ttl = ttl;
+    }
 
-  private String ttl = "";
+    /**
+     * @return the checkType
+     */
+    public String getCheckType() {
+        return checkType;
+    }
 
+    /**
+     * @param checkType the checkType to set
+     */
+    public void setCheckType(String checkType) {
+        this.checkType = checkType;
+    }
 
-  public String getIp() {
-    return ip;
-  }
+    /**
+     * @return the checkUrl
+     */
+    public String getCheckUrl() {
+        return checkUrl;
+    }
 
-  public void setIp(String ip) {
-    this.ip = ip;
-  }
+    /**
+     * @param checkUrl the checkUrl to set
+     */
+    public void setCheckUrl(String checkUrl) {
+        this.checkUrl = checkUrl;
+    }
 
-  public String getPort() {
-    return port;
-  }
+    /**
+     * @return the checkInterval
+     */
+    public String getCheckInterval() {
+        return checkInterval;
+    }
 
-  public void setPort(String port) {
-    this.port = port;
-  }
+    /**
+     * @param checkInterval the checkInterval to set
+     */
+    public void setCheckInterval(String checkInterval) {
+        this.checkInterval = checkInterval;
+    }
 
-  public String getTtl() {
-    return ttl;
-  }
+    /**
+     * @return the checkTimeOut
+     */
+    public String getCheckTimeOut() {
+        return checkTimeOut;
+    }
 
-  public void setTtl(String ttl) {
-    this.ttl = ttl;
-  }
+    /**
+     * @param checkTimeOut the checkTimeOut to set
+     */
+    public void setCheckTimeOut(String checkTimeOut) {
+        this.checkTimeOut = checkTimeOut;
+    }
 
-  @Override
-  public String toString() {
-    // TODO Auto-generated method stub
-    return (new StringBuilder().append(ip).append(":").append(port).append("  ttl:").append(ttl))
-        .toString();
-  }
+    @Override
+    public String toString() {
+        // TODO Auto-generated method stub
+        return (new StringBuilder().append(ip).append(":").append(port).append("  ttl:").append(ttl)).toString();
+    }
 
 }
index 98103e0..b6936be 100644 (file)
@@ -43,7 +43,7 @@ public class MSBServiceTest {
                     "http://127.0.0.1:10081/api/microservices/v1/services/aai/version/v8";
 
     private static final String MOCK_REG_SERVICE_JSON =
-                    "{\"serviceName\":\"aai\",\"version\":\"v8\",\"url\":\"/aai/v8\",\"protocol\":\"REST\",\"visualRange\":\"1\",\"lb_policy\":\"\",\"path\":\"/aai/v8\",\"nodes\":[{\"ip\":\"10.74.44.1\",\"port\":\"8443\",\"ttl\":\"20\"}],\"metadata\":[{\"key\":\"key1\",\"value\":\"value1\"}],\"enable_ssl\":false}";
+                    "{\"serviceName\":\"aai\",\"version\":\"v8\",\"url\":\"/aai/v8\",\"protocol\":\"REST\",\"visualRange\":\"1\",\"lb_policy\":\"\",\"path\":\"/aai/v8\",\"nodes\":[{\"ip\":\"10.74.44.1\",\"port\":\"8443\",\"ttl\":\"20\",\"checkType\":\"HTTP\",\"checkUrl\":\"\",\"checkInterval\":\"10s\",\"checkTimeOut\":\"10s\"}],\"metadata\":[{\"key\":\"key1\",\"value\":\"value1\"}],\"enable_ssl\":false}";
 
     @Test
     public void test_registration_update_true() throws RouteException {
index 5ee191b..92e198e 100644 (file)
@@ -39,7 +39,7 @@ public class MSBServiceClientTest {
                     "http://127.0.0.1:10081/api/microservices/v1/services/aai/version/v8";
 
     private static final String MOCK_REG_SERVICE_JSON =
-                    "{\"serviceName\":\"aai\",\"version\":\"v8\",\"url\":\"/aai/v8\",\"protocol\":\"REST\",\"visualRange\":\"1\",\"lb_policy\":\"\",\"path\":\"/aai/v8\",\"nodes\":[{\"ip\":\"10.74.44.1\",\"port\":\"8443\",\"ttl\":\"\"}],\"metadata\":null,\"enable_ssl\":false}";
+                    "{\"serviceName\":\"aai\",\"version\":\"v8\",\"url\":\"/aai/v8\",\"protocol\":\"REST\",\"visualRange\":\"1\",\"lb_policy\":\"\",\"path\":\"/aai/v8\",\"nodes\":[{\"ip\":\"10.74.44.1\",\"port\":\"8443\",\"ttl\":\"\",\"checkType\":\"HTTP\",\"checkUrl\":\"\",\"checkInterval\":\"10s\",\"checkTimeOut\":\"10s\"}],\"metadata\":null,\"enable_ssl\":false}";
 
     @Test
     public void test_registration_update_true() throws RouteException {