diff options
Diffstat (limited to 'controlloop/common/msb')
9 files changed, 448 insertions, 407 deletions
diff --git a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MSBServiceException.java b/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MSBServiceException.java deleted file mode 100644 index 2342e1695..000000000 --- a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MSBServiceException.java +++ /dev/null @@ -1,41 +0,0 @@ -/******************************************************************************* - * Copyright 2017 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 - * - * 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.onap.policy.msb.client; - -public class MSBServiceException extends Exception { - private static final long serialVersionUID = 5227416822833497317L; - - public MSBServiceException() { - super(); - } - - public MSBServiceException(String message, Throwable cause, boolean enableSuppression, - boolean writableStackTrace) { - super(message, cause, enableSuppression, writableStackTrace); - } - - public MSBServiceException(String message, Throwable cause) { - super(message, cause); - } - - public MSBServiceException(String message) { - super(message); - } - - public MSBServiceException(Throwable cause) { - super(cause); - } - -} diff --git a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceException.java b/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceException.java new file mode 100644 index 000000000..ebd2e32ff --- /dev/null +++ b/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceException.java @@ -0,0 +1,42 @@ +/*- + * ============LICENSE_START======================================================= + * 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 + * + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.msb.client; + +public class MsbServiceException extends Exception { + private static final long serialVersionUID = 5227416822833497317L; + + public MsbServiceException() { + super(); + } + + public MsbServiceException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } + + public MsbServiceException(String message, Throwable cause) { + super(message, cause); + } + + public MsbServiceException(String message) { + super(message); + } + + public MsbServiceException(Throwable cause) { + super(cause); + } + +} diff --git a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MSBServiceFactory.java b/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceFactory.java index 7ebb5d6dc..91e36c01d 100644 --- a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MSBServiceFactory.java +++ b/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceFactory.java @@ -1,106 +1,122 @@ -/*******************************************************************************
- * Copyright 2017 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
- *
- * 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.onap.policy.msb.client;
-
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Serializable;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Properties;
-
-import org.onap.msb.sdk.discovery.common.RouteException;
-import org.onap.msb.sdk.discovery.entity.MicroServiceFullInfo;
-import org.onap.msb.sdk.discovery.entity.NodeInfo;
-import org.onap.msb.sdk.httpclient.msb.MSBServiceClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-public class MSBServiceFactory implements Serializable {
- private static final long serialVersionUID = 4638414146278012425L;
- private static final Logger logger = LoggerFactory.getLogger(MSBServiceFactory.class);
- private static final String MSB_PROPERTY_FILE = "msb.policy.properties";
- private static final String MSB_IP = "msb.ip";
- private static final String MSB_PORT = "msb.port";
- private transient MSBServiceClient msbClient;
- private Properties properties;
-
- public MSBServiceFactory() throws MSBServiceException,IOException{
- this.init();
- this.msbClient = new MSBServiceClient(properties.getProperty(MSB_IP), Integer.parseInt(properties.getProperty(MSB_PORT)));
- }
- public MSBServiceFactory (MSBServiceClient msbClient) {
- this.msbClient = msbClient;
- }
-
- private void init() throws MSBServiceException,IOException {
- properties = new Properties();
- String propertyFilePath = System.getProperty(MSB_PROPERTY_FILE);
- if (propertyFilePath == null) {
- throw new MSBServiceException("No msb.policy.properties specified.");
- }
- Path file = Paths.get(propertyFilePath);
- if (!file.toFile().exists()) {
- throw new MSBServiceException("No msb.policy.properties specified.");
- }
-
- if (!Files.isReadable(file)) {
- throw new MSBServiceException ("Repository is NOT readable: " + file.toAbsolutePath());
- }
- try(InputStream is = new FileInputStream(file.toFile())){
- properties.load(is);
- }
- }
-
-
- public Node getNode(String serviceName,String version){
- return this.build(serviceName,version);
- }
-
- public Node getNode(String actor){
- Node node = null;
- switch (actor) {
- case "AAI":
- node = this.build("aai-search","v11");
- return node;
- case "SO":
- node = this.build("so","v2");
- return node;
- case "VFC":
- node = this.build("nfvo-nslcm","v1");
- return node;
- default:
- logger.info("MSBServiceManager: policy has an unknown actor.");
- }
- return node;
- }
-
- private Node build(String serviceName,String version){
- Node node = new Node();
- node.setName(serviceName);
- try {
- MicroServiceFullInfo serviceInfo = msbClient.queryMicroServiceInfo(serviceName,version);
- for (NodeInfo nodeInfo: serviceInfo.getNodes()){
- node.setIp(nodeInfo.getIp());
- node.setPort(nodeInfo.getPort());
- }
- } catch (RouteException e) {
- logger.info("MSBServiceManager:",e);
- }
- return node;
- }
-}
+/*- + * ============LICENSE_START======================================================= + * 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 + * + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.msb.client; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.Serializable; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Properties; + +import org.onap.msb.sdk.discovery.common.RouteException; +import org.onap.msb.sdk.discovery.entity.MicroServiceFullInfo; +import org.onap.msb.sdk.discovery.entity.NodeInfo; +import org.onap.msb.sdk.httpclient.msb.MSBServiceClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class MsbServiceFactory implements Serializable { + private static final long serialVersionUID = 4638414146278012425L; + private static final Logger logger = LoggerFactory.getLogger(MsbServiceFactory.class); + private static final String MSB_PROPERTY_FILE = "msb.policy.properties"; + private static final String MSB_IP = "msb.ip"; + private static final String MSB_PORT = "msb.port"; + private transient MSBServiceClient msbClient; + private Properties properties; + + /** + * Construct an instance. + * + * @throws MsbServiceException if an error occurs + * @throws IOException if an IO error occurs + */ + public MsbServiceFactory() throws MsbServiceException, IOException { + this.init(); + this.msbClient = new MSBServiceClient(properties.getProperty(MSB_IP), + Integer.parseInt(properties.getProperty(MSB_PORT))); + } + + public MsbServiceFactory(MSBServiceClient msbClient) { + this.msbClient = msbClient; + } + + private void init() throws MsbServiceException, IOException { + properties = new Properties(); + String propertyFilePath = System.getProperty(MSB_PROPERTY_FILE); + if (propertyFilePath == null) { + throw new MsbServiceException("No msb.policy.properties specified."); + } + Path file = Paths.get(propertyFilePath); + if (!file.toFile().exists()) { + throw new MsbServiceException("No msb.policy.properties specified."); + } + + if (!Files.isReadable(file)) { + throw new MsbServiceException("Repository is NOT readable: " + file.toAbsolutePath()); + } + try (InputStream is = new FileInputStream(file.toFile())) { + properties.load(is); + } + } + + + public Node getNode(String serviceName, String version) { + return this.build(serviceName, version); + } + + /** + * Get the node for the given actor. + * + * @param actor the actor + * @return the node + */ + public Node getNode(String actor) { + Node node = null; + switch (actor) { + case "AAI": + node = this.build("aai-search", "v11"); + return node; + case "SO": + node = this.build("so", "v2"); + return node; + case "VFC": + node = this.build("nfvo-nslcm", "v1"); + return node; + default: + logger.info("MSBServiceManager: policy has an unknown actor."); + } + return node; + } + + private Node build(String serviceName, String version) { + Node node = new Node(); + node.setName(serviceName); + try { + MicroServiceFullInfo serviceInfo = msbClient.queryMicroServiceInfo(serviceName, version); + for (NodeInfo nodeInfo : serviceInfo.getNodes()) { + node.setIp(nodeInfo.getIp()); + node.setPort(nodeInfo.getPort()); + } + } catch (RouteException e) { + logger.info("MSBServiceManager:", e); + } + return node; + } +} diff --git a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MSBServiceManager.java b/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceManager.java index ccb13ece4..aca3ff28f 100644 --- a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MSBServiceManager.java +++ b/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/MsbServiceManager.java @@ -1,55 +1,60 @@ -/*******************************************************************************
- * Copyright 2017 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
- *
- * 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.onap.policy.msb.client;
-
-import org.onap.msb.sdk.httpclient.msb.MSBServiceClient;
-
-import java.io.IOException;
-import java.io.Serializable;
-
-public class MSBServiceManager implements Serializable {
- private static final long serialVersionUID = -2517971308551895215L;
- private MSBServiceFactory factory;
-
- public MSBServiceManager() throws MSBServiceException,IOException {
- this.factory = new MSBServiceFactory();
- }
-
- public MSBServiceManager(MSBServiceClient msbClient){
-
- this.factory = new MSBServiceFactory(msbClient);
- }
-
- /**
- * Get the IP and port of the components registered in the MSB
- * @param actor AAI or SO or VFC
- * @return
- */
- public Node getNode(String actor){
-
- return factory.getNode(actor);
- }
-
- /**
- * Get the IP and port of the components registered in the MSB
- * @param serviceName the service name registered in the MSB
- * @param version the service version registered in the MSB
- * @return
- */
- public Node getNode(String serviceName,String version){
-
- return factory.getNode(serviceName,version);
- }
-
-}
+/*- + * ============LICENSE_START======================================================= + * 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 + * + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.msb.client; + +import java.io.IOException; +import java.io.Serializable; + +import org.onap.msb.sdk.httpclient.msb.MSBServiceClient; + +public class MsbServiceManager implements Serializable { + private static final long serialVersionUID = -2517971308551895215L; + private MsbServiceFactory factory; + + public MsbServiceManager() throws MsbServiceException, IOException { + this.factory = new MsbServiceFactory(); + } + + public MsbServiceManager(MSBServiceClient msbClient) { + + this.factory = new MsbServiceFactory(msbClient); + } + + /** + * Get the IP and port of the components registered in the MSB. + * + * @param actor AAI or SO or VFC + * @return the node + */ + public Node getNode(String actor) { + + return factory.getNode(actor); + } + + /** + * Get the IP and port of the components registered in the MSB. + * + * @param serviceName the service name registered in the MSB + * @param version the service version registered in the MSB + * @return the node + */ + public Node getNode(String serviceName, String version) { + + return factory.getNode(serviceName, version); + } + +} diff --git a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/Node.java b/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/Node.java index 5c06939bf..f42b82e3c 100644 --- a/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/Node.java +++ b/controlloop/common/msb/src/main/java/org/onap/policy/msb/client/Node.java @@ -1,5 +1,6 @@ -/*******************************************************************************
- * Copyright 2017 ZTE, Inc. and others.
+/*-
+ * ============LICENSE_START=======================================================
+ * 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
@@ -10,7 +11,9 @@ * 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.
- ******************************************************************************/
+ * ============LICENSE_END=========================================================
+ */
+
package org.onap.policy.msb.client;
import java.io.Serializable;
@@ -47,10 +50,6 @@ public class Node implements Serializable { @Override
public String toString() {
- return "Node{" +
- "name='" + name + '\'' +
- ", ip='" + ip + '\'' +
- ", port='" + port + '\'' +
- '}';
+ return "Node{" + "name='" + name + '\'' + ", ip='" + ip + '\'' + ", port='" + port + '\'' + '}';
}
}
diff --git a/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/MSBServiceManagerTest.java b/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/MSBServiceManagerTest.java deleted file mode 100644 index 4edb168f0..000000000 --- a/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/MSBServiceManagerTest.java +++ /dev/null @@ -1,155 +0,0 @@ -/*******************************************************************************
- * Copyright 2017 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
- *
- * 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.onap.policy.msb.client;
-
-import org.junit.*;
-import org.junit.rules.ExpectedException;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.onap.msb.sdk.discovery.common.RouteException;
-import org.onap.msb.sdk.discovery.entity.MicroServiceFullInfo;
-import org.onap.msb.sdk.discovery.entity.NodeInfo;
-import org.onap.msb.sdk.httpclient.msb.MSBServiceClient;
-import org.onap.policy.msb.client.MSBServiceManager;
-import org.onap.policy.msb.client.Node;
-
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.HashSet;
-import java.util.Set;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.when;
-
-public class MSBServiceManagerTest {
- @Mock
- private MSBServiceClient msbClient;
-
- @Rule
- public ExpectedException expectedException = ExpectedException.none();
-
- private MSBServiceManager msbManager;
-
- public MSBServiceManagerTest(){}
-
- @BeforeClass
- public static void setUpClass(){}
-
- @AfterClass
- public static void tearDownClass(){}
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
- msbManager = new MSBServiceManager(msbClient);
- }
-
- @After
- public void tearDown() {
- }
-
- @Test
- public void testByActor () throws RouteException,UnknownHostException {
- MicroServiceFullInfo serviceInfo = MSBServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(),"8843");
- when(msbClient.queryMicroServiceInfo("aai-search","v11")).thenReturn(serviceInfo);
- Node node = msbManager.getNode("AAI");
- assertNotNull(node);
- serviceInfo = MSBServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(),"8840");
- when(msbClient.queryMicroServiceInfo("so","v2")).thenReturn(serviceInfo);
- node = msbManager.getNode("SO");
- assertNotNull(node);
-
- serviceInfo = MSBServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(),"8082");
- when(msbClient.queryMicroServiceInfo("nfvo-nslcm","v1")).thenReturn(serviceInfo);
- node = msbManager.getNode("VFC");
- assertNotNull(node);
-
- }
-
- @Test
- public void testByActor_when_actorNotExist_returnNull () throws RouteException,UnknownHostException {
- MicroServiceFullInfo serviceInfo = MSBServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(),"8843");
- when(msbClient.queryMicroServiceInfo("aai-search","v11")).thenReturn(serviceInfo);
- Node node = msbManager.getNode("DDD");
- assertNull(node);
- }
-
- @Test
- public void testByServiceNameAndVersion () throws RouteException,UnknownHostException {
- MicroServiceFullInfo serviceInfo = MSBServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(),"8843");
- when(msbClient.queryMicroServiceInfo("aai-search","v11")).thenReturn(serviceInfo);
- Node node = msbManager.getNode("aai-search","v11");
- assertNotNull(node);
- }
-
- @Test
- public void testByServiceNameAndVersion_when_serice_notRegistedToMSB () throws RouteException,UnknownHostException {
- MSBServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(),"8843");
- when(msbClient.queryMicroServiceInfo("aai-search","v11")).thenThrow(new RouteException());
- Node node = msbManager.getNode("aai-search","v11");
- assertNotNull(node);
- assertTrue(node.getName() == "aai-search");
- assertTrue(node.getIp() == null);
- assertTrue(node.getPort() == null);
- }
-
- @Test
- public void testReadMsbPolicyProperites_noPropertyFileSpecifed_throwsException() throws MSBServiceException, IOException {
- expectedException.expect(MSBServiceException.class);
- expectedException.expectMessage("No msb.policy.properties specified.");
- System.clearProperty("msb.policy.properties");
- msbManager = new MSBServiceManager();
- }
-
- @Test
- public void testReadMsbPolicyProperites_propertyFileDoesNotExist_throwsException() throws MSBServiceException, IOException {
- expectedException.expect(MSBServiceException.class);
- expectedException.expectMessage("No msb.policy.properties specified.");
- System.setProperty("msb.policy.properties", "nonExistingPropertyFile.txt");
- msbManager = new MSBServiceManager();
- System.clearProperty("msb.policy.properties");
- }
-
- @Test
- public void testReadMsbPolicyProperites_propertyFileExists() throws MSBServiceException, IOException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
- System.setProperty("msb.policy.properties", "src/test/resources/msbPropertyFile.properties");
- msbManager = new MSBServiceManager();
- System.clearProperty("msb.policy.properties");
-
- Field factoryField = msbManager.getClass().getDeclaredField("factory");
- factoryField.setAccessible(true);
- MSBServiceFactory msbServiceFactory = (MSBServiceFactory) factoryField.get(msbManager);
-
- Field msbClientField = msbServiceFactory.getClass().getDeclaredField("msbClient");
- msbClientField.setAccessible(true);
- MSBServiceClient msbClient = (MSBServiceClient) msbClientField.get(msbServiceFactory);
- assertEquals("127.0.0.1:20", msbClient.getMsbSvrAddress());
- }
-
- public static MicroServiceFullInfo build(String ip,String port){
- MicroServiceFullInfo serviceInfo = new MicroServiceFullInfo();
- Set<NodeInfo> nodes = new HashSet<NodeInfo>();
- NodeInfo node= new NodeInfo();
- node.setPort(port);
- node.setIp(ip);
- nodes.add(node);
- serviceInfo.setNodes(nodes);
- return serviceInfo;
- }
-}
diff --git a/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/MSBServiceExceptionTest.java b/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/MsbServiceExceptionTest.java index 80c453eff..059eecdee 100644 --- a/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/MSBServiceExceptionTest.java +++ b/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/MsbServiceExceptionTest.java @@ -15,16 +15,17 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.policy.msb.client; import org.junit.Test; import org.onap.policy.common.utils.test.ExceptionsTester; -public class MSBServiceExceptionTest extends ExceptionsTester{ - - @Test - public void test() throws Exception { - test(MSBServiceException.class); - } +public class MsbServiceExceptionTest extends ExceptionsTester { + + @Test + public void test() throws Exception { + test(MsbServiceException.class); + } } diff --git a/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/MsbServiceManagerTest.java b/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/MsbServiceManagerTest.java new file mode 100644 index 000000000..32025fb3c --- /dev/null +++ b/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/MsbServiceManagerTest.java @@ -0,0 +1,173 @@ +/*- + * ============LICENSE_START======================================================= + * 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 + * + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.msb.client; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.when; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.HashSet; +import java.util.Set; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.onap.msb.sdk.discovery.common.RouteException; +import org.onap.msb.sdk.discovery.entity.MicroServiceFullInfo; +import org.onap.msb.sdk.discovery.entity.NodeInfo; +import org.onap.msb.sdk.httpclient.msb.MSBServiceClient; + +public class MsbServiceManagerTest { + @Mock + private MSBServiceClient msbClient; + + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + private MsbServiceManager msbManager; + + public MsbServiceManagerTest() {} + + @BeforeClass + public static void setUpClass() {} + + @AfterClass + public static void tearDownClass() {} + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + msbManager = new MsbServiceManager(msbClient); + } + + @After + public void tearDown() {} + + @Test + public void testByActor() throws RouteException, UnknownHostException { + MicroServiceFullInfo serviceInfo = + MsbServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(), "8843"); + when(msbClient.queryMicroServiceInfo("aai-search", "v11")).thenReturn(serviceInfo); + Node node = msbManager.getNode("AAI"); + assertNotNull(node); + serviceInfo = MsbServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(), "8840"); + when(msbClient.queryMicroServiceInfo("so", "v2")).thenReturn(serviceInfo); + node = msbManager.getNode("SO"); + assertNotNull(node); + + serviceInfo = MsbServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(), "8082"); + when(msbClient.queryMicroServiceInfo("nfvo-nslcm", "v1")).thenReturn(serviceInfo); + node = msbManager.getNode("VFC"); + assertNotNull(node); + + } + + @Test + public void testByActor_when_actorNotExist_returnNull() throws RouteException, UnknownHostException { + MicroServiceFullInfo serviceInfo = + MsbServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(), "8843"); + when(msbClient.queryMicroServiceInfo("aai-search", "v11")).thenReturn(serviceInfo); + Node node = msbManager.getNode("DDD"); + assertNull(node); + } + + @Test + public void testByServiceNameAndVersion() throws RouteException, UnknownHostException { + MicroServiceFullInfo serviceInfo = + MsbServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(), "8843"); + when(msbClient.queryMicroServiceInfo("aai-search", "v11")).thenReturn(serviceInfo); + Node node = msbManager.getNode("aai-search", "v11"); + assertNotNull(node); + } + + @Test + public void testByServiceNameAndVersion_when_serice_notRegistedToMsb() throws RouteException, UnknownHostException { + MsbServiceManagerTest.build(InetAddress.getLocalHost().getHostAddress(), "8843"); + when(msbClient.queryMicroServiceInfo("aai-search", "v11")).thenThrow(new RouteException()); + Node node = msbManager.getNode("aai-search", "v11"); + assertNotNull(node); + assertTrue(node.getName() == "aai-search"); + assertTrue(node.getIp() == null); + assertTrue(node.getPort() == null); + } + + @Test + public void testReadMsbPolicyProperites_noPropertyFileSpecifed_throwsException() + throws MsbServiceException, IOException { + expectedException.expect(MsbServiceException.class); + expectedException.expectMessage("No msb.policy.properties specified."); + System.clearProperty("msb.policy.properties"); + msbManager = new MsbServiceManager(); + } + + @Test + public void testReadMsbPolicyProperites_propertyFileDoesNotExist_throwsException() + throws MsbServiceException, IOException { + expectedException.expect(MsbServiceException.class); + expectedException.expectMessage("No msb.policy.properties specified."); + System.setProperty("msb.policy.properties", "nonExistingPropertyFile.txt"); + msbManager = new MsbServiceManager(); + System.clearProperty("msb.policy.properties"); + } + + @Test + public void testReadMsbPolicyProperites_propertyFileExists() throws MsbServiceException, IOException, + NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { + System.setProperty("msb.policy.properties", "src/test/resources/msbPropertyFile.properties"); + msbManager = new MsbServiceManager(); + System.clearProperty("msb.policy.properties"); + + Field factoryField = msbManager.getClass().getDeclaredField("factory"); + factoryField.setAccessible(true); + MsbServiceFactory msbServiceFactory = (MsbServiceFactory) factoryField.get(msbManager); + + Field msbClientField = msbServiceFactory.getClass().getDeclaredField("msbClient"); + msbClientField.setAccessible(true); + MSBServiceClient msbClient = (MSBServiceClient) msbClientField.get(msbServiceFactory); + assertEquals("127.0.0.1:20", msbClient.getMsbSvrAddress()); + } + + /** + * Build a micro service info. + * + * @param ip the up address + * @param port the port number + * @return the MicroServiceFullInfo + */ + public static MicroServiceFullInfo build(String ip, String port) { + Set<NodeInfo> nodes = new HashSet<NodeInfo>(); + NodeInfo node = new NodeInfo(); + node.setPort(port); + node.setIp(ip); + nodes.add(node); + MicroServiceFullInfo serviceInfo = new MicroServiceFullInfo(); + serviceInfo.setNodes(nodes); + return serviceInfo; + } +} diff --git a/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/NodeTest.java b/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/NodeTest.java index ed1d55f2c..7419bbe34 100644 --- a/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/NodeTest.java +++ b/controlloop/common/msb/src/test/java/org/onap/policy/msb/client/NodeTest.java @@ -15,48 +15,49 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.policy.msb.client; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; import org.junit.Test; public class NodeTest { - @Test - public void testSetAndGetName() { - Node node = new Node(); - final String name = "myName"; - node.setName(name); - assertEquals(name, node.getName()); - } - - @Test - public void testSetAndGetIp() { - Node node = new Node(); - final String ip = "127.0.0.1"; - node.setIp(ip); - assertEquals(ip, node.getIp()); - } - - @Test - public void testSetAndGetPort() { - Node node = new Node(); - final String port = "1001"; - node.setPort(port); - assertEquals(port, node.getPort()); - } - - @Test - public void testToString() { - Node node = new Node(); - final String name = "myName"; - final String ip = "127.0.0.1"; - final String port = "1001"; - node.setName(name); - node.setIp(ip); - node.setPort(port); - assertEquals("Node{name='myName', ip='127.0.0.1', port='1001'}", node.toString()); - } + @Test + public void testSetAndGetName() { + Node node = new Node(); + final String name = "myName"; + node.setName(name); + assertEquals(name, node.getName()); + } + + @Test + public void testSetAndGetIp() { + Node node = new Node(); + final String ip = "127.0.0.1"; + node.setIp(ip); + assertEquals(ip, node.getIp()); + } + + @Test + public void testSetAndGetPort() { + Node node = new Node(); + final String port = "1001"; + node.setPort(port); + assertEquals(port, node.getPort()); + } + + @Test + public void testToString() { + Node node = new Node(); + final String name = "myName"; + final String ip = "127.0.0.1"; + final String port = "1001"; + node.setName(name); + node.setIp(ip); + node.setPort(port); + assertEquals("Node{name='myName', ip='127.0.0.1', port='1001'}", node.toString()); + } } |