From fd00a6849e072eb429e7ed7181588389f39bbdff Mon Sep 17 00:00:00 2001 From: HuabingZhao Date: Wed, 21 Mar 2018 09:14:25 +0800 Subject: Support healthy check for registered services Issue-ID: MSB-180 Change-Id: I352dfe32d3fbc1c7736ffbbb7b72718e6bbb5e01 Signed-off-by: HuabingZhao --- example/pom.xml | 2 + .../sdk/example/client/AnimalServiceClient.java | 4 +- .../onap/msb/sdk/example/client/ExampleClient.java | 4 +- .../onap/msb/sdk/example/server/ExampleApp.java | 4 +- .../org/onap/msb/sdk/example/server/MsbHelper.java | 55 +++++---- .../org/onap/msb/sdk/discovery/entity/Node.java | 127 ++++++++++++++++----- .../org/onap/msb/sdk/discovery/MSBServiceTest.java | 2 +- .../sdk/httpclient/msb/MSBServiceClientTest.java | 2 +- 8 files changed, 135 insertions(+), 65 deletions(-) diff --git a/example/pom.xml b/example/pom.xml index 81dc972..19c3ebf 100644 --- a/example/pom.xml +++ b/example/pom.xml @@ -2,11 +2,13 @@ 4.0.0 + org.onap.msb.java-sdk msb-java-sdk-example diff --git a/example/src/main/java/org/onap/msb/sdk/example/client/AnimalServiceClient.java b/example/src/main/java/org/onap/msb/sdk/example/client/AnimalServiceClient.java index cd9ebbb..aa6b9e3 100644 --- a/example/src/main/java/org/onap/msb/sdk/example/client/AnimalServiceClient.java +++ b/example/src/main/java/org/onap/msb/sdk/example/client/AnimalServiceClient.java @@ -23,6 +23,6 @@ import retrofit2.http.Path; @ServiceHttpEndPoint(serviceName = "animals", serviceVersion = "v1") public interface AnimalServiceClient { - @GET("animals/{name}") - Call queryAnimal(@Path("name") String name); + @GET("animals/{name}") + Call queryAnimal(@Path("name") String name); } diff --git a/example/src/main/java/org/onap/msb/sdk/example/client/ExampleClient.java b/example/src/main/java/org/onap/msb/sdk/example/client/ExampleClient.java index 4184b02..968621f 100644 --- a/example/src/main/java/org/onap/msb/sdk/example/client/ExampleClient.java +++ b/example/src/main/java/org/onap/msb/sdk/example/client/ExampleClient.java @@ -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); diff --git a/example/src/main/java/org/onap/msb/sdk/example/server/ExampleApp.java b/example/src/main/java/org/onap/msb/sdk/example/server/ExampleApp.java index 7e74ed2..002a358 100644 --- a/example/src/main/java/org/onap/msb/sdk/example/server/ExampleApp.java +++ b/example/src/main/java/org/onap/msb/sdk/example/server/ExampleApp.java @@ -40,8 +40,8 @@ public class ExampleApp extends Application { 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()); diff --git a/example/src/main/java/org/onap/msb/sdk/example/server/MsbHelper.java b/example/src/main/java/org/onap/msb/sdk/example/server/MsbHelper.java index bd49a9b..c3cab67 100644 --- a/example/src/main/java/org/onap/msb/sdk/example/server/MsbHelper.java +++ b/example/src/main/java/org/onap/msb/sdk/example/server/MsbHelper.java @@ -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 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 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); + } } diff --git a/src/main/java/org/onap/msb/sdk/discovery/entity/Node.java b/src/main/java/org/onap/msb/sdk/discovery/entity/Node.java index 1bdeab8..51e8f8b 100644 --- a/src/main/java/org/onap/msb/sdk/discovery/entity/Node.java +++ b/src/main/java/org/onap/msb/sdk/discovery/entity/Node.java @@ -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(); + } } diff --git a/src/test/java/org/onap/msb/sdk/discovery/MSBServiceTest.java b/src/test/java/org/onap/msb/sdk/discovery/MSBServiceTest.java index 98103e0..b6936be 100644 --- a/src/test/java/org/onap/msb/sdk/discovery/MSBServiceTest.java +++ b/src/test/java/org/onap/msb/sdk/discovery/MSBServiceTest.java @@ -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 { diff --git a/src/test/java/org/onap/msb/sdk/httpclient/msb/MSBServiceClientTest.java b/src/test/java/org/onap/msb/sdk/httpclient/msb/MSBServiceClientTest.java index 5ee191b..92e198e 100644 --- a/src/test/java/org/onap/msb/sdk/httpclient/msb/MSBServiceClientTest.java +++ b/src/test/java/org/onap/msb/sdk/httpclient/msb/MSBServiceClientTest.java @@ -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 { -- cgit 1.2.3-korg