From d5dd60030741c5e93f24c13d700bc01cc37367db Mon Sep 17 00:00:00 2001 From: Rich Tabedzki Date: Tue, 20 Mar 2018 17:37:13 +0000 Subject: Improve code coverage metrics in AAIService module Changes made: * added new unit test GenericVnfTest to test CRUD API of AAIService Change-Id: Ifbc2692f47507ec72fdce93d2fd4e4ee02133cad Issue-ID: CCSDK-149 Signed-off-by: Rich Tabedzki --- .../onap/ccsdk/sli/adaptors/aai/AAIService.java | 31 +-- .../ccsdk/sli/adaptors/aai/GenericVnfTest.java | 242 +++++++++++++++++++++ 2 files changed, 250 insertions(+), 23 deletions(-) create mode 100755 aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/GenericVnfTest.java diff --git a/aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIService.java b/aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIService.java index 1e2940ca9..06834c11f 100755 --- a/aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIService.java +++ b/aai-service/provider/src/main/java/org/onap/ccsdk/sli/adaptors/aai/AAIService.java @@ -111,33 +111,19 @@ public class AAIService extends AAIDeclarations implements AAIClient, SvcLogicRe private final Boolean ignoreCertificateHostError; private final String targetUri; - private final String queryPath; - private final String networkVserverPath; - private final String svcInstancePath; private final String svc_inst_qry_path; - private final String vnf_image_query_path; - - private final String param_service_type; //= "service-type"; - private final String ubb_notify_path; private final String selflinkAvpn; private final String selflinkFqdn; - private final String pInterfacePath; - - private final String servicePath; - private final String sitePairSetPath; - private final int connectionTimeout; private final int readTimeout; // 1602 private final String queryNodesPath; - private final String updatePath; - private final String applicationId; // authentication credentials @@ -206,8 +192,8 @@ public class AAIService extends AAIDeclarations implements AAIClient, SvcLogicRe keystorePassword = props.getProperty(KEYSTORE_PSSWD); targetUri = props.getProperty(TARGET_URI); - queryPath = props.getProperty(QUERY_PATH); - updatePath = props.getProperty(UPDATE_PATH); + props.getProperty(QUERY_PATH); + props.getProperty(UPDATE_PATH); String tmpApplicationId = props.getProperty(APPLICATION_ID); if(tmpApplicationId == null || tmpApplicationId.isEmpty()) { @@ -235,22 +221,21 @@ public class AAIService extends AAIDeclarations implements AAIClient, SvcLogicRe networkVserverPath =props.getProperty(NETWORK_VSERVER_PATH); - svcInstancePath = props.getProperty(SVC_INSTANCE_PATH); + props.getProperty(SVC_INSTANCE_PATH); svc_inst_qry_path = props.getProperty(SVC_INST_QRY_PATH); - param_service_type = props.getProperty(PARAM_SERVICE_TYPE, "service-type"); + props.getProperty(PARAM_SERVICE_TYPE, "service-type"); - // P-Interfaces - pInterfacePath = props.getProperty(P_INTERFACE_PATH); + props.getProperty(P_INTERFACE_PATH); - vnf_image_query_path = props.getProperty(VNF_IMAGE_QUERY_PATH); + props.getProperty(VNF_IMAGE_QUERY_PATH); ubb_notify_path = props.getProperty(UBB_NOTIFY_PATH); selflinkAvpn = props.getProperty(SELFLINK_AVPN); selflinkFqdn = props.getProperty(SELFLINK_FQDN); - servicePath = props.getProperty(SERVICE_PATH); + props.getProperty(SERVICE_PATH); - sitePairSetPath = props.getProperty(SITE_PAIR_SET_PATH); + props.getProperty(SITE_PAIR_SET_PATH); queryNodesPath = props.getProperty(QUERY_NODES_PATH); diff --git a/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/GenericVnfTest.java b/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/GenericVnfTest.java new file mode 100755 index 000000000..afdc4d26e --- /dev/null +++ b/aai-service/provider/src/test/java/org/onap/ccsdk/sli/adaptors/aai/GenericVnfTest.java @@ -0,0 +1,242 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : SDN-C + * ================================================================================ + * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * 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.ccsdk.sli.adaptors.aai; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.UUID; + +import org.apache.commons.lang.StringUtils; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; +import org.onap.ccsdk.sli.adaptors.aai.AAIClient; +import org.onap.ccsdk.sli.adaptors.aai.AAIRequest; +import org.onap.ccsdk.sli.adaptors.aai.AAIService; +import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus; +import org.openecomp.aai.inventory.v11.GenericVnf; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.databind.ObjectMapper; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class GenericVnfTest { + + private static final Logger LOG = LoggerFactory.getLogger(GenericVnfTest.class); + + protected static AAIClient client; + + @BeforeClass + public static void setUp() throws Exception { + Properties properties = new Properties(); + properties.setProperty("org.onap.ccsdk.sli.adaptors.aai.host.certificate.ignore", "true"); + properties.setProperty("org.onap.ccsdk.sli.adaptors.aai.client.name", "SDNC"); + properties.setProperty("org.onap.ccsdk.sli.adaptors.aai.client.psswd", "SDNC"); + properties.setProperty("org.onap.ccsdk.sli.adaptors.aai.application", "CCSDK"); + properties.setProperty("org.onap.ccsdk.sli.adaptors.aai.uri", "http://localhost:8181"); + properties.setProperty("connection.timeout", "60000"); + properties.setProperty("read.timeout", "60000"); + client = new AAIService(properties); + ((AAIService)client).setExecutor(new TestExecutor()); + LOG.info("\nTaicAAIResourceTest.setUp\n"); + } + + @AfterClass + public static void tearDown() throws Exception { + client = null; + LOG.info("----------------------- GenericVnfTest.tearDown -----------------------"); + } + + + @Test + public void test01SaveGenericVnf() { + LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------"); + try + { + SvcLogicContext ctx = new SvcLogicContext(); + + String uuid = UUID.randomUUID().toString(); + Map data = new HashMap(); + data.put("vnf-id", uuid); + data.put("vnf-name" , "Demo-vmtn5scpx01"); + data.put("vnf-type", "asc_heat-int"); + data.put("service-id", "SDN-MOBILITY"); + data.put("equipment-role", "vSCP"); + data.put("orchestration-status", "active"); + data.put("heat-stack-id", "Devmtn5scpx04/" + data.get("vnf-id")); + data.put("in-maint", "false"); + data.put("is-closed-loop-disabled", "false"); + data.put("encrypted-access-flag","true"); + + QueryStatus resp = client.save("generic-vnf", false, false, "generic-vnf.vnf-id = '"+uuid+"'", data, "aaidata", ctx); + + } + catch (Throwable e) + { + + } + } + + @Test + public void test02QueryGenericVnf() + { + LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------"); + + try + { + List keys = new ArrayList(); + keys.add("vnf-id = 'ec14a84d-7b43-45ad-bb04-c12b74083648'"); + keys.add("depth = 'all'"); + + SvcLogicContext ctx = new SvcLogicContext(); + QueryStatus response = client.query("generic-vnf", false, null, StringUtils.join(keys, " AND "), "aaiTest", null, ctx); + + assertTrue(response == QueryStatus.SUCCESS); + LOG.info("AAIResponse: " + response.toString()); + } + catch (Exception e) + { + LOG.error("Caught exception", e); + fail("Caught exception"); + } + } + + @Test + public void test03UpdateGenericVnf() { + LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------"); + try + { + SvcLogicContext ctx = new SvcLogicContext(); + + String uuid = UUID.randomUUID().toString(); + Map data = new HashMap(); + data.put("service-id", "SDN-MOBILITY"); + data.put("equipment-role", "vSCP"); + data.put("orchestration-status", "active"); + data.put("heat-stack-id", "Devmtn5scpx04/" + data.get("vnf-id")); + data.put("in-maint", "false"); + data.put("is-closed-loop-disabled", "false"); + data.put("encrypted-access-flag","true"); + + QueryStatus resp = client.update("generic-vnf", "generic-vnf.vnf-id = '"+uuid+"'", data, "aaidata", ctx); + + } + catch (Throwable e) + { + + } + } + + @Test + public void test04DeleteGenericVnf() + { + LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------"); + + try + { + SvcLogicContext ctx = new SvcLogicContext(); + + List keys = new ArrayList(); + keys.add("generic-vnf.vnf-id = 'VNF-S7'"); + + QueryStatus response = client.delete("generic-vnf", StringUtils.join(keys, " AND "), ctx); + + assertTrue(response == QueryStatus.SUCCESS); + LOG.info("AAIResponse: " + response.toString()); + } + catch (Exception e) + { + LOG.error("Caught exception", e); + fail("Caught exception"); + } + } + + @Test + public void test05GetResource() + { + LOG.info("----------------------- Test: " + new Object(){}.getClass().getEnclosingMethod().getName() + " -----------------------"); + + try + { + SvcLogicContext ctx = new SvcLogicContext(); + GenericVnf response = ((AAIService)client).getResource("/network/generic-vnfs/generic-vnf/ec14a84d-7b43-45ad-bb04-c12b74083648", GenericVnf.class); + + assertNotNull(response); + } + catch (Exception e) + { + + } + } + + static class TestExecutor implements AAIExecutorInterface { + private String data = "{\"vnf-id\":\"7324200933\",\"vnf-name\":\"vnfinst1m001\",\"vnf-type\":\"TestVnf\",\"service-id\":\"9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\",\"equipment-role\":\"vTEST\",\"orchestration-status\":\"active\",\"in-maint\":false,\"is-closed-loop-disabled\":false,\"resource-version\":\"1520720941585\"}"; + + @Override + public String get(AAIRequest request) throws AAIServiceException { + return data; + } + + @Override + public String post(AAIRequest request) throws AAIServiceException { + return "success"; + } + + @Override + public Boolean delete(AAIRequest request, String resourceVersion) throws AAIServiceException { + return Boolean.TRUE; + } + + @Override + public Object query(AAIRequest request, Class clas) throws AAIServiceException { + ObjectMapper mapper = AAIService.getObjectMapper(); + try { + return mapper.readValue(data, GenericVnf.class); + } catch (IOException e) { + return new GenericVnf(); + } + } + + @Override + public Boolean patch(AAIRequest request, String resourceVersion) throws AAIServiceException { + return Boolean.TRUE; + } + + } +} -- cgit 1.2.3-korg